A Debian csomagkezelése egyszerű, így az alapokat egy videóban foglaltam össze. Ott, és a manuálokban összeszedhető alaptudással már a feladatok nagy részét megoldhatjuk. Ma a lekérdezést és a telepített csomagok listájának mentése lesz a téma. Bár a legtöbb Debian felhasználó valamelyik grafikus csomagkezelőt használjam de érdemes megtanulni a terminálos megoldásokat is.
A mai alap feladat a telepített csomagok lekérdezése, a lista mentése és az újratelepítéskor azok beolvastatása lesz.
Előbb a miért kérdésre kell válaszolni, ami valóban kérdés lehet.
Miért kell lementeni a csomagok listáját?
Nem kell, nem kötelező, de jó dolog. Ha van egy jók összerakott, minden szempontból megfelelően összeválogatott programokat tartalmazó rendszered, majd újra kell telepíteni a rendszert, akkor nem árt, ha tudod mi is volt fenn. A másik nagy előny a gyorsaság!
A telepítéskor nem kell egyesével megadni a csomagkezelőnek a csomagok nevét, hanem beolvastathatjuk a listát. Villámgyorsan elvégzi a telepítést.
A Debian csomag lista lekérdezése
Apt egy parancssori felület a csomagkezelő rendszerhez, és a leggyakrabban használt funkciókat egyesíti apt-get és apt-cache programnál. Így telepített csomagok felsorolásának lehetőségét is adja számunkra.
A rendszerre telepített összes csomag listázásához futtasd a következő parancsot:
sudo apt list --installed
A kimenete valami ilyen lesz:
xorg/stable,now 1:7.7+22 amd64 [telepítve] xorriso/stable,now 1.5.2-1 amd64 [telepítve]
xsel/stable,now 1.2.0+git9bfc13d.20180109-3 amd64 [telepítve]
xserver-common/mx,mx,now 2:1.20.13-1~mx21ahs+1 all [telepítve]
xserver-xorg-core/mx,now 2:1.20.13-1~mx21ahs+1 amd64 [telepítve]
Szép hosszú lista, amit biztosan nem fog senki végig nézegetni. De mielőtt továbblépnénk van egypár olyan tény, amit a feni listából leolvashatunk.
Fontos előfeltétel
A célom jelenleg a visszaölthető, újra telepíthető csomaglista kinyerése Debian alatt. A lista kinyerése nem jelent gondot, de a telepítés csak akkor lesz jó, ha a csomagok rendelkezésre állnak.
A listában – nálam, mert MX Linuxot használok – vannak ilyen bejegyzés xserver-xorg-core/mx, azaz az MX repóból telepítette. Ez már jelzi számunkra a kettős problémát.
- Két eltérő Debian Linuxra alapuló disztribúció közt nem feltétlen lehet a csomag listát mozgatni, mert esetleg más, saját tárolókat is használhatnak. Ez a legtöbb esetben nem okoz gondot, mert ha sima Debian Linuxra akarnánk az MX Linux listáját újratelepítéskor használni nagyon sok csomagot fel tudna rakni a hivatalos Debian tárolókból is. De nem mindet, amit az MX Linux sajátja, azt nyilván nem
- Ha installáltunk a tároló listánkba külső tárolókat, ami nem a disztribúciónk sajátja, azt mindenképp újra el kell végeznünk. Ami alapvetően nem jelent gondot, mert a tárolókezelés a Debian alatt (bár eltérhet egyes Debian klónoknál) egyszerű. Az MX Linux Linux alatt a /etc/apt könyvtárban lévő fájlokban történik meg. Ha nem telepítettél más forrást, akkor nem lesz semmi teendőd ezzel!
- A manuálisan telepített csomagok, amiket letöltöttél egy oldalról és úgy telepítetted, ezzel a listával újra nem tudod telepíteni. Logikus, hiszen a tárolók ezeket nem tartalmazzák!
Pár egyszerű megoldás
A fenti parancs megjeleníti az összes telepített csomag listáját, beleértve a csomagok verzióira és architektúrájára vonatkozó információkat. A kimenet jobb szélső oszlopa mutatja, hogy a csomag automatikusan telepítésre került-e egy másik csomag függőségeként:
autotools-dev/stable,now 20161112.1 all [installed,automatic]
Ez nem jelent nekünk semmi pluszt a feladatnál, de hogy a felesleges (már nem kellő) csomagok eltávolításra kerüljenek, a lista készítése előtt egy
sudo apt autoremove
futtatása ajánlott.
Mivel a csomaglista hosszú, célszerű a kimenetet a less parancsnak átadni, hogy könnyebben olvasható legyen:
sudo apt list --installed | less
Ha meg szeretnéd tudni, hogy egy adott csomag telepítve van-e, használd a grep parancsot a kimenet szűrésére. Például annak megállapítására, hogy a kitty csomag telepítve van
sudo apt list --installed | grep kitty
A telepített csomagok listázása a dpkg-query paranccsal
Bár a apt nagyon jó, de érdemes megismerni mást is, ami talán szebben listázza ki az eredményt. A dpkg-query egy parancssori parancs, amely a dpkg adatbázisban felsorolt csomagok információinak megjelenítésére használható.
Az összes telepített csomag listájának megtekintéséhez:
sudo dpkg-query -l | less
A kimenetét néz meg! Sokkal jobban olvasható mint a sima apt parancsé!
A parancs megjeleníti az összes telepített csomag listáját, beleértve a csomagok verzióit, architektúráját és egy rövid leírást.
Keresésékez, nézelődéshez emberibb kimenetet ad. Itt is alkalmazhatjuk a grep parancsot:
sudo dpkg-query -l | grep kitty
Csomag lista létrehozása
A következő parancs a Debian rendszeren telepített összes csomag listáját egy nevű fájlban tárolja packages_list.txt
:
sudo dpkg-query -f '${binary:Package}\n' -W > packages_list.txt
Igen, egy szűrt listára van szükségünk, azaz az előbb látott parancsok listája nem alkalmas a visszaállításra! Az sok olyant is tartalmaz, amire nem lesz szükségünk a visszaállításkor, sőt zavart is okozhat.
A lista kész, el lehet tenni.
Újratelepítéskor a Debian Linuxon
A listát elrakjuk, majd azt ha kell felhasználjuk. A gyors és minimális alaptelepítés után csak be kell olvastatni a listát.
Két megoldás van, mindegyik jól működik. Az egyiknél a fenti listából készítünk egy szkriptet, ahol a csomagnevek elé berakjuk a sudo apt install részt futtatjuk. Ez akkor jó, ha például előtte a szkripttel íratunk be új tárolókat a tároló listába, frissítjük a kulcsokat stb. Így egy lépésben megoldhatunk minden feladatot.
A másik megoldás egyszerűbb, de itt nincs lehetőség a telepítésen kívüli feladatokra:
sudo xargs -a packages_list.txt apt install
Azaz a listát beolvastatjuk és megadjuk a apt-nak telepítésre.
Egyszerű, gyors és nem okozhat problémát.
Lesz rengeteg olyan,a minél jelzi, hogy már telepítve van, de ez természetes, hiszen a lista azt tartalmazza, ami az adott pillanatban telepített, és nem tudja leválogatni az alaptelepítéskor már felkerült csomagokat. Az apt simán átugrik ezen.
Bár a folyamat automatizálása a feladat, és nagyon jól hangzik, hogy amíg a gép dolgozik, az alkotó menjen el kávézni, de én szeretek itt ülni, és nézni a kimenetet. Ha problémája van, akkor azonnal lépni tudok!
Debian csomagok száma
Manapság nagy divat a telepített csomagok számát vizsgálni, mert aki kevesebb csomagot tesz fel, az jobban ismeri a rendszert. Ez persze nagy baromság, de nézzük meg a telepített csomagjaim számát is.
sudo dpkg-query -f '${binary:Package}\n' -W | wc -l
A wc parancs a számláló eszköz és ez azt mondja, hogy 2816 csomagom van fenn. Lényegtelen adat.