我想查看并比较两个不同存储库中所有软件包的版本。例如:
libfoo | 1.2 | 1.3 libbar | 2.4 | 3.0 libbaz | ... | ...
有这样的网站吗?
或者有一种方法可以获取存储库中所有软件包版本的列表,以便我可以通过脚本进行比较?
用例是能够知道系统升级后哪些版本会发生改变。
答案1
使用工具麦迪逊对于不同发行版(以及不同的存储库)中的一个软件包版本信息
sudo apt-get install devscripts
rmadison [the package name]
例如,
$ rmadison alsa-utils
输出如下所示 [软件包版本 distro arch]:
alsa-utils | 1.0.25-1ubuntu5 | precise | source, amd64, armel, armhf, i386, powerpc
alsa-utils | 1.0.25-1ubuntu5.2 | precise-updates | source, amd64, armel, armhf, i386, powerpc
alsa-utils | 1.0.27.2-1ubuntu2 | trusty | source, amd64, arm64, armhf, i386, powerpc, ppc64el
alsa-utils | 1.0.28-1ubuntu2 | vivid | source, amd64, arm64, armhf, i386, powerpc, ppc64el
alsa-utils | 1.0.29-0ubuntu1 | wily | source, amd64, arm64, armhf, i386, powerpc, ppc64el
或者你可以去这个网站查看列表
答案2
答案3
对于两个不同的存储库,您可以比较文件Packages
。此文件特定于发布渠道(trusty
、trusty-updates
等)、组件(main
、multiverse
等)和软件包类型(binary-amd64
、source
等)。
通常您可以在以下位置找到该文件:
/ubuntu/dists/$CHANNEL/$COMPONENT/binary-$ARCH/Packages{,.gz,.bz2,.xz}
相对于大多数官方镜像的根目录。
举个例子http://mirror.cse.iitk.ac.in/ubuntu/dists/precise/main/binary-amd64/Packages.gz
您可以获取Packages
您感兴趣的文件(如果需要,可以解压缩),grep
对于Package
和Version
,然后比较输出的差异。
示例代码:
curl -s http://mirror.cse.iitk.ac.in/ubuntu/dists/trusty/main/binary-amd64/Packages.gz | gunzip | grep -E '^(Package|Version)' | awk 'ORS=NR%2?FS:RS {print $2}' > repo-a.txt
curl -s ftp://ftp.iitb.ac.in/distributions/ubuntu/archives/dists/trusty/main/binary-amd64/Packages.gz | gunzip | grep -E '^(Package|Version)' | awk 'ORS=NR%2?FS:RS {print $2}' > repo-b.txt
diff repo-a.txt repo-b.txt