如何找到存储库中所有可用软件包的列表以及最新版本号?

如何找到存储库中所有可用软件包的列表以及最新版本号?

我想列出所有的包裹(已安装或未安装) 以及存储库中可用的最新版本号。

例如:

输出结果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

apt-cache policy '.*'显示所有软件包的详细版本信息。

如果你想要更紧凑的输出,每个包一行,你可以使用 aptitude。以下命令列出可用的版本(请参阅手册输出格式规范) 适用于除跨架构软件包(例如 64 位系统上的 32 位软件包)之外的所有软件包(请参阅手册搜索模式):

aptitude search -F '%54p %24V' '~rnative'

答案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 ": "

相关内容