如何更新单个包?至于man apt-get
说,apt-get upgrade
不拿包作为参数的包/列表:
升级
upgrade 用于从
/etc/apt/sources.list
. 当前安装的带有可用新版本的软件包被检索和升级;在任何情况下都不会删除当前安装的软件包,或者检索和安装尚未安装的软件包。如果不更改另一个包的安装状态就无法升级当前安装的包的新版本,将保留其当前版本。必须首先执行更新,以便 apt-get 知道有新版本的软件包可用。
Jos*_*osh 1205
你只需要做apt-get install --only-upgrade <packagename>
。这将仅升级该单个软件包,并且仅当它已安装时。
如果您希望安装不存在的软件包,或者如果存在则升级它,您可以省略--only-upgrade
.
小智 145
为了使用 CLI 更新单个包:
sudo apt-get install --only-upgrade <packagename>
Run Code Online (Sandbox Code Playgroud)
例如, 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.
Run Code Online (Sandbox Code Playgroud)
Bin*_*ife 62
我能想到的有两种可能的方法:
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]
Run Code Online (Sandbox Code Playgroud)使用Synaptic Package Manager
:右键单击?标记升级:
注意:有时它可能会要求额外的包或依赖项,这是正常的。
小智 29
根据我在 Ubuntu 12.04 LTS 上的经验,如果使用单独的 PPA,使用下面的命令不会升级包 -
sudo apt-get --only-upgrade install <packagename>
Run Code Online (Sandbox Code Playgroud)
同样,我不想运行升级命令,它会升级我服务器上的所有软件包 -
sudo apt-get dist-upgrade
Run Code Online (Sandbox Code Playgroud)
例如,我安装了 PHP 5.3 并使用 - 将 ondrej PPA 添加到我的 apt.sources 中 -
sudo add-apt-repository ppa:ondrej/php5
Run Code Online (Sandbox Code Playgroud)
如果我跑
sudo apt-get install php5
Run Code Online (Sandbox Code Playgroud)
它只会重新安装 PHP 5.3。
我必须首先确定要升级到的版本号,使用
sudo apt-cache policy php5
Run Code Online (Sandbox Code Playgroud)
这将列出所有可用的版本号。您应该找到要升级到的版本号,然后复制引用它的整个字符串。例如,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
Run Code Online (Sandbox Code Playgroud)
我只是添加了这个,因为我无法在其他任何地方找到这些信息!
小智 17
在 Ubuntu 9.04 Jaunty 上,
apt-get --only-upgrade install <package>
Run Code Online (Sandbox Code Playgroud)
产量:
E: Sense only is not understood, try true or false.
Run Code Online (Sandbox Code Playgroud)
命令
apt-get --only-upgrade true install <package>
Run Code Online (Sandbox Code Playgroud)
在我的情况下工作。
小智 10
对于不安装软件包的命令行解决方案,如果它不存在:
dpkg -s <package> 2>/dev/null | grep -q Status.*installed && sudo apt-get install <package>
Run Code Online (Sandbox Code Playgroud)
这可以很容易地制作成一个脚本,例如:
升级包.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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1003197 次 |
最近记录: |