“Aşağıdaki paketler geri alındı:” Neden ve nasıl çözerim?


877

GIMP'nin geliştirme sürümü için bir PPA deposu ekledim, ancak şu hatayı alıyorum:

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

Şu an sahip olduğum sürüm yerine en son sürümü kullanabilmem için neden ve nasıl çözebilirim?


17
Açıkçası, bunun bir uyarı olduğunu, bir hata olmadığını söyleyebilirim.
Kazark

Yanıtlar:


904

Debian-administration.org adresindeki bir makaleye göre ,

Bağımlılıklar kurduğunuz paketlerden birinde değiştiyse, yükseltmeyi gerçekleştirmek için yeni bir paket kurulmalıdır, o zaman "geri tutuldu" olarak listelenir.

Temkinli çözüm 1:

Başına Pablo'nun cevap , Çalıştırabileceğiniz sudo apt-get --with-new-pkgs upgradeve muhafaza-geri paketleri kuracaktır.

Bu, saklanan paketleri "elle kurulmuş" olarak işaretlememenin avantajına sahiptir, bu da kullanıcının daha fazla müdahalesini zorlayabilir (yorumlara bakın).

Pablo'nun çözümü sizin için çalışıyorsa, lütfen onu oylayın. Değilse, lütfen neyin yanlış gittiğini yorumlayın.

Temkinli çözüm 2:

Temkinli çözüm koşmaktır sudo apt-get install <list of packages kept back>. Çoğu durumda bu, saklanan paketlere başarılı bir şekilde yükseltme yapmak için gerekenleri verir.

Agresif çözüm:

sudo apt-get dist-upgradeBu yeni bağımlılıkların kurulmasını zorlayacak daha agresif bir çözüm yürütülmelidir .

Ancak dist-upgrade oldukça tehlikeli olabilir . Yükseltmenin aksine , karmaşık bağımlılık durumlarını çözmek için paketleri kaldırabilir . Sizin aksine, APT her zaman bu eklemelerin ve taşınmaların zarar görüp görmeyeceğini bilecek kadar akıllı değildir.

Öyleyse, kendinizi "ihtiyatlı çözüm" ün çalışmadığı bir yerde bulursanız dist-upgrade , işe yarayabilir ... ama muhtemelen APT hakkında biraz daha fazla şey öğrenmek ve bağımlılık sorunlarını "elle" kurarak ve kaldırarak çözmekten daha iyisindir. duruma göre paketler.

Bir araba tamir etmek gibi düşünün ... eğer vaktiniz varsa ve bir İngiliz anahtarıyla kullanışınız varsa, okuyarak ve onarımı kendiniz yaparak bir miktar gönül rahatlığı elde edersiniz. Kendini şanslı hissediyorsan, arabanı kuzeninle bırakıp, dist-upgradeonun eşyalarını bildiğini umabilirsin.


180
Bu, kabul edilen bir cevap ihtiyacı olduğu için, dist-upgradeaşağıdaki diğer cevapların çoğunun işaret ettiği gibi, istikrarlı bir sistemde kullanılması konusunda uyarmak için gerçekten güncellenmesi gerekmektedir . Şahsen terfi etmesi gereken daha basit / daha güvenli bir cevap olduğunu düşünüyorum: apt-get install <pkgs listesi>
Cas

7
Cas, kararlı bir sistemde dağıtım yükseltmenin tehlikeli olabileceğini eklemeli miyim? Bu tam olarak neden tehlikeli? (Dürüst olmak gerekirse, tüm bu kadar uygun bilmiyorum.)
Michael Crenshaw

17
Dağıtım yükseltmeyi biraz daha ayrıntılı olarak açıklayan bir Sunucu Hatası cevabı var. Sanırım kullanıcının beklediğinin / isteğinin ötesinde olabilecek tüm sistemi geliştirebileceğini açıklamaya değer (bunun kadar tehlikeli değil), yani OP örneğinde nezaketinin neden tutulduğunu merak ediyorlar.
Cas

19
Unutmayın ki sudo apt-get dist-upgradede olabilir kaldırmak paketleri. Sonuç olarak, çalışırken kabul etmeden önce yapılacak değişikliklerin listesini her zaman incelemek en iyisidir sudo apt-get dist-upgrade.
Eliah Kagan

6
@EliahKagan apt-get upgradePaketleri kaldırabilir bile ekleyebilir miyim ? Aksi halde bir sürüm çatışması olursa bunu hep yapar. Düşünün llvm3.6vs. llvm3.6v5(o derlendiği anlamına anlamına gelen "v5" ile gcc 5). Bu ikisi bir arada olamazlar , ancak her ikisi de sistemde tutulabilir. Yani evet dist-upgrade, bazı paketleri de kaldırabilir, ancak bunu dist-upgradeyapacak olan sadece bu değil ; belirli şartlar altında upgrade, aynı zamanda olur.
sözdizimi

500

Komuttan ne zaman bir apt-get upgrademesaj alırsanız

The following packages have been kept back:

daha sonra saklanan paketlerden birini veya tümünü yükseltmek için, bir dağıtım yükseltmesi yapmadan ( dist-upgradedoğru hatırlıyorsam bu ne yapar) komutunu vermektir:

apt-get install <list of packages kept back>

Bu, saklanan sorunları çözecek ve diğer cevaplarda açıklandığı gibi ek paketler vb. yüklemeyi isteyecektir.


3
Paketler bu şekilde tutulursa ve el ile yaparsam apt-get upgrade <list of packages>, tekrar yaparsam apt-get upgrade, söz konusu paketleri artık gerekmediği ve apt autoremovebunları kaldırmak için kullanabileceğim , yaptığım ve sonra sonuncusu apt-get upgradeolarak listeleyeceğim; geri çekildi ... Çok garip. Düşüncesi olan var mı?
cram2208

Does apt-get installgnarly bağımlılık durumları çözmek için gerektiğinde ayrıca paketleri kaldırmak veya ayrı çalıştırmak zorunda kalacak apt-get removeyükseltme işlemi o kısmını gerçekleştirmek için komut?
Michael Crenshaw

@ cram2208 Bunun beklenen davranış olduğuna inanıyorum. "Otomatik olarak yüklenen ve [...] artık gerekli değil" paketleri, artık gerekmeyen yükseltilmiş paketlerin önceki sürümleridir. apt autoremovedaha sonra bu kullanılmayan bağımlılıkları kaldırır.
Alex

3
Yükseltme yeni bir paketin kurulmasını gerektiriyorsa, paket "geri tutulur". Öncelikle şunları kullanmayı düşünün: sudo apt-get --with-new-pkgs upgradebu paketlerin elle kurulmuş olarak işaretlenmesine neden olacak yan etkisi olmayacak
l - marc l

@ mac9416 evet öyle.
jarno

174

apt-get dist-upgrade istikrarlı bir çevre için tehlikelidir,

  1. yanlış source.list ayarı ve bozuk ubuntu ile bitirin.
  2. Tüm uygulamanın istemediğiniz sürüme yükseltilmesini sağlayabilirsiniz.

Kullanım örneği: çekirdek yükseltme geri tutuldu, yalnızca çekirdeği yükseltmek istiyor, tüm dağıtımı yükseltmek istemiyorsunuz.

Saklanan paketi geri almanın daha iyi bir yolu:

sudo aptitude

Paketi geri sakladıysanız, listenin üstünde Yükseltilebilir Paketler görmelisiniz.

  • Bu listede + tuşuna basın
  • İki kere g vur
  • Sorulursa debconf olaylarına cevap verin
  • Devam etmek için return tuşuna basın
  • Q düğmesine basın
  • Evet tuşuna basın

Paketini geri aldın.


34
apt-get dist-upgradeyalnızca içinde kötü havuzlar varsa tehlikelidir /etc/apt/sources.list*. Tüm paketleri dist-upgradeyükselttiğinin farkında olmak iyidir , ancak varsayılan depolarda bunun iyi olması gerekir. Değil kullanarak güvenlik güncelleştirmelerini kaçırabilirsiniz olarak, tehlikeli olabilir. dist-upgrade
Flimm

6
apt-get dist-upgradeolabilir kaldırmak yanı sıra paketleri ekleyebilir, ama gerçekten tehlikeli değildir. Herhangi bir paket yükleme komutu, dosyanızda sorun yaşarsanızsources.list ciddi hasara neden olabilir ! Düzenli bir apt-get upgradekomut, herhangi bir paketi etkin olan herhangi bir yazılım kaynağından yükler; dist-upgradebu şekilde benzersiz değil. Ayrıca, aptitudeen azından amd64'te herhangi bir işlemi gerçekleştirmek apt-get dist-upgrade, böcek 831768'in sabit olmadığı bir sürümde koşmaktan çok daha tehlikelidir .
Eliah Kagan

Benim için, sadece sinaptik açmak ve paket yükseltmesini zorlamak (X çalışan yerel makine) daha kolaydı. Bazı nedenlerden dolayı, sinaptikte tanımladığınız yeri göstermedi.
djvs

3
Ayrıcasudo aptitude safe-upgrade
msanford 19:16

146

Neden bu Unix SE cevabını denemiyorsunuz :

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

Bu, yeni paketlerin kurulmasına izin verir. Hangi paketlerin yükleneceğini bilmenizi sağlar ve gerçekte kurulumu yapmadan önce sizi yönlendirir.

aptKomut ( dost alternatif için apt-getbu seçeneği paylaşmak).

Kullanılması apt install <pkg>"elle yüklenen" olarak pkg damgasını vuracak yerine !! Tekrar "otomatik olarak yüklendi" olarak işaretlemek için kullanın apt-mark auto <pkg>(ayrıca alt komut bölümüne bakın showmanual). Bu cevap hakkında daha fazla bilgi .


20
+1, paketlerin elle kurulmuş olarak işaretlenmesine neden olma yan etkisine sahip olmadığından.
ctrl-alt-delor

1
Yukarıdaki yorumlarımı kimin okuduğuna dikkat edin: işaretlemenin elle kurulmuş olarak yan etkisinin olmaması iyi bir şeydir. Bu cevabı beğendim.
ctrl-alt-delor

1
Evet. apt-mark auto <pkg>bir paketi sadece otomatik olarak kurulduğunu işaretlemek için gerekli olmalıdır ( burada man sayfası ).
Pablo A,

11
Nedense sudo apt-get --with-new-pkgs upgradepaketleri hala "geri tutuldu" olarak gösteriyor. Hata mesajı yok.
Franklin Yu

2
Sadece, birçok debian 9.6 sunucu örneği için, bunun, işleri kırmadan en güvenli çözüm olduğunu eklemek istiyorum. Bunun için evreleme ortamlarındaki diğer seçenekleri neyse ki çok iyi test ettiğimden ve gelecekteki genel paket yönetimi için çok daha net sonuçlar veren yeni pkgs'lerin eklenmesi sayesinde birçok sunucuyu güvenlik standartlarına kadar yönetebildiğim için teşekkür ederim. Gerçekten, bu UNIX SE cevabı iptal edilmelidir!
Julius

34

Bu mesajı görmenizin normalde iki nedeni vardır.

Programın (yoluyla sudo apt-get upgrade) yükseltilmesi, paketlerin eklenmesine veya kaldırılmasına neden olursa, program geri alınır. Sen kullanabilirsiniz sudo apt-get dist-upgradesonra ek programlar eklemek veya kaldırmak için sunacak bu durumda, içinde.

Bu oldukça yaygındır ve genellikle bir sorun değildir. Bazen (özellikle bir Ubuntu alfa sırasında) a dist-upgradebaşka birçok programın kaldırılmasını önerecektir; bu durumda muhtemelen iptal etmek istersiniz.

Program mevcut olmayan paketlere veya sürümlere bağlıysa, program geri tutulur. Paket temelde kaldırılamaz olduğundan, gerçekten bu konuda hiçbir şey yapamazsınız. Bu, paketler depoya sıra dışı olarak eklendiğinde, bir paket yeniden adlandırıldığında veya bir paket sanal bir paket sağlamayı bıraktığında gerçekleşebilir.


5
Bekletilen paketin yüklenemeyen bir bağımlılık gerektirip gerektirmediğini veya diğer paketler buna bağlı olduğu için tutulup tutulmadığını belirlemenin bir yolu var mı? Elimde çok sayıda paket var ve bu iki durumun da sistemimde geçerli olabileceğine inanıyorum.
Jake,

Teşekkürler, ikinci sebep benim için sorun oldu. Hatta apt-get dist-upgradeyüklemeyi reddetti. Paketi yetenekli bir şekilde incelemek mevcut olmayan bir pakete bağlı olduğunu gösterdi. Sanırım beklemem gerekecek.
JLH

23

Ayrıca deneyebilirsiniz:

sudo aptitude safe-upgrade.

full-upgrade(Orijinal olarak dist-upgrade olarak adlandırılmış) den daha güvenli çünkü "kullanılmadıkça paketler kaldırılmayacak".

Kimden man aptitude:

güvenli yükseltme

Yüklenmiş paketleri en son sürümlerine yükseltir. Kurulu paketler kullanılmadıkça kaldırılmaz /.../ Şu anda kurulmamış paketler, --no-new-installs komut satırı seçeneği sağlanmadıkça bağımlılıkları gidermek için yüklenebilir.


21

Büyük olasılıkla bu paketler geri tutulur, çünkü kurulumları bağımlılık tutarsızlıkları yaratacaktır. Bu, aktif geliştirme, ppas arşivlerini kullandığınızdan veya kullandığınız yansıtma tamamen güncellenmediğinden olabilir.

Son durumda, sadece bekleyin, bağımlılıklar çözüldüğünde bir dahaki sefere kurulacaktır.

Düzenle:

Başka bir olasılık daha var, paketler üzerlerinde tutulursa veya sabitlenirse geri tutulabilir.


Apt-get-up yükseltme veya apt-get-dist-yükseltme (neye göre eşdeğer bir yükseltme) yaptığını bilmeden bu olasılığa dayanıyor musunuz?
andol

Bu, destek soruları ve hatalarında en çok ortaya çıkan sorun
txwikinger

Kabul. Muhtemelen beklemeli ve apt_preferences'ı kontrol etmelisin. Bu genellikle ve mevcut paket bağımlılıklarının çok hızlı değiştiği geliştirme arşivlerinden kaynaklanır. Yerleşmelerini bekleyin; hiç ihtiyacınız olmayabilir dist-upgrade. Hala isterseniz dist-upgrade, devam etmeden önce kurulacak olan YENİ paketlere ve kaldırılacak paketlere bakın.
Umang

Bu benim durumum çünkü dist yükseltme kullanarak "tutulan" mesajı
alıyorum

Bu sorun (iğneleme) apt tercihleriyle bir messup kaynaklanmaktadır durumlarda, ben tuttu paketlerin yeniden yüklenmesi bana yardımcı bulundu: apt-get install --reinstall <packages>.
tanius,

9

Bunun nedeni genellikle paketin bir bağımlılık eklemesi ve yükseltme işleminin sizin için izinsiz eklemek istememesidir.

Eğer koşarsan:

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

O zaman yeni sürümler, yeni bağımlılıklarıyla birlikte kurulmalıdır.


Belirli bir yükseltme taahhüdünde bulunmaksızın (riskleri) belirli paketleri (ve bağımlılıklarını) yükseltir.
John Mee

8

Bu benim için çalıştı

sudo aptitude full-upgrade

Hatta aptitude upgradebenim için çalıştı.
Bibhas

Kullanıyorum Ubuntu 14.04ve aptitudekomut satırı yok
ahmed hamdy 31:15

apt-get dist-upgradebana aynı mesajı verdi, ama bu benim için çözdü. Başka bir paketin yükseltilmesini bozan bir paketim vardı. Kurmuş olduğuma ihtiyacım yoktu, bu yüzden aptitude full-upgradebana her şeyi yükseltebilmesi için kaldırma seçeneğini verdi.
f.ardelian

6

Sürümler biraz farklılık gösterirse, özelliğin paketleri yükseltmede daha iyi bir iş çıkardığını öğrendim. Böyle bir durum vardı:

me@compy:/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

Bu, apt-get'in güncellemeyi geri almasını sağladı, ancak yetenek durumu çok iyi güncelledi. Bir paketin güncellenip güncellenmeyeceğini belirlemek için hangi algoritmanın kullanıldığından emin değilim. Sanırım bu ikisi aynı sürüme sahipti, sadece farklı bir 'eleme aracı' vardı. Ancak her durumda apt-get bunu güncellemez, ancak yetenek olur.


4

Benim durumumda paketlenenler linux başlıkları ve çekirdeği ile ilgili olanlardı . Buraya, bildirim alanında kırmızı bir ünlem işareti bulunan ve paketleri güncelleyemeyen bir sorunu çözmeye çalışarak geldim.

Bunu çözmek için, ne yükseltme yükseltme ne de manuel apt-get install xxx kullanmak zorunda değildim .

Yaptığım ve yardım ettiğim şey basit ve temizdi :

sudo apt-get update
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt-get upgrade

Grub güncellemesini ve yapılandırmasını manuel olarak onaylamak zorunda kaldım.

Sonra bir süre bilgisayarla çalıştım ve ardından nihayet çekirdek ve ilgili "Ubuntu base" bölümünü içeren standart güncelleme diyalogu tekrar belirdi. Güncelleme sorunsuz bir şekilde yapıldı ve artık hiçbir geri tutma paketi görmüyorum.

Ayrıca, çekirdek güncellemeleri de dahil olmak üzere bu * buntu güncellemelerinin hazırda bekletme moduna duyarlı olduğunu unutmayın - birkaç kez bu sorunu çözdüm ve makineyi yeniden başlatarak ve yukarıdaki adımları uygulayarak her zaman çözdüm.

Yani belki bu sadece yeterli olur ?!

(burada açıklanan durum, Aralık 2015 sonunda Xubuntu 15.10 ile ilgilidir)


3

Yeni bir çekirdek çıktığında bu problemle karşılaştım. (Muhtemelen dengesiz güncellemeleri etkin kıldığım için.) Kurulumu yapmanın en basit yolunu Ubuntu'nun grafik yükleyicisi ( update-manager) aracılığıyla buldum .


2

Bu soruna sinaptik kullanarak girdim, çünkü asılıyor gibi görünüyordu ve yeniden denemek için yeniden denedim ve yeniden denedim.

Sonra benim için bazı kurulum sonrası talimatları ile paketin bir parçası olarak bilgilendirici bir mesaj keşfettim.

" Ayrıntılara " basmak zorunda kaldım , sonra mesajı okuduktan sonra çıkmak için ' q ' yazdım ve işler normal şekilde devam etti.


2

Bu geri tutulan paketi yeniden yüklemenin doğru yoluna benziyor:

apt-get install --reinstall libjpeg-progs

En azından bu benim için çalıştı libjpeg-progsve Ubuntu 14.04'ten 16.04'e yükselttikten sonra takıldı. Eminim diğer saklanan uygulamalarla da aynı şeyi yapabilirsiniz, örneğin gimp.

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


1
Sen de olmadan yapabilirsin --reinstall.
jarno

Komik olan, libjpeg-turbo-progs paketini kaldırması.
jarno

1

Gerçekte ihtiyacınız olan anahtar, ilgili dselect-upgradepaket seti için bağımlılıkları kuran / kaldıran anahtardır .


1

Tüm mesajları okudum ve çok ilginç açıklamalar olduğunu öğrendim. Hepsini deniyordum ama sonuçta hiçbir sonuç yok. Yükseltemediğim mysql programları ile ilgili bir sorunum var . Güncelleme sistem tarafından önerildi. Bu yüzden, bunu yapmak için bazı adımlar göstermek istiyorum. Tabii ki, anılan tüm yayınların bazı anlarında tekrarlayacağım. İşte benim hatam, evet daha önce var olan gönderilerde buldum, ama sonra ne yapmalıyım? görüntü tanımını buraya girin

Bir sonraki adım:

sudo apt-get --purge remove mysql-utilities

Aşağıdaki resimde gördüğümüz sonuçlar. Paketi kaldırıyorum ve şunu kontrol ederek:

sudo apt-get -f install

Sonuçlar - Güzel! Daha sonra paketin bu yeni sürümünü doğru kurdum. görüntü tanımını buraya girin

Bu şekilde, daha yeni insanlara yardım edebileceğini düşünüyorum çünkü başka paketleri de aynı adımları uygulayabiliriz.

Bir keresinde, bazı yerlerde başka yazılarda tekrar ettiğim için özür dilerim.


5
Lütfen terminal metni için ekran görüntüleri kullanmayın, çünkü bu Google tarafından aranmaz hale gelir ve bazı kullanıcılar tarafından okunamaz hale gelir. Bunun yerine, terminal metnini cevabınıza yapıştırın, o metni seçin ve {}uygun şekilde biçimlendirmek için düzenleyicideki düğmeye basın .
Chai T. Rex,

@ ChaiT.Rex Açıklamalar için teşekkürler, gelecek için görüşünü alacağım.
Vasyl Lyashkevych,

1

Ubuntu 18.04, aptyerine kullanılabilecek olan daha yeni, düzenli bir sözdizimi sağlar apt-get.

sudo apt full-upgrade

sudo apt upgradesisteme şu anda yüklü olan tüm paketlerin mevcut yüklemelerini sources.list (5) ile yapılandırılmış olan kaynaklardan yüklemek için kullanılır. Bağımlılıkları sağlamak için gerekirse yeni paketler kurulacak, ancak mevcut paketler asla kaldırılmayacak. Bir paket için yükseltme, kurulu bir paketin kaldırılmasını gerektiriyorsa, bu paket için yükseltme gerçekleştirilmez.

sudo apt full-upgrade yükseltme işlevini gerçekleştirir, ancak sistemi bir bütün halinde yükseltmek gerekirse, şu anda yüklü olan paketleri kaldırır.

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.