Apt

Uit De Vliegende Brigade
Ga naar: navigatie, zoeken

Rond 2010 kwam ik ergens een lijstje tegen van basisvaardigheden die je nodig had, om effectief van Linux gebruik te kunnen maken. Dat lijstje heb ik helaas niet meer kunnen terugvinden. Twee items die ik me nog kan herinneren:

  • Snap hoe bestands- & maprechten werken
  • Ken je package manager.

Dit artikel gaat over dit tweede punt, in zoverre de betrekking heeft op Linux Mint, en in bredere zin Ubuntu en Debian.

APT

APT (apt voor kort) staat voor Advanced Packaging Tool. Het is een programma voor installatie en verwijdering van software op Debian, Ubuntu en afgeleide Linux-distributies. Iets precieser: apt is van oorsprong een front-end voor dpkg om .deb-bestanden te verwerken. Later is apt uitgebreid met de mogelijkheid om oa. rpm-pakketten te kunnen verwerken, en de mogelijkheid om paketten te beheren op OS X, iPhone en Solaris.

  • Apt kent diverse functies zoals apt-get en apt-cache.
  • Apt werkt met repositories. Dat zijn locaties waar paketten beschikbaar zijn. In het bestand etc/apt/sources.list staan de repositories vermeld. Cd-roms kunnen ook als repository dienen.

apt-cache showpkg

Met het commando apt-cache met optie showpkg wordt de inhoud van een pakket getoond. Dat is handig om te achterhalen wat er nu in een pakket zit met een onduidelijke naam (bv. apt-cache showpkg menu of apt-cache showpkg mc) of om in te schatten hoe belangrijk een pakket is, aan de hand van de lijst bij Reverse Depends.

Voorbeeld:

strompf@linz:~$ apt-cache showpkg xorg
Package: xorg
Versions: 
1:7.4+3ubuntu10 (/var/lib/apt/lists/nl.archive.ubuntu.com_ubuntu_dists_karmic-updates_main_binary-i386_Packages) (/var/lib/dpkg/status)
 Description Language: 
                 File: /var/lib/apt/lists/nl.archive.ubuntu.com_ubuntu_dists_karmic-updates_main_binary-i386_Packages
                  MD5: f5abde5fb283cb96048a3d3a5fe06e17

1:7.4+3ubuntu7 (/var/lib/apt/lists/nl.archive.ubuntu.com_ubuntu_dists_karmic_main_binary-i386_Packages)
 Description Language: 
                 File: /var/lib/apt/lists/nl.archive.ubuntu.com_ubuntu_dists_karmic_main_binary-i386_Packages
                  MD5: f5abde5fb283cb96048a3d3a5fe06e17


Reverse Depends: 

  mythbuntu-desktop,xorg
  lubuntu-desktop,xorg
  xubuntu-desktop,xorg
  xfce4,xorg
  ubuntustudio-desktop,xorg
  ubuntu-mid,xorg
  kde-full,xorg
  brdesktop-common,xorg
  ubuntu-netbook-remix,xorg
  ubuntu-desktop,xorg
  ltsp-client,xorg
  kubuntu-netbook,xorg
  kubuntu-desktop,xorg

Dependencies: 

1:7.4+3ubuntu10 - 
xserver-xorg (0 (null)) libgl1-mesa-glx (16 (null)) libgl1 (0 (null)) libgl1-mesa-dri (0 (null)) libglu1-mesa (0 (null)) xfonts-base (2 1:1.0.0-1) 
xfonts-100dpi (2 1:1.0.0-1) xfonts-75dpi (2 1:1.0.0-1) x11-apps (0 (null)) x11-session-utils (0 (null)) x11-utils (0 (null)) x11-xfs-utils (0 (null)) 
x11-xkb-utils (0 (null)) x11-xserver-utils (0 (null)) xauth (0 (null)) xinit (0 (null)) xfonts-utils (0 (null)) xkb-data (0 (null)) 
xorg-docs-core (0 (null)) xterm (16 (null)) x-terminal-emulator (0 (null)) x11-common (0 (null)) xinput (0 (null)) xorg-docs (0 (null)) 
xfonts-scalable (2 1:1.0.0-1) 1:7.4+3ubuntu7 - xserver-xorg (0 (null)) libgl1-mesa-glx (16 (null)) libgl1 (0 (null)) libgl1-mesa-dri (0 (null)) 
libglu1-mesa (0 (null)) xfonts-base (2 1:1.0.0-1) xfonts-100dpi (2 1:1.0.0-1) xfonts-75dpi (2 1:1.0.0-1) x11-apps (0 (null)) x11-session-utils (0 (null))
x11-utils (0 (null)) x11-xfs-utils (0 (null)) x11-xkb-utils (0 (null)) x11-xserver-utils (0 (null)) xauth (0 (null)) xinit (0 (null)) 
xfonts-utils (0 (null)) xkb-data (0 (null)) xorg-docs-core (0 (null)) xterm (16 (null)) x-terminal-emulator (0 (null)) x11-common (0 (null)) 
xinput (0 (null)) xorg-docs (0 (null)) xfonts-scalable (2 1:1.0.0-1) 

Provides: 

1:7.4+3ubuntu10 - x-window-system-core x-window-system 
1:7.4+3ubuntu7 - x-window-system-core x-window-system 

Reverse Provides: 

Overigens: Ik vind de output vaak karig. Meestal staat bij Provides alleen maar een versienummer. Wat er in zit, weet je dus meestal niet.

apt-get clean

Het commando apt-get clean leegt de package cache waar .deb-files bewaard worden. Met apt-get autoclean gebeurt dit automatisch.

apt-get purge

apt-get purge verwijdert programma's inclusief installatiebestanden, maar exclusief configuratiebestanden in de home dirs van gebruikers. Die configuratiebestanden zijn geplaatst door het programma zelf, en apt-get heeft daar geen weet van.

apt-get remove

Met apt-get remove kun je paketten verwijderen, bv. apt-get remove firefox. Met dit commando wordt tevens alle software verwijderd die afhankelijk zijn van het te verwijderen pakket.

Dit commando laat configuratiebestanden bestaan. Als je die ook wilt verwijderen, heb je nodig:

apt-get remove --purge <pakket>

apt-get update

Met het commando apt-get update wordt de lijst van beschikbare file updates gedownload van alle opgegeven repositories.

apt-get upgrade

Met het commando apt-get upgrade wordt alle software bijgewerkt naar de nieuwste versie die de computer kent middels apt-get update.

Aptitude

Aptitude is een grafische schil voor apt. Je kunt het ook starten binnen een terminal: Dan wordt er een tekstgebaseerde interface gebruikt.

Aptitude schijnt beter met dependencies te kunnen omgaan dan apt-get ([1]).

Geïnstalleerde pakketten weergeven

dpkg --get-selections

Geconfigureerde repositories weergeven

apt-cache policy

Repositories toevoegen

Standaard is een Linux-distributie voorzien van een handjevol repositories of repo's die noodzakelijk zijn om het OS bij te werken en aan te passen. Veel mensen en organisaties stellen hun programmatuur echter beschikbaar via 'eigen' reposities. Vaak is de handigste manier om dergelijke programmatuur te installeren en te beheren, door de betreffende repository toe te voegen op de betreffende computer.

Repositories toevoegen, gaat in twee stappen (geloof ik):

  • Keyfile toevoegen: Da's een public key van de uitgever van de betreffende programmatuur, om te verifiëren dat gedownloade pakketten te vertrouwen zijn. Dit gaat middels apt-key add
  • Repository toevoegen: Dus het eigenlijke toevoegen.

Zie bv. Albert (Quickstarter, Linux) voor een voorbeeld.

Repository verwijderen

Er zijn verschillende manieren om handmatig toegevoegde repositories weer te verwijden. De manier die hier beschreven wordt, is waarschijnlijk nogal primitief, maar het werkt en ik snap waarom.

Voorbeeld: Ik wil http://ppa.launchpad.net/flexiondotorg/albert/ubuntu verwijderen:

  • cd /etc/apt/sources.list.d - Overzicht van geïnstalleerde repositories
  • sudo rm flexiondotorg-albert-xenial.list - Gewoon bestand verwijderen
  • sudo apt update
  • apt-cache policy | grep flex - Gelukt

Bronnen