【问题标题】:How to check the version before installing a package using apt-get?如何在使用 apt-get 安装软件包之前检查版本?
【发布时间】:2013-09-24 00:21:30
【问题描述】:

我正在考虑在我的Debian PC 上安装上个月发布的 hylafax+ 版本 5.5.4。

我查了dpkg -l | grep "hylafax",发现当前版本是5.5.3。然后我检查了apt-cache search hylafax,发现包是可用的,但是我看不到任何版本号。

如何在apt-get 中找到可用的软件包版本?

【问题讨论】:

标签: debian version apt apt-get dpkg


【解决方案1】:

好的,我找到了。

apt-cache policy <package name> 将显示版本详细信息。

它还显示当前安装的版本以及可以安装的版本。

例如,apt-cache policy hylafax+

【讨论】:

  • 不敢相信这在apt install 中没有显示,让您有机会在说出Y 之前查看版本。
  • 如果我们使用apt install 一些软件包(可能未安装),请立即安装。所以我认为对于新的 Linux 用户来说最好使用apt policy
【解决方案2】:

apt-cache policy <package-name>

$ apt-cache policy redis-server
redis-server:
  Installed: (none)
  Candidate: 2:2.8.4-2
  Version table:
     2:2.8.4-2 0
        500 http://us.archive.ubuntu.com/ubuntu/ trusty/universe amd64 Packages

apt-get install -s <package-name>

$ apt-get install -s redis-server
NOTE: This is only a simulation!
      apt-get needs root privileges for real execution.
      Keep also in mind that locking is deactivated,
      so don't depend on the relevance to the real current situation!
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  libjemalloc1 redis-tools
The following NEW packages will be installed:
  libjemalloc1 redis-server redis-tools
0 upgraded, 3 newly installed, 0 to remove and 3 not upgraded.
Inst libjemalloc1 (3.5.1-2 Ubuntu:14.04/trusty [amd64])
Inst redis-tools (2:2.8.4-2 Ubuntu:14.04/trusty [amd64])
Inst redis-server (2:2.8.4-2 Ubuntu:14.04/trusty [amd64])
Conf libjemalloc1 (3.5.1-2 Ubuntu:14.04/trusty [amd64])
Conf redis-tools (2:2.8.4-2 Ubuntu:14.04/trusty [amd64])
Conf redis-server (2:2.8.4-2 Ubuntu:14.04/trusty [amd64])

apt-cache show <package-name>

$ apt-cache show redis-server
Package: redis-server
Priority: optional
Section: universe/misc
Installed-Size: 744
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Chris Lamb <lamby@debian.org>
Architecture: amd64
Source: redis
Version: 2:2.8.4-2
Depends: libc6 (>= 2.14), libjemalloc1 (>= 2.1.1), redis-tools (= 2:2.8.4-2), adduser
Filename: pool/universe/r/redis/redis-server_2.8.4-2_amd64.deb
Size: 267446
MD5sum: 066f3ce93331b876b691df69d11b7e36
SHA1: f7ffbf228cc10aa6ff23ecc16f8c744928d7782e
SHA256: 2d273574f134dc0d8d10d41b5eab54114dfcf8b716bad4e6d04ad8452fe1627d
Description-en: Persistent key-value database with network interface
 Redis is a key-value database in a similar vein to memcache but the dataset
 is non-volatile. Redis additionally provides native support for atomically
 manipulating and querying data structures such as lists and sets.
 .
 The dataset is stored entirely in memory and periodically flushed to disk.
Description-md5: 9160ed1405585ab844f8750a9305d33f
Homepage: http://redis.io/
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Origin: Ubunt

dpkg -l &lt;package-name&gt;

$ dpkg -l nginx
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  nginx                                    1.6.2-1~trusty            amd64                     high performance web server

【讨论】:

  • 请注意dpkg -l 仅列出已安装的软件包。提前看版本没用。
  • 感谢 apt-get install 中的 -s 标志! :)
【解决方案3】:
apt policy <package>

简称

【讨论】:

    【解决方案4】:

    Linux Mint、Debian 9、Ubuntu 16.04 及更早版本:

    简短信息

    apt policy <package_name>
    

    详细信息(含说明并视情况而定):

    apt show <package_name>
    

    【讨论】:

      【解决方案5】:

      以下方法可能效果很好:

      aptitude versions ^hylafax+
      

      aptitude(8)中查看更多信息

      【讨论】:

        【解决方案6】:

        在 debian 上:

        apt list --upgradable
        

        提供包含包、要升级的版本和包的实际版本的列表。

        结果:

        base-files/stable 8+deb8u8 amd64 [upgradable from: 8+deb8u7]
        bind9-host/stable 1:9.9.5.dfsg-9+deb8u11 amd64 [upgradable from: 1:9.9.5.dfsg-9+deb8u9]
        ca-certificates/stable 20141019+deb8u3 all [upgradable from: 20141019+deb8u2]
        certbot/jessie-backports 0.10.2-1~bpo8+1 all [upgradable from: 0.8.1-2~bpo8+1]
        dnsutils/stable 1:9.9.5.dfsg-9+deb8u11 amd64 [upgradable from: 1:9.9.5.dfsg-9+deb8u9]
        

        【讨论】:

        • 很好的答案!提供所有包的概览,无需额外的包(如apt-show-versions)。
        【解决方案7】:

        此外,apt-show-versions 软件包(单独安装)解析有关已安装内容的 dpkg 信息,并告诉您软件包是否是最新的。

        例子..

        $ sudo apt-show-versions --regex chrome
        google-chrome-stable/stable upgradeable from 32.0.1700.102-1 to 35.0.1916.114-1
        xserver-xorg-video-openchrome/quantal-security uptodate 1:0.3.1-0ubuntu1.12.10.1
        $
        

        【讨论】:

          【解决方案8】:

          正如在其他地方发布的那样,这也有效:

          apt-cache madison &lt;package_name&gt;

          【讨论】:

            【解决方案9】:

            另外,根据手册页:

            apt-cache showpkg <package_name>
            

            也可用于:

            ...显示命令行中列出的软件包的信息。剩下的参数是包 名字。列出了列出的每个包的可用版本和反向依赖关系,以及正向 每个版本的依赖关系。前向(正常)依赖项是包所在的那些包 问题取决于;反向依赖是那些依赖于相关包的包。因此, 包必须满足前向依赖关系,但不需要满足反向依赖关系。

            例如:

            apt-cache policy conky
            
            conky:
              Installed: (none)
              Candidate: 1.10.3-1
              Version table:
                 1.10.3-1 500
                    500 http://us.archive.ubuntu.com/ubuntu yakkety/universe amd64 Packages
                    500 http://us.archive.ubuntu.com/ubuntu yakkety/universe i386 Packages
            

            【讨论】:

              【解决方案10】:

              您也可以简单地执行常规 apt-get update,然后按照手册执行以下操作:

              apt-get -V upgrade

              -V 显示详细的版本号

              这将向您显示当前软件包与将以类似于以下格式升级的软件包:

              ~# sudo apt-get -V upgrade
              Reading package lists... Done
              Building dependency tree
              Reading state information... Done
              Calculating upgrade... Done
              The following packages will be upgraded:
                 curl (7.38.0-4+deb8u14 => 7.38.0-4+deb8u15)
                 php5 (5.6.40+dfsg-0+deb8u2 => 5.6.40+dfsg-0+deb8u3)
              2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
              Need to get 12.0 MB of archives.
              After this operation, 567 kB of additional disk space will be used.
              Do you want to continue? [Y/n] 
              

              【讨论】:

              • 如果您想更新系统并一次性查看所有版本更改,而不是在每个软件包上调用apt-cache policy,这比接受的答案要好得多
              猜你喜欢
              • 2014-06-23
              • 1970-01-01
              • 2012-06-06
              • 1970-01-01
              • 2023-01-04
              • 2014-01-16
              • 2020-12-22
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多