Werken met SNAP pakketten in Ubuntu 16.04 Eén van de nieuwe zaken die Canonical in zijn Ubuntu-reeks heeft geïntodruceerd zijn SNAP packages. Met convergency in het achterhoofd (zelfde look & feel zowel op laptop, desktop, tablet, smartphone…) zou deze manier van software verdeling veiliger en stabieler zijn. Over dat veiligheidsaspect is nog niet alles gezegd, daar een ontwikkelaar al aangetoond heeft hoe gemakkelijk de veiligheid kan omzeild worden. Maar dat gezegd zijnde, laat ons kijken waar Canonical het hier over heeft.
Wat is ‘packaging’ Er zijn diverse manieren om programma’s te installeren in Linux. Eén manier is om de broncode van het programma te gebruiken. Je moet hiervoor scripts gebruiken, afhankelijkheden aanmaken, … Helemaal niet gebruiksvriendelijk als je het me vraagt. Hier komen ‘packages’ ter hulp. De ontwikkelaar zal zijn programma als het ware in een pakketje stoppen waardoor de gebruiker het programma op een simpele manier kan installeren. Debian heeft zo zijn .deb-pakketten en Redhat zijn .rpm-pakketten. Met de figuurlijke one-click op het .deb-bestand wordt de software geïnstalleerd. In zo’n pakket bevinden zich verschillende zaken. Het programma zelf natuurlijk, maar ook eventuele documentatiebestanden, icoontjes, specifieke bibliotheken die niet op je systeem geïnstalleerd zijn enz… . Doordat de programmeur het pakket aanmaakt voor een welbepaald type machine (32-bit/64-bit, Windows/Linux, …) weet hij ook welke pakketten en bibliotheken er reeds aanwezig aan op jouw PC (bv. een bibliotheek die het openen en sluiten van bestanden beheert), zodat hij deze code niet zelf moet programmeren noch in het pakket stoppen. Daardoor blijft de grootte van het pakket relatief klein. Code die door meerdere programma’s gebruikt kan worden, heeft de naam
‘shared libraries‘ . Dat zijn bestanden die eindigen op de extensie .so onder Linux. In Windows ken je die als DLL-bestanden. Door de systeembibliotheek door meerdere programma’s te delen moet de code voor het openen en sluiten van bestanden maar eenmaal geprogrammeerd worden. Dat wil zeggen dat ieder programma ‘afhankelijk’ is van de goede werking van deze bibliotheek of dat anders tientallen programma’s niet meer zullen werken. Voordeel is dan weer dat bij het oplossen van een bug, alle programma’s ineens goed zullen werken. Deze afhankelijkheid ken je ook onder de naam ‘dependencies’ en soms gebeurt het dat je een nieuw programma niet kan installeren omdat aan een bepaalde afhankelijkheid niet voldaan is. Meestal is het zo dat het nieuwe programma een recentere versie van een bepaalde bibliotheek nodig heeft, die nog niet op je systeem is geïnstalleerd. Dat is gekend onder de naam ‘dependency hell’
Hieronder zie je een grafische voorstelling van enerzijds het delen van een bibliotheek en anderzijds elk programma dat zijn eigen bibliotheek meesleurt.
Ubuntu werkte tot op heden exclusief met gedeelde/shared bibliotheken/libraries, rechts in het plaatje. Je kan al vermoeden wat SNAP pakketten zullen zijn.
Wat zijn Snap packages? Canonical doet het zoals al gezegd voor convergency (zelfde gebruikerservaring op verschillende apparaten). Als je elk programma al de gewenste bibliotheken meegeeft in het installatiepakket, dan doet het er niet aan toe of je de bibliotheek al draaiende hebt op je systeem, of welke versie er geïnstalleerd is. Op alle apparaten waar je dat SNAP-pakket installeert krijg je hetzelfde resultaat te zien. Op de officiële website: A .snap package for the Ubuntu Core system contains all its dependencies. This has a couple of advantages over traditional deb or rpm based dependency handling, the most important being that a developer can always be assured that there are no regressions triggered by changes to the system underneath their app.
Hoe Snap pakketten gebruiken in de Ubuntu 16.04-familie Je kan nu reeds deze pakketten gebruiken in je 16.04 versie. Snap is net zoals apt of apt-get een commando dat je op de commandolijn kan gebruiken.
Lijst van beschikbare Snap pakketten Via onderstaand commando
Snap pakket installeren
Overzicht reeds geïnstalleerde Snap pakketten
Zoals je kan zien gebruikt Ubuntu core in Ubuntu 16.04 reeds Snap.
Snap pakket upgraden naar nieuwere versie
Als het betreffende pakket reeds de laatste versie is, wordt een fout gemeld.
Snap pakket verwijderen
Snap geschiedenis weergeven. Snap houdt ook de geschiedenis bij van de gemaakte veranderingen aan je systeem via Snap.
Beperkingen Momenteel kan je, in tegenstelling tot apt of apt-get, geen auto-completion gebruiken om bestandsnamen in te geven. Je moet dus steeds de volledige pakketnaam zelf ingeven.
Nadelen Aan ieder voordeel hangt een nadeel vast. De meeste van de gedeelde bibliotheken worden door de openbron gemeenschap bijgehouden. Als er een potentieel veiligheidslek gevonden wordt in één van die pakketten, dan is het een ongeschreven wet dat de gemeenschap zo snel mogelijk dat lek gaat dichten, waardoor je dan heel snel via een update de bijgewerkte versie krijgt. In het geval van een Snap pakket hang je af van de auteur van het Snap pakket. Als deze niet (snel genoeg) reageert, dan kan dat Snap pakket een toegangspoort voor hackers blijven. Ook is nog niet zeker wat er zal gebeuren met ontwikkelaars die plots stoppen. Het programma kan dan wel goed werken, maar als er geen updates meer komen voor de bibliotheken, dan blijft er maar één zaak over. Het Snap pakket verwijderen.
Is het Snap de kool waard? Momenteel zijn er heel weinig Snap pakketten ter beschikking, maar Canonical heeft Snapcraft tool ter beschikking gesteld van de ontwikkelaars, waardoor we er mogen van uitgaan dat binnenkort meer en meer Snap pakketten de klassieke .deb-bestanden zullen vervangen. Eén van de eerste programma’s die je gaat zien verschijnen in Snap-formaat is
Mozilla’s Firefox, zoals in hun blog aangegeven (zie https://blog.mozilla.org/futurereleases/2016/04/21/firefox-default-browser-for-linu x-users-ubuntu-new-snap-format-coming-soon).
Conclusie Natuurlijk is het nog te vroeg in de ontwikkeling van Snap pakketten om een oordeel te vellen. Snap pakketten hebben inderdaad een enorm voordeel naar convergentie toe, en eens de veiligheidsperikelen zullen opgelost zijn, dan zal je steeds meer en meer Snap pakketten zien verschijnen voor Ubuntu-producten.