我尝试自动化debian存储库(用于cydia)以在创建新构建时通过shell脚本进行更新,这一直有效,直到最新版本的cydia,现在似乎需要MD5哈希的包要包含在Release文件中的文件。我已经尝试过但没有以编程方式附加哈希值,我可以得到文件的哈希值:
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
我的问题是,如何替换版本中每个Packages文件的哈希值和字节大小?
答案 0 :(得分: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 -n
和cat
。文件名可以作为参数直接传递给md5sum,正如我在上面的函数中看到的那样。
答案 1 :(得分:0)
如果你需要一个班轮:
$ 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