如何使用apt-get升级单个包?
如何更新单个包? 至于man apt-get
说apt-get upgrade
不会将包/包列表作为参数:
升级
upgrade用于从
/etc/apt/sources.list
枚举的源安装当前安装在系统上的所有软件包的最新版本。 当前安装有新版本的软件包将被检索和升级; 在任何情况下当前都没有安装包已删除,或者尚未安装的包已检索和安装 在不更改其他程序包的安装状态的情况下无法升级的当前安装程序包的新版本将保留其当前版本。 必须首先执行更新,以便apt-get知道新版本的软件包可用。
你只需要做apt-get install --only-upgrade
。 这将仅升级该单个程序包,并且仅在安装时才进行升级。
如果您希望安装该软件包(如果它不存在),或者如果它已经升级,您可以省略--only-upgrade
。
要使用CLI更新单个程序包:
sudo apt-get install --only-upgrade
例如, 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.
我可以想到两种可能的方式:
-
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
: 右键单击→标记升级 :注意 :有时它可能会要求其他包或依赖项,这是正常的。
根据我在Ubuntu 12.04 LTS上的经验,如果使用单独的PPA,使用下面的命令将不会升级包 –
sudo apt-get --only-upgrade install
同样地,我不想运行升级命令,这会升级我服务器上的所有软件包 –
sudo apt-get dist-upgrade
例如,我安装了PHP 5.3并将ondrej PPA添加到我的apt.sources中 –
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~minin + 2”。
现在,您可以运行具有特定版本号的apt-get install命令,瞧!
sudo apt-get install php5=5.5.16+dfsg-1+deb.sury.org~precise+2
我只是添加了这个,因为我无法在其他地方找到这些信息!
在Ubuntu 9.04 Jaunty上,
apt-get --only-upgrade install
收益率:
E: Sense only is not understood, try true or false.
命令
apt-get --only-upgrade true install
在我的情况下工作。
对于不安装程序包的命令行解决方案(如果尚不存在):
dpkg -s 2>/dev/null | grep -q Status.*installed && sudo apt-get install
这很容易变成一个脚本,例如:
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