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


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 bisa menggunakan versi terbaru daripada yang saya miliki sekarang?


719
2017-07-31 21:59


asal


Sebenarnya, saya akan mengatakan itu adalah peringatan, bukan kesalahan. - Kazark


Jawaban:


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 pemutakhiran maka itu akan dicantumkan sebagai "tetap-kembali".

Solusi hati-hati 1:

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

Solusi berhati-hati 2:

Per Jawaban Pablo, Anda bisa berlari sudo apt-get --with-new-pkgs upgrade, dan itu akan menginstal paket yang disimpan kembali.

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

Jika solusi Pablo bekerja untuk Anda, silakan berikan suara. Jika tidak, tolong beri komentar apa yang salah.

Solusi agresif:

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

Tapi dist-upgrade  bisa sangat berbahaya. Tidak seperti upgrade itu mungkin menghapus paket untuk menyelesaikan situasi ketergantungan yang kompleks. Tidak seperti Anda, APT tidak selalu cukup pintar untuk mengetahui apakah penambahan dan penghapusan ini dapat mendatangkan malapetaka.

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

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


702
2017-07-31 22:15



Karena ini adalah kebutuhan jawaban yang diterima, itu benar-benar perlu memperbarui untuk memperingatkan tentang penggunaan dist-upgrade pada sistem stabil seperti banyak jawaban lain di bawah ini telah menunjukkan. Secara pribadi saya pikir ada jawaban yang lebih sederhana / lebih aman yang perlu dipromosikan: apt-get install <daftar pkgs> - Cas
Cas, haruskah saya menambahkan bahwa berbahaya untuk menjalankan upgrade jarak jauh pada sistem yang stabil? Sebenarnya mengapa itu berbahaya? (Sejujurnya aku tidak tahu semua itu dengan baik.) - mac9416
Ada sebuah Jawaban Kesalahan Server yang menjelaskan dist-upgrade dalam sedikit lebih detail. Saya pikir itu hanya layak klarifikasi (tidak berbahaya seperti itu) yang dapat meningkatkan seluruh sistem yang mungkin melampaui apa yang diharapkan / diinginkan pengguna yaitu dalam contoh OP mereka bertanya-tanya mengapa gimp ditahan. - Cas
Harap dicatat bahwa sudo apt-get dist-upgrade bisa juga menghapus paket. Oleh karena itu, sebaiknya selalu periksa daftar perubahan yang akan dibuat sebelum menyetujuinya, ketika menjalankan sudo apt-get dist-upgrade. - Eliah Kagan
@EliahKagan Semoga saya menambahkannya apt-get upgrade dapat menghapus paket? Itu akan selalu melakukan itu ketika akan ada konflik versi sebaliknya. Pikirkan llvm3.6 vs. llvm3.6v5 (dengan arti "v5" yang dikompilasi dengan gcc 5). Dua ini tidak bisa hidup berdampingan, hanya keduanya yang dapat disimpan di sistem. Jadi iya dist-upgrade dapat menghapus beberapa paket juga, tetapi itu tidak hanya dist-upgrade yang akan melakukan ini; dalam kondisi tertentu, upgrade akan, juga. - syntaxerror


Kapanpun Anda menerima dari perintah apt-get upgrade pesan

The following packages have been kept back:

kemudian untuk meng-upgrade satu atau semua paket yang disimpan kembali, tanpa melakukan upgrade distribusi (ini adalah apa dist-upgrade tidak, jika saya ingat dengan benar) adalah untuk mengeluarkan perintah:

apt-get install <list of packages kept back>

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


468
2017-09-08 09:14



Ketika paket disimpan kembali dengan cara ini dan saya secara manual apt-get upgrade <list of packages>, jika saya mengulang apt-get upgrade, itu akan mendaftar paket-paket yang dipertanyakan karena tidak lagi diperlukan dan yang bisa saya gunakan apt autoremove untuk menghapusnya, yang saya lakukan, lalu yang terakhir apt-get upgrade dan mereka tidak lagi terdaftar sebagai terus ... Sangat aneh. Ada pikiran apa? - cram2208
Apakah apt-get install juga menghapus paket bila diperlukan untuk menyelesaikan situasi ketergantungan yang berat, atau apakah Anda harus menjalankan terpisah apt-get remove perintah untuk menyelesaikan bagian dari proses peningkatan? - mac9416
@ cram2208 Saya percaya itu perilaku yang diharapkan. Paket-paket yang "diinstal secara otomatis dan [...] tidak lagi diperlukan" adalah versi sebelumnya dari paket yang ditingkatkan, yang sekarang tidak lagi diperlukan. apt autoremove kemudian menghapus dependensi yang tidak digunakan ini. - Alex
Jika upgrade akan membutuhkan paket baru yang akan diinstal, paket akan "disimpan kembali." Pertama pertimbangkan untuk menggunakan: sudo apt-get --with-new-pkgs upgrade yang akan tidak memiliki efek samping yang menyebabkan paket ditandai sebagai dipasang secara manual - l --marc l
@ mac9416 ya itu. - jarno


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

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

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

Cara yang lebih baik untuk menangani paket yang disimpan kembali:

sudo aptitude

Jika Anda menyimpan paket kembali, Anda akan melihat Paket Upgradable di atas daftar.

  • Tekan + pada daftar itu
  • Pukul dua kali
  • Jawab item debconf jika diminta
  • Tekan kembali untuk melanjutkan
  • Tekan Q
  • Tekan ya

Paket yang Anda simpan kembali terpasang.


170
2017-12-24 00:43



apt-get dist-upgrade hanya berbahaya jika Anda memiliki repositori yang buruk di /etc/apt/sources.list*. Senang untuk menyadari itu dist-upgrade upgrade semua paket, tetapi dengan repositori default, itu harus baik-baik saja. Tidak menggunakan dist-upgrade bisa berbahaya, karena Anda mungkin melewatkan pembaruan keamanan. - Flimm
apt-get dist-upgrade bisa menghapus serta menambahkan paket, tetapi itu tidak benar-benar berbahaya. Perintah pemasangan paket apa pun dapat menyebabkan kerusakan serius jika Anda memiliki masalah dengan Anda sources.list mengajukan! Biasa apt-get upgrade perintah akan menginstal paket apa pun dari sumber perangkat lunak apa pun yang diaktifkan; dist-upgrade tidak unik dengan cara ini. Selanjutnya, menggunakan aptitude untuk melakukan operasi apa pun, setidaknya pada amd64, jauh lebih berbahaya daripada berlari apt-get dist-upgrade, dalam rilis di mana bug 831768 tidak diperbaiki. - Eliah Kagan
Bagi saya, itu lebih mudah (mesin lokal dengan X running) untuk hanya membuka sinaptik dan memaksa upgrade paket. Untuk beberapa alasan tampaknya tidak muncul sama sekali di mana Anda dijelaskan dalam sinaptik. - djvs
Juga sudo aptitude safe-upgrade - msanford


Kenapa kamu tidak mencoba jawaban Unix SE ini:

sudo apt-get --with-new-pkgs upgrade

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

apt perintah (alternatif yang ramah untuk apt-get) Bagikan ini apt-get pilihan.

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


60
2017-12-20 20:16



+1 karena tidak memiliki efek samping yang menyebabkan paket ditandai sebagai dipasang secara manual. - ctrl-alt-delor
Catatan untuk siapa yang pernah membaca komentar saya di atas: tidak memiliki efek samping menandai sebagai diinstal secara manual adalah hal yang baik. Saya suka jawaban ini. - ctrl-alt-delor
Jadi jika Anda menggunakan sudo apt-get --with-new-pkgs upgrade  tanpa berlari apt-mark auto <pkg>, apakah semuanya akan baik-baik saja? Apakah perintah kedua hanya diperlukan jika Anda melakukan memilih untuk menginstal paket hold-back secara manual? - mac9416
Iya nih. apt-mark auto <pkg> hanya diperlukan untuk menandai paket yang dipasang secara otomatis (di sini halaman manual). - Pablo Bianchi


Biasanya ada dua alasan Anda mungkin melihat pesan ini.

Jika meng-upgrade program (via sudo apt-get upgrade) akan menyebabkan paket ditambahkan atau dihapus, maka program akan ditahan kembali. Kamu dapat memakai sudo apt-get dist-upgrade dalam hal ini, yang kemudian akan menawarkan untuk menambah atau menghapus program tambahan.

Ini cukup umum dan biasanya bukan masalah. Kadang-kadang (terutama selama alfa Ubuntu) a 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 akan ditahan kembali. Anda benar-benar tidak dapat melakukan apa pun kecuali menunggu dalam keadaan ini, karena paket pada dasarnya dapat di-uninstall. Ini bisa terjadi ketika paket ditambahkan ke repositori yang tidak berurutan, ketika sebuah paket diganti namanya, atau ketika sebuah paket berhenti menyediakan paket virtual.


30
2017-07-31 22:16



Adakah cara untuk menentukan apakah paket yang dipegang membutuhkan ketergantungan yang tidak dapat dipasang atau jika sedang diadakan karena paket lain bergantung padanya. Saya memiliki banyak paket yang diadakan dan saya yakin kedua kasus ini mungkin berlaku pada sistem saya. - Jake
Terima kasih, alasan kedua adalah masalah bagi saya. Bahkan apt-get dist-upgrade menolak untuk menginstalnya. Memeriksa paket dengan kecakapan menunjukkan bahwa itu tergantung pada paket yang tidak tersedia. Saya kira saya harus menunggu. - jlh


Kemungkinan besar paket-paket ini ditahan karena instalasi mereka akan menciptakan inkonsistensi ketergantungan. Ini bisa terjadi karena Anda menggunakan arsip di bawah perkembangan aktif, ppas, atau karena cermin yang Anda gunakan tidak sepenuhnya diperbarui.

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

Edit:

Ada kemungkinan lain, paket mungkin ditahan kembali jika ada yang menahannya, atau jika mereka disematkan.


18
2017-07-31 22:17



Apa yang Anda dasarkan kemungkinan itu, tanpa mengetahui apa pun yang ia jalankan upgrade apt-get atau apt-get dist-upgrade (alt. The aptitude equivalent)? - andol
ini adalah masalah yang paling sering terjadi dalam mendukung pertanyaan dan bug - txwikinger
Sepakat. Anda mungkin harus menunggu dan memeriksa apt_preferences Anda. Ini sering disebabkan oleh pengembangan arsip di mana ketergantungan paket dan yang tersedia berubah sangat cepat. Tunggu hingga mereka tenang dan Anda mungkin tidak perlu melakukannya dist-upgrade sama sekali. Jika Anda masih ingin dist-upgrade, kemudian lihat paket BARU yang akan dipasang dan paket yang akan dihapus sebelum melanjutkan. - Umang
Ini adalah kasus saya karena saya mendapatkan pesan "terus kembali" menggunakan dist-upgrade - Postadelmaga
Dalam kasus di mana masalah ini disebabkan oleh kekacauan dengan preferensi yang tepat (pinning), saya menemukan penginstalan ulang paket yang disimpan membantu saya: apt-get install --reinstall <packages>. - tanius


Anda juga dapat mencoba:

sudo aptitude safe-upgrade.

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

Dari man aptitude:

peningkatan aman

Upgrade paket yang diinstal ke versi terbaru mereka. Dipasang   paket tidak akan dihapus kecuali mereka tidak digunakan / .../ Paket   yang saat ini tidak diinstal dapat diinstal untuk menyelesaikan   dependensi kecuali opsi baris perintah -no-new-installs   dipasok.


18
2017-08-12 08:02