Bagaimana cara meningkatkan satu paket menggunakan apt-get?

827

Bagaimana cara saya memperbarui satu paket? Sejauh yang man apt-getdikatakan apt-get upgradetidak mengambil paket / daftar paket sebagai parameter:

meningkatkan

upgrade digunakan untuk menginstal versi terbaru dari semua paket yang saat ini diinstal pada sistem dari sumber yang disebutkan dalam /etc/apt/sources.list. Paket yang saat ini diinstal dengan versi baru yang tersedia diambil dan ditingkatkan; dalam keadaan apa pun paket yang diinstal saat ini dihapus, atau paket yang belum diinstal diambil dan diinstal. Versi baru dari paket yang diinstal saat ini yang tidak dapat ditingkatkan tanpa mengubah status instalasi dari paket lain akan dibiarkan pada versi mereka saat ini. Pembaruan harus dilakukan terlebih dahulu agar apt-get tahu bahwa versi baru paket tersedia.

lurscher
sumber

Jawaban:

1027

Anda hanya perlu melakukannya apt-get install --only-upgrade <packagename>. Ini hanya akan memutakhirkan paket tunggal itu, dan hanya jika itu diinstal.

Jika Anda ingin menginstal paket jika tidak ada, atau memutakhirkannya jika ada, Anda dapat keluar --only-upgrade.

Josh
sumber
88
apt-get install --only-upgrade <packagename>tidak akan menginstal paket baru
taneli
9
Apakah installperintah akan meningkatkan juga dependensi paket tunggal itu jika perlu?
Pino
7
@Pino Akan, masuk akal untuk melakukannya. Bagaimana jika versi yang Anda tingkatkan tergantung pada versi yang lebih baru dari paket lain? Anda disemprot jika Anda tidak meningkatkan keduanya. Inilah sebabnya mengapa installini adalah perintah yang tepat untuk ini, bahkan jika tampaknya kontra-intuitif.
Matt Dodge
6
Apakah ini menghapus tanda "otomatis"? Kadang-kadang ketika Anda menginstal perpustakaan secara khusus paket ditandai sebagai diinstal secara manual. Saya tidak suka menjalankan 'install' di perpustakaan karena alasan ini.
isaaclw
3
Saya baru saja menguji, karena semua informasi cukup samar; pada Ubuntu 16.04 ( apt 1.0.1), memutakhirkan paket menggunakan apt installtidak mempengaruhi autotanda, apakah --only-upgradedisediakan atau tidak. Meskipun tentu saja menggunakan --only-upgradeakal jika Anda tidak ingin menginstal sesuatu yang baru secara tidak sengaja. Ini juga akan meningkatkan dependensi yang diperlukan .
digandakan
129

Untuk memperbarui satu paket menggunakan CLI:

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

misalnya, 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.
Ian
sumber
11
Saya mendapatkan pesan kesalahan dengan perintah ini:E: Sense only is not understood, try true or false.
Michael
1
Bagi mereka yang mengalami kesalahan komentator sebelumnya lihat jawaban saya di bawah ini .
golem
3
downvoted karena tidak menambahkan informasi baru dari jawaban sebelumnya
gokul_uf
1
Anda harus lolos --only-upgradeke installperintah tambahan, tidak langsung ke apt-get, maka Anda tidak perlu menambahkan true.
Ruslan
55

Ada dua cara yang bisa saya pikirkan:

  1. sudo apt-get install nameofpackage

    Ini akan meningkatkan paket meskipun sudah diinstal:

    ~$ 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. Menggunakan Synaptic Package Manager: Klik kanan → Tandai untuk peningkatan :

    masukkan deskripsi gambar di sini

    Catatan : Terkadang ia meminta paket atau dependensi tambahan, itu normal.

Binarylife
sumber
1
Ya, itu harus, dan sudo apt-get install whateverharus melakukan upgrade dengan sendirinya.
Binarylife
4
upgradetidak mengambil argumen paket.
ℝaphink
25

Dalam pengalaman saya di Ubuntu 12.04 LTS, menggunakan perintah di bawah ini tidak akan memperbarui paket jika menggunakan PPA terpisah -

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

Demikian pula, saya tidak ingin menjalankan perintah pemutakhiran, yang akan memutakhirkan semua paket di server saya -

sudo apt-get dist-upgrade

Sebagai contoh, saya telah menginstal PHP 5.3 dan telah menambahkan PPA ondrej ke apt.sources saya menggunakan -

sudo add-apt-repository ppa:ondrej/php5

Jika saya lari

sudo apt-get install php5

itu hanya akan menginstal ulang PHP 5.3.

Saya harus, pertama, menentukan nomor versi yang akan ditingkatkan, menggunakan

sudo apt-cache policy php5

Ini akan mencantumkan semua nomor versi yang tersedia. Anda harus menemukan nomor versi yang ingin Anda tingkatkan, dan kemudian salin seluruh string yang merujuknya. Sebagai contoh, string untuk PHP 5.5 di Ubuntu adalah "5.5.16 + dfsg-1 + deb.sury.org ~ tepat + 2".

Sekarang, Anda dapat menjalankan perintah apt-get install dengan nomor versi tertentu, dan voila!

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

Saya hanya menambahkan ini karena saya tidak dapat menemukan informasi ini di tempat lain!

chopsuei3
sumber
16

Di Ubuntu 9,04 Riang,

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

hasil:

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

Perintah

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

bekerja dalam kasus saya.

golem
sumber
4
Anda harus lolos --only-upgradeke installperintah tambahan, tidak langsung ke apt-get, maka Anda tidak perlu menambahkan true.
Ruslan
10

Untuk solusi baris perintah yang tidak menginstal paket jika belum ada:

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

Ini dapat dengan mudah dibuat menjadi skrip, misalnya:

upgrade-paket.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
Shane
sumber