it-swarm.dev

„Následující balíčky byly uchovány zpět:„ Proč a jak to vyřeším?

Právě jsem přidal úložiště PPA pro vývojovou verzi GIMP, ale dostávám tuto chybu:

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

Proč a jak to mohu vyřešit, abych mohl použít nejnovější verzi místo toho, které mám nyní?

944
jfoucher

Podle článek o debian-administration.org ,

Pokud se změnily závislosti na jednom z nainstalovaných balíčků, takže pro provedení aktualizace musí být nainstalován nový balíček, bude tento seznam uveden jako „keep-back“.

Opatrné řešení 1:

Za Pabloova odpověď můžete spustit Sudo apt-get --with-new-pkgs upgrade, a nainstaluje si balíčky uchovávané zpět.

To má výhodu v tom, že neoznačené balíčky uchovávané zpět jako „ručně nainstalované“, což by mohlo vést k většímu zásahu uživatele po řádku (viz komentáře).

Pokud pro vás řešení Pabla funguje, prosíme vás, abyste ho podpořili. Pokud ne, uveďte, co se pokazilo.

Opatrné řešení 2:

Opatrným řešením je spustit Sudo apt-get install <list of packages kept back>. Ve většině případů to dá udržovaným balíčkům, co potřebují k úspěšné aktualizaci.

Agresivní řešení:

Agresivnějším řešením je spuštění Sudo apt-get dist-upgrade, což vynutí instalaci těchto nových závislostí.

Ale dist-upgrade může být docela nebezpečné . Na rozdíl od upgrad to může odebrat balíčky pro řešení složitých situací závislosti. Na rozdíl od vás APT není vždy dost chytrý na to, aby věděl, zda tyto dodatky a odstranění mohou způsobit katastrofu).

Pokud se tedy ocitnete na místě, kde „obezřetné řešení“ nefunguje, dist-upgrade může práce ... ale pravděpodobně se lépe naučíte něco více o APT a vyřešíte problémy závislosti "ručně" instalací a odebírání balíčků případ od případu.

Přemýšlejte o tom, že byste si měli opravit auto ... pokud máte čas a jste po ruce klíčem, budete mít jistotu, že si přečtete a sami provedete opravu. Pokud máte štěstí, můžete s bratrancem opustit své auto dist-upgrade a doufám, že zná její věci.

981
Michael Crenshaw

Kdykoli obdržíte od příkazu apt-get upgrade zpráva

The following packages have been kept back:

pak upgradujte jeden nebo všechny balíčky uchovávané zpět, aniž byste provedli upgrade distribuce (to je to, co dist-upgrade dělá, pokud si dobře pamatuji) je vydat příkaz:

apt-get install <list of packages kept back>

to vyřeší problémy s udržováním zpět a vyžádá si instalaci dalších balíčků atd., jak bylo vysvětleno jinými odpověďmi.

519
user88285

apt-get dist-upgrade je nebezpečný pro stabilní prostředí,

  1. špatné nastavení source.list a skončíte s nefunkčním ubuntu.
  2. můžete celou aplikaci upgradovat na verzi, kterou nechcete.

Příklad použití: upgrade jádra zachován zpět, chcete pouze upgradovat jádro, nechcete upgradovat celou distribuci.

Lepší způsob, jak zacházet s udržovaným zadním balíčkem:

Sudo aptitude

Pokud jste si ponechali zpět balíček, měli byste vidět Upgradable Packages v horní části seznamu.

  • Hit + na tomto seznamu
  • Stiskněte g dvakrát
  • Na požádání odpovězte na věci debconf
  • Pokračujte stisknutím návratu
  • Stiskněte klávesu Q
  • Stiskněte tlačítko ano

Máte nainstalovaný zadní balíček.

174
mudy

Zkuste tato Unix SE odpověď :

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

To umožňuje instalaci nových balíčků. Dá vám vědět, jaké balíčky by byly nainstalovány, a vyzve vás, než skutečně provedete instalaci.

příkaz apt ( přátelská alternativaapt-get ) sdílet tuto možnost.

Pomocí apt install <pkg> místo toho označí pkg jako „ručně nainstalovaný“ !! Chcete-li jej znovu označit jako „automaticky nainstalovaný“, použijte apt-mark auto <pkg> (viz také dílčí příkaz showmanual). Více informací k této odpovědi .

169
Pablo Bianchi

Tato zpráva se může obvykle zobrazit ze dvou důvodů.

Pokud upgradujete program (přes Sudo apt-get upgrade) by způsobil přidání nebo odebrání balíčků, pak bude program pozastaven. Můžeš použít Sudo apt-get dist-upgrade v tomto případě, který pak nabídne přidání nebo odebrání dalších programů.

To je docela běžné a obvykle to není problém. Občas (zejména během alba Ubuntu) a dist-upgrade nabídne odebrání mnoha dalších programů. V takovém případě jej pravděpodobně budete chtít zrušit.

Pokud program závisí na balíčcích nebo verzích, které nejsou dostupné, bude program pozastaven. Za těchto okolností opravdu nemůžete dělat nic jiného, ​​než čekat, protože balíček je v zásadě odinstalovatelný. To se může stát, když jsou balíčky přidány do úložiště mimo provoz, když je balíček přejmenován nebo když balíček přestane poskytovat virtuální balíček.

35
jbowtie

Můžete také vyzkoušet:

Sudo aptitude safe-upgrade

Je to bezpečnější než full-upgrade (původně pojmenované dist-upgrade), protože „balíčky nebudou odstraněny, pokud nebudou použity“.

Z man aptitude :

bezpečná aktualizace

Upgraduje nainstalované balíčky na nejnovější verzi. Nainstalované balíčky nebudou odstraněny, pokud nebudou použity /.../ Balíčky, které nejsou aktuálně nainstalovány, mohou být nainstalovány pro vyřešení závislostí, pokud není zadána volba - no-new -instal příkazového řádku.

24
Afilu

S největší pravděpodobností jsou tyto balíčky zadrženy, protože jejich instalace by způsobila nekonzistence závislosti. K tomu může dojít, protože používáte archivy pod aktivním vývojem, ppas, nebo protože zrcadlo, které používáte, není úplně aktualizováno.

V posledním případě počkejte, až budou vyřešeny závislosti, bude nainstalována příště.

pravit:

Existuje další možnost, že balíčky mohou být zadrženy, pokud je na nich přidržen nebo pokud jsou připnuty.

21
txwikinger

Důvodem je obvykle to, že balíček přidal závislost a upgrade ho nechce přidat bez povolení.

Pokud spustíte:

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

Nové verze by pak měly být nainstalovány společně s jejich novou závislostí.

10

To pro mě fungovalo

Sudo aptitude full-upgrade
9
Singh

Zjistil jsem, že aptitude dělá lepší práci při aktualizaci balíčků, pokud se verze liší jen nepatrně. Měl jsem takovou situaci:

[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

Díky tomu apt-get pozastavil aktualizaci, ale aptitude ji aktualizoval. Nejsem si jistý, jaký algoritmus se používá k určení, zda by měl být balíček aktualizován nebo ne. Myslím, že tito dva měli stejnou verzi, pouze odlišný „kvalifikátor“. Ale v každém případě by to apt-get neaktualizoval, ale aptitude by.

6

V mém případě byly balíčky zadrženy ty, které se týkaly linuxových hlaviček a jádra. Došel jsem k tomu tím, že jsem se pokusil vyřešit problém s červeným vykřičníkem v oznamovací oblasti a nemohl aktualizovat balíčky.

Abych to vyřešil, nemusel jsem používat dist-upgrade ani manuální apt-get install xxx .

To, co jsem udělal a pomohl, bylo jednoduché a čisté:

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

Musel jsem ručně potvrdit aktualizaci Grubu a jeho konfiguraci.

Pak jsem chvíli pracoval s počítačem a pak se znovu objevil standardní dialog pro aktualizaci, včetně sekce „Ubuntu base“ s jádrem a související. Aktualizace proběhla bez problémů a již nevidím žádné zadržené balíčky.

Také je velmi důležité mít na paměti, že tyto * buntu aktualizace včetně aktualizace jádra jsou citlivé na hibernaci - Mám tento problém několikrát a vždy jsem to vyřešil restartováním počítače a provedením výše uvedené kroky.

Možná by to stačilo ?!

(situace zde popsaná souvisí s mým Xubuntu 15.10 na konci prosince 2015)

4
crysman

Když jsem vydal nové jádro, narazil jsem na tento problém. (Pravděpodobně proto, že mám povoleny nestabilní aktualizace.) Nejjednodušší způsob, jak provést instalaci, byl pomocí grafického instalátoru Ubuntu (update-manager).

3
Kazark

Ubuntu 18.04 poskytuje novější, efektivnější syntaxi prostřednictvím apt, která je funkčně podobná Sudo apt-get --with-new-pkgs upgrade.

Sudo apt full-upgrade

Sudo apt upgrade se používá k instalaci dostupných aktualizací všech balíčků aktuálně nainstalovaných v systému ze zdrojů nakonfigurovaných prostřednictvím sources.list (5). Nové balíčky budou nainstalovány, pokud to bude vyžadováno pro uspokojení závislostí, ale stávající balíčky nebudou nikdy odstraněny. Pokud aktualizace balíčku vyžaduje odebrání nainstalovaného balíčku, aktualizace tohoto balíčku se neprovede.

Sudo apt full-upgrade vykonává funkci aktualizace, ale odstraní aktuálně nainstalované balíčky, pokud je to nutné pro upgrade systému jako celku.

Viz: aptman page

3
l --marc l

Narazil jsem na tento problém pomocí synaptic, protože to vypadalo, že visí, a pokusit se opravit tento jsem re-boot a pokusil se znovu.

Poté jsem v rámci balíčku objevil informativní zprávu s některými pokyny po instalaci.

Po přečtení zprávy jsem musel zasáhnout „podrobnosti“, a poté „q“, abych skončil, a pak se věci běžely normálně.

2
Elliptical view

Vypadá to jako správný způsob přeinstalace chráněného zpětného balíčku:

apt-get install --reinstall libjpeg-progs

Alespoň to pro mě fungovalo, když libjpeg-progs uvízl po upgradu z Ubuntu 14.04 na 16.04. Jsem si jistý, že můžete udělat totéž s jakoukoli jinou udržovanou aplikací, např. gimp.

Zdroj

2

Přečetl jsem všechny příspěvky a zjistil jsem, že existuje mnoho zajímavých vysvětlení. Snažil jsem se všechny, ale žádné výsledky jsem neměl úplně. Mám problém s mysql-utilities , které jsem nemohl upgradovat. Aktualizace byla navržena systémem. Takže chci ukázat pár kroků, jak to udělat. Samozřejmě, že v některých okamžicích zopakuji všechny výše uvedené příspěvky. Zde je moje chyba, ano, našel jsem ji již existujícími příspěvky, ale co mám dělat dál? enter image description here

Dalším krokem je:

Sudo apt-get --purge remove mysql-utilities

Výsledky můžeme vidět na obrázku níže. Odeberu balíček a zkontroluji to příkazem:

Sudo apt-get -f install

Výsledky - Fajn! Později jsem tuto novou verzi balíčku nainstaloval správně. enter image description here

Tímto způsobem si myslím, že může pomoci více novým lidem, protože s dalšími balíčky můžeme provést stejné kroky.

Jednou se omlouvám, když jsem na některých místech opakoval další příspěvky.

1
Vasyl Lyashkevych

Ve skutečnosti je požadovaný přepínač dselect-upgrade které nainstaluje/odebere závislosti pro konkrétní zahrnutou sadu balíčků.

1
Johnny