web-dev-qa-db-ja.com

apt-getを使用して単一のパッケージをアップグレードする方法は?

単一のパッケージを更新するにはどうすればよいですか? man apt-getapt-get upgradeを言う限り、パラメーターとしてパッケージ/パッケージのリストを取りません:

アップグレード

upgradeは、/etc/apt/sources.listに列挙されたソースからシステムに現在インストールされているすべてのパッケージの最新バージョンをインストールするために使用されます。現在利用可能な新しいバージョンでインストールされているパッケージが取得され、アップグレードされます。現在、インストールされているパッケージが削除されたり、まだインストールされていないパッケージが取得およびインストールされたりすることはありません。別のパッケージのインストールステータスを変更せずにアップグレードできない現在インストールされているパッケージの新しいバージョンは、現在のバージョンのままになります。パッケージの新しいバージョンが利用可能であることをapt-getが認識できるように、最初に更新を実行する必要があります。

814
lurscher

必要なことはapt-get install --only-upgrade <packagename>だけです。これにより、その単一のパッケージのみがアップグレードされ、インストールされている場合にのみアップグレードされます。

パッケージが存在しない場合にインストールする場合、または存在する場合にアップグレードする場合は、--only-upgradeを省略できます。

1013
Josh

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.
128
Ian

私が考えることができる2つの可能な方法があります:

  1. 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]
    
  2. UsingSynaptic Package Manager右クリック→アップグレードのマーク

    enter image description here

    :追加のパッケージまたは依存関係を要求する場合がありますが、正常です。

54
Binarylife

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

この情報を他のどこにも見つけることができなかったため、これを追加しただけです!

24
chopsuei3

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>

私の場合はうまくいきました。

16
golem

パッケージがまだ存在しない場合にインストールしないコマンドラインソリューションの場合:

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
10
Shane