Arch – pár apróság II.

Arch Linux

Pár kevésbé ismert, de hasznos csomagkezelési parancsot vadásztam össze mára is. Ezeket Arch Linux alatt használhatod, így más disztribúciónál nem lesznek alkalmasak. Ami nem azt jelenti, hogy ott nem lehet valamiféleképp hasonló paraméterezést megoldani, ha megtetszett a funkció!
Nekem a Fedora alatt nagyon tetszett, hogy kilistázhattam a telepített csomagokat időrendben, egy-egy időpontban felrakott csomagokat látva már eltávolítani is egyszerűbb volt. Ezt Arch Linux alatt is megtehetem. Így pld. az utolsó frissítési csomagokat, vagy egy csomag telepítési idejét, esetleg egy régebbi időpontban felrakott csomagokat is kiszűrhetsz. Ehhez az expac csomagra lesz szükséged, ha nincs fenn, akkor telepítsd.

expac --timefmt=‘%Y-%m-%d-%T’ ‘%l\t%n’ | sort -n

Ha mindent jól írtál be, kapsz egy listát, ilyen formátumban:

‘‘2020-04-24-08:22:32’tpython-pipx’

Elől a legrégebbi, a végén a mostani csomagmozgások szép időrendi sorrendben. A | csővezetéket és a sort parancsot használjuk, hogy a szortírozás megfelelő legyen. A további felsorolás, szűrés, keresés már a kívánt feladatnak megfelelően mehet. Akár a grep-et is használhatod, de a tail -n 10 is jó ötlet lehet, ha az utolsó tízet akarod csak látni. Bár első gondolatom a grep-pel annyi volt, hogy egy csomag felrakásának az idejét megkeressem a csomagra keresve, de alkalmas arra is, hogy egy adott időpontra keressünk rá…
A kimenet formázásán lehet még kicsit finomítani, de nekem bőven elegendő így. Nem emberi olvasásra lett összeállítva, hanem további keresések, szűrésekre.

Arch csomag függőségek vizuálisan, fa struktúrában

Pár esetben lesz szükség a következő kis programocskára, és inkább a vizuális típusoknak hasznos. Időnként szükség lehet arra, hogy egy Arch Linux program függőségeit lekérdezzük. De a függőségek nem csak egyszintűek, azaz ha van egy program, és annak van A, B és C függősége, akkor nem feltétlen csak az A, B, C csomag kerül fel pluszban, hanem az A csomagnak is lehet további függősége, ami nélkül nem működőképes. Így ezek a plusz csomagok is feltelepülnek majd. Ezzel a legtöbb esetben nem kell foglalkozni, hiszen az Arch Linux csomagkezelése megoldja ezt. Érdekességképp le lehet ezt a teljes függőségi fát kérdezni a pactree programmal. Próbálj ki egy telepített csomagnevet megadva. Az eredmény magáért beszél. Igény esetén a kimenetet egy fájlba is irányíthatod, ha az hosszabb.

pactree geany > tree.txt

A help-je pár érdekesebb kapcsolót is ad, így mindenképp nézz rá a súgóra is.
Bár nem ez mindennap használt, nélkülözhetetlen program, de egy pillantást megér.

Melyik Arch Linux csomag tartalmazza az adott fájlt?

A következő kis programocska már hasznosabb lesz. Igencsak bosszantó, ha program telepítéskor, illetve olyan telepítéskor, amikor nem a tárolókból telepítek, esetleg a github-ról forrásból fordítok valamit, a fordítás, telepítéskor kijelenti a rendszer, hogy valami fájlt hiányol. Nem, nem egy csomagot, mert akkor azt vagy fel tudjuk tenni, vagy kis keresgélés után megtaláljuk az Interneten. Csak egy fájlnevet kapsz hibaként, és találd már ki, hogy az melyik csomagban van… Itt is, mint majdnem mindenre van egyszerű megoldás Arch Linux alatt. A példában a acceleration_speed-t hiányolja egy fordítandó program.

Első lépés, hogy telepíteni kell a pkgfile nevű kis programot.

pacman -S pkgfile

Értelemszerűen sudo is kell, de azt már lehagyom, mert így kénytelen mindenki átgondolni mit tesz, és nem csak másolgatni.

pkgfile -u

Legeneráltatjuk vele a listákat. Itt is sudo, de amúgy is szól, hogy nem tudja írni a megfelelő fájlokat. Mindig olvasd el a hibaüzenetet, és értelemszerűen járj el.

Ezután már boldogan keresgélhetünk egy-egy kósza fájl után, hogy melyik csomagban találjuk meg.

pkgfile acceleration_speed

Az eredmény:

extra/libde265

Így már tudjuk is telepíteni az extra repóból a libde265 csomagot. Amivel a hiányolt fájl is felmegy. Azt mindenképp érdemes tudni, hogy csak a tárolókból keres, így lehet, hogy nem találja meg amire vágysz, mert nem ott van. Ilyenkor a google szokott segíteni.

Arch Linux átmeneti tárhely törlése

A következő trükk már egy olyan kérdést vet fel, amit mindenkinek magának kell eldönteni, mit, és milyen mélységben végez el. De mindenképp érdemes valami szinten ezzel is foglalkozni, mert egy idő után igencsak lecsökkenhet a tárhely méretünk a képen. Mindannyian tudjuk, hogy a pacman, az Arch Linux és származékainak alapértelmezett csomagkezelője az összes letöltött csomagot a /var/cache/pacman/pkg/ mappába tárolja. Tudjuk azt is, hogy nem törli automatikusan a régi, vagy az eltávolított csomagokat a gyorsítótárból. Egy bizonyos idő eltelte után a gyorsítótár mappája nagy lesz. A nagy értéke egy kezdő gépén több tíz giga is lehet, ha nem figyelsz oda. Felrakjuk, leszedjük, másikat nézünk meg, leszedjük… csak hízik a /var könyvtárunk. Ezért javasolják az Arch Linux csomag gyorsítótárának időszakos tisztítását. Nagyon jó dolog, ha a gépeden van pár hónap termése, hiszen egy downgrade egyszerű lesz így, de a tárhely meg csak fogy.
A pacman beépített kapcsolóival az összes gyorsítótárazott csomagot eltüntethetjük. A gyorsítótárazott csomagok a  pacman -Sc parancs futtatásával törölhetőek le. Ez a parancs azonban eltávolítja az összes régi verziót, és csak a jelenleg telepített csomagok verzióit hagyja fenn. Ez nem mindig ajánlott módszer. Néha érdemes lehet egy adott csomagot a régebbi verziójára visszaállítani, erről volt is szó. Ha ezt használod, akkor csak az Arch Linux hivatalos lerakataiból, AUR-ból telepíthetsz verziókat, és nem tudsz visszalépni egy olyanra, amit használtál, de a tárolóban csak újabb van. No para! Nagyon ritka, hogy komolyabb oka lenne egy downgrade-nek, és van esélye annak is, hogy a régebbi verzió megtalálod az archívumban. Nem kell rohanni és pár terrás lemezeket beszerezni gyorsan, hogy mindenből, minden verziót, alverziót meg tudj tartani! De azért ideális lenne, ha nem csak az utolsó, most telepített verzióhoz lenne meg a gyorsító tárban az anyag, hanem egy-két régebbihez is.

Itt segít a paccache szkript.

A paccache szkriptet maga a pacman csomag biztosítja. Tehát nem kell telepíteni, legalábbis nálam nem kellett. Ha a -h kapcsolóval futtatod, már láthatod, hogy sokat tud, jól konfigurálható eszköz. Ne vidd túlzásba, de alapszinten nézd át a lehetőségeket!

A paccache alapértelmezés szerint megőrzi a 3 legfrissebb csomag verziót. A 3 legfrissebb csomag verzió kivételével törli az egyes csomagok összes tárolt változatát, függetlenül attól, hogy telepítve vannak-e vagy sem.
Ami fontos! Nem a telepített csomagot törli le, hanem a saját, technikai könyvtárába létrehozott csomagverziókat. Attól nem kell tartani, hogy futtatás után a rendszeredből kikapkodja csomagokat!

Nézzük is meg, hogyan kell megfelelően kitisztítani a csomag gyorsítótárat az Arch Linuxban, és annak származékaiban a paccache parancsfájl segítségével.

Előbb érdekességkép nézd meg a gyorsítótárban lévő csomagok számát.

ls /var/cache/pacman/pkg/ | wc -l

Nem igazán érdekes, mert csak darabszám, és nem a méretet mutatja, de tisztítás előtt jó tudni az alapértéket. A méretet a

du -sh /var/cache/pacman/pkg/

paranccsal kapod meg. Egyik sem újdonság, ezek alap parancsok. Ki is hagyhatod ezt a lépést. Csak érdekességképp: egy öt hónapja futó rendszeren köz 30 giga ilyen felesleges anyag volt.

A legegyszerűbb, és szerintem a legoptimálisabb megoldás az, ha az alapot használom:  három verziót hagyjon meg.

paccache -r

Persze sudo… Lefut, kiírja az eredmény, és örülhetünk annak, hogy kevesebb helyet foglal el a gyorsítótár, és mégis visszaléphetünk, ha kell egy-két verziót. Ilyenkor a mit, és mennyit kérdést, ami heves vitákat szülhet, ráhárítjuk a készítőre: ő ennyit tart jónak, biztos ért hozzá, hiszen ő írta ezt a rendszer, és a pacman része, így nagyon rossz nem lehet. Aki csak ennyit tesz meg időnként, annak nagyon megnyugtató, hogy kevesebb helyet elfoglaló, de egy biztonságos downgrade-t is adó megoldást választott.

Ha a megtartandó verziókat jobban szeretnéd szabályozni, akkor a

paccache -rk x

paranccsal, ahol az x helyére egy számot írsz be, annyit, amennyi verziót meg akarsz tartani. Szuper! Ha kevesebb helyed van, de nem akarod a gyorsító tárat kiüríteni teljesen, ha 2-est adsz meg nagy hibát nem követsz el. Kevesebb marad meg, de még mindig lesz egy biztonsági zónád, ha vissza kell minősíteni egy csomagot. Általában amúgy sem kell, de az ördög nem alszik!

paccache -ruk0

Na ez már nagyobb tárhelyet szabadít fel, úgy, hogy nem sérül a telepített csomagjaidnál a downgrade lehetőség. Ezzel az -u kapcsolóval és a nullával megmondjuk a rendszernek, hogy az összes olyan gyorstárazást tüntesse el teljesen, amelyik olyan programot, csomagot tartalmaz, amit eltávolítottál. Igencsak hasznos, ha programokat próbálgatsz ki, majd leszeded őket. A gyorstárban ott lesznek, mert a paccache -r azt látja, hogy ebből egy verzió van csak, maradhat, mert az egy kevesebb, mint a három. De nekem már valószínűleg nem kell, mert leszedtem a programot! Ez megfelel a pacman -Sc parancsnak.

Amit csak végső esetben tegyél, ha nagyon szűken állsz tárhellyel. Az összes gyorstárazás letörlése, totális tisztítás:

pacman -Scc

Ez minden gyorstárban lévő programot töröl. Általában kicsi az esély, hogy ezek kellenek, de azért nem árt, ha egy-két verzió ott van a gépeden.

Minden parancsot gondolj át, mielőtt használsz. Itt a felhasználó és a rendszergazda is te vagy, így a felelősség a tied.

2020. áprilisában teszteltem

Related Posts