Een klein APT-kookboek

Wat betekent APT?

APT is een afkorting voor Advanced Packaging Tool en is dus een verzameling van programma's en scripts, die (de systeembeheerder) root bij de installatie en het beheer van Deb-pakketten ondersteunen.

Sources lijst

Het "APT"-systeem heeft een configuratiebestand (config-file) nodig hetwelke informatie bevat over de lokaties van de installeerbare en bij te werken pakketten, er wordt gewoonlijk naar verwezen als een sources.list.

De sources staan in de map:
/etc/apt/sources.list.d/

In de map zijn 2 bestanden te vinden:
/etc/apt/sources.list.d/debian.list en
/etc/apt/sources.list.d/aptosid.list

Het voordeel hiervan is, dat het veranderen van mirrors eenvoudiger gaat (automatisch) en het wordt veiliger om de sources-lijsten te veranderen.

Je kan ook je eigen lijst toevoegen aan de /etc/apt/sources.list.d/*.list bestanden

Alle aptosid ISOs gebruiken de volgende bronnen (sources) als standaard:

#aptosid
# Free University Berlin/ spline (Student Project LInux NEtwork), Germany
deb ftp://ftp.spline.de/pub/aptosid/debian/ sid main fix.main
#deb-src ftp://ftp.spline.de/pub/aptosid/debian/ sid main fix.main

Andere bronnen voor de niet-gratis benodigheden kunnen gevonden worden via: aptosid.list en debian.list:

#Debian
# Unstable
deb http://ftp.us.debian.org/debian/ unstable main contrib non-free
#deb-src http://ftp.us.debian.org/debian/ unstable main contrib non-free

# Testing
#deb http://ftp.us.debian.org/debian/ testing main contrib non-free
#deb-src http://ftp.us.debian.org/debian/ testing main contrib non-free

# Experimental
#deb http://ftp.us.debian.org/debian/ experimental main contrib non-free
#deb-src http://ftp.us.debian.org/debian/ experimental main contrib non-free

NB: De instelling van de servers kan als root veranderd worden, door de landen-code aan te passen zoals ftp.nl, ftp.de, ftp.uk. In de meeste landen zijn locale Debian-mirrors beschikbaar. Hierdoor kan de gebruiker sneller downloaden en wordt tevens bandbreedte bespaard.

Lijst van Debian Servers and mirrors - huidige toestand.

Om te kunnen beoordelen of recentere bestanden/pakketten beschikbaar zijn, wordt de eigen installatie vergeleken met de recente lijst van de bestanden op de Debian-server. Het programma apt-get gebruikt deze informatie, om onderlinge verbanden/afhankelijkheden op te lossen en op deze manier te garanderen, dat de gekozen pakketten werken. De actualisatie van deze datenbase wordt gedaan via het commando apt-get update.

# apt-get update
	(which returns)
Get:1 http://aptosid.com sid Release.gpg [189B]
Get:2 http://aptosid.com sid Release.gpg [189B]
Get:3 http://aptosid.com sid Release.gpg [189B]
Get:4 http://ftp.nl.debian.org unstable Release.gpg [189B]
Get:5 http://aptosid.com sid Release [34.1kB]
Get:6 http://ftp.nl.debian.org unstable Release [79.6kB]

Hoe kan ik een nieuw pakket installeren?

Het upgraden en installeren van een pakket zonder X te stoppen kan tot problemen leiden. Elke methode voor het installeren van een pakket onder X heeft dit probleem.

Zolang het pakket dat je wil installeren geen ander pakket wil upgraden, dan is het veilig om dit pakket te installeren onder X. Indien de installatie van het pakket andere pakket upgrade, dan moet je uitermate opletten en zeker zijn dat het pakket dat wordt upgraded niet meer in gebruik is. Anders moet je X stoppen vooraleer het pakket te installeren.

Bij twijfel, verlaat X zoals je doet bij de dist-upgrade instructies, voor het installeren van het pakket. Geïnstalleerd systeem upgraden - dist-upgrade - De Stappen .

Als de APT-databank geactualiseerd is en de naam van het pakket bekend is, dan is onderstaand commando voldoende (later wordt getoond, hoe een pakket te vinden is):

# apt-get install qemu
Reading package lists... Done
Building dependency tree... Done
The following extra packages will be installed:
  bochsbios openhackware proll vgabios
Recommended packages:
  debootstrap vde
The following NEW packages will be installed:
  bochsbios openhackware proll qemu vgabios
0 upgraded, 5 newly installed, 0 to remove and 20 not upgraded.
Need to get 4152kB of archives.
After unpacking 11.9MB of additional disk space will be used.
Do you want to continue [Y/n]? n

Verwijderen van een pakket:

Het volgende commando verwijderd een pakket (de afhankelijkheden worden niet verwijderd):

apt-get remove gaim
Reading package lists... Done
Building dependency tree... Done
The following packages will be REMOVED:
  gaim gaim-irchelper
0 upgraded, 0 newly installed, 2 to remove and 310 not upgraded.
Need to get 0B of archives.
After unpacking 4743kB disk space will be freed.
Do you want to continue [Y/n]?
(Reading database ... 174409 files and directories currently installed.)
Removing gaim-irchelper ...
Removing gaim ...

In deze procedure blijven de configuratiebestanden staan. Deze bestanden kunnen zo later bij een herinstallatie van het programmapakket (in dit voorbeeld gaim) hergebruikt worden. Het kan zinvol zijn om de configuratiebestanden ook te verwijderen (bijv. als niet duidelijk is of het 'niet werken' aan de programma-versie of aan de configuratie ligt). Er wordt dan het volgende commando gebruikt:

apt-get --purge remove gaim
Reading package lists... Done
Building dependency tree... Done
The following packages will be REMOVED:
  gaim*
0 upgraded, 0 newly installed, 1 to remove and 309 not upgraded.
Need to get 0B of archives.
After unpacking 4678kB disk space will be freed.
Do you want to continue [Y/n]? Y
(Reading database ... 174405 files and directories currently installed.)
Removing gaim ...
Purging configuration files for gaim ...

Let op de * achter de naam van het pakket die door apt wordt getoond. Deze asterisk in deze melding laat zien dat de configuratie-bestanden ook verwijderd worden.

Downgrading/Hold van een pakket

Het kan nodig zijn om terug te gaan naar een eerdere versie van een pakket of de huidige versie te behouden (als er bijvoorbeeld een grote 'bug' in de meest recente versie zit).

Hold

echo package hold|dpkg --set-selections

Om een pakket uit de wacht (Hold) te halen

echo package install|dpkg --set-selections

Een lijst met pakketten weergeven die in de Wacht (Hold) staan:

dpkg --get-selections | grep hold

Downgrading

Debian ondersteunt het downgraden van paketten niet. Hoewel het kan werken in enkele eenvoudige situaties, zo kan het ook spectaculair falen in andere gevallen. Gelieve te kijken naar Emergency downgrading.

Ondanks het feit dat downgraden niet wordt ondersteunt, blijkt het toch te werken voor eenvoudige pakketten. De stappen voor het downgraden van een eenvoudig pakket, zoals kmahjongg bevoorbeeld, zijn:

  1. Wijzig de unstable sources in /etc/apt/sources.list.d/debian.list in commentaar met een #
  2. Voeg de testing sources toe aan /etc/apt/sources.list.d/debian.list , bijvoorbeeld:
    deb http://ftp.nl.debian.org/debian/ testing main contrib non-free
    
  3. apt-get update
    
  4. apt-get install kmahjongg/testing
    
  5. Zet het nieuw geinstalleerde pakket "on hold" met:
    echo kmahjongg hold|dpkg --set-selections
    
  6. Wijzig de testing sources in /etc/apt/sources.list.d/debian.list in commentaar met <#> en uncomment de unstable sources zodanig dat je terug de unstable sources zal gebruiken, daarna:
  7. apt-get update
    

Als je de laatste versie van een pakket wilt installeren:

echo kmahjongg install|dpkg --set-selections
apt-get update
apt-get install kmahjongg

apt-mark

apt-mark is een nuttig hulpmiddeltje dat toont welke pakketten er automatisch of manueel geinstalleerd werden. En het biedt de mogelijkheid aan systeembeheerders om pakketten te markeren en vast te houden, zodanig dat ze niet automatisch worden verwijdert. Lees:

man apt-mark

Upgrade/bijwerken van het geïnstalleerde systeem - dist-upgrade - Overview

Als het complete systeem wordt geactualiseerd dan heet dat een dist-upgrade. Ga voorafgaand a.u.b. na of er recente waarschuwingen zijn, lees de aptosid website, en controleer of er pakketten voor je systeem zijn die geactualisserd kunnen worden per dist-upgrade. Soms is het nodig om een pakket op hold te zetten. Lees hiervoor downgrade en hold een pakket.

Een 'upgrade' van alleen 'debian sid' wordt niet aanbevolen.

Hoe vaak moet een dist-upgrade uitgevoerd worden

Probeer regelmatig een dist-upgrade uit te voeren. Dat kan per week, maar per twee weken is ook prima. Om je systeem actueel en veilig te houden is ons advies om minimaal 1 keer per maand een dist-upgrade uit te voeren. Voor een pc met internetverbinding is het vanwege de veiligheid het uiterste minimum een dist-upgrade slechts 1 keer per kwartaal uit te voeren. Voor niet-standaard pakketten, of zelf gecompileerde pakketten, wordt een extra controle en voorzichtigheid geadviseerd. Er kunnen door deze afwijkende pakketten beschadigingen aan je systeem veroorzaakt worden als deze niet compatibel zijn.

Nadat de interne databank geactualiseerd werd, kan worden onderzocht, voor welk pakket een recentere versie bestaat (hiervoor moet apt-show-versions geïnstalleerd zijn/worden):

apt-show-versions -u
libpam-runtime/unstable upgradeable from 0.79-1 to 0.79-3
passwd/unstable upgradeable from 1:4.0.12-5 to 1:4.0.12-6
teclasat/unstable upgradeable from 0.7m02-1 to 0.7n01-1
libpam-modules/unstable upgradeable from 0.79-1 to 0.79-3.........

De update van een enkel pakket (hier bijv. gcc-4.0) kan correct worden doorgevoerd incl. de controle van de onderlinge afhankelijkheden:

# apt-get install gcc-4.0
Reading package lists... Done
Building dependency tree... Done
gcc-4.0 is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and xxx not upgraded

Alleen downloaden

Een minder bekende maar waardevolle optie is een dist-upgrade met de -d optie:

apt-get update && apt-get dist-upgrade -d

Met -d worden de pakketten allen als download door de dist-upgrade opgehaald, dan kan zelfs in de grafische X omgeving. Een installatie kan later worden uitgevoerd in de konsole en je kan in de modus init 3 de installatie van de gedownloade pakketten uitvoeren. Hierdoor ben je in staat nog in ons forum waarschuwingen en achtergrondinformatie te lezen om de juiste keuzes te maken als een upgrade van een pakket gevraagd wordt.

apt-get dist-upgrade -d
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following NEW packages will be installed:
  elinks-data
The following packages have been kept back:
  git-core git-gui git-svn gitk icedove libmpich1.0ldbl
The following packages will be upgraded:
  alsa-base bsdutils ceni configure-ndiswrapper debhelper
  discover1-data elinks file fuse-utils gnucash.........
35 upgraded, 1 newly installed, 0 to remove and 6 not upgraded.
Need to get 23.4MB of archives.
After this operation, 594kB of additional disk space will be used.
Do you want to continue [Y/n]?Y 

Y zal de te upgraden pakketten downloaden zonder het geinstalleerde systeem aan te raken.

Nadat de download via 'dist-upgrade -d' klaar is, kan de afronding met dist-upgrade plaatsvinden. Dat kan direct uitgevoerd worden of latermet de volgende instructies:

dist-upgrade - DE STAPPEN

Pleeg a.u.b. NOOIT een dist-upgrade of upgrade in in de grafische X omgeving.
Controleer altijd voorafgaand de actuele waarschuwingen en adviezen op de aptosid website. Deze waarschuwingen staan daar omdat zij nodig zijn voor een Debian sid/unstable-systeem waarin dagelijks verschillende pakketten geactualiseerd of nieuwe pakketten toegevoegd worden.
# Verlaat de grafische omgeving KDE via Ctrl+Alt+F1
# meld je aan als root, type
init 3
apt-get update
apt-get dist-upgrade
apt-get clean
init 5 && exit
[Probeer nooit een DIST-UPGRADE [of UPGRADE] met adept, synaptic of aptitude uit te voeren. Kijk hier voor meer infomatie.:

Het script loodst je stap-voor-stap door de upgrade. Natuurlijk kan je ook zelf met apt-get een upgrade uitvoeren. Als je hierbij niet met init 3 werkt, moet je goed weten wat je doet, je bent bij deze nogmaals gewaarschuwd!

De redenen om niets anders dan apt-get voor een dist-upgrade te gebruiken

Pakket managers zoals adept, aptitude, synaptic en kpackage zijn niet altijd in staat om de grote hoeveelheid aan veranderingen in Sid-systemen volledig en correct te verwerken (veranderde afhankelijkheden, veranderde namen, script veranderingen, ...).

Dat is geen fout van de ontwikkelaars van deze hulpmiddelen. Zij hebben prachtige programma's geschreven voor de Debian Stable systemen, maar zij zijn niet gemaakt voor de bijzonderheden van Debian Sid systemen.

Je kan voor het zoeken naar pakketten gebruiken wat je wilt, maar neem uitsluitend apt-get voor installeren/verwijderen/dist-upgrading.

Pakket managers zoals adept, aptitude, synaptic en kpackage zijn 'non-deterministic' voor complexe pakketten. Als in het dagelijks geactualiseerde aanbod van Debian Sid en in verschillende externe bronnen van verschillende qualiteit (wij gebruiken of adviseren deze niet, maar zij zijn wel de realiteit op een groot aantal user systemen) grafische pakket managers gebruikt worden, kunnen problemen ontstaan die niet eenvoudig gerepareerd kunnen worden.

Een bijkomende opmerking: al deze GUI pakket managers moeten in X worden gebruikt. Met het maken van een dist-upgrade in X (of zelfs met een "upgrade", hoewel dit niet is aangeraden ) zal je het systeem onherstelbaar beschadigen, misschien niet vandaag of morgen, maar na verloop van tijd zal het toch gebeuren.

Apt-get doet eenvoudig wat het behoort te doen. Als er tijdens de installatie een probleem ontstaat (afhankelijkheden, ontbrekende pakketten), dan wordt je geïnformeerd voordat de installatie doorgaat. Als apt-get de helft van je systeem wil verwijderen dan moet de administrator (jezelf dus) er serieus naar kijken voordat je 'y' en enter gebruikt.

Dat is de reden waarom Debian builds apt-get gebruiken en geen andere pakket managers.

Met apt-cache naar programmapakketten zoeken

Een ander commando voor het APT-systeem is apt-cache. Hiermee wordt in de APT-database gezocht en kan informatie van pakketten worden getoond. Een opdracht voor een lijst van alle pakkettendie "aptosid" en "manual" bevatten:

$ apt-cache search aptosid manual
.......
aptosid-manual-common - the official aptosid manual - common files
aptosid-manual-es - the official Spanish aptosid manual
aptosid-manual-de - the official German aptosid manual
aptosid-manual-el - the official Greek aptosid manual
aptosid-manual - the official aptosid manual - all languages
aptosid-manual-pt-br - the official Brazilian Portuguese aptosid manual
aptosid-manual-en - the official English aptosid manual
aptosid-manual-reader - aptosid manual reader

Als je meer informatie van een pakket wilt zien, gebruik bijv.:

$ apt-cache show aptosid-manual-en
Package: aptosid-manual-en
Priority: optional
Section: doc
Installed-Size: 1088
Maintainer: Kel Modderman <kel@otaku42.de>
Architecture: all
Source: aptosid-manual
Version: 01.12.2007.06.03-1
Depends: aptosid-manual-common
Filename: pool/main/s/aptosid-manual/aptosid-manual-en_01.12.2007.06.03-1_all.deb
Size: 391222
MD5sum: 60f2175c3c5709745a4b4256ccc3c49d
SHA1: e275a0b27628b6aa210a4ced48d3646b438e78b8
SHA256: 2792580c7a091521301064180a1d0d8901f0a4af407b90432b9f8d8b6b3603ca
Description: the official en aptosid manual
 This manual is divided into common sections, for example, .......

Alle beschikbare versies van een pakket (afhankelijk van je sources.list) kunnen getoond worden via bijv.:

$ apt-cache policy aptosid-manual-en
aptosid-manual-en:
  Installed: (none)
  Candidate:01.12.2007.06.03-1
  Version table:
     01.12.2007.06.03-1 0
        500 http://aptosid.com sid/main Packages

Een volledige omschrijving van het APT-System staat in de APT-HOWTO.

Een uitgebreide beschrijving van het APT-System is te zien in de APT-HOWTO

Inhoud het laatst gewijzigd op 10/05/2012 1330 UTC