Pakketbeheer

Ga naar: navigatie, zoeken
Een Linux distributie, en openSUSE is hierin geen uitzondering, is een groep van toepassingen opgeslagen in pakketten en de benodigde gereedschappen om deze toepassingen als geheel te beheren.

Overzicht

Packagemanagement.png

Een pakketbeheer systeem is een verzameling tools die een consistente methode biedt voor het installeren, upgraden en verwijderen van software op uw systeem. Linux-distributies, waaronder openSUSE, bestaan meestal uit duizenden verscheidene softwarepakketten.

Software wordt gedistribueerd via pakketten die zijn gekoppeld aan metadata die bijkomende informatie bevat, zoals een beschrijving van het doel van de software en een lijst van afhankelijkheden die nodig zijn om de software naar behoren te doen draaien. Zij worden door de softwarebronnen, ofwel de lokale media (cd, dvd of harde schijf) of online installatiebronnen. Bij de installatie wordt metadata opgeslagen in een lokale pakketdatabase die wordt gebruikt om software pakketten op te halen.

Libzypp is openSUSE's implementatie van zo'n pakketbeheer systeem en verschaft YaST Softwarebeheer als grafische gebruikersinterface en Zypper als commandoregel interface.


Pakketten

Pakketten zijn archieven van bestanden die alle bestanden bevatten die leiden tot een stuk software (zoals een toepassing zelf, gedeelde bibliotheken, ontwikkelpakketten die bestanden bevatten die nodig zijn om de software te compileren tegen een bibliotheek, ...) en eventueel instructies over hoe ze te laten werken.

Een pakket wordt netjes geïntegreerd in de distributie waarvoor het is gebouwd, met betrekking tot installatiepaden, afhankelijkheden, bureaubladintegratie, goede startup scripts voor servers, enz. Voor deze redenen, zou u altijd pakketten moeten installeren die gebouwd werden voor de distributie die u gebruikt, inclusief het exacte versienummer van de distributie (bijvoorbeeld: openSUSE 11.1). Installeer bijvoorbeeld nooit Fedora pakketten op openSUSE en zelfs niet eens openSUSE 11.1 pakketten op openSUSE 11.2.

Pakket metadata

Een pakket bevat ook verdere informatie, meestal Metadata genoemd, zoals

  • een samenvatting,
  • een beschrijving,
  • een lijst van bestanden die zich in het pakket bevinden,
  • de versie van de software die het bevat alsook het uitgavenummer van het pakket,
  • wanneer, waar en door wie het pakket is gebouwd,
  • welke architectuur het voor gebouwd is,
  • controlesommen van de bestanden in het pakket,
  • de licentie van de software die het bevat,
  • welke andere pakketten het nodig heeft om naar behoren te functioneren,
  • enz...

Pakket afhankelijkheden

Een belangrijk aspect van het pakketarchief is de relaties die ze bevatten. In werkelijkheid hebben de pakketten ook verwijzingen en relaties naar en met andere bestanden van andere pakketten daar de toepassing in het pakket een uitvoeringsomgeving nodig heeft (andere gereedschappen, bibliotheken, enz...) om daadwerkelijk uitgevoerd te kunnen worden. Pakket afhankelijkheden worden gebruikt om dergelijke relaties in kaart te brengen.

Bijvoorbeeld, pakket A vereist dat pakket B, C en D geïnstalleerd is om te kunnen werken.

  • Pakket afhankelijkheden zijn overgankelijk transitief, wat betekent dat wanneer pakket A pakket B nodig heeft, en pakket B pakket C nodig heeft, pakket A ook pakket C nodig heeft. Dit is de reden waarom u soms uiteindelijk behoorlijk veel pakketten dient te installeren ook al wilde u maar één enkele toepassing installeren.
  • Afhankelijkheden op bibliotheken (typische pakketten met de naam die begint met "lib") zijn veel voorkomend en bijna elke toepassing is afhankelijk van een set van bibliotheken.
Dit artikel is nog maar gedeeltelijk vertaald. Als u mee wilt helpen met vertalen lees dan Wiki vertalen naar het Nederlands.

Packages and package dependencies are very important aspects of Linux distributions (as well as other BSD and UNIX systems) because they provide a modular way to set up and manage an operating system and its applications. This is especially true for library packages. As an example, the package openssl contains cryptographic libraries that are used by many applications and other libraries (e.g. for SSL encryption). When a new, improved version of openssl is available, all the applications that use it will benefit from it just by upgrading that single package to the newer version.

It's also a very efficient way to maintain a stable and secure system: when a security hole, exploit or bug affects a library used by one or many applications, upgrading the single package will fix it for all of them.

Package formats

In the Linux distribution world, native software comes packaged essentially in three kind of package formats.

  • tgz (tar gzip files) which are basically source code archives. They can hold anything the package maintainer thinks useful. Apart from the archive format itself, necessary to extract the files, there is nothing standardised about the content of a tgz file. They need to be compiled in order to run the software.
  • rpm (RPM Package Manager) which are pre-compiled archives. Created by Red Hat Linux and standardized by the LSB, it's used by many Linux distribution as packaging system nowadays, including openSUSE.
  • deb (Debian) which are pre-compiled archives that are used on Debian based system.

However, if the archives format noticed the system of the required dependencies, they don't provide the dependency management capability and they will just present any encountered problem to the user at first sight, and leave it for him to decide what to do.

For instance if you want to install a RPM package A that has dependencies to RPM package B, RPM will not automatically install package B but just tell you that it needs package B and stop. It's up to the user to install package B and then afterwards package A. Now imagine package B has dependencies on package C and package D and package D has dependencies to package E and so on and so on. You end up chasing package dependencies manually down all the branches of this very huge tree.

Package manager

On modern Linux distributions like openSUSE, software installation is done with a package manager. The package manager, which works on top of RPM, gets software packages from repositories (online servers, CDs, DVDs etc.), solves the dependencies and installs them on your system. The package manager also makes it easy to remove packages later or to update them. The number of packages available for installation depends on which repositories you have added.

openSUSE native package manager is the YaST Software Management module and the Zypper command line, although the distribution ships with a variety of package management tools.

Package repositories

Before packages can be installed, they must be available in a Package repositories, either on physical media like CD or DVD or online via the internet.

openSUSE package repositories includes:

  • Official package repositories that include well tested and supported packages
  • Third party repositories, such as Packman and Build Service repositories. They provide various additional packages, some of which are more up-to-date or that cannot be included on the openSUSEsfor legal reasons, although they have had only very limited testing.

Zie ook


External links