我想列出所有的包裹(已安装或未安装) 以及存储库中可用的最新版本号。
例如:
输出结果apt-cache policy chromium-browser
如下
$ apt-cache policy chromium-browser
chromium-browser:
Installed: (none)
Candidate: 34.0.1847.116-0ubuntu2
Version table:
34.0.1847.116-0ubuntu2 0
500 http://ftp.cuhk.edu.hk/pub/Linux/ubuntu/ trusty/universe amd64 Packages
chromium-browser
因此,存储库中可用的软件包的最新版本是34.0.1847.116-0ubuntu2
。 就像这样,我想列出版本号以及存储库中可用的软件包名称。 我想要通过命令行来完成这一切。
我希望输出是这样的,
chromium-browser 34.0.1847.116-0ubuntu2
xxxxxxxxxxxxxx yyyyyyyyyyy
............ ............
答案1
答案2
apt-cache dump
注意:这是非常大的输出。您将需要使用分页器(例如)less
,或将此输出重定向到文件。
答案3
以下命令将列出所有可用的软件包及其在存储库中的最新版本号。
for i in $(apt-cache search all | awk -F' - ' '{print $1}'); do apt-cache policy $i | sed -n '1,3p' | sed ':a;N;s/\n//g;ba'; done | awk '{print $1,$5}'
例子:
$ for i in $(apt-cache search all | awk -F' - ' '{print $1}'); do apt-cache policy $i | sed -n '1,3p' | sed ':a;N;s/\n//g;ba'; done | awk '{print $1,$5}'
acpica-tools: 20140214-1ubuntu1
acpid: 1:2.0.21-1ubuntu2
activity-log-manager: 0.9.7-0ubuntu14
adduser: 3.113+nmu3ubuntu3
advancecomp: 1.18-1
aide: 0.16~a2.git20130520-2
aide-common: 0.16~a2.git20130520-2
alembic: 0.6.2+ds-1
alien: 8.90
alsa-base: 1.0.25+dfsg-0ubuntu4
amavisd-new: 1:2.7.1-2ubuntu3
anacron: 2.3-20ubuntu1
android-headers: 4.2.2-2-0ubuntu1
android-tools-fsutils: 4.2.2+git20130218-3ubuntu23
antlr: 2.7.7+dfsg-5
apache2: 2.4.7-1ubuntu4
apache2-bin: 2.4.7-1ubuntu4
apache2-dev: 2.4.7-1ubuntu4
apache2-mpm-event: 2.4.7-1ubuntu4
apache2-mpm-prefork: 2.4.7-1ubuntu4
apache2-mpm-worker: 2.4.7-1ubuntu4
apache2-utils: 2.4.7-1ubuntu4
apache2.2-bin: 2.4.7-1ubuntu4
apg: 2.2.3.dfsg.1-2ubuntu1
^C
我选择第一个包然后执行apt-cache policy
该操作,它显示的版本号与上面的for
命令显示的相同,
$ apt-cache policy acpica-tools
acpica-tools:
Installed: (none)
Candidate: 20140214-1ubuntu1
Version table:
20140214-1ubuntu1 0
500 http://ftp.cuhk.edu.hk/pub/Linux/ubuntu/ trusty/main amd64 Packages
答案4
这似乎实现了您的要求。
gawk '/^Package:/{printf $2 "\t"} /^Version:/{print $2}' /var/lib/dpkg/available
它也应该比解析另一个命令的输出要快一些。如果你想要改变格式(请package: version
注意,这不是你的问题所要求的),你可以将第一个更改printf
为:
printf $2 ": "