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


827

Tek bir paketi nasıl güncellerim? Bildiğim kadarıyla man apt-getdiyor apt-get upgradeparametre olarak paketlerin bir paket / liste almaz:

Yükselt

yükseltme, sistemde yüklü olan tüm paketlerin en yeni sürümlerini, sıralanan kaynaklardan yüklemek için kullanılır /etc/apt/sources.list. Hali hazırda yeni sürümlerle birlikte kurulan paketler alındı ​​ve yükseltildi; hiçbir koşulda şu anda yüklü paketler kaldırılmaz veya henüz kurulmamış paketler alınır ve kurulur. Şu anda kurulu paketlerin yeni sürümleri, başka bir paketin yükleme durumunu değiştirmeden yükseltilemeyen sürümleri geçerli sürümlerinde bırakılacaktır. Önce bir güncelleme yapılması gerekir, böylece apt-get paketlerin yeni sürümlerinin mevcut olduğunu bilir.

Yanıtlar:


1027

Sadece yapman gerek apt-get install --only-upgrade <packagename>. Bu, yalnızca bu tek bir paketi ve yalnızca yüklenmişse yükseltir.

Eğer mevcut değilse paketi kurmak veya varsa yükseltmek isterseniz, dışarıda bırakabilirsiniz --only-upgrade.


88
apt-get install --only-upgrade <packagename>yeni paketler yüklemeyecek
taneli

9
Will installgerekirse komut da bu tek paketin bağımlılıklarını yükseltme?
Pino

7
@Pino Olacak, bunu yapmak mantıklı. Yükseltme yaptığınız sürüm başka bir paketin daha yeni bir sürümüne bağlıysa ne olur? Her ikisini de yükseltmezseniz hortumlu olursunuz. Bu nedenle install, karşı sezgisel görünse de, bunun için doğru komuttur.
Matt Dodge

6
Bu "otomatik" işaretini kaldırıyor mu? Bazen kitaplıkları özel olarak yüklediğinizde, paket el ile yüklenmiş olarak işaretlenir. Bu nedenle kütüphanelerde 'install' komutunu çalıştırmayı sevmiyorum.
isaaclw 29:15

3
Tüm bilgiler oldukça belirsiz olduğu için yeni test ettim; Ubuntu 16.04 ( apt 1.0.1) 'de, paketi kullanarak paketin yükseltilmesi , tedarik edilmiş olsun veya olmasın işareti apt installetkilemez . Yanlışlıkla yeni bir şey yüklemek istemiyorsanız elbette kullanmak mantıklı. Ayrıca gerekli bağımlılıkları da yükseltecektir . auto--only-upgrade--only-upgrade
Ağustos'ta

129

CLI'yi 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... 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.

11
Bu komutta bir hata alıyorum:E: Sense only is not understood, try true or false.
Michael

1
Önceki yorumcunun hatasıyla karşılaşanlar için aşağıdaki cevaba bakınız .
golem,

3
önceki yanıtlardan yeni bir bilgi eklemediği için iptal edildi
gokul_uf

1
Sen geçmelidir --only-upgradeiçin installdeğil doğrudan, alt komutunun apt-getardından eklemek zorunda kalmaz, true.
Ruslan

55

Düşünebileceğim iki olası yol var:

  1. sudo apt-get install nameofpackage

    Bu önceden kurulmuş olsa bile paketi yükseltir:

    ~$ 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. Kullanımı Synaptic Package Manager: Sağ tıklama → Yükseltme için işaretle :

    görüntü tanımını buraya girin

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


1
Evet, sudo apt-get install whateverkendi başına yükseltme yapmalı ve yapmalı.
Binarylife

4
upgradepaket argümanı almaz.
Sabah

25

Ubuntu 12.04 LTS konusundaki 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ükseltecek olan yükseltme komutunu çalıştırmak istemedim -

sudo apt-get dist-upgrade

Örneğin, PHP 5.3'ü yükledim ve ondrej PPA'yı -.

sudo add-apt-repository ppa:ondrej/php5

Koşarsam

sudo apt-get install php5

sadece PHP 5.3'ü yeniden yükleyecektir.

İlk önce, yükseltmek için sürüm numarasını belirlemek zorundayım.

sudo apt-cache policy php5

Bu, mevcut tüm sürüm numaralarını listeler. Yükseltmek istediğiniz sürüm numarasını bulmalı ve daha sonra ona başvuran tüm dizeyi kopyalamalısınız. Örneğin, Ubuntu'daki PHP 5.5 için dize "5.5.16 + dfsg-1 + deb.sury.org ~ precise + 2" dir.

Artık apt-get install komutunu belirli bir sürüm numarasıyla çalıştırabilirsiniz, ve işte!

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

Bunu ekledim çünkü bu bilgiyi başka hiçbir yerde bulamadım!


16

Ubuntu 9.04 Jaunty'de,

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

verim:

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

Komuta

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

benim durumumda çalıştı.


4
Sen geçmelidir --only-upgradeiçin installdeğil doğrudan, alt komutunun apt-getardından eklemek zorunda kalmaz, true.
Ruslan

10

Önceden 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 betiğe dönüştürülebilir, örneğin:

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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.