Eltávolíthatatlan, rossz, következetlen állapotban lévő csomag törlése

kimarite képe

Sajnos, belefutottam egy olyan jelenségbe, hogy az egyik számítógépemre nem telepíthető egy alkalmazás konzolos megoldása. És az eltávolítás is nehézségekbe ütközik: a csomag rossz, következetlen állapotban van - mondja a rendszer (a terminál, és a Synaptic). Tájékoztatás: a hiba a gépemben van, azaz a Telegram alkalmazáshoz (vélhetően, mert manapság mihez nem) szükséges a processzor SSE2 támogatása, és nálam ez nem teljesül. Összefoglalva: az SSE2 CPU támogatás hiánya miatt a grafikus alkalmazás nem indul, a CLI változat nem telepíthető, de utóbbi eltávolítása vagy javítása sem lehetséges a szokásos módszerekkel.

A hibaüzenet:
(azaz nincs frissítési forrás [archívum], ugyanis DEB csomagból telepítettem)

Remove package in bad state

The package 'telegram-cli' is in an inconsistent state
and needs to be reinstalled, but no archive can be found for it.

Mit lehet ilyenkor tenni?

Például a következőt:

sudo dpkg --remove --force-remove-reinstreq telegram-cli

Mit mond a kapcsolóról (--force-remove-reinstreq) a 'dpkg' kézikönyve?

man dpkg

Package flags
       reinst-required
              A package marked reinst-required is broken  and  requires  rein‐
              stallation. These packages cannot be removed, unless forced with
              option --force-remove-reinstreq.

[és]

--force-things, --no-force-things, --refuse-things

              remove-reinstreq:  Remove  a  package,  even  if it's broken and
              marked to require reinstallation. This may, for  example,  cause
              parts of the package to remain on the system, which will then be
              forgotten by dpkg.

Tehát az van a kézikönyvben, hogy ezt a kapcsolót  használd,
-- ha a csomag -valamilyen okból- törött és
-- a javítás újratelepítést igényel. Ami például nem sikerül ...
így a 'dpkg' majd jól el fogja felejteni.
Az újratelepítés nálam nem járt eredménnyel.

A következő lépés, hogy

-- futtatod az update és az upgrade parancsokat

sudo apt-get update
sudo apt-get upgrade

-- így a hibáknak -ha egyáltalán vannak- látszaniuk kéne.

A beállítófájlok törlését -a példában szereplő csomag tekintetében, és mert ezt nem tettem meg- a '--purge' kapcsolóval hajtom végre,
(a telegram csomagot korábban -teljes eltávolítással- töröltem, így azzal nem kell foglalkoznom)

sudo dpkg --purge telegram-cli

vagy -más csomagok tekintetében, melyek a rendszer működéséhez feleslegesek- az alábbi paranccsal.

sudo apt-get autoremove --purge

Tekintettel arra, hogy a 'telegram-cli' telepítése egy függőséget igényelt, ez azonban más alkalmazáshoz kifejezetten nem tartozik: éppen ezért nem szükséges, hogy telepítve legyen.

Ha az előbbi módszer nem válik be, akkor:

-- a 'cd' paranccsal belépsz az alábbi könyvtárba

cd /var/lib/dpkg/info

-- majd az 'rm' paranccsal törlöd a gondot okozó csomagnevet tartalmazó fájlokat
(a * a fájlnevek végét helyettesíti)

sudo rm --force telegram-cli*

-- a törlés után kilépsz a könyvtárból

cd

-- és a már ismertetett módszer szerint lépsz tovább, innen indulva:

sudo dpkg --remove --force-remove-reinstreq telegram-cli

Enjoy!

:::::

Fogalmak
(pl. a Synaptic csomagkezelő is használja a kifejezéseket az eltávolítási menüben)

-- Eltávolítás: a csomag eltávolítása, de beállításai megmaradnak ( remove )
-- Teljes eltávolítás: a csomag és beállításainak eltávolítása ( purge )

-- az 'apt-get' parancs újabb rendszereken az 'apt' paranccsal helyettesítendő. De ezt már úgyis tudod.