Answers:
您只需要做apt-get install --only-upgrade <packagename>
。这将仅升级该单个软件包,并且仅在已安装的情况下进行升级。
如果您希望安装该软件包(如果该软件包不存在)或对其进行升级,则可以省去--only-upgrade
。
install
如有必要,命令还会升级单个软件包的依赖性吗?
install
即使这样做似乎违反直觉,也是正确的命令的原因。
apt 1.0.1
)上,使用升级软件包apt install
不会影响auto
标记(无论是否--only-upgrade
提供)。当然--only-upgrade
,如果您不想意外安装新的东西,使用当然很有意义。它还将升级任何必需的依赖项。
为了使用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.
E: Sense only is not understood, try true or false.
--only-upgrade
给install
子命令,而不是直接传递给apt-get
,则不必附加true
。
我可以想到两种方法:
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
:右键单击→标记为升级:
注意:有时可能会要求其他软件包或依赖项,这是正常现象。
sudo apt-get install whatever
应该自行升级。
upgrade
不带包参数。
根据我在Ubuntu 12.04 LTS上的经验,如果使用单独的PPA,则使用以下命令不会升级软件包-
sudo apt-get --only-upgrade install <packagename>
同样,我也不想运行upgrade命令,该命令将升级服务器上的所有软件包-
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〜precise + 2”。
现在,您可以运行具有特定版本号的apt-get install命令,瞧!
sudo apt-get install php5=5.5.16+dfsg-1+deb.sury.org~precise+2
我仅添加了此内容是因为我无法在其他任何地方找到此信息!
对于不存在该软件包的命令行解决方案:
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
apt-get install --only-upgrade <packagename>
不会安装任何新软件包