GNU/Linux >> Znalost Linux >  >> Ubuntu

Oprava chyby „Nelze opravit problémy, máte poškozené balíčky“ v Ubuntu a dalších distribucích Linuxu

I když existují různé způsoby instalace aplikací v Ubuntu, já dávám přednost použití příkazu apt v terminálu pro instalaci softwaru.

Pokud uděláte totéž, můžete narazit na chybu závislosti, jako je tato:

Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 green-recorder : Depends: python-urllib3 but it is not installable
E: Unable to correct problems, you have held broken packages.

Obvykle na It's FOSS najdete jednoduchá a snadno sledovatelná řešení komplikovaných problémů. Bohužel to není tak přímočaré.

V tomto článku o odstraňování problémů vám řeknu, proč k této chybě dochází, a uvedu několik rad, jak tento problém vyřešit.

Proč se vám zobrazuje chyba „Podrželi jste poškozené balíčky“?

Pokoušeli jste se nainstalovat balíček aplikace, s největší pravděpodobností z PPA nebo úložiště třetí strany.

Aplikace často potřebují specifické verze knihoven a softwarových komponent (tzv. závislosti). Tyto závislosti nemusí být součástí samotného balíčku aplikace, ale očekává se, že již budou nainstalovány ve vašem systému nebo nainstalovány během instalace aplikace.

Váš systém Linux se pokusí nainstalovat tyto závislosti sám. Pokud však verze balíčku závislostí není na vašem systému k dispozici, bude zmatená, protože nemá způsob, jak tento problém se závislostí vyřešit.

To je důvod, proč vás informuje, že software, který jste se pokoušeli nainstalovat, závisí na XYZ, ale tento XYZ nelze nainstalovat.

Dalším případem použití je situace, kdy může být váš balíček zadržen, když se pokusíte nainstalovat dvě verze stejného softwaru. Řekněme, že instalujete konkrétní verzi Wine, když už máte nainstalovanou jinou.

Jak postupovat při opravě chyby „Nelze opravit problémy, máte poškozené balíčky“

Můžete zkusit pár věcí, aby věci fungovaly. Potřebujete nějaké nápady na instalaci/odebírání balíčků v příkazovém řádku Linuxu, abyste to mohli vyřešit zde.

Ujistěte se, že je mezipaměť balíčků vašeho systému aktualizována

Nejprve se ujistěte, že je aktualizována místní mezipaměť balíčků. Váš systém zkontroluje tuto mezipaměť pro dostupné balíčky. Je možné (ale není to jisté), že po aktualizaci mezipaměti systém uvidí balíček závislostí.

sudo apt update

Zkuste problémový balíček nainstalovat znovu a zjistěte, zda problém vyřeší.

Nainstalujte závislost

Pokud se pokusíte nainstalovat problematický balíček znovu a stále si stěžuje na stejnou chybu závislosti, je možné, že závislost není dostupná pro distribuční verzi.

Můžete použít příkaz apt search a zjistit, zda byste mohli tuto knihovnu z nějakého jiného balíčku nebo názvu:

sudo apt search package_name

Pokud je balíček k dispozici, jedná se o stejnou verzi, jakou požaduje balíček, který se pokoušíte nainstalovat?

Zkuste nainstalovat balíček závislostí a uvidíte, co se stane:

sudo apt install dependency_package

Můžete narazit na řetězec závislostí. Pokusíte se nainstalovat závislost A, ale stěžuje si na B. Pak zkusíte nainstalovat B a stěžuje si na C.

Může se také stát, že když se pokusíte nainstalovat balíček C, je již nainstalován. Zkontrolujte verzi balíčku C. Je to stejná verze, jakou vyžaduje balíček B? Pokud ano, může pomoci odstranění C a jeho opětovná instalace.

Můžete získat chybějící balíček závislostí z nějakého jiného zdroje?

Pokud chybějící balíček závislostí nelze ve vašem systému najít (žádné výsledky ve vyhledávání apt), můžete zkusit získat balíček závislostí z jiného místa. Vím, že to není příliš pohodlné, ale moc možností zde nemáte.

Například v případě instalace shutter si stěžoval na libgoo-canvas-perl a tato knihovna již není v systému Ubuntu dostupná.

sudo apt install shutter
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 shutter : Depends: libgoo-canvas-perl but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

Protože však byl k dispozici v předchozích verzích Ubuntu, hledal jsem tento balíček v archivu balíčků Ubuntu a našel jsem ho pod seznamem Ubuntu 14.04 zde. Stáhl jsem soubor .DEB a nainstaloval jej.

Nyní, když je tento závislý balíček nainstalován, pokus o instalaci původní aplikace (v tomto případě závěrky) by si již neměl stěžovat alespoň na tento balíček.

Pokud nemůžete balíček závislostí nikde najít, nainstalujte si problematický balíček z jiného zdroje

Takže ve výše uvedeném příkladu jsem se pokusil nainstalovat aplikaci Green Recorder pomocí jejího PPA. Tato aplikace potřebuje python-urllib3 knihovna, ale bohužel tato knihovna není dostupná v mém systému Ubuntu 20.04.

[email protected]:~$ apt search python-urllib3
Sorting... Done
Full Text Search... Done

Je zřejmé, že se jedná o špatně zabalenou aplikaci. Vývojář jej zpřístupnil pro Ubuntu 20.04, aniž by si uvědomil, že Ubuntu 20.04 již nepodporuje Python 2 a všechny knihovny Python nyní začínají s předponou python3. Takže python-urllib3 by měl být python3-urllib3.

Pokud jste v takové situaci, možná se podívejte na domovskou stránku projektu nebo vyhledejte na internetu alternativní zdroj pro jeho instalaci. Možná existuje verze Snap/Flatpak nebo pro ni nějaký uživatel vytvořil PPA? Pokud nic jiného, ​​můžete také použít možnost zdrojového kódu.

Pokud během aktualizace uvidíte chybu pozastaveného balíčku, zkuste toto

Většina dosavadních diskuzí předpokládala, že tuto chybu vidíte při instalaci nové aplikace. To nemusí být vždy případ.

Pokud se při pokusu o aktualizaci systému pomocí příkazu sudo apt update zobrazí tato chyba, budete muset zvolit trochu jiný přístup.

Nejprve zkontrolujte, který balíček je uchováván pomocí tohoto příkazu:

dpkg --get-selections | grep hold

Pokud vidíte, že jsou některé balíčky pozastaveny, odeberte je a pokračujte v aktualizaci systému nebo instalaci softwaru.

Můžete také použít správce balíčků Synaptic pro opravu poškozených balíčků.

Podařilo se vám problém vyřešit?

Jak jsem již uvedl dříve, neexistuje žádné přímé řešení tohoto problému. Budete to muset prozkoumat sami a zjistit, zda to lze opravit nebo ne.

Podělte se prosím v komentářích, zda bude váš problém vyřešen. Pokud ne, možná se vám pokusím pomoci.



Ubuntu
  1. Jak nainstalovat Rust and Cargo na Ubuntu a další distribuce Linuxu

  2. Jak nainstalovat prohlížeč Vivaldi na Ubuntu a další distribuce Linuxu

  3. Oprava chyby „Cílové balíčky jsou nakonfigurovány vícekrát“ v distribucích Linuxu založených na Ubuntu a Debianu

  1. Jak sledovat Hulu na Ubuntu a dalších distribucích Linuxu

  2. Jak opravit chybu instalace balíčku – Problémy se nepodařilo opravit, máte poškozené balíčky

  3. Instalace Odbcins1debian2, přerušená závislost na Ubuntu 20.04 Lts?

  1. Kompletní průvodce používáním balíčků Snap v Ubuntu a dalších distribucích Linuxu

  2. Nelze najít chybu balíčku na Ubuntu 20.04 Focal Fossa Linux

  3. Oprava „Nelze získat zámek frontendu dpkg. Jste root?" Chyba v Ubuntu a dalších distribucích Linuxu