8.2. Debian

En egentlig installationsvejledning i Debian er ikke her, se da http://debianguiden.dk/, vi ser dog nærmere på håndtering af DEB-pakker i Debian.

8.2.1. Apt - Debians pakkehåndtering

Hvis man bruger Debian, eller overvejer at bruge det, og ikke kender dens pakkesystem, så er denne lille guide en glimrende introduktion til emnet.

Apt står for "Advanced Package Tool" og er det værktøj i Debian som håndterer installerede software-pakker. Når man bruger Apt, eller pakker generelt, så henter man som regel et præ-oversat stykke software og installerer det via sit pakke-håndteringsprogram. Fordelen ved dette er så at uerfarne Linux-brugere kan installere en masse software uden at skulle igennem en - nogen gange - vanskelig proces med at oversætte programmet, hvilket sker ud fra kildeteksten. En af ulemperne ved kildetekst er også at når et program er blevet opgraderet så skal man til at gen-oversætte hele programmet igen, og det kan hurtigt blive en uoverskuelig opgave hvis man bare bruger XFree86 og nogle enkelte stykker software udover det. Men med f.eks. Apt kan dette gøres rigtig nemt og hurtigt.

Med Apt kan man installere/opdatere/fjerne pakker med et snuptag, fordi man ikke skal bruge selve pakken, men blot navnet på pakken som input. Så sørger Apt selv for at hente pakken, om så det er fra CD eller en http-server. Men for at få dette til at virke rigtigt bruger Apt en simpel konfigurerings-fil kaldet sources.list og denne fil ligger som standard i kataloget /etc/apt. I denne fil er der specificeret hvor Apt skal få pakkerne fra. Som standard installerer man fra sin cd-rom-enhed, men dette kan nemt ændres hvis man kører følgende kommando i konsollen eller i en xterm/wterm/etc. som root:

[root@hven root]# apt-setup

Så skulle der gerne komme en menu hvori man kan vælge hvordan man vil hente sine pakker. Her vælger man så f.eks.: http

Så spørger den om man vil bruge "Non-free software" -- Det vil jeg lade op til brugeren selv at bestemme. Som standard i Debian er dette "off", fordi det ikke følger ånden i GPL-licensen. Men man har her muligheden for at sætte det til "on", hvis der er noget software som man gerne vil have. Under "Non-free software" findes bl.a. programpakken, der indeholder mail-klienten PINE og editoren PICO.

Så spørger den om at bruge "Contrib software" -- Dette valg skal man nok basere på det valg man lavede ovenfor.

Resten af spørgsmålene skulle gerne give sig selv. Og når man har svaret på dem begynder den at hente en "package-list", som Apt skal bruge fremover når man vil installere pakker.

Nu er Apt søsat til at hente pakkerne fra internettet, så nu vil jeg introducere det program som man vil bruge for at håndtere pakkerne: apt-get.

Apt-get fungerer ved at man sætter første parameter efter hvad man gerne vil have gjort med pakken, f.eks. hvis man vil installere noget:

[root@hven root]# apt-get install pakkenavn

Læg her mærke til at jeg skriver "pakkenavn" og ikke "pakkenavn.deb" - Det gør jeg fordi pakkesystemet er bygget sådan op at man kun skal bruge pakkens navn.

Når jeg udfører denne kommando, så søger den i den underliggende "Package List" efter en pakke kaldet "pakke". Derudover søger den også i "Dependency List", og hvis den pakke man vil installere kræver en anden pakke så vil Apt også hente den. Nu vil Apt så begynde at hente pakken fra internettet og når det er gjort vil den installere og derefter opsætte pakken.

Hvis man vil fjerne/afinstallere en pakke fra systemet skriver man så:

[root@hven root]# apt-get remove pakkenavn

Her vil Apt afinstallere "pakkenavn" fra systemet.

Alt dette er jo meget godt, men man kan også lave mere avancerede ting, f.eks. kan man opgradere alle pakker på sit system, ved først at skrive:

[root@hven root]# apt-get update

Dette vil opdatere "Package Lists" og "Dependency Lists", så man vil hente de nyeste pakker fra internettet.

Herefter kører man:

[root@hven root]# apt-get upgrade

Denne kommando vil sammenligne "Package List" med de installerede pakker og så opdatere de pakker på systemet, som er nyere i "Package List". Denne kommando er utrolig fiks til at opdatere alle installerede pakker med. Udover 'apt-get upgrade' findes der også: 'apt-get dist-upgrade' og som navnet antyder opgraderer den distributionen. Forskellen mellem 'upgrade' og 'dist-upgrade' er at 'dist-upgrade' vil prøve at opdatere "Dependency List" med nye versioner af pakkerne.

Når Apt har hentet en pakke bliver den lagt i /var/cache/apt/archives og der bliver den faktisk liggende, også efter at pakken er installeret. For at slette pakkerne man har liggende skriver man:

[root@hven root]# apt-get clean

Dette var en kort indledning til 'apt-get' - Men tro ikke at de funktioner jeg har nævnt her er det eneste den kan. Den kan faktisk en masse andet, f.eks. hente kildeteksten til et program for derefter at kompilere det. Alle disse smarte features kan man finde i Man-siden til apt-get(8).

Nogle gange når man skal installere en pakke kan det være svært at gennemskue hvad pakken hedder i Apt fordi der kan være versions-numre og lignende i navnet. I sådanne situationer hvor man ønsker at finde det præcise navn på en pakke kan man bruge programmet apt-cache. Hvis man f.eks. gerne vil vide hvad pakkenavnet for IRC-klienten EPIC4 hedder, kan man skrive:

[root@hven root]# apt-cache search epic

Programmet vil så svare om der findes nogle pakker med det søgekriterium man har skrevet. I dette tilfælde vil den bl.a. komme med følgende linje:

epic4 - epic irc client, version 4

Fra denne oplysning kan jeg se at pakken jeg er interesseret i, hedder "epic4", og for at lette brugen udskriver den også en lille beskrivelse af pakken. Hvis man så ønsker at installere den kan man bare fodre apt-get med pakkens præcise navn og den vil så begynde at hente og installere pakken.

Dette var en lettere kort introduktion til det efterhånden ret geniale værktøj Apt, som gør brugen af Debian meget god og nem at vedligeholde. Hvis man vil kompilere alle sine programmer selv, så er Debian nok ikke distribution for én. Hvis man vil have mere info omkring de forskellige parametre, som man kan smide på programmerne kan Man-siderne godt anbefales: apt-cache(8), apt-get(8), sources.list(5)

apt-get installere kun de absolut nødvendige ekstra pakker for at installere den pakker man beder den om. Ud over det absolut nødvendige har Debian to yderligere niveauer af afhængigheder: "Reccommends" og "Suggests". De første er ting det anbefales at man også installere og det andet er andre pakker som er nyttige sammen med pakken. Disse to afhængigheder kan ses med apt-cache show pakkenavn.

Som en slutreplik kan nævnes at hvis man editerer /etc/apt/sources.list så kan man opsætte forskellige ting i denne fil, bl.a. om man vil have stable-, unstable- eller testingpakker installeret. I denne fil kan man også indsætte flere entries til Apt, som man så kan bruge. Man skal blot huske at køre en apt-get update efter man har opdateret sources.list. Se mere om dette i næste afsnit.

8.2.2. Udviklingsversioner og uofficielle pakker

Debian er ikke særlig hurtig til at udgive nye stabile udgaver, så derfor ønsker mange at bruge dele af en af udviklingsudgaverne af Debian for at få nyere versioner af nogle programmer.

Debian Unstable hedder ikke unstable for sjov, og der er en grund til at Debian Testing ikke officielt er erklæret for en stabil udgave endnu. Følger man vejledningerne i dette afsnit kommer man til at bruge programmer, der ikke er fuldstændigt testet og hvis ens maskine pludselig ikke virker er det bare synd! (Tag dette som en advarsel, I får ikke flere)

Når en udvikler har lavet en ny Debian-pakke ryger den direkte ind i Unstable. Man kan derfor let komme ud for at pakker i unstable har nogle ret kritiske fejl. Når en pakke har været i unstable i mindst 14 dage, ikke har nogle kritiske fejl og er oversat til alle platforme, så bliver pakken automatisk installeret i Testing. Der skulle derfor ikke være ret mange kritiske fejl i Debian Testing, men det er som sagt ikke fuldt ud gennemprøvet.

8.2.2.1. At lave en fuld opdatering

Hvis man ønsker at bruge en ren Testing eller Unstable kan det anbefales at begynde med at installere i Debian Stable og så opdatere over netværket.

Når man har installeret Debian har man en fil, der hedder /etc/apt/sources.list. Denne fil bestemmer hvor Debian henter pakker fra. Formodentligt, har den to linjer, der ligner følgende:

deb http://http.us.debian.org/debian stable main contrib non-free
deb http://non-us.debian.org/debian-non-US stable/non-US main contrib non-free

For fuldt ud at skifte til testing eller unstable, skal disse filer ændres, så de nævner henholdsvis testing eller unstable i stedet for stable. Det vil sige at linjerne skal se således ud:

deb http://http.us.debian.org/debian testing main contrib non-free
deb http://non-us.debian.org/debian-non-US testing/non-US main contrib non-free

Dernæst skal man opdatere sin pakkeliste og så er det bare at opgradere (til en ny distribution):

[root@hven root]# apt-get update
[root@hven root]# apt-get dist-upgrade

Fremover holder man sin maskine opdateret ved med jævne mellemrum at opdatere sin pakkeliste og opgradere (samme distribution):

[root@hven root]# apt-get update
[root@hven root]# apt-get upgrade

Kalder man apt-get upgrade med en -u option, altså apt-get -u upgrade fortæller den om alle de pakker den opgraderer.

En række pakker vil apt-get fortælle at den ikke vil opdatere ("The following packages have been kept back"). Dette betyder at pakkerne ikke kan opgraderes uden enten at installere flere pakker eller ved at fjerne pakker fra systemet. Disse pakker kan så opgraderes ved at skrive:

[root@hven root]# apt-get install <pakke>

8.2.2.2. At opdatere udelukkende enkelte pakker

Ofte er det kun enkelte pakker man virkelig har brug for at skulle have i en nyere version. Det kan derfor være smart kun at opdatere de pakker man har brug for at opdatere.

Først skal man fortælle apt at den skal hente pakkelisterne for både stable, testing og unstable (eller bare to af dem). Det gøres ved at skrive begge distributioner ind i /etc/apt/sources.list:

deb http://http.us.debian.org/debian stable main contrib non-free
deb http://http.us.debian.org/debian testing main contrib non-free
deb http://http.us.debian.org/debian unstable main contrib non-free
deb http://non-us.debian.org/debian-non-US stable/non-US main contrib non-free
deb http://non-us.debian.org/debian-non-US testing/non-US main contrib non-free
deb http://non-us.debian.org/debian-non-US unstable/non-US main contrib non-free

Dernæst skal pakkelisten opdateres:

[root@hven root]# apt-get update

Vi skal nu fortælle apt at selv om der findes nyere versioner af en pakke, skal den altid bruge pakken fra stable, med mindre den eksplicit får fortalt andet. Det gøres ved at lave en fil /etc/apt/preferences, der indeholder følgende:

Package: *
Pin: release a=stable
Pin-Priority: 600

Dermed ved apt at den skal give alle pakker, der kommer fra stable, en prioritet på 600. (standardprioriteten er 500). Når apt skal vælge hvilke pakker den skal installere (opgradere til) vælger den de pakker med højst prioritet (før den ser på versionsnumre).

Det er nu muligt at installere enkelte pakker direkte fra testing ved at skrive:

[root@hven root]# apt-get install slashem/testing

Dette installerer pakken slashem fra testing. Hvis pakken er afhængig af andre pakker, der ikke er i stable, skal disse angives eksplicit. Hvis man ønsker at opfylde alle afhængigheder ved at installere pakker fra testing kan man skrive følgende:

[root@hven root]# apt-get --target-release testing install slashem

Hvormed apt vil give prioriteten 990 til alle pakker i testing.

Hvis man altid vil følge pakken slashem fra testing, kan man skrive følgende i sin /etc/apt/preferences:

Package: slashem
Pin: release a=testing
Pin-Priority: 700

Package: *
Pin: release a=stable
Pin-Priority: 600

Så vil slashem fra testing have en højere prioritet en slashem fra stable (600) og slashem fra unstable (500).

Den fulde dokumentation af hvad man kan med /etc/apt/preferences findes i manualsiden apt_preferences(8)

8.2.2.3. Uofficielle pakker

Der findes også en del steder hvor man kan finde uofficielle pakker til Debian. Selvom Debian er et meget åben projekt kan der være mange gode grunde til dette. Der kan være tale om eksperimentielle pakker, specielt patchede pakker eller pakker som Debian ikke må distribuere.

Mange af disse pakker kan også hentes via apt-get hvis man indsætter de rette linjer i /etc/apt/sources.list. En lang liste over mulige steder kan findes på http://apt-get.org/

8.2.2.4. Lidt andre gode råd

Når man bruger udviklingsversionerne af Debian eller uofficielle pakker, så skal man passe ekstra godt på hvad apt-get tilbyder at gøre. apt-get upgrade vil aldrig installere nye pakker eller afinstalere pakker. apt-get dist-upgrade vil gøre meget for at opgradere så meget som overhovedet muligt, dette inkludere at fjerne pakker der er i konlikt med nye pakker. Ligeledes vil apt-get install gøre en del for at installere den pakke man ønsker og er man midt i en transitionsperiode kan det let betyde at der vil blive afinstaleret pakker.

Hvis man følger udviklingen af Debian kan det værer en god idé at installere pakken apt-listchanges. Denne pakke giver mulighed for at læse changelog-filerne for de pakker apt ønsker at opdatere. Dermed kan man kyllinge ud hvis der er sket for store ændringer i en pakke.

Og husk: Debian Unstable bliver udviklet aktivt. At opdatere centrale pakker som glibc eller perl kan let gøre dit system ubrugligt. Brug derfor kun Debian Testing og Debian Unstable på produktionsmaskiner, du ikke kan tåle at miste, når du er absolut sikker på at det vil virke.