単一のパッケージを更新するにはどうすればよいですか? man apt-get
がapt-get upgrade
を言う限り、パラメーターとしてパッケージ/パッケージのリストを取りません:
アップグレード
upgradeは、
/etc/apt/sources.list
に列挙されたソースからシステムに現在インストールされているすべてのパッケージの最新バージョンをインストールするために使用されます。現在利用可能な新しいバージョンでインストールされているパッケージが取得され、アップグレードされます。現在、インストールされているパッケージが削除されたり、まだインストールされていないパッケージが取得およびインストールされたりすることはありません。別のパッケージのインストールステータスを変更せずにアップグレードできない現在インストールされているパッケージの新しいバージョンは、現在のバージョンのままになります。パッケージの新しいバージョンが利用可能であることをapt-getが認識できるように、最初に更新を実行する必要があります。
必要なことはapt-get install --only-upgrade <packagename>
だけです。これにより、その単一のパッケージのみがアップグレードされ、インストールされている場合にのみアップグレードされます。
パッケージが存在しない場合にインストールする場合、または存在する場合にアップグレードする場合は、--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.
私が考えることができる2つの可能な方法があります:
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]
UsingSynaptic Package Manager
:右クリック→アップグレードのマーク:
注:追加のパッケージまたは依存関係を要求する場合がありますが、正常です。
Ubuntu 12.04 LTSでの私の経験では、個別のPPAを使用している場合、以下のコマンドを使用してもパッケージはアップグレードされません-
Sudo apt-get --only-upgrade install <packagename>
同様に、サーバー上のすべてのパッケージをアップグレードするアップグレードコマンドを実行したくありませんでした-
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
この情報を他のどこにも見つけることができなかったため、これを追加しただけです!
Ubuntu 9.04 Jauntyでは、
apt-get --only-upgrade install <package>
収量:
E: Sense only is not understood, try true or false.
コマンド
apt-get --only-upgrade true install <package>
私の場合はうまくいきました。
パッケージがまだ存在しない場合にインストールしないコマンドラインソリューションの場合:
dpkg -s <package> 2>/dev/null | grep -q Status.*installed && Sudo apt-get install <package>
これは簡単にスクリプトにできます、例えば:
pgrade-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