Apt-get kullanarak tek bir paket nasıl yükseltilir?

Tek bir paketi nasıl güncellerim? Kadarıyla man apt-get diyor apt-get upgrade parametre olarak bir paket / paket listesi almaz:

yükseltme

yükseltme, şu anda sistemde yüklü olan tüm paketlerin en yeni sürümlerini numaralandırılan kaynaklardan yüklemek için kullanılır /etc/apt/sources.list. Şu anda yeni sürümlerle yüklenen paketler alınır ve yükseltilir; Hiçbir koşulda şu anda yüklü paketler kaldırılmaz veya henüz yüklenmemiş paketler alınmaz ve yüklenmez. Şu anda yüklü olan ve başka bir paketin yükleme durumunu değiştirmeden yükseltilemeyen paketlerin yeni sürümleri geçerli sürümlerine bırakılacaktır. Apt-get'in paketlerin yeni sürümlerinin kullanılabileceğini bilmesi için önce bir güncelleme yapılmalıdır.

Sadece yapman gereken apt-get install --only-upgrade <packagename>. Bu, yalnızca tek bir paketi ve yalnızca yüklüyse yükseltecektir.

Paketi yoksa yüklemek veya varsa yükseltmek isterseniz, dışarıda bırakabilirsiniz --only-upgrade.

CLI kullanarak tek bir paketi güncellemek için:

sudo apt-get install --only-upgrade <packagename>

örneğin, sudo apt-get install --only-upgrade ack

Reading package lists... DoneBuilding dependency tree       Reading state information... DoneSkipping **ack**, it is not installed and only upgrades are requested.0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Aklıma gelebilecek iki olası yol var.:

  1. sudo apt-get install nameofpackage

    Bu, önceden yüklenmiş olsa bile paketi yükseltecektir:

    ~$ sudo apt-get install emeseneReading package lists... DoneBuilding dependency tree       Reading state information... DoneThe following packages will be upgraded:  emesene1 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. KullanımSynaptic Package Manager: Sağ tıklayın → Yükseltme için işaretle:

    Not: Bazen ek paketler veya bağımlılıklar isteyebilir, bu normaldir.

Ubuntu 12.04 lts'deki deneyimlerime göre, aşağıdaki komutu kullanmak, ayrı bir PPA kullanıyorsanız paketi yükseltmeyecektir -

sudo apt-get --only-upgrade install <packagename>

Benzer şekilde, sunucumdaki tüm paketleri yükselten upgrade komutunu çalıştırmak istemedim -

sudo apt-get dist-upgrade

Örneğin, PHP 5.3 yüklü ve ondrej ppa'yı apt'ime ekledim.kullanan kaynaklar -

sudo add-apt-repository ppa:ondrej/php5

Eğer kaçarsam

sudo apt-get install php5

sadece PHP 5.3'ü yeniden yükleyecektir.

Öncelikle, yükseltilecek sürüm numarasını kullanarak belirlemeliyim

sudo apt-cache policy php5

Bu, mevcut tüm sürüm numaralarını listeler. Yükseltmek istediğiniz sürüm numarasını bulmanız ve ardından başvuran tüm dizeyi kopyalamanız gerekir. Örneğin, Ubuntu'daki PHP 5.5 dizesi "5.5.16 + dfsg-1+deb.sury.org ~ hassas + 2 ".

Şimdi, apt-get install komutunu belirli sürüm numarasıyla çalıştırabilirsiniz ve voila!

sudo apt-get install php5=5.5.16+dfsg-1+deb.sury.org~precise+2

Bunu sadece bu bilgiyi başka hiçbir yerde bulamadığım için ekledim!

Ubuntu 9.04 Jaunty'de,

apt-get --only-upgrade install <package>

gelirler:

E: Sense only is not understood, try true or false.

Komut

apt-get --only-upgrade true install <package>

benim durumumda işe yaradı.

Zaten mevcut değilse paketi yüklemeyen bir komut satırı çözümü için:

dpkg -s <package> 2>/dev/null | grep -q Status.*installed && sudo apt-get install <package>

Bu kolayca bir komut dosyası haline getirilebilir, örn.:

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

Ubuntu 18.04 lts'de tek bir paketi yükseltmek için:

sudo apt update && sudo apt install --only-upgrade <packagename>

Birden çok paketi yükseltmek için:

sudo apt update && sudo apt install --only-upgrade <package1> <package2> <package3>