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 are contained in a directory or folder named:
/etc/apt/sources.list.d/

I denne findes to filer med navnene:
/etc/apt/sources.list.d/debian.list and
/etc/apt/sources.list.d/sidux.list

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

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

Alle sidux ISO'er har allerede de følgende sources som standard:

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

Yderligere information om non-free behov kan findes i vores altid opdaterede sidux.list and debian.list Fra og med 28/02/2008 0800 hrs UTC er de:

# See sources.list(5) for more information, especially
# Remember that you can only use http, ftp or file URIs
# CDROMs are managed through the apt-cdrom tool.
# The /etc/apt/sources.list.d/ directory provides a way to add sources.list
# entries in separate files that end with sources.list file.

# 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

# sidux
# Free University Berlin/ spline (Student Project LInux NEtwork), Germany
deb ftp://ftp.spline.de/pub/sidux/debian/ sid main contrib non-free fix.main fix.contrib fix.non-free
#deb-src ftp://ftp.spline.de/pub/sidux/debian/ sid main contrib non-free fix.main fix.contrib fix.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.

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 sidux installation):

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

Installering af nye pakker

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

Følgende kommando vil afinstallere pakken 'example', vær dog opmærksom på at eventuelle dependencies ikke vil blive afinstalleret sammen med den, men det kommer vi tilbage til under deb-orphan:

# apt-get remove example
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 remove --purge':

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

Her var det ikke kun filerne i /etc/gaim der blev fjernet, men alle konfigurationsfiler blev også slettet. Det er værd lige at bemærke her, at eventuelle filer, der er skabt af programmet efter dets installation (altså ikke under selve installationen), ikke vil blive slettet med denne kommando.

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
fonts-ttf-west-european/unstable upgradeable from 1.3-9 to 1.3-1-1
fonts-ttf-decoratives/unstable upgradeable from 1.3-1 to 1.3-1-1
sysv-rc/unstable upgradeable from 2.86.ds1-3 to 2.86.ds1-4
libpam0g/unstable upgradeable from 0.79-1 to 0.79-3
unionfs-utils/unstable upgradeable from 1.0.14+cvs2005092318w-M1 to 1.0.14+cvs2005092908w-M1libpam-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
fonts-ttf-west-european/unstable upgradeable from 1.3-9 to 1.3-1-1
fonts-ttf-decoratives/unstable upgradeable from 1.3-1 to 1.3-1-1
sysv-rc/unstable upgradeable from 2.86.ds1-3 to 2.86.ds1-4
libpam0g/unstable upgradeable from 0.79-1 to 0.79-3
unionfs-utils/unstable upgradeable from 1.0.14+cvs2005092318w-M1 to 1.0.14+cvs2005092908w-M1

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

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

I det følgende bruger vi kmahjongg som eksempel:

  1. tillad/afkommenter testing sources i/etc/apt/sources.list 
    (slet #) så der står
    deb http://ftp.nl.debian.org/debian/ testing main contrib non-free
  2. apt-get update
  3. apt-get install -t testing kmahjongg
  4. Sæt så den nyligt installerede pakke på hold med:
    echo kmahjongg hold|dpkg --set-selections
  5. kommenter igen testing sources i /etc/apt/sources.list 
  6. 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

System opgradering - dist-upgrade

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

Kun downloade pakker

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

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
  gnucash-common initscripts isdnutils-base libaprutil1
  libcapi20-3 libdvdread3 libfuse2 libmagic1 libvlc0
  linux-sound-base locales mount mozilla-plugin-vlc
  python-glade2 python-gtk2 siduxcc siduxcc-common strace
  sysv-rc sysvinit sysvinit-utils tzdata util-linux vlc
  vlc-nox
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 will download the upgraded packages without touching the installed system)

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:

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å sidux hjemmesiden. Advarslerne er der af gode grunde, og er nødvendige fordi Debian sid/unstable bliver opdateret på en daglig basis.
Log ud KDE. 
Gå til tekst-mode ved at taste Ctrl+Alt+F1
log på som root, og skriv så init 3
apt-get update 
apt-get dist-upgrade
kør install-binary-gfx script hvis xorg blev opdateret og du har et tilsvarende grafikkort, ellers
init 5 && exit
UDFØR ALDRIG DIST-UPGRADE [eller UPGRADE] med adept, aptitude eller synaptic Read 'Upgrade of an Installed System'

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 init 5 og/eller i X, og det at foretage en dist-upgrade i init 5 og/eller 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 "sidux" og "manual" gør du følgende:

$ apt-cache search sidux manual
sidux-manual-de - the official de sidux manual
sidux-manual-ro - the official ro sidux manual
sidux-manual-hr - the official hr sidux manual
sidux-manual-common - the official sidux manual - common files
sidux-manual-en - the official en sidux manual
sidux-manual-ru - the official ru sidux manual
sidux-manual-da - the official dk sidux manual
sidux-manual - the official sidux manual - all languages
sidux-manual-nl - the official nl sidux manual
sidux-manual-es - the official es sidux manual

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

$ apt-cache show sidux-manual-en
Package: sidux-manual-en
Priority: optional
Section: doc
Installed-Size: 1088
Maintainer: Kel Modderman <kel@otaku42.de>
Architecture: all
Source: sidux-manual
Version: 01.12.2007.06.03-1
Depends: sidux-manual-common
Filename: pool/main/s/sidux-manual/sidux-manual-en_01.12.2007.06.03-1_all.deb
Size: 391222
MD5sum: 60f2175c3c5709745a4b4256ccc3c49d
SHA1: e275a0b27628b6aa210a4ced48d3646b438e78b8
SHA256: 2792580c7a091521301064180a1d0d8901f0a4af407b90432b9f8d8b6b3603ca
Description: the official en sidux manual
 This manual is divided into common sections, for example, a subject pertaining
 to partitioning is found in Partitioning your Hard Drive, and topics regarding
 the Internet/WIFI are grouped in Internet and Networking. There are some
 topics that cannot be grouped or require stand-alone status.
 .
 As with any new documentation there will be errors/mistakes/typos, although we
 hope otherwise regarding errors and mistakes (typos we can live with) please
 forgive us.
 .
 As the body of work grows, more documentation will be added and we at sidux are
 sure that this will prove to be a very valuable resource for you and we thank
 you for being a part of sidux.

Alle installerbare versioner af en bestemt pakke (afhængig af din sources.list) kan vises med:

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

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

Søgning efter pakker med kio-apt

Ved at anvende en kio-slave kan Konqueror bruges som en ufarlig måde at anvende en GUI til at søge efter pakker i APT. Det er en GUI søgemaskine, uden mulighede for at installere eller opgradere pakker.

Det er et godt alternativ til andre pakkemanageres søgefunktion såsom adept, aptitude, synaptic og kpackage, og ved at anvende dette kan du ikke fristes til at installere eller opgradere i X med værktøjer der ikke er sikre at anvende under SID (eftersom muligheden ikke findes i kio-apt).

Du kan søge i pakke databasen både indenfor APT, og/ eller Debian 'package search' på Debians hjemmeside. Programmet giver en god opsummering med informationen fra apt-cache policy og apt-cache show.

Anvendelse:

  • apt:/search? expression:søger i pakkedatabasen efter 'expression'. Ligesom apt-cache search
  • apt:/show? package: viser detallieret information om 'package'. Ligesom apt-cache show. Viser også policy.
  • apt:/policy? package: viser policy for 'package'. Ligesom apt-cache policy.
  • apt:/list? package: viser filerne i 'package'.
kio-apt-1
kio-apt-2

Installation

sux
apt-get update && apt-get install kio-apt

Start så konqueror og skriv følgende i adressefeltet:

apt:/

og tast retur. Se beskrivelsen for alle muligheder, inklusiv hvordan du søger med compact form eller extended form.

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

Page last revised 02/10/2008 1105 UTC