Flatpak vs. Snap

Fórumok

Ezen cikk ( https://itsfoss.com/flatpak-vs-snap/ ) alapján kérdezem, hogy kinek mi a véleménye, ki melyiket szereti, utálja, használja, kerüli?

Hozzászólások

Nem ezen cikk alapján, hanem általában: a kettő közül a Flatpak jobb. Persze körülményektől függ, hogy melyik alkalmazásról van szó, meg melyik disztróról.

Pl. én a Flatpak, Snap, Appimage trióból egyiket se szeretem, de az utóbbit preferálom, mert egyébként a natív csomagokhoz ragaszkodok. Az Appimage-hez semmit nem kell telepíteni, semmilyen demont, csak letölteni az Appimage formátumú appokat, futtatási jogot adni nekik, és futnak, magyarul nagyon portable. Viszont Appimage-ből nem olyan nagy a választék, meg sokszor csak nem hivatalos csomagok vannak, illetve a csomagverzió se mindig a legfrissebb, és a legtöbb nem tud frissülni.

Ha nem Appimage, akkor meg mindenképp a Flatpak, bonyásabb, mint az Appimage, de ebből van a legtöbb csomag, és a legtöbb hivatalos csomag, legfrissebb verziók, meg még kevésbé szutyokabb, kevésbé lassabb, mint a Snap, plusz több disztrón támogatott, mint a Snap, és ahogy a cikk is írja, legalább a backend-je legalább FOSS. Snap-et kerülném, mint a dögvészt, hacsak nem olyan appot keresel, ami csak a Snap store-ban van meg, vagy nem egyébként is Ubuntut használsz, ahol már alapból fent van a Snap és mindenképp használnád is.

A computer is like air conditioning – it becomes useless when you open Windows.” (Linus Torvalds)

"... konnyen lehet hogy a 3rd party packager kihagyott valamit."

Nem jellemző.

A probléma inkább az, hogy az appimage disztribúció verziófűggő, azaz ha az appot pl. debian 11-en készítik, akkor lehet olyan függősége, ami miatt debian 10-en nem indul el, mert abban nem teljesül a függőség. A fenti eset is az lehet, mert 11-en (MX) nekem pillanatok alatt elindult a Remmina. Nyilván ha nincs olyan függősége egy appnak, az több verzión is elindulhat.
Néhány appimage-t csináltam már én is szórakozásból.
Én úgy vagyok vele, hogy a "negyedévente" használt appokra tökéletes választás, pl. OBS Studio, Calibre, Telegram, Gimp, LibreOffice de a gyakran használt kicsi progik pl. FBReader, Sublime esetére is. 
(A függőség nélküli appoknál használom még a saját "gyártású" squashfs image fájlokat, amit bootkor vagy később bemountolok pl. Chromium, PopcornTime.)
(Flatpaket, Snapet sosem használtam. ;) )

Appimage vs. Flatpak vs. Snap összehasonlításban a legfontosabb két kérdés:

1. Mekkora az elérhető csomagválaszték? 

2. Mennyire frissek a csomagok, biztonsági updatek napraképszek? 
Ha a második kérdésnél nagy a szórás, azaz bizonyos csomagok naprakészek mások csak ad-hoc vannak frissítve évek óta nem piszkálta őket senki, akkor vissza az első kérdésre azzal a megszorítással:
Mekkora az elérhető csomagválaszték a rendszeresen karbantartott csomagokra szűkítve? 

Ha lehet inkább nix flake/derivation :)

Viccet félretéve, ugyanitt snap automatic update kitiltás alábbi "megoldáson" kívül érdekel

snap set system proxy.http="http://127.0.0.1:1234"
snap set system proxy.https="http://127.0.0.1:1234"

Én 5 snap csomagot tartok karban (aris, bibref, geogebra-discovery, jgex, tarski). Nem ideális a rendszer, de idővel érthetővé válik, miért így lett kitalálva. Sok buktatója van, és viszonylag kevés a dokumentáció. Eddig minden problémát meg tudtam oldani néhány napos utánajárással.

A másik két rendszert csomagolói oldalról nem ismerem. Az viszont tény, hogy felhasználói oldalon az AppImage a legkényelmesebb, mert ahhoz tényleg nem kell semmit telepíteni. A snap ennél modulárisabb, tehát bizonyos függőségeket (pl. a core csomagokat) csak egyszer kell a rendszernek feltennie. Tehát erőforráskímélőbb.

Az is tény, hogy bizonyos snap csomagok lassan indulnak, habár vannak kezdeményezések, hogy ezeket a problémákat is kezeljék.

<troll>

Mik ezek az újkeletű hülyeségek? Ha már nincs benne a disztróban, akkor linux alatt mióta nem .tar.gz-ből fordítjuk le?

Ezek szerint már három különböző néven is kitalálták a statikus linkelést?

</troll>

A legtöbb projekt már nem is tar.gz-ből fordul, hanem klónozott git tárolóból. De ja, én is a rendszerhez fordított natív binárisok híve vagyok. Az a legjobb. Viszont nem lennék teljesen ellene ezeknek az univerzális csomagoknak, ha arra használnák, amire való. 1-2 user könnyen tudjon telepíteni valami olyan szoftvert, ami a disztrója tárolójában nincs meg, és ne kelljen hosszabb ideig forráskódot pörgettyűznie, meg külső tárolókkal szívni.

Ami nekem nem tetszik, hogy ezeket az univerzális-konténerizált csomagokat túltolják, elkezdett egy fetisizmus kialakulni felé, jó pár disztró már akkor is ilyen univerzális csomagokat tesz fel, tol rá a userre, ha adott esetben a bináris csomag is ott van a tárolójában vagy le lehetne fordítani könnyedén-gyorsan. Ilyen formában valóban gáz.

A computer is like air conditioning – it becomes useless when you open Windows.” (Linus Torvalds)

Hat pl ha akarom akkor belerakok featureoket vagy nem, oda rakom ahova akarom (mondjuk a sajat home-omban van a lib, bin, stb, mert az sok szaz GB, de a root az csak a minimal rendszert tartalmazza), a honapokig a csomagokba vagy flatpak, sap-ben nem levo dolgokat a git-bol kiszedve nekem lesz, a beta feature-oket ha akarom tesztelem mert mondjuk nagyon kellene mar, stb stb.

Ne erts felre en csomo flatpak meg appimage progit hasznalok, de van bezony olyan is amit git-bol sot specko git branch-rol forditok. 

Gyorsabb, normálisabb függőségkezelés, plusz nincs gond a rendszer részeihez hozzáféréssel (audio/video-eszközök, meg egyebek, amiknek az elérése nehéz a konténerizált csomagoknál). Plusz függőségmegosztás több alkalmazás között, míg a konténerizáltak nem feltétlen használhatják egymás közös libjeit. A natív bináris jobban optimalizált, meg mivel nem konténerizált, ezért natív sebességgel fut, indul, stb..

A computer is like air conditioning – it becomes useless when you open Windows.” (Linus Torvalds)

Szerintem el kell dönteni melyik utat kívánjuk követni:

- vagy egységes rendszer, egységes lib környezettel, és hagyományos dinamikusan linkelt binárisok,

- vagy akkor legyen szinte minden progi flatpak/appimage/snap.

De amit pl. Ubiék csinálnak, hogy van egy standard rendszer, ámde a böngésző snap? Na annak mi értelme?

De amit pl. Ubiék csinálnak, hogy van egy standard rendszer, ámde a böngésző snap? Na annak mi értelme?

security. standard unix-ban ugye a user altal inditott processz barmit megtehet, amihez a usernek is joga van. es mivel a usernek fontos dolgok nem a /root -ban vannak, hanem a $HOME-ban, egy security breach a user jogosultsagaival majdnem olyan sulyos, mintha rootshell-t szerzett volna a tamado.

A bongeszo meg egy iszonyu bonyolult valami lett az utobbi 10-20 evben, tele bugokkal, meg bugos library fuggosegekkel, komplett javascript engine-el, wasm-el, stb, stb, stb... Ezert jo otlet snap-ben kicsit visszavagdosni a jogosultsagai, hogy kompromittalodas eseten limitaljak az okozhato kart.

Na ezert van snap-ben.

De egyetertek, hogy ez igy sokkal macerasabb, mint az /usr/bin/firefox. Masfelol viszont, ugye megszoktuk azt is, hogy userkent csinal mindent, root shell / sudo csak akkor, ha muszaj. Na, a snap is egy ilyen dolog. Kenyelmetlen, de nagysagrendekkel biztonsagosabb.

Pontosan, a snap-es böngésző jogai eleve korlátozottabbak. Ezen kívül, ha még szigorúbb akarsz lenni, a snap rendszer konfigurációján keresztül konkrétan megmondhatod, milyen jogokat veszel el tőle. Akár még a home könyvtáradba való írás jogát is elveheted, vagy csak bizonyos alkönyvtárakra korlátozhatod (defaultban, úgy emlékszem, pontosan ez van).

Az egyik snap csomagban, amit én tartok karban, pl. külön meg kell mondjam, hogy a home könyvtárra jogosultságot kérek. Amikor a csomagot egy felhasználó felteszi, utána tud nézni, hogy a home-ba írás biztonsági rés lehet, és esetleg emiatt nem engedélyezi a snap csomag telepítését, vagy a home-ba írás jogát megvonja a csomagtól (ami azzal is járhat, hogy a csomag persze nem működik megfelelően).

Egy másik csomagban konkrétan meg kellett mondjam, hogy X-et is használni akarok. Különben a program, amikor indul, nem használhatja a grafikus mód erőforrásait. Ez elég körülményessé teszi a csomagok létrehozását, de új, bonyolult ill. gyakran frissülő szoftvereknél van létjogosultsága.

annyival hogy megcsinalja neked az apparmor rule-kat, meg ilyeneket. Amire a dockerd is jo. Nem kell neked baszakodni a cgroups meg a namespaces beallitasaival. 

ertem a letjogosultsagat, csak az implementacio minosege kerdeses szamomra (osszahasonltva a flatpak-kel es az appimage-el) :D

en csak userkent latom a snap-et, es azt sem onszantambol (firefox), es bar szeretem, hogy extra biztonsagot ad, ruhellem a bonyolultsagat, hogy sajat cups snap kell neki nyomtatashoz (vaze, mire rajottem, hogy 2 cups fut a 22.04 -en! egy sima, egy snap, es persze mindketto a syslog-ba logol, hogy torjon le a keze, aki kitalalta), hogy tetu lassan indul, hogy a snap-update-manager zabalja a ramot folyamatosan, hogy baszogat allandoan az update-ekkel, amit raadasul nem is csinal meg automatikusan a firefox-bol valo kilepeskor, nekem kell kezzel bizgetni.

Még a végén oda lyukadunk ki, hogy a .exe lesz a legjobb :D

Amúgy valamilyen szinten sajnos nem vicc. Volt egy időszak (lehet hogy mai napig tart), hogy a windowsos firefox wine alatt volt a leggyorsabb böngésző linuxon. Köröket vert a natív változatra.

Hajbi ezt szóvá is tette sokszor annak idején.

Szerintem mindegyik szembemegy a Linuxokon bevállt csomagkezelőkkel.

Ez a divat(?) kb arra az útra vezet, ahol a windows is jár: bármi szart letölthetsz a netről, és el is fog indulni az 1.0-ás (l)user keze alatt is. brrr!

egy third party repo esetében ugyan úgy megvan a lehetőség a normális csomagkezelésre, és biztosnágos integritás ellenőrzésre is - ahogy ezt sokan csinálják is.

szerintem ezek (*pack, snap, stb) könnybben elburjánzanak, elavulnak, frissítés nélkül maradnak, mert miután feltetted semmi/senki nem törődik a tartalmukkal.

 

persze, mindent lehet rosszul is csinálni.

A snap-től egy kicsit tartok. Nem tetszik, hogy valami a háttérben folyamatosan fut és netre csatlakozik. Ubuntu-hoz tartozik, akiktől láttunk már olyat, hogy nem feltétlenül etikusan jártak el a felhasználók adataival...

Flatpak/FlatHub: ott is jól meg kell nézni, hogy ki az adott flatpak-csomag és függőségeinek karbantartója; mivelhogy bárki publikálhat rajta alkalmazást.

AppImage-et nem minden csapat készít és kicsit kényelmetlen hogy manuálisan kell frissíteni.

 

Szóval én azt szoktam, hogy ha nincs a csomag a disztribúcióban, akkor ha fejlesztők tartják karban a flatpak csomagot, akkor flatpak a legkényelmesebb a könnyű frissítés miatt; ha nincs, akkor hátha van App Image vagy valami egyéb portable terjesztés a feljesztőktől. Én egyelőre elkerültem a Snap-et.

Airconditioned terminal, do not open Windows.

Részemről natív csomagot keresek elsőre a disztró repóiban, majd a szoftver gyártójánál. Ha nincs, akkor AppImage vagy FlatPak. Bevallom, forrásból csak akkor fordítok desktop-ra, ha nagyon kell a cucc, de nincs semmi "kész" kivitel belőle (1-2 alkalom volt eddig életemben tán). Mostanra inkább keresek másik szoftvert ugyan arra, amivel nem kell matekozni.
Szerverre csak a disztró repóiból, vagy a szoftver gyártó repójából, ha a legfrissebb kell.

Snap-et annyit használom, hogy ha valahová Ubuntu kell mindenképp (nem jó alap Debian), akkor rendszer telepítés után azonnal eltávolítom a default feltelepülő Snap rendszert mindenestül...
Nem szeretem a bloat szót, annyira el lett már itt csépelve (és sok dologra rámondják egyesek, ami valójában csak neki felesleges, de egyébként hasznos), de a Snap szerintem klasszikus bloat. Nem túl jó megoldás valamire, amire már addig is több jó megoldás létezett.

Ha már flatpak szóba került (mert rákerestem): hogyan lehet egy flatpak csomagot letölteni a flatpak rendszer nélkül?

„Niemand ist unnütz! Man kann immer noch als schlechtes Beispiel dienen!”

dzsolt

Merre van ebben a válasz a kérdésre? Tudom mi a flatpak, de ahol kellene egy fájl egy ilyen csomagból, ott nincsen és nem is lehet flatpakot telepíteni. Reméltem, hogy van valami egyszerű trükk amivel mondjuk egy curl vagy wget képes letölteni...

„Niemand ist unnütz! Man kann immer noch als schlechtes Beispiel dienen!”

dzsolt

Sajnos nem lehet ilyet. Pont az a lényege a flatpak-nek, hogy centralizált rendszer, és csak a saját csomagkezelőjével tudod töltögetni, telepíteni. Ha megnézed a flathub-on is, rákattintasz egy szoftverre, akkor az a forrásfájl, amit kapsz, egy csomagkezelős adathalmaz, amivel csak a flatpak tud mit kezdeni, még véletlenül sincs benne közvetlen URL. Van benne egy URL, de az a repójé, és nem a közvetlen csomagé.

Ez nem olyan, mint mondjuk a .deb, .rpm, vagy pacman-féle pkg.tar.zst, hogy közvetlen URL-ről kézzel is le tudod töltögetni, és különböző archiver-ökkel meg tudod nyitogatni, ki tudod bontogatni (ar, rpm2cpio, cpio, tar, stb.). Ha mégis hasonlóra van igényed, akkor nézz rá az adott szoftverre, hogy AppImage van-e belőle, azokat lehet kézzel töltögetni.

A computer is like air conditioning – it becomes useless when you open Windows.” (Linus Torvalds)

Ez azért van így, mert egy bundle általában nem egy fájlból áll.

Lehet építeni egyfájlos csomagot, de ehhez a csomagépítőnek kell úgy felépítenie azt: 

https://docs.flatpak.org/en/latest/single-file-bundles.html

A flatpak egyáltalán nem centralizált rendszer, bárki csinálhat saját flatpak repot (és csinálnak is).

Van belőle csomag, nem? :-P

 

~$ apt-cache show firefox
Package: firefox
Architecture: amd64
Version: 112.0+build2-0ubuntu0.20.04.1
Priority: optional
Section: web
Origin: Ubuntu
Maintainer: Ubuntu Mozilla Team <ubuntu-mozillateam@lists.ubuntu.com>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 237888
Provides: gnome-www-browser, iceweasel, www-browser
Depends: lsb-release, libasound2 (>= 1.0.16), libatk1.0-0 (>= 1.12.4), libc6 (>= 2.30), libcairo-gobject2 (>= 1.10.0), libcairo2 (>= 1.10.0), libdbus-1-3 (>= 1.9.14), libdbus-glib-1-2 (>= 0.78), libfontconfig1 (>= 2.12.6), libfreetype6 (>= 2.10.1), libgcc-s1 (>= 4.2), libgdk-pixbuf2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.42), libgtk-3-0 (>= 3.14), libharfbuzz0b (>= 0.6.0), libpango-1.0-0 (>= 1.14.0), libpangocairo-1.0-0 (>= 1.14.0), libstdc++6 (>= 9), libx11-6, libx11-xcb1 (>= 2:1.6.9), libxcb-shm0, libxcb1, libxcomposite1 (>= 1:0.4.5), libxcursor1 (>> 1.1.2), libxdamage1 (>= 1:1.1), libxext6, libxfixes3, libxi6, libxrandr2 (>= 2:1.4.0), libxrender1, libxtst6
Recommends: xul-ext-ubufox, libcanberra0, libdbusmenu-glib4, libdbusmenu-gtk3-4
Suggests: fonts-lyx
Replaces: kubuntu-firefox-installer
Filename: pool/main/f/firefox/firefox_112.0+build2-0ubuntu0.20.04.1_amd64.deb
Size: 60700440
MD5sum: d1a2283662ed059c9cd84cea5a40d1e0
SHA1: ca2ad2c56dfd2832d98bf074296455fb9d3c92ce
SHA256: 7d7c63421a670660f69b21ad57ac885cc2fb2678da4583195ac850473e9645a8
SHA512: 3e131818858bd6de3675627537230ed865aa57602f14a3db46086a135025472b10616e662475f8f91e3a1c0117feaa4b0748324123a37789d2a2474926f14fc6
Description-en: Safe and easy web browser from Mozilla
 Firefox delivers safe, easy web browsing. A familiar user interface,
 enhanced security features including protection from online identity theft,
 and integrated search let you get the most out of the web.
Description-md5: 46b619f510631c4693dc09c1a3778a55
Task: ubuntu-desktop-minimal, ubuntu-desktop, kubuntu-desktop, kubuntu-full, xubuntu-desktop, lubuntu-desktop, ubuntustudio-desktop, ubuntukylin-desktop, ubuntu-mate-core, ubuntu-mate-desktop, ubuntu-budgie-desktop
Xul-Appid: {ec8030f7-c20a-464f-9b0e-13a3a9e97384}

apt-cache show firefox
Package: firefox
Architecture: amd64
Version: 1:1snap1-0ubuntu2
Priority: optional
Section: web
Origin: Ubuntu
Maintainer: Ubuntu Mozilla Team
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 255
Provides: gnome-www-browser, iceweasel, www-browser, x-www-browser
Pre-Depends: debconf, snapd
Depends: debconf (>= 0.5) | debconf-2.0
Breaks: firefox-dbg (<< 1:1snap1), firefox-dev (<< 1:1snap1), firefox-geckodriver (<< 1:1snap1), firefox-mozsymbols (<< 1:1snap1)
Replaces: firefox-dbg (<< 1:1snap1), firefox-dev (<< 1:1snap1), firefox-geckodriver (<< 1:1snap1), firefox-mozsymbols (<< 1:1snap1)
Filename: pool/main/f/firefox/firefox_1snap1-0ubuntu2_amd64.deb
Size: 72292
MD5sum: 4cfb8522595425213edbd3440dfaab6c
SHA1: ec27ebd8fca2d918add69c94f1163b593fd4fb66
SHA256: ddccd2ef5cc7291364ab4998e57d684aac993488ae561bb67ed31ddb617659cc
SHA512: 35cb18af47666668b77357132f7786946fe2f90abba2fc5abd55f73124de672645a07ac97a6e12ca66b77d892f07356f3a69d8c321b5b657b39419b146681f2a
Description-en: Transitional package - firefox -> firefox snap
This is a transitional dummy package. It can safely be removed.
.
firefox is now replaced by the firefox snap.
Description-md5: 28593f0f24b1284477e30b88c6717ba4
Task: xubuntu-live, ubuntukylin-desktop

Ez így van, de független, közösségi disztróból mindig lesz olyan, amivel ez elkerülhető lesz. Ha meg nem, akkor váltunk valamelyik BSD-re idővel. Valami mindig lesz, erről szól a Unix, meg POSIX, mindig lesz valami használható klónrendszer, ezek sose szűnnek meg.

A computer is like air conditioning – it becomes useless when you open Windows.” (Linus Torvalds)