如何使用apt升级单个软件包?

・5 分钟阅读

问题

如何更新单个软件包? 就man apt-get而言,apt-get upgrade没有软件包/软件包列表的参数:


回答1

你只需要做 apt-get install --only-upgrade <packagename> ,这将仅升级该单个程序包,并且仅在安装时才进行升级。

如果你希望安装该软件包(如果它不存在),或者如果它已经升级,则可以省略--only-upgrade。


回答2

要使用CLI更新单个软件包,请执行以下操作:


sudo apt-get install --only-upgrade <packagename>



sudo apt-get install --only-upgrade ack


Reading package lists... Done


Building dependency tree 


Reading state information... Done


Skipping **ack**, it is not installed and only upgrades are requested.


0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.




回答3

我想到两种可能的方法:

  • sudo apt-get install nameofpackage

    这将升级包,即使已经安装:

    
    ~$ sudo apt-get install emesene
    
    
    Reading package lists... Done
    
    
    Building dependency tree 
    
    
    Reading state information... Done
    
    
    The following packages will be upgraded:
    
    
     emesene
    
    
    1 upgraded, 0 newly installed, 0 to remove and 5 not upgraded.
    
    
    Need to get 1,486 kB of archives.
    
    
    After this operation, 696 kB disk space will be freed.
    
    
    Get:1 http://il.archive.ubuntu.com/ubuntu/ natty-updates/universe emesene all 2.11.4+dfsg-0ubuntu1 [1,486 kB]
    
    
    
    
  • 使用Synaptic Package Manager右键→Mark进行升级:

    enter image description here

    注:有时它可能要求附加软件包或依赖项,这是正常的。


回答4

根据我在Ubuntu 12.04 LTS上的经验,如果使用单独的PPA,使用下面的命令将不会升级包 - ,


sudo apt-get --only-upgrade install <packagename>



同样地,我不想运行升级命令,这会升级我服务器上的所有软件包 - ,


sudo apt-get dist-upgrade



例如我安装了php 5.3并使用-


sudo add-apt-repository ppa:ondrej/php5



如果我运行


sudo apt-get install php5



它将只是重新安装PHP 5.3.

我必须先确定要升级到的版本号,使用,


sudo apt-cache policy php5



这将列出所有可用的版本号。你应该找到要升级到的版本号,然后复制引用它的整个字符串。 例如,Ubuntu上PHP 5.5的字符串是"5.5.16 dfsg-1 deb.sury.org~prefined 2 "。

现在,你可以运行具有特定版本号的apt-get install命令


sudo apt-get install php5=5.5.16+dfsg-1+deb.sury.org~precise+2




回答5

On Ubuntu 9.04,


apt-get --only-upgrade install <package>



yields :


E: Sense only is not understood, try true or false.



命令


apt-get --only-upgrade true install <package>



在我的情况下工作。


回答6

dpkg -s <package> 2>/dev/null | grep -q Status.*installed && sudo apt-get install <package>



这可以很容易地变成一个脚本,例如:

upgrade-package.sh :


#!/bin/bash



[[ -z $1 ]] && { echo"Usage: $(basename $0) package"; exit 1; }



if dpkg -s"$1" 2>/dev/null | grep -q Status.*installed; then


 echo"Attempting to upgrade $1"


 sudo apt-get install"$1"


else


 echo"Package $1 is not installed"


fi




讨论
Tianye profile image