Univerzális Linux csomagkezelési megoldások

Appimage
Appimage

A Linux rendszerek csomagkezeléséről már pár szót itt-ott ejtettem.  Ma egy univerzálisabbat, az Appimage megoldást mutatom be. Aki régebb óta használ Linuxot és legalább kettő darab különféle csomagkezelési módot, vagy kettő darab disztribúciót kipróbált, ráérez arra, hogy eltérő disztribúciók, eltérő csomagkezelési módszert használnak. Ezek a csomagkezelési módszerek nagyon jók! Nincs különösebb probléma, kiforrott megoldások, biztosítják számodra a gyors és hatékony módon a programok installálását, eltávolítását, és egyéb rendszergazdai feladatokat is el tudsz ezekkel végezni. A disztribúciók frissítés szempontjából eltérnek egymástól, hiszen vannak olyan disztribúciók amelyekbe villámgyorsan (pld. Arch Linux), vannak olyanok, amelyek egy-két hónap, esetleg pár év (Debian stable) után kerülnek bele az új, legfrissebb programverziók. Természetesen ez mindenkinek nagyon kényelmes!

Mindenki el tudja dönteni, hogy egy villámgyorsan frissülő és gördülékenyen használható (pld. Arch Linux) vagy esetleg egy kommerszebb gondolkodású Debian alapú rendszereket használt. Miért? Ha valaki azt gondolja, hogy ő csak jól letesztelt és stabilan működő programot szeretne használni, neki ott vannak az erre kihegyezett disztribúciók. Aki pedig úgy gondolja, hogy ő felvállalja, hogy esetleg kisebb-nagyobb hibák lehetnek a rendszerében, programjaiban mindenképp a legfrissebb programverziót szeretné alkalmazni, annak is vannak lehetőségei.

Röviden az Appimage előnyeiről

Az AppImage egy olyan csomagolási formátum és végrehajtható fájl, amelyet Linux rendszereken használhatunk alkalmazások futtatására. A következőkben felsorolok néhány okot, amiért érdemes lehet AppImage-t használni Linux alatt:

  1. Függetlenség a rendszertől: Az AppImage-ek olyan módon vannak csomagolva, hogy tartalmazzák a szükséges könyvtárakat és függőségeket, így az alkalmazások függetlenek a rendszerben telepített könyvtáraktól. Ez azt jelenti, hogy egy adott AppImage alkalmazást ugyanúgy futtathatunk többféle Linux disztribúcióban anélkül, hogy a függőségek miatt gondokba ütköznénk.
  2. Könnyű telepítés: Az AppImage alkalmazások telepítéséhez csak a fájlt kell letölteni, megadni neki a futtatható engedélyt, és már használhatjuk is. Nincs szükség telepítő csomagokra vagy adminisztrátori jogokra, egyszerűen csak futtatható a fájl.
  3. Frissítési rugalmasság: Az AppImage alkalmazások felhasználói oldalról is frissíthetők. Egyszerűen letöltjük az új verziót és felülírjuk a régit. Ez segít elkerülni a hagyományos telepítő rendszerekkel járó frissítési problémákat.
  4. Könnyű eltávolítás: Az AppImage alkalmazások eltávolítása egyszerű, csak a fájlt kell törölni. Nem hagy hátra fájlokat vagy rendszerleíró bejegyzéseket.
  5. Biztonság: Mivel az AppImage alkalmazásokat konténer-szerűen csomagolják, a rendszer egy részében izolált környezetben futnak, ami növeli a biztonságot és segíthet elkerülni a konfliktusokat más alkalmazásokkal.
  6. Egyszerű megosztás: Az AppImage-k könnyen megoszthatók más felhasználókkal vagy rendszerekkel. Csak a fájlt kell átadni, nincs szükség bonyolult telepítési folyamatokra.
  7. Hordozhatóság: Az AppImage alkalmazások akár külső meghajtókon vagy más Linux rendszereken is futtathatók anélkül, hogy újratelepítést igényelnének.

Azonban fontos megjegyezni, hogy az AppImage alkalmazásoknak is lehetnek hátrányai és korlátai, például a nagyobb fájlméret vagy a környezeti változók kezelésének hiánya. Az alkalmazások kiválasztásakor mindig fontos mérlegelni az előnyöket és hátrányokat az adott felhasználási eset alapján.

A csomagkezelés alapjai

A csomagkezeléssel önmagában nincs semmi probléma, amíg a disztribúció által adott tárolóból frissíted, telepíted a programot. Ilyenkor minden függőség kielégül, nem lesz problémád a telepítéssel. A problémák akkor kezdődnek, ha egy kommerszebb disztribúciónál úgy gondolod, esetlegesen egy frissebb verziójú programot szeretnél használni. Ott már előfordulhat, hogy az újabb program verzió - amit te telepíteni szeretnél - nem találja meg számára mindenképp fontos függőségeket. Ez egy ördögi kör, hiszen ha felteszed a függőségeket (szintén külső forrásból) azoknak is lehetnek olyan elvárt függőségei, amelyeket a te disztribúciód nem elégít ki… Aki stable Debian ágat használt már, átérzi ezt a problémát. A másik véglet, ha egy gyorsan frissülő disztribúciót használsz, de te úgy gondolod, hogy egy adott régebbi verziót szeretnél használni - amiben esetleg az újabb verzió hibái nincsenek még meg – akkor szembesülsz a problémával: a frissítéskor megkapod a legeslegújabbat, de neked a régi kell.

A legtöbb csomagkezelésnél vissza tudsz lépni a verziókkal, de ez nem egy kezdő, a gépet "csak használni" akaró embernek való feladat. Ilyenkor megoldható a legtöbb csomag kezelésnél, hogy ne frissítse azt a csomagot, ez egy jó megoldás lehet (ha ismered a rendszeredet). De általában ezek a hibák akkor derülnek ki, amikor már felfrissítetted a rendszered.

Mi a probléma a hagyományos Linuxos csomagkezeléssel?

A következő probléma a sokféle csomagtípussal: ez bizony bizony a fejlesztőkre sok munkát ró. A program készítőjének, ha az nem kerül bele automatikusan egy disztribúcióba, el kellene készíteni legalább deb, rpm és arch csomagban, hogy a főbb disztribúciókba bekerüljön. De nem feltétlen lehet egy Ubuntu alá készített deb csomagot használni más Debian alapú rendszerben… Így sokszor találkoztuk azzal, hogy egy érdekesebb program az csak az egyik, vagy csak a másik disztribúció alá készült csomagban érhető el. És a többiek? Jó esetben ott a forráskód, fordítsd le megadnak. Ami mellett ott a lista, hogy milyen függőséget vár el. Ha azokat nem elégíti ki a disztribúciód, akkor… Plusz egy komolyabb program fordítása nem kezdőknek való feladat, ha az egyéb függőséget is kíván.

Ezt természetesen felismerték a program fejlesztő, terjesztő emberek is. Pár csomag „típust” alakítottak ki, amelyek disztribúciófüggetlenek. Ebből a féltucat környéki csomagkezelési módszerből én kettőt fogok bemutatni. Mindegyik jó eséllyel az összes disztribúcióban működni fog, így mindenkinek hasznos lehet ez a rész.

Én a szívemhez a legközelebb állóval kezdem.

Az AppImage nagyon egyszerűen használható

  • letöltjük
  • adunk neki egy futtatási jogot
  • indítható is.

Az Appimage csomagolás pontosan egy fájl, ami minden tartalmaz a futtatáshoz. Ezzel kapunk egy nagyon kényelmes, és hasznos lehetőséget! Akármennyi verziót használhatunk párhuzamosan. Bár nem mindegyik program készítője ilyen gondos, de nézzük példának a Kdenlive oldalát.

Le tudod szedni Appimage csomagban a

Legfrissebb stabil verziót – Nagyon jó, stabilt akarom használni!
Régebbi stabil verziót – Abban van olyan funkció, amit már az újban nem találok meg, vagy azt szoktam meg, az új nem tetszik. Ha nem olyan a program oldala, hogy a régebbi verziókat is adja, akkor érdemes a régi appimage fájlt megtartani, archiválni, mert így villámgyorsan tudsz visszalépni a régi, neked esetleg jobban használható verzióhoz.
A napi frissítésű verziót – A leges-leges-legújabb, minden javítás, frissíts benne van. Kisebb hibákat javítanak, így a lehető legjobb verziót használhatod.
Az előző napi frissítésűeket – Ha mégsem javítottak a napin, hanem rontottak, és a tegnap még jól muzsikáló ma már nem…

Így mindig azt használhatod amit akarsz, ha gond van a napi frissítéssel, azt bezárod, elindítod azt, ami tegnap még ment. Ilyen gyorsan egy csomagkezelő sem lépteti vissza a csomagverziót.

Ha az program készítője, csomagolója nem ilyen kedves, hogy többféle igényt is próbál kielégíteni, akkor sincs gond. Meg kell tartani a letöltött AppImage fájlokat, és nem leszünk kitéve annak, hogy egy számunkra kedves verzió már nem letölthető.

Hogyan használom az Appimage csomagokat?

A mai Kdenlive így néz ki: kdenlive-20.03.70-b20a730-x86_64.appimage. Ezt (ha már kapott futtatási jogot) indíthatod fájlkezelőből is, de az nem túl elegáns. Meg kell keresni, rákattintani… Ideálisabb lenne, ha a verziótól (a nevétől, ami minden verziónál más) függetlenül akár a parancssorból, akár ikonnal, akár gyorsindító panelből (nálam tint2) el tudnám érni.

Én azt a megoldást használom, hogy

  • a programot bemásolom egy olyan könyvtárba, ami az elérési útban meg van adva (nálam ~/.bin)
  • a program nevét átírom egy megjegyezhetőre: kdenlive

Ezután a parancssorból a kdenlive paranccsal indítható. Ha esetleg fel van telepítve a tárolóból is, akkor érdemes a ~/.bin/kdenlive használata. Illetve már egy ikon, vagy egy gyorsindító gomb szerkesztésekor tudok rá hivatkozni. Ha pedig másik verziót akarok használni, csak ugyanezt megteszem vele: megkapja ezt a nevet, és felülírom ezzel a régit Így mindig ~/.bin/kdenlive lesz a program, csak azon a néven másik verzió fog futni.

Appimage kicsomagolása?

Bár jellemzően nem mindennap akarunk ilyent, de ha bele szeretnél nézni egy AppImage fájlba, akkor a --appimage-extract kapcsolóval indítsd el. Kicsomagolja az egészet egy könyvtárba. Így megnézhetjük a beállításokat, kimásolhatunk, vagy módosíthatunk fájlokat. Illetve el is indíthatjuk a programot. Ami így kicsivel gyorsabban indul, hiszen nem kell már kicsomagolnia magát induláskor.

AppImageLauncher használata

Az Appimage hátránya, hogy nem intergrálódik be a rendszerbe, a menübe stb. automatikusan. Így szót kell ejteni az AppImageLauncherről. Ez egy nagyon hasznos kiegészítő az AppImage fájlokhoz. Két funkciót lát el:

  • Elindítja azt az AppImage programot, amire rákattintottál - ez nem egy létszükséglet, hiszen enélkül is indulna.
  • Beintegrálja a rendszeredbe, azaz a start menüben is megtalálod a programot, és indíthatod a „hagyományos” módon is. Mindenféle egyéb macera nélkül „telepíti” számodra.

Gyakorlatilag az AppImageLauncher github oldaláról le lehet szedni a telepítőket több rendszer alá is. Ha Te Arch alatt használod, és az AUR-ból rakod fel, a gyorsaság miatt azt itt leírtakat (összes mag használata) mindenképp tedd meg.
Az utóbbi időben több Linux disztribúcióba bekerült, így előbb a saját tárolókat nézd meg!

Ha feltelepült, akkor egy .appimage-re kattintva ezt a panelt kapod:

Desktop Integration — AppImageLauncher

Desktop Integration — AppImageLauncher

Ha be akarod integrálni a rendszeredbe, akkor átmásolja a ~/Applications könyvtárba, majd a Start menübe is berakja. Szuper! Egy helyen lesz minden, és semmit nem kell tenned, hogy gyorsan használatba tudd venni a programot a megszokott menüs megoldással. A tároló könyvtárat át lehet írni, én nem nyúltam hozzá.
A Run once pedig simán indítja a programot.

Így a gyakorlatban semmi eltérést nem látsz majd a hivatalos, a disztribúciód tárolóiból telepített és az AppImage csomagok közt. Nagy előny, hogy a menübe is beintegrálja az elindított Appimage programot.

Az AppImageLauncher beállítása egyszerű, elindítod a menüből, majd ezt a két panelt kitöltöd:

AppImage beállítás

AppImage beállítás

Automatikusan induljon? Igen, szerintem igen. Egy appimagelauncherd nevű démon fog futni, ami figyeli az eseményeket, így semmi teendőd nincs.
Megadhatod azokat a mappákat ahol automatikusan keresse, és integrálja az Appimage-ket. Nem használom.
Itt egy fontos beállítás van: hol legyen az a könyvtár, amibe bemásolja az Appimage fájlokat. Lehetőleg a leggyorsabb tárhelyeden, mert bár csak picit, de gyorsíthatja a betöltődést.
Eltérő verziójú AppImageLauncher-nél más lehet a beállító panel kinézete.

Appimage eltávolítása

Ha már nem kell egy Appimage program, akkor a leggyorsabban úgy tudod eltüntetni, ha kitörlöd a
~/Applications mappából. Ha fut a fenti démon, akkor azt észleli és már a menüből is eltünteti.

Az AppImageLauncher a menübe is beépül és lehetőséget ad több műveletre. Kattints a menüben a program nevére, "Eltávolítás", és az eltávolító eszköz megerősítést kér. Ha ezt választod, az asztali integráció visszavonásra kerül, és a fájl eltávolításra kerül a rendszerről.

Ahogy látni az Appimage fájlok használata mellett sok érv szól. Érdemes átgondolni, és párat kipróbálni.

Komoly érv mellettük, hogy egy fájlban minden olyan benne lesz, ami kell a programnak, így teljesen független a disztribúciódtól. Ha pedig el akarod távolítani, csak az adott Appimage fájl kell kitörölnöd. Nagyon kényelemes, ha az ajánlott AppImageLauncher-t használod: akkor pont úgy „települnek”, mint bármelyik egyéb programok.

Pár éves használatban semmi problémát nem találtam, gyakorlatilag valóban nem csinál mást, csak átmásolja (azaz nem törli!) a leszedett AppImage „telepítőt” egy közös mappába. Majd csinál egy .desktop fájlt. Plusz kellemesség, hogy az így már az „albert” is megtalálja.

Én úgy használom:

  • akármilyendenagyonjó.appimage fájlt letöltöm.
  • adok neki futtatási jogot (ha nincs)
  • akármilyendenagyonjó.appimage-t indítom (rákattintok)
  • ekkor nem indul el rögvest, hanem előugrik az AppImageLaucher és megkérdezi mit akarok.
  • harmadik lehetőséget válaszom, ekkor elindul a akármilyendenagyonjó program és az AppImageLaucher öntevékenyen berakja a menübe (pld. a wiskers menübe) a programot a megfelelő helyre és kategóriába.

Azaz nem kell menüt szerkeszteni az Appimage-hez, belekerül automatikusan.

Bár én jellemzően az adott program honlapján nézem meg az Appimage lehetőséget, de aki egy nagyobb gyűjteményben szeret keresgélni, annak ez a link jól jöhet: https://appimage.github.io/apps/ vagy a https://www.appimagehub.com/browse cím is hasznos lehet.

Hibakeresés az Appimage programoknál

Nem indul el ha rákattintasz? Ennek egy alapvető oka lehet: nem kapott futtatási jogot. Add meg neki (a grafikus fájlkezelőknél: jobb klikk és tulajdonságok, majd ott lesznek valahol a jogok) és próbáld meg újra. Ha így nem megy (és biztosan jól töltődött le) akkor már nagyobb a gond. Nyiss meg egy terminált és próbáld meg abban futtatni a nevének a beírásával. Itt ki fog írni valami hibaüzenetet, amire a google-ben kereshetsz megoldást. Általában a problémát a régi Linux disztribúció, új Appimage program verzió lehet. Ilyenkor (ha van rá mód) keress régebbi verziót.

Biztonságos az Appimage csomagolás?

Igen. Mindenhol a biztonságosságát kiemelik, de ez csak arra vonatkozik, amit vagy a gyártó, programozó oldaláról töltesz le, vagy valamelyik nagyobb Appimage tárhelyről. Minden csomagolási módba lehet káros, kockázatos funkciót berakni, nem a csomagolási mód adja a biztonságot, hanem a józan mérlegelés: telepítem, vagy nem, megbízom az oldalban, ahol ez van, vagy nem...

A leírtakat 2020 januárjában, ArcoLinix alatt teszteltem.
Frissítve, kiegészítve: 2023-08-28