列出软件包的所有版本


17

该命令是否等效?yum list kernel-headers --showduplicates在Ubuntu apt-get, apt-cache等上。上面的命令列出了F20 / RHEL或安装中可用的内核头rpm的各种版本。

我可以使用壁橱apt-cache showpkg,不确定是否有更好的方法?

$ apt-cache showpkg linux-image  
Package: linux-image  
Versions:   

Reverse Depends:  
  firmware-crystalhd,linux-image  
  systemtap,linux-image  
  fiaif,linux-image  
Dependencies:  
Provides:  
Reverse Provides:  
linux-image-3.13.0-27-lowlatency 3.13.0-27.50  
linux-image-3.13.0-27-generic 3.13.0-27.50  
linux-image-3.13.0-24-lowlatency 3.13.0-24.47  
linux-image-3.13.0-24-generic 3.13.0-24.47  
linux-image-3.13.0-24-lowlatency 3.13.0-24.46  
linux-image-3.13.0-24-generic 3.13.0-24.46  

预期输出类似:

$ yum list kernel-headers --showduplicates
Loaded plugins: langpacks, refresh-packagekit
Installed Packages
kernel-headers.x86_64 3.11.10-301.fc20 @fedora
Available Packages
kernel-headers.x86_64 3.11.10-301.fc20 fedora 
kernel-headers.x86_64 3.14.4-200.fc20 updates

这将帮助我简单地进行降级或升级到特定版本。


您是说列出所有已安装软件包的版本以及软件包名称吗?
阿维纳什·拉吉

已安装和已卸载,均类似于上述命令:
askb 2014年

我能得到的最接近的是dpkg --list | grep linux-image
askb,2014年

dpkg --list显示所有已安装软件包的详细信息。
Avinash Raj 2014年

Answers:


13

您具有正确的命令,但linux-image不是真正的软件包名称。

$ apt-cache show linux-image
N: Can't select versions from package 'linux-image' as it is purely virtual
N: No package found

apt-cache showpkg应该可以用于真正的软件包。例如

$ apt-cache showpkg lyx
Package: lyx
Versions: 
2.1.0-1~trusty~ppa4 (/var/lib/apt/lists/ppa.launchpad.net_lyx-devel_release_ubuntu_dists_trusty_main_binary-amd64_Packages) (/var/lib/dpkg/status)
 Description Language: 
                 File: /var/lib/apt/lists/ppa.launchpad.net_lyx-devel_release_ubuntu_dists_trusty_main_binary-amd64_Packages
                  MD5: 8c75d53cfd29c5b19c2172cb07b7fe9a

2.0.6-1build1 (/var/lib/apt/lists/ftp.iinet.net.au_pub_ubuntu_dists_trusty_universe_binary-amd64_Packages)

如果您想查看linux-image-like软件包的所有版本,则可以进行搜索,例如

$ apt-cache search linux-image | grep '^linux-image'

问题在于内核(linux-image)的不同版本位于单独的程序包中,并根据版本独立命名。它们不是一个软件包的所有版本。


编辑

这列出了所有可用的软件包。要显示已安装的软件,可以使用dpkg -l。例如

$ dpkg -l lyx
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                                           Version                      Architecture                 Description
+++-==============================================-============================-============================-==================================================================================================
ii  lyx                                            2.1.0-1~trusty~ppa4          amd64                        Document Processor

编辑2

获取有关不同但名称相似的软件包(例如linux-image*)的信息的另一种方法是使用aptitude search

$ aptitude search linux-image

您还可以使用这种笨拙的语法对grep进行过滤,以解决智能缺陷/功能。

$ aptitude -w $COLUMNS search linux-image | grep '32 bit'

一个i在第一列告诉你,它已经安装。有关man aptitude其他字符,请参见。


我得到的输出yum清楚地显示了已安装,已卸载和可用的内容。
2014年

好的。您可能应该将此添加到您的问题中,因为许多Ubuntu用户(包括我自己)都不知道yum产生什么输出。我在答案中添加了更多信息。
Sparhawk

@askb感谢您的编辑。正如我在答案中提到的那样,我认为部分问题是Ubuntu会根据版本更改每个内核的名称,而Fedora会使用相同的名称而不管版本如何。前者的一个优点是您可以一次安装多个版本,如果有问题,可以在grub中回滚到旧版本。无论如何,该apt-cache search策略都应该起作用。
Sparhawk

感谢您的回应,rpm只要安装的是diff,就可以安装基于内核的安装程序,它可能安装了多个内核版本,但这通常不适用于所有基于rpm的安装程序,或者不适用于AFAIK。但是,我仍在尝试寻找一种干净的方法,据我所知,在这里我可以获得有关ubuntu上已安装和可用的(在仓库中)pkg的详细信息,就其apt-cache search 想法而言,它仅适用于本地软件包,而不会调查该仓库。我能得到的最接近的是showpkg
askb,2014年

@askb不,apt-cache search在存储库中查找,不在本地。AFAIK 不会告诉您有关本地安装的软件包的任何信息。dpkg根据我的第一次编辑,您需要这样做。我添加了第二个编辑,这是适用于内核的单个命令。
Sparhawk

8

我认为您正在apt-cache中寻找madison命令:

apt-cache madison chromium-browser

输出:

chromium-browser | 50.0.2661.102-0ubuntu0.14.04.1.1117 | http://archive.ubuntu.com/ubuntu/ trusty-updates/universe amd64 Packages
chromium-browser | 50.0.2661.102-0ubuntu0.14.04.1.1117 | http://security.ubuntu.com/ubuntu/ trusty-security/universe amd64 Packages
chromium-browser | 34.0.1847.116-0ubuntu2 | http://archive.ubuntu.com/ubuntu/ trusty/universe amd64 Packages

显示所有可用版本及其来源的快速参考。如果您将PPA用作包装,并且想要检查PPA和主存储库之间的版本差异,则非常好。

手册页上有关madison的更多信息:

madison pkg...
           apt-cache's madison command attempts to mimic the output format and a subset of the functionality of the Debian archive management tool,
           madison. It displays available versions of a package in a tabular format. Unlike the original madison, it can only display information
           for the architecture for which APT has retrieved package lists (APT::Architecture).

0

您可以使用dpkg以查看所有已安装的软件包:

$ dpkg --get-selections | grep -v deinstall | grep linux-image

Linux内核元软件包在Debian上被调用linux-image-generic

$ apt-cache madison linux-image-generic

将为您提供APT储存库中的所有可用版本(不一定已安装在系统上)。


-1

您是否尝试过启动旧内核,并在终端中输入:

showpkg kernel-header.list

而且我认为它可能位于启动目录中,所有内核都位于该目录中,这可能工作正常。

然后您可以在终端输入以下内容来降级:

 sudo apt-get -y --force-yes purge linux-shim-efi shim-amd64-generic linux-shim-amd64 

这样可以很好地工作。


我不确定这是什么意思。我的系统上没有/dirctory,也没有,/directory/grub没有名为的文件kernel-headers.list。另外,读取本地文件可能不会告诉您可用的远程版本。-1(但请您澄清一下)。
Sparhawk

我可能是说在grub文件所在的/ boot目录中。
迈克尔

我没有档案/boot/kernel-headers.list。但是,您可以从(例如)派生已安装内核的列表/boot/grub/grub.cfg,但同样,这只是本地安装的内核,而不是存储库中的远程版本。
Sparhawk

我可能不知道它是扩展名.cfg / boot
2014年

我浏览了中的所有文件find /boot -name '*.cfg',但没有一个文件包含有关内核远程版本的信息。
Sparhawk
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.