APT

Uit Linuxdocs.nl
Ga naar: navigatie, zoeken
Door:Laurens
Versie:6

Voorwoord

In alle situaties wordt uitgegaan van het uitvoeren van commando's als root, tenzij anders aangegeven. Sudoers dienen voor elk commando 'sudo ' te plaatsen.

APT

Distro's: Debian gebaseerd
APT is een softwarepakket dat zorgt voor het snel en eenvoudig beheren van debian gebaseerde pakketten die normaal als offline variant met dpkg worden geïnstalleerd, onderhouden of verwijderd. Bovenop APT zijn verschillende schillen verkrijgbaar zoals Synaptic of Adept. Dit is distro- en windowmanager afhankelijk welke standaard geïnstalleerd zijn.

Om verbinding te maken met de verschillende servers die de pakketten aanbieden, hierna te noemen als repositories, heeft APT een lijst nodig waar de bronnen in staan. Deze lijst, /etc/apt/sources.list zou er zó uit kunnen zien:

## Official Debian repos:

deb http://ftp.nluug.nl/pub/os/Linux/distr/debian/ wheezy main contrib non-free
deb-src http://ftp.nluug.nl/pub/os/Linux/distr/debian/ wheezy main contrib non-free

deb http://security.debian.org/ wheezy/updates main contrib non-free
deb-src http://security.debian.org/ wheezy/updates main contrib non-free
deb http://http.us.debian.org/debian/ wheezy main contrib non-free

Na het toevoegen of verwijderen van repositories in deze lijst zal altijd de lijst opnieuw moeten worden ingelezen.

apt-get update

Nu kan naar wens een programma geïnstalleerd worden dat op een van de servers voorkomt.

Mocht APT met de melding komen 'Dynamic MMap ran out of room', dan is dit eenvoudig op te lossen door onderstaand bestand aan te maken of te wijzigen in onderstaande:

/etc/apt/apt.conf

APT::Cache-Limit "100000000";

Herlaad APT opnieuw zoals hierboven beschreven en het probleem moet verholpen zijn.

! Bij het gebruiken van anderssoortige distro's (Bijv. Ubuntu repo's in Debian, is het aan te raden APT Pinning toe te passen.

Een lokale pakketserver aanmaken

Soms komt het voor dat bepaalde pakketten alleen los te downloaden zijn of al tijden niet meer beschikbaar in de nieuwe versie. Op zo'n moment is het handig de losse pakketten of oude broncode bestanden in een aparte directory te plaatsen en te zorgen dat APT ook daar kijkt naar updates en installatiemogelijkheden.

Bij de eerste aanmaak kunnen we een zelf te kiezen plaats aangeven waar de bestanden komen te staan, zie hieronder een voorbeeld:

mkdir /etc/apt/localrepo
mkdir /etc/apt/localrepo/deb
touch /etc/apt/localrepo/deb/Packages
dpkg-scanpackages /etc/apt/localrepo/deb/ >/etc/apt/localrepo/deb/Packages
tar -c -z -v /etc/apt/localrepo/deb/*.deb >/etc/apt/localrepo/deb/Packages.gz

Voeg nu in /etc/apt/sources.list de volgende regel toe:

deb file:/etc/apt/localrepo deb/

Eventueel is voor vervolgupdates hier een eenvoudig script voor te fabriceren, bijvoorbeeld /bin/localrepoupdate

#!/bin/bash
touch /etc/apt/localrepo/deb/Packages
dpkg-scanpackages /etc/apt/localrepo/deb/ >/etc/apt/localrepo/deb/Packages
tar -c -z -v /etc/apt/localrepo/deb/*.deb >/etc/apt/localrepo/deb/Packages.gz

Dit bestand als uitvoerbaar aanmerken voor root:

chmod 700 /bin/localrepoupdate

Na elke keer pakketten in deze map geplaatst te hebben of eruit verwijderd is nu de lokale repository eenvoudig te updaten door middel van het uitvoeren van ons nieuwe script en daarna een apt-get update:

localrepoupdate
apt-get update

Alles helemaal automatisch updaten en toevoegen kan als volgt:

/var/cache/apt/archives

#!/bin/bash
echo Moving all debian files to the local repository
mv /var/cache/apt/archives/*.deb /etc/apt/localrepo/deb/Packages
touch /etc/apt/localrepo/deb/Packages
echo Scanning packages. This may take some time
dpkg-scanpackages /etc/apt/localrepo/deb/ >/etc/apt/localrepo/deb/Packages
tar -c -z -v /etc/apt/localrepo/deb/*.deb >/etc/apt/localrepo/deb/Packages.gz
echo Apt will be updated
apt-get update

Pakketten kunnen nu geïnstalleerd worden door één van onderstaande commando's

apt-get install programmanaam
aptitude install programmanaam

Alleen zoeken naar een programma of pakket kan ook:

apt-cache search pakketnaam

Overbodige bestanden verwijderen kan volautomatisch:

apt-get autoremove
deborphan | xargs apt-get -y remove

Eventueel de eerste keer deborphan installeren:

apt-get -y install deborphan

Het komt soms voor dat na een deborphan actie er weer andere pakketten zijn die ook verwijderd kunnen worden. In dat geval kan bovenstaande herhaald worden tot er niets meer verwijderd hoeft te worden.

APT Pinning

APT pinning is een term voor het gebruiken van software uit andere pakketbronnen die normaal gesproken te oud, te nieuw of onstabiel zijn, maar in combinatie met de recente pakketten op eenvoudige wijze problemen met afhankelijkheden kunnen oplossen.

Hieronder een voorbeeld hoe dit bij een Debian Squeeze systeem wordt gedaan:

Het bestand /etc/apt/preferences zou er zó uit kunnen zien:

Package: *
Pin: release o=Debian,a=squeeze
Pin-Priority: 900

Package: *
Pin: release o=Debian,a=testing
Pin-Priority: 700

Package: *
Pin: release a=testing
Pin-Priority: 500

Package:  *
Pin: release a=experimental
Pin-Priority: 400

Package: *
Pin: release a=sid
Pin-Priority: 300

Package: *
Pin: release a=unstable
Pin-Priority: 100

Standaard zal het systeem kiezen voor de hoogste prioriteit, in ons geval de Squeeze uitgave. Maar als we in de console of via een schil zoals Synaptic of Adept aangeven een andere versie te willen, zal het pakket uit die andere worden overgenomen. Nog beter is het om aptitude te gebruiken indien het niet lukt op de standaardwijze een pakket te installeren, daar deze in de meeste gevallen zelf de beste versies uitzoekt en bij elkaar brengt in de zelfde groep van afhankelijkheden.

Debian hanteert een aantal standaardbegrippen voor uitgaven. Stable is de uitgekauwde versie die met zeer grote zekerheid stabiel is, Testing is al stabiel, maar nog in ontwikkelingsfase, Sid is te nieuw en nog niet goed getest, en Unstable is dusdanig nieuw dat deze nog helemaal niet zijn getest op programmeerfouten (bugs). Sommige repo's hanteren één pool voor zowel Sid als Unstable.

Om gebruik te kunnen maken van alle uitgaven zal dit aangegeven moeten worden in /etc/apt/sources.list.

Storingen met APT

Soms lukt het niet meer om APT uit de stress te krijgen, bijvoorbeeld bij sommige repositories waar de gegevens beschadigd waren is dit een groot probleem. Het oplossen is vaak eenvoudiger dan het lijkt.

Als een bepaald pakket niet meer geconfigureerd kan worden, probeer dan eens het volgende:

rm /var/lib/apt/info/pakketnaam*

En daarna die pakketnaam te verwijderen d.m.v. apt-get remove pakketnaam* of geïnstalleerd laten zonder medeweten van apt.

APT heeft nog meer plaatsen in het systeem waar interessante gegevens te vinden zijn, zie systeemvariabelen.



How-TO's | Hoofdpagina | Linux Nieuws | Externe links | Help