【问题标题】:Appending md5sums to end of file将 md5sums 附加到文件末尾
【发布时间】:2017-06-15 04:32:40
【问题描述】:

我正在尝试自动化 debian 存储库(用于 cydia),以便在创建新版本时通过 shell 脚本进行更新,这一直有效,直到最新版本的 cydia 现在似乎需要软件包文件的 MD5 哈希值才能包含在发布文件中。我已经尝试以编程方式附加哈希但失败了,我可以获得文件的哈希:

echo -n | cat ./Packages | md5sum | awk '{print $1}'

我可以得到文件的大小(以字节为单位):

stat -f%z ./Packages

但我不知道如何在表单中创建一行:

 c98fd649b21ebf3cc66d9e565f75284f 404 Packages

并将其添加到发布文件的相应行

发布文件:

Origin: Repo name
Label: label
Suite: stable
Version: 0.9
Codename: codename
Architectures: iphoneos-arm
Components: main
Description: Description.
MD5Sum:
 c98fd649b21ebf3cc66d9e565f75284f 404 Packages
 b361d77125813106377a48616c7c4a38 293 Packages.gz
 e2f125c1fa9ec8a183064d0b4fec3b3d 320 Packages.bz2

我的问题是,如何替换 Release 中每个 Packages 文件的哈希值和字节大小?

【问题讨论】:

    标签: bash macos awk debian cydia


    【解决方案1】:

    您可以创建一个函数,以您想要的格式打印散列和大小:

    print_hash_and_size() {
      printf " %s %s %s\n" $(md5sum "$1" | awk '{print $1}') $(stat -c %s "$1") "$1"
    }
    

    并为您要附加到发布文件的每个文件调用上述函数。

    {
      printf "%s\n" "MD5Sum";
      print_hash_and_size Packages;
      print_hash_and_size Packages.gz;
      print_hash_and_size Packages.bz2;
    } >> release_file
    

    这会将四行附加到您的文件中,有点像您的示例:

    MD5Sum:
     c98fd649b21ebf3cc66d9e565f75284f 404 Packages
     b361d77125813106377a48616c7c4a38 293 Packages.gz
     e2f125c1fa9ec8a183064d0b4fec3b3d 320 Packages.bz2
    

    我看到你正在使用这个命令序列来获取哈希:

    echo -n | cat ./Packages | md5sum | awk '{print $1}'
    

    不知道为什么需要echo -ncat。文件名可以作为参数直接传递给 md5sum,就像我在上面的函数中看到的那样。

    【讨论】:

      【解决方案2】:

      如果你需要一个班轮:

      $ find -name 'Packages*' -printf "%P\n" |
      xargs -I FILE sh -c 'echo $(md5sum -b FILE | awk '\''{print $1}'\'') $(stat -c%s FILE) $(echo "FILE") | paste - - -' |
      sed -rn 'h;n;N;G;p'
      
      15bfecb2b041d5387aacdd32879e4e56 324 Packages
      997a7252f202566a1e5fdc5b50c2ffdf 283 Packages.gz
      e805c26ff46c6e138e3cd198cff281ea 301 Packages.bz2
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-11
        • 1970-01-01
        • 1970-01-01
        • 2015-04-09
        • 2015-02-02
        • 2013-05-31
        相关资源
        最近更新 更多