Package management (Linux)

Uit De Vliegende Brigade
Ga naar: navigatie, zoeken

Package management heeft betrekking op het consistente beheer van software-onderdelen binnen een bepaalde omgeving (operating system, applicatie, cms, etc.). Wat een package manager zoal doet:

  • Download, installatie, bijwerken, configureren en verwijderen van programmatuur
  • Dependency resolution
  • Controleren op beschikbaarheid van updates.

Van oorsprong werd software op Linux en Unix vanaf broncode gecompileerd en geïnstalleerd. Naarmate deze platformen populairder werden, nam de behoefte toe aan een geautomatiseerde manier om software te beheren. Dit nam de vorm aan van wat we nu kennen als package management. Package management is niet beperkt tot alleen applicaties. Het wordt ook toegepast op plugis of modules voor bv. content management-systemen of voor beheer van libraries voor programmeertalen.

Voorbeelden

  • Apt: Package manager voor Debian en afgeleide distributies zoals Unbuntu en Linux mint
  • pacman: Package manager voor Arch Linux
  • Portage: Package manager voor oa. Gentoo Linux & FreeBSD
  • RPM: Redhat Package Manager voor Redhat en afgeleide distributies. In mijn beleving is RPM de grote tegenhanger van Apt. Yum is een software-tool voor RPM
  • Composer: Application-level package manager for PHP - Regelt de depencies binnen een applicatie
  • Pip: Package manager voor Python.

Dit artikel gaat primair over Apt op Linux Mint.

Dependency Resolution

Wellicht dat dependency resolution zowaar de belangrijkste functie van een package manager is. Als er bv. een nieuwe versie van Ubuntu uitkomt, heb je standaard de beschikking tot een hoop software die precies bij die versie van Ubuntu past. Of andersom: Een tijdje geleden merkte ik op dat ik op een computer de actuele versie van PHP niet kon installeren. Al snel bleek dat het OS (Ubuntu Server of Linux Mint) te oud was voor de gewenste versie van PHP, en dat het tijd was om het hele OS te upgraden.

Het is de afwezigheid van dependency resolution waarom Arch Linux doorgaans ongeschikt wordt geacht voor zakelijk gebruik: Je hebt geen garantie dat de dingen die je installeert, niet met elkaar conflicteren.

Dependency resolution speelt in het bijzonder een rol wanneer er gebruik wordt gemaakt van shared libraries, aka. dynamically linked libraries itt. statically linked libraries en de daaruitvloeiende noodzaak om verschillende versies van libraries te beheren. Ziehier de geboorte van DLL Hell op Microsoft Windows.

Packages

Een package is basically een archiefbestand met installatiebestanden (dus de software en bijbehorende bestanden die geïnstalleerd moeten worden) en metadata.

Wat de metadata zoal inhoud:

  • Naam van het software-pakket
  • Beschrijving
  • Versienummer
  • Leverancier
  • Checksum
  • Lijst van dependencies.

Zie ook

Bronnen