En kort guide til APT

Hvad betyder APT?

APT er en forkortelse for Advanced Packaging Tool, og det er en samling af programmer og script's der kan hjælpe sysadmin (i dit tilfælde root) med installation og management af deb-filerne.

Sources List

"APT" -systemet har brug for en konfigurationsfil, der indeholder information om lokaliseringen af de installerbare og opdaterbare pakker, og denne konfigurationsfil henvises hyppigt til med betegnelsen sources.list.

Sources, eller kilder er indeholdt i en mappe der hedder:
/etc/apt/sources.list.d/

I denne findes to filer med de repektive navne:
/etc/apt/sources.list.d/debian.list and
/etc/apt/sources.list.d/aptosid.list

Dette gør det lettere at skifte fil-spejl (automatiseret), og det gør det sikrer at erstatte lister.

Du kan tilføje din egen /etc/apt/sources.list.d/*.list fil

Alle aptosid ISO'er har allerede de følgende kilder som standard:

#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

Yderligere information om non-free behov kan findes i vores altid opdaterede aptosid.list og debian.list:

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

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

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

OBS: I dette eksempel indikerer ftp.de at de tyske repositorier (filspejle) anvendes. Du kan redigere denne fil (som root) til for eksempel ftp.dk, ftp.uk eller ftp.de (de fleste lande har lokale filspejle), for derigennem at anvende de repositorier som er tættest på dig. På denne måde kan filoverførselshastigheden øges, og båndbredde spares.

Liste over debian servere og filspejlenes øjeblikkelige status.

For at kunne modtage opdateret information om pakkerne anvender APT en database. Databasen indeholder pakkenavnet, men også en oversigt over hvilke andre pakker der er nødvendige for en given pakke (-afhængigheder/ dependencies). Programmet apt-get anvender denne database når den installerer de pakker du har valgt for at løse alle eventuelle afhængigheder, og garanterer på den måde at programmerne vil fungere. Kommandoen der opdaterer denne database er 'apt-get update' (det følgende eksempel er fra en tysk aptosid installation):

# 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.de.debian.org unstable Release.gpg [189B]
Get:5 http://aptosid.com sid Release [34.1kB]
Get:6 http://ftp.de.debian.org unstable Release [79.6kB]

Installering af nye pakker

opdatering af pakker og installering af nye pakker uden at stoppe X (grafikserveren) kan forårsage problemer. Enhver metoder der installerer pakker mens X kører er omfattet af dette problem.

Så længe som en pakke du vil installere ikke opgraderer yderligere pakker, er det sikkert nok at installere den uden først at stoppe X. Men hvis installationen af pakken medfører at andre pakker opgraderes/ opdateres, så skal du fare frem med yderste forsigtighed, og medmindre du er absolut sikker på at de pakker der opdateres ikke er i brug i øjeblikket, så bør du stoppe X før du installerer den ønskede pakke.

Hvis du er i tvivl, så forlad X som når du eksekverer en dist-upgrade, inden du instalerer dine pakker, det er det sikreste. Se Updatering af et installeret system - dist-upgrade - Overblik .

Hvis vi antager at databasen er opdateret, og navnet på den pakke du gerne vil installere er kendt, så vil den følgende kommando installere pakken (i dette eksempel 'qemu') og alle afhængigheder (dependencies) (senere vil vi vise hvordan du søger efter og finder pakker.)

# 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

Afinstallation af/ sletning af en pakke

Det er næppe nogen overraskelse at den følgende kommando vil afinstallere en pakke, men kommandoen vil ikke afinstallere eventuelle afhængigheder:

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 ...

I det viste eksempel bliver pakken gaim afinstalleret, men programmets konfigurationsfiler bliver ikke fjernet sammen med programmet når du anvender 'remove' kommandoen. Du kan anvende disse konfigurationsfiler hvis du senere installerer gaim igen.

Hvis du vil have konfigurationsfilerne slette samtidigt med at du afinstallerer programmet bruger du kommandoen 'apt-get --purge remove':

# apt-get --purge remove gaim
# apt-get remove --purge 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 ...

Bemærk * tegnet efter pakkenavnet i apt's tilbagemelding. Asteriksen i tilbagemeldingen indikerer at konfigurationsfilerne også vil blive fjernet.

Nedgradering og/eller at sætte en pakke på Hold

Nogle gange er det nødvendigt at gå tilbage til en tidligere version af en pakke, måske på grund af støre bug i den sidste version du lige har installeret.

Hold

echo package hold|dpkg --set-selections

For at tage pakken af Hold

echo package install|dpkg --set-selections

For at se alle pakker på Hold:

dpkg --get-selections | grep hold

Nedgradering af en pakke

Debian does not support downgrading packages. While it may work in simple cases, it could fail spectacularly for other packages. Please refer to Emergency downgrading.

Despite the fact that it is not supportable, downgrading has been known to work for simple packages. The steps for downgrading a simple package using kmahjongg as an example are:

  1. comment unstable sources in /etc/apt/sources.list.d/debian.list with a #
  2. Add testing sources in /etc/apt/sources.list.d/debian.list , for example:
    deb http://ftp.nl.debian.org/debian/ testing main contrib non-free
    
  3. apt-get update
    
  4. apt-get install kmahjongg/testing
    
  5. Put the newly installed package on hold with:
    echo kmahjongg hold|dpkg --set-selections
    
  6. comment <#>the testing sources in /etc/apt/sources.list.d/debian.list with and uncomment the unstable sources so that you get back to using unstable sources, then:
  7. apt-get update
    

Når du vil installere den seneste nye version af pakken, gør du følgende:

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

apt-mark

apt-mark is a useful tool that shows you which packages are automatically or manually installed and offers the system administrator the opportunity to mark and hold packages that are not to be removed automatically. Read:

man apt-mark

System opgradering - dist-upgrade - Overview

Hvis hele systemet skal opgraderes da opnås dette gennem en dist-upgrade. Du bør altid kontrollere om der i øjeblikket findes advarsler mod dette på aptosid hjemmeside, og om der findes advarsler mod de pakker som dit system vil opgradere. Hvis du har brug at holde en pakke tilbage så den ikke opgraderes, -sætte den på hold kan du kigge her og se hvordan du gør Nedgradere eller 'Hold' en pakke

At begrænse sig til en 'upgrade' af 'debian sid' anbefales ikke.

Hyppighed af dist-upgrade

dist-upgrade skal du udføre så ofte som du kan komme til det, ideelt set en gang om ugen, mindst en gang om måneden for at være sikker. En dist-upgrade der kun udføres hver 2. eller 3. måned bør anses som de yderliggende grænser for sikkerheden. For ikke-standard pakker, eller hjemme-kompilerede pakker skal du udvise ekstar opmærksomhed ved dist-upgrade, eftersom de kan ødelægge dit system til enhver tid pga. inkomptabilitet.

Efter at databasen er blevet opdateret kan man finde ud af hvilke pakker der findes opdateringer til/ nye versioner af: (first install apt-show-versions)

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.........

Opdatering af en enkelt pakke, inklusiv pakkens dependencies, (for eksempel pakken gcc-4.0) kan gøres med:

# apt-get install gcc-4.0
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

Kun downloade pakker

En smart metode til at se hvilke pakker der kan opgraderes er anvendelse af -d parameteren:

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

-d parameteren tillader dig at hente alle de pakker der skal opgraderes uden faktisk at installere nogen af dem, fra en konsol. Dette kan du for eksempel gøre mens du er logget ind i X (den grafiske brugerflade), du kan så udføre den faktiske dist-upgrade på et senere tidspunkt fra init 3. Du kan så kontrollere eventuelle advarsler og eventuelt afbryde processen.

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 (i tilfælde af dansk locales er det et J) henter de opdaterede pakker uden at installere dem.

Efter 'dist-upgrade -d' er færsig med at hente pakkerne og du ønsker at udføre dist-upgrade, hvad enten øjeblikkeligt efter eller på et senere tidspunkt, så følg venligst følgende retningslinier:

dist-upgrade - The Steps

DU MÅ ALDRIG NOGENSINDE OVERHOVEDET udføre 'dist-upgrade' eller 'upgrade' mens du er i X (den grafiske brugerflade).
Du skal altid undersøge om der skulle være eventuelle advarsler på aptosid hjemmesiden. Advarslerne er der af gode grunde, og er nødvendige fordi Debian sid/unstable bliver opdateret på en daglig basis.
## Log out of KDE.  
## Go to Textmode by doing Ctrl+Alt+F1
## logon as root, and then type:
service kdm stop  ##If using another window manager replace kdm, for example with gdm
apt-get update
apt-get dist-upgrade
apt-get clean
service kdm start ##If using another window manager replace kdm, for example with gdm
UDFØR ALDRIG DIST-UPGRADE [eller UPGRADE] med adept, aptitude eller synaptic Læs 'System opgradering - dist-upgrade'

Nu er du advaret hvis du skulle vælge ikke at udføre din dist-upgrade i init 3 tilstand...

De gode grunde til IKKE at anvende NOGET SOM HELST ANDET end apt-get til dist-upgrade

Pakkemanagere som adept, aptitude, synaptic og kpackage er ikke altid i stand til at tage højde for den store mængde af ændringer der sker i sid (afhængigheder ændres, navne ændres, vedligeholdelses scripts ændres, ...).

Det er dog ikke udviklernes af disse værktøjers skyld; -de skaber udemærkede værktøjer der er utroligt gode til den stabile del af debian, de er bare ikke egnet til de massive ændringer der opstår i, og derfor de specielle krav der er til opdatering af den ustabile version som debian Sid er.

Du kan sagtens bruge disse værktøjer til at søge efter pakker som du gerne vil installere, men du bør holde dig til apt-get når du skal installere/afinstallere/dist-upgrading

Pakkemanager som adept, aptitude, synaptic og kpackage er alle non-deterministiske (for komplekse pakke udvalg), og med et hurtigt bevægende mål som sid, og værre endnu, -eksterne repositorier af tvivlsom kvalitet (vi hverken anbefaler eller anvender disse, men de er en realitet på brugernes systemer) har du en eksplosiv blanding der skriger efter katastrofen.

Et andet problem er at alle disse GUI pakke-managere alle skal eksekveres i X, og det at foretage en dist-upgrade i X (eller enddog bare en upgrade, selvom dette ikke anbefales), vil uværgeligt føre til at du beskadiger dit system forbi det punkt hvor det kan genoprettes. Måske ikke idag, og måske heller ikke imorgen, men det vil ske før eller siden!.

apt-get på den anden side holder sig strengt til de instruktioner den får og gør præcist som den får besked på. Hvis der er nogle pakker der ødelægges kan du nemt finde og debug/ fikse årsagen, hvis apt-get vil fjerne halvdelen af systemet (f.eks. pga. biblioteksændringer) så er det op til systemadministratoren (det vil sige dig) at vurdere om det nu virkeligt også skal gennemføres.

Det er af disse grunde at debian builds anvender apt-get, ikke de ander pakke managers.

Søgning efter pakker med apt-cache

En anden meget nyttig kommando i APT-systemet er apt-cache; det søger APT-databasen og viser dig information om pakker; for eksempel: for at få vist en liste over alle pakker der indeholder eller nævner "aptosid" og "manual" gør du følgende:

$ 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

Ønsker du yderligere information om en bestemt pakke, kan du bruge:

$ 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 installerbare versioner af en bestemt pakke (afhængig af din sources.list) kan vises med:

$ 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

En komplet beskrivelse af APT-Systemet kan findes i APT-HOWTO

En fuldstændig beskrivelse af APT-Systemet kan findes ved APT-HOWTO

Page last revised 31/12/2014 1540 UTC