it-swarm-id.com

"Paket-paket berikut telah disimpan kembali:" Mengapa dan bagaimana cara menyelesaikannya?

Saya baru saja menambahkan repositori PPA untuk versi pengembangan GIMP, tetapi saya mendapatkan kesalahan ini:

$ apt-get update && apt-get upgrade
...
The following packages have been kept back:
  gimp gimp-data libgegl-0.0-0 libgimp2.0

Mengapa dan bagaimana saya bisa menyelesaikannya sehingga saya dapat menggunakan versi terbaru daripada yang saya miliki sekarang?

829
jfoucher

Menurut sebuah artikel di debian-administration.org ,

Jika dependensi telah berubah pada salah satu paket yang telah Anda instal sehingga paket baru harus diinstal untuk melakukan upgrade maka itu akan terdaftar sebagai "disimpan-kembali".

Solusi hati-hati 1:

Per jawaban Pablo , Anda dapat menjalankan Sudo apt-get --with-new-pkgs upgrade, dan itu akan menginstal paket yang disimpan kembali.

Ini bermanfaat untuk tidak menandai paket yang disimpan sebagai "diinstal secara manual," yang dapat memaksa lebih banyak intervensi pengguna di telepon (lihat komentar).

Jika solusi Pablo cocok untuk Anda, harap perbarui. Jika tidak, beri komentar apa yang salah.

Solusi hati-hati 2:

Solusi hati-hati adalah menjalankan Sudo apt-get install <list of packages kept back>. Dalam kebanyakan kasus ini akan memberikan paket yang disimpan kembali apa yang mereka butuhkan untuk berhasil ditingkatkan.

Solusi agresif:

Solusi yang lebih agresif adalah menjalankan Sudo apt-get dist-upgrade, yang akan memaksa pemasangan dependensi baru tersebut.

Tetapi dist-upgrade bisa sangat berbahaya . Tidak seperti peningkatan mungkin menghapus paket untuk menyelesaikan situasi ketergantungan yang kompleks. Tidak seperti Anda, APT tidak selalu cukup pintar untuk mengetahui apakah penambahan dan pemindahan ini dapat menimbulkan kekacauan.

Jadi jika Anda menemukan diri Anda di tempat di mana "solusi hati-hati" tidak berfungsi, dist-upgrade dapat berfungsi ... tetapi Anda mungkin lebih baik belajar sedikit lebih banyak tentang APT dan menyelesaikan masalah dependensi "dengan tangan" dengan menginstal dan menghapus paket berdasarkan kasus per kasus.

Anggap saja seperti memperbaiki mobil ... jika Anda punya waktu dan berguna dengan kunci pas, Anda akan mendapatkan ketenangan pikiran dengan membaca dan melakukan perbaikan sendiri. Jika Anda merasa beruntung, Anda dapat mengantar mobil Anda dengan sepupu Anda dist-upgrade dan berharap dia tahu barang-barangnya.

845
Michael Crenshaw

Setiap kali Anda menerima dari perintah apt-get upgrade pesan

The following packages have been kept back:

kemudian untuk memutakhirkan satu atau semua paket yang disimpan, tanpa melakukan pemutakhiran distribusi (inilah yang dist-upgrade lakukan, jika saya ingat dengan benar) adalah dengan mengeluarkan perintah:

apt-get install <list of packages kept back>

ini akan menyelesaikan masalah yang disimpan dan akan meminta untuk menginstal paket tambahan, dll. seperti yang dijelaskan oleh jawaban lain.

488
user88285

apt-get dist-upgrade berbahaya untuk lingkungan yang stabil,

  1. pengaturan source.list salah dan Anda berakhir dengan ubuntu yang rusak.
  2. anda mungkin mendapatkan seluruh aplikasi ditingkatkan ke versi yang tidak Anda inginkan.

Use case: upgrade kernel disimpan kembali, Anda hanya ingin meng-upgrade kernel, tidak ingin memperbarui seluruh distribusi.

Cara yang lebih baik untuk menangani paket yang disimpan kembali:

Sudo aptitude

Jika Anda telah menyimpan kembali paket Anda harus melihat Paket yang Dapat Di-upgrade di bagian atas daftar.

  • Tekan + pada daftar itu
  • Tekan g dua kali
  • Jawab hal-hal debconf jika diminta
  • Tekan kembali untuk melanjutkan
  • Tekan Q
  • Tekan ya

Paket yang disimpan Anda terinstal.

173
mudy

Mengapa Anda tidak mencoba jawaban Unix SE ini :

Sudo apt-get --with-new-pkgs upgrade

Ini memungkinkan paket baru untuk diinstal. Ini akan memberi tahu Anda paket apa yang akan diinstal dan Prompt Anda sebelum benar-benar melakukan instalasi.

aptperintah ( alternatif ramah ke apt-get) bagikan opsi apt-get ini .

Menggunakan apt install <pkg> sebagai gantinya akan menandai pkg sebagai "diinstal secara manual" !! Untuk menandainya lagi sebagai "terinstal secara otomatis" gunakan apt-mark auto <pkg> ( lihat juga sub-perintah showmanualname__). Info lebih lanjut pada jawaban ini .

128
Pablo Bianchi

Biasanya ada dua alasan Anda dapat melihat pesan ini.

Jika memutakhirkan program (melalui Sudo apt-get upgrade) akan menyebabkan paket ditambahkan atau dihapus, maka program akan ditahan. Anda dapat menggunakan Sudo apt-get dist-upgrade dalam hal ini, yang kemudian akan menawarkan untuk menambah atau menghapus program tambahan.

Ini sangat umum dan biasanya tidak menjadi masalah. Kadang-kadang (terutama selama alfa Ubuntu) dist-upgrade akan menawarkan untuk menghapus banyak program lain, dalam hal ini Anda mungkin ingin membatalkannya.

Jika program tergantung pada paket atau versi yang tidak tersedia, maka program tersebut akan ditahan. Anda benar-benar tidak dapat melakukan apa pun kecuali menunggu dalam keadaan ini, karena paket ini pada dasarnya dapat dihapus. Ini bisa terjadi ketika paket ditambahkan ke repositori rusak, ketika sebuah paket diganti namanya, atau ketika sebuah paket berhenti menyediakan paket virtual.

32
jbowtie

Anda juga dapat mencoba:

Sudo aptitude safe-upgrade.

Ini lebih aman daripada full-upgrade (awalnya bernama dist-upgrade) karena "paket tidak akan dihapus kecuali mereka tidak digunakan".

Dari man aptitude:

upgrade yang aman

Memutakhirkan paket yang diinstal ke versi terbaru mereka. Paket yang diinstal tidak akan dihapus kecuali jika tidak digunakan/.../ Paket yang saat ini tidak diinstal dapat diinstal untuk menyelesaikan dependensi kecuali jika opsi baris perintah --no-install-baru disediakan.

23
Afilu

Kemungkinan besar paket-paket ini tertahan karena pemasangannya akan menciptakan inkonsistensi ketergantungan. Ini bisa terjadi karena Anda menggunakan arsip dalam pengembangan aktif, ppas, atau karena cermin yang Anda gunakan tidak sepenuhnya diperbarui.

Dalam kasus terakhir, tunggu saja, ketika dependensi diselesaikan itu akan diinstal pada waktu berikutnya.

Edit:

Ada kemungkinan lain, paket mungkin ditahan jika ditangguhkan, atau jika mereka disematkan.

20
txwikinger

Ini biasanya karena paket telah menambahkan ketergantungan, dan peningkatan tidak ingin menambahkannya untuk Anda tanpa izin.

Jika Anda menjalankan:

Sudo apt-get install gimp gimp-data libgegl-0.0-0 libgimp2.0

Kemudian versi baru harus diinstal bersama dengan ketergantungan baru mereka.

9

Ini berhasil untuk saya

Sudo aptitude full-upgrade
8
Singh

Saya telah menemukan bahwa aptitude melakukan pekerjaan yang lebih baik dalam meningkatkan paket jika versinya sedikit berbeda. Saya memiliki situasi seperti ini:

[email protected]:/etc/apt$ apt-cache policy gzip
gzip:
  Installed: 1.3.5-15
  Candidate: 1.3.5-15+etch1
  Version table:
     1.3.5-15+etch1 0
        500 http://archive.debian.org etch/main Packages
 *** 1.3.5-15 0
        100 /var/lib/dpkg/status

Ini membuat apt-get menahan pembaruan, tetapi aptitude memperbaruinya dengan baik. Saya tidak yakin algoritma mana yang digunakan untuk menentukan apakah suatu paket harus diperbarui atau tidak. Saya kira keduanya memiliki versi yang sama, hanya 'kualifikasi' yang berbeda. Tetapi bagaimanapun juga, apt-get tidak akan memperbaruinya, tetapi aptitude akan melakukannya.

7

Saya mengalami masalah ini ketika kernel baru dirilis. (Mungkin karena saya mengaktifkan pembaruan yang tidak stabil.) Saya menemukan cara paling sederhana untuk melakukan instalasi adalah melalui penginstal grafis Ubuntu (update-manager).

3
Kazark

Dalam kasus saya, paket yang ditahan adalah yang terkait dengan linux-header dan kernel. Saya sampai pada hal ini dengan mencoba menyelesaikan masalah dengan memiliki tanda seru merah di area notifikasi dan tidak dapat memperbarui paket.

Untuk mengatasinya, saya tidak perlu menggunakan dist-upgrade atau manual apt-get install xxx .

Apa yang saya lakukan dan telah bantu adalah sederhana dan bersih:

Sudo apt-get update
Sudo apt-get autoremove
Sudo apt-get autoclean
Sudo apt-get upgrade

Saya harus secara manual mengonfirmasi pembaruan Grub dan konfigurasinya.

Kemudian saya hanya bekerja dengan komputer untuk sementara waktu dan kemudian dialog pembaruan standar telah muncul lagi akhirnya termasuk bagian "basis Ubuntu" dengan kernel dan terkait. Pembaruan dilakukan tanpa masalah dan saya tidak melihat paket yang ditahan lagi.

Juga, sangat penting untuk diingat bahwa pembaruan * buntu itu termasuk pembaruan kernel peka terhadap hibernasi - Saya punya masalah ini beberapa kali dan saya selalu menyelesaikannya dengan menyalakan kembali mesin dan melakukan langkah-langkah di atas.

Jadi mungkin ini cukup?

(situasi yang dijelaskan di sini terkait dengan Xubuntu 15.10 saya pada akhir Desember 2015)

3
crysman

Saya mengalami masalah ini menggunakan synaptic karena tampaknya hang, dan untuk mencoba dan memperbaikinya saya boot ulang dan mencoba lagi.

Kemudian saya menemukan pesan informatif sebagai bagian dari paket dengan beberapa instruksi pasca pemasangan untuk saya.

Saya harus menekan "detail", dan kemudian 'q' untuk berhenti setelah membaca pesan, dan kemudian semuanya berjalan normal.

2
Elliptical view

Ini seperti cara yang benar untuk menginstal ulang paket yang disimpan kembali:

apt-get install --reinstall libjpeg-progs

Setidaknya ini bekerja untuk saya ketika libjpeg-progs macet setelah memutakhirkan dari Ubuntu 14.04 ke 16.04. Saya yakin Anda dapat melakukan hal yang sama dengan aplikasi yang disimpan lainnya, mis. gimp.

Sumber: https://ubuntuforums.org/showthread.php?t=2321702&p=13476183#post1347618

2

Pada kenyataannya, switch yang Anda butuhkan adalah dselect-upgrade yang menginstal/menghapus dependensi untuk set paket tertentu yang terlibat.

1
Johnny

Saya telah membaca semua posting dan menemukan bahwa ada banyak penjelasan yang menarik. Saya sudah mencoba semuanya tetapi belum mendapatkan hasil sepenuhnya. Saya memiliki masalah dengan mysql-utilities yang tidak dapat saya tingkatkan. Pembaruan diusulkan oleh sistem. Jadi, saya ingin menunjukkan beberapa langkah untuk melakukannya. Tentu saja, saya akan mengulangi dalam beberapa saat semua posting yang disebutkan di atas. Ini kesalahan saya, ya saya menemukannya dengan posting yang sudah ada, tetapi apa yang harus saya lakukan selanjutnya? enter image description here

Langkah selanjutnya adalah:

Sudo apt-get --purge remove mysql-utilities

Hasilnya bisa kita lihat pada gambar di bawah ini. Saya menghapus paket dan memeriksa ini dengan perintah:

Sudo apt-get -f install

Hasil - Baik! Kemudian saya menginstal paket versi baru ini dengan benar. enter image description here

Dengan cara ini, saya pikir dapat membantu lebih banyak orang baru karena memiliki paket lain kita dapat melakukan langkah yang sama.

Sekali, saya minta maaf, ketika saya mengulangi di beberapa tempat posting lain.

0