Gentoo Logo

Gentoo-håndbogen til HPPA

Indhold:

  • Installation af Gentoo
    I denne del vil du lære at installere Gentoo på dit system.
    1. Om Gentoo Linux installation
      I denne del lærer du hvordan man installerer Gentoo på dit system.
    2. Valg af det rigtige installationsmedie
      Du kan installere Gentoo på mange måder. Dette kapitel fortæller hvordan man installerer Gentoo ved brug af den minimale LiveCD, selvom den universelle er muligt.
    3. Opsætning af dit netværk
      Hvis du vil installere Gentoo ved brug af Internet, vil du få brug for at sætte netværk op.
    4. Forberedelse af harddiske
      For at kunne installere Gentoo, skal du lave de nødvendige partitioner. Dette kapitel beskriver, hvordan man partitionerer en harddisk til fremtidig brug.
    5. Installation af Gentoo installationsfiler
      Gentoos installationsfiler virker igennem såkaldte stage-filer. I dette kapitel beskriver vi, hvordan du udpakker en stage-fil og sætter Portage op.
    6. Installation af Gentoo basissystem
      Uafhængigt af hvilken "stage" du vælger, vil det eventuelt resultere i, at du vil have et basalt Gentoo system til rådighed. Dette kapitel beskriver hvordan man når til det stadie.
    7. Opsætning af kernen
      Linux kernen er grundlaget for enhver distribution. Dette kapitel forklarer hvordan du sætter din kerne op.
    8. Opsætning af dit system
      Du kommer til at redigere nogle vigtige opsætningsfiler. I dette kapitel vil du modtage en oversigt over disse filer og en forklaring på hvordan man fortsætter.
    9. Installation af nødvendige systemværktøjer
      Som forklaret før, handler Gentoo om valg. I dette kapitel vil vi hjælpe dig med at vælge og at installere nogle vigtige værktøjer.
    10. Opsætning af boot-loader
      I dette kapitel vil vi beskrive PALO boot-loaderen og trinvis hjælpe dig igennem processen for at sætte denne boot-loader op til dine behov.
    11. Afslutning af din Gentoo installation
      Du er snart færdig. Vi vil lave én (eller flere) brugere til dit system.
    12. Hvad kan jeg gøre efter dette?
      Nu har du et Gentoo system, men hvad skal du nu gøre?
  • Arbejde med Gentoo
    Lær hvordan du skal arbejde med Gentoo: installation af software, ændringer af variabler, ændringer af Portages adfærd osv.
    1. En Introduktion til Portage
      Dette kapitel forklarer de "enkle" skridt en bruger i hvertfald skal kende til for at vedligeholde software på hans system.
    2. USE-flag
      USE-flag er et meget vigtigt aspekt af Gentoo. I dette kapitel lærer du at arbejde med USE-flag og forstå hvordan USE-flag arbejder sammen med dit system.
    3. Portages egenskaber
      Opdag de egenskaber Portage har, såsom understøttelse for distribueret kompilering, ccache og mere.
    4. Startscripts
      Gentoo bruger et specielt startscript-format, som, inklusive andre egenskaber, tillader afhængighedsdrevet beslutninger og virtuelle startscripter. Dette kapitel forklarer alle disse aspekter og forklarer hvordan man arbejder med disse scripter.
    5. Miljø-variabler
      Med Gentoo kan du med lethed håndtere miljø-variabler til dit system. Dette kapitel forklarer hvordan du kan gøre dette, og også en forklaring af de mest brugte variabler.
  • At arbejde med Portage
    "At arbejde med Portage" giver en dybdegående dækning af Portage, Gentoos software administrerings værktøj.
    1. Filer og biblioteker
      Når du vil kende Portage dybdegående, så får du brug for at vide hvor den gemmer sine filer og data.
    2. Opsætning gennem variabler
      Portage er fuldstændig konfigurerbar gennem forskellige variable som du kan definere i opsætningsfiler eller som miljøvariable.
    3. At blande software grene
      Gentoo tilbyder adskilte software grene, afhængige af stabilitet og understøttelse for arkitekturer. "At blande software grene" informerer dig om hvordan disse grene kan sættes op og hvordan du kan selv kan underkende disse adskillelser.
    4. Flere Portage værktøjer
      Portage kommer med nogle ekstra værktøjer der måske kan gøre din oplevelse af Gentoo endnu bedre. Læs videre for at opdage hvordan du kan bruge dispatch-conf og andre værktøjer.
    5. Afvigelse fra det officielle træ
      "Afvigelse fra det officielle træ" giver dig nogle tips og tricks til hvordan du kan bruge dit eget Portage træ, hvordan du bare synkroniserer de kategorier du ønsker, presse pakker ind (inject) og mere.
    6. Ebuild Applikationen
      I "Ebuild Applikationen" bliver du informeret om hvilke skridt Portage tager imens den installere software og hvordan du kan gøre dette selv vha. ebuild applikationen.

A. Installation af Gentoo

1. Om Gentoo Linux installation

1.a. Introduktion

Velkommen

Til at starte med, velkommen til Gentoo. Du går nu ind i en verden af valg og ydelse. Gentoo handler om valg. Når du installerer Gentoo vil du se dette flere gange -- du kan vælge hvor meget du selv vil kompilere, hvordan du vil installer Gentoo, hvilken systemlogger du vil have, osv.

Gentoo er en hurtig, moderne metadistibution med et rent og fleksibelt design. Gentoo er bygget op omkring frit software og skjuler ikke hvad der ligger under motorhjelmen for sine brugere. Portage, pakke-vedligeholdelsessystemet, er skrevet i Python, hvilket betyder at du nemt kan se og ændre i kildekoden. Gentoos pakkesystem benytter kildekoder (selvom der også er understøttelse af præ-kompilerede pakker) og konfigurering af Gentoo sker gennem normale tekstfiler. Med andre ord, åbent overalt.

Det er meget vigtigt, at du forstår at valg er hvad der får Gentoo til at køre. Vi vil ikke tvinge dig til noget du ikke kan lide. Hvis du føler vi gør det, så send en fejlrapport

Hvordan er installationen struktureret?

Gentoo installationen kan ses som en 10-trins procedure, svarende til kapitel 2 - 11. Hvert trin vil resultere i en ny tilstand.

  • Efter trin 1, er du i et brugbart miljø, klar til at installere Gentoo.
  • Efter trin 2 er din internetforbindelse klar til at installere Gentoo.
  • Efter trin 3 er dine harddisk(e) klar til at installere Gentoo på.
  • Efter trin 4 er dit installationsmiljø klargjort og du er klar til at chroot ind i det nye miljø.
  • Efter trin 5 er kerne-pakkerne, hvilket er de samme på alle Gentoo installationer, installeret.
  • Efter trin 6 er din Linux kerne kompileret.
  • Efter trin 7 har du skrevet de fleste af dit Gentoo systems opsætningsfiler.
  • Efter trin 8 er nødvendige systemværktøjer (som du kan vælge fra en pæn liste) installeret.
  • Efter trin 9 er din valgte bootloader installeret og opsat, og du er logget ind i din helt nye Gentoo installation.
  • Efter trin 10 er dit Gentoo Linux miljø klart til at blive udforsket.

Når du er stillet overfor et valg, vil vi gøre vores bedste for at forklare hvilke fordele og ulemper, der er. Vi vil så fortsætte med standardvalget, mærket med "Standard:" i titlen. De andre muligheder er mærket med "Alternativt:". Tro ikke at standard er hvad vi anbefaler. Det er derimod det vi tror at de fleste vil bruge.

Nogle gange kan du følge et valgfrit trin. Sådanne trin er mærket med "Valgfrit:" og behøves ikke for at få installeret Gentoo. Imidlertidig vil nogle valgfrie trin afhænge af tidligere beslutninger du har taget. Vi vil informere dig når dette sker, både når du laver valget og lige før det valgfrie trin er beskrevet.

Hvad er mine valgmuligheder?

Du kan installere Gentoo på mange forskellige metoder. Du kan hente og installere fra en af vores installationsCDer, fra en eksisterende distribution, fra en startbar CD (som f.eks. Knoppix), fra en netopstartet miljø, fra en redningsdiskette osv.

Dette dokument dækker installationen ved brug af Gentoo installationsCDer eller i enkelte tilfælde, et netopstartet miljø. Denne installation formoder at du vil have den sidste nye version af alle pakker. Hvis du vil udføre en netværksfri installation, bør du læse Gentoo 2005.1 Handbook (engelsk), som indeholder installationsinstruktioner til et netværksfrit miljø.

Noter også at hvis du planlægger at bruge GRP (Gentoo Reference Platform, en samling af præ-byggede pakker, som er ment til brug direkte efter en Gentoo-installation), skal du følge instruktionerne i Gentoo 2005.1 Handbooks (engelsk).

For at få hjælp til andre installationsmetoder, læs vores Alternative installationsinstruktioner. Vi har også et Gentoo installation tips og tricks(engelsk) dokument, som også kan være interessant at læse. Hvis du føler at de nuværende installationsinstruktioner er for meget, kan du bruge vores Hurtige installationsvejledning klar fra vores Dokumentationsressourcer, hvis velogmærke din arkitektur har sådanne et dokument.

Du har også mange muligheder: du kan kompilere hele dit system fra bunden af eller installere præ-byggede pakker, for at få dit Gentoo-miljø op at køre på ingen tid. Og selvfølgelig får du indledende løsninger, hvor du ikke behøver at kompilere det hele, men kan starte fra et semi-klart system.

Problemer?

Hvis du finder problemer i installationen (eller i installationsdokumentationen) så besøg vores fejlopfølgningssystem og se om fejlen er kendt. Hvis dette ikke er tilfældet så opret venligst en fejlrapport, så vi kan se på det. Vær ikke bange for de udviklere, der bliver tilknyttet (din) fejl -- de spiser normalt ikke folk.

Noter venligst at, selv dokumentet du nu læser er arkitektur-specifik, indeholder den også referencer til andre arkitekturer. Dette er sket, fordi at store dele af Gentoo-håndbogen bruger kildekoder, som er fælles for alle arkitekturer (for at undgå overlapninger af opgaver og udtømning af udviklingsressourcer). Vi vil prøve at holde det til et minimum for at undgå forvirring.

Hvis du er usikker på om et problem er en brugerfejl (en fejl du har lavet på trods af at du har læst dokumentationen) eller et softwareproblem (en fejl vi har lavet trods vi har testet installationen/dokumentationen) er du velkommen til at gå ind på #gentoo på irc.freenode.net. Du er selvfølgelig også velkommen selvom du ikke har problemer.

Hvis du har et spørgsmål om Gentoo, så tjek vores ofte stillede spørgsmål, som er tilgængelig via Gentoo dokumentationen. Du kan også se de OSS på vores forums. Hvis du ikke kan finde svar der så spørg på #gentoo, vores IRC-kanal på irc.freenode.net. Ja, mange af os er faktisk nørder, der sidder på IRC :-)

2. Valg af det rigtige installationsmedie

2.a. Hardwarekrav

Introduktion

Før vi starter, viser vi en liste over de hardwarekrav, som du skal opfylde for at installere Gentoo på din computer.

Hardwarekrav

En liste af understøttet hardware kan blive fundet på PA Teams hjemmeside. Du kan finde flere informationer omkring din box på Parisc-Linux Hardware Database

Hukommelse 64 MB
Diskplads 1,5 GB (udover swapplads)
Swapplads Mindst 256 MB

2.b. Gentoo Linux Installationsmetoderne

Introduktion

Gentoo Linux kan blive installeret ved brug af tre stage-tarball filer. En stage-fil er en tarbal (komprimeret arkiv), som indeholder et minimalt miljø.

  • En stage1-fil indeholder ikke andet end en kompiler, Portage (Gentoos softwarehåndteringssystem) et par pakker, som kompileren eller Portage afhænger af.
  • En stage2-fil indeholder en såkaldt bootstrappet system, et minimalt miljø, fra en kan starte med at bygge alle de andre nødvendige programmer, som færdiggører Gentoo-miljøet.
  • En stage3-fil indeholder en præ-bygget minimalt system, som er næsten helt klart. Den mangler kun nogle få programmer, som du, Gentoo-brugeren, behøver at vælge imellem og installere dem.

For at hjælpe dig med at vælge den stage-fil, som du ønsker at bruge, har vi nedskrevet de typiske fordele og ulemper for hver fil.

Stage1-metoden

En stage1 er brugt, når du vil bootstrappe og bygge hele systemet fra bunden af.

Ved at starte fra stage1, tillader du dig fuld kontrol over optimeringsindstillingerne og optimal bygge-tidsfunktionalitet, som fra starten af, er aktiveret på dit system. Dette gør stage1-installationen god til power-brugere, som ved hvad de gør. Det er også en udemærket installationsmetode for dem, som har lyst til at lære mere om den indre funktionalitet af Gentoo Linux.

Stage1 Fordele og ulemper
+ Tillader dig at have fuld kontrol over optimeringsindstillingerne og optimal bygge-tidsfunktionalitet, som er fra starten af, aktiveret på dit system
+ Brugbart for power-brugere, som ved hvad de gør
+ Tillader dig at lære mere om den indre funktionalitet af Gentoo
- Installationen er lang tid om at afslutte
- Hvis du ikke har tænkt dig at fin-indstille, er det sikkert spild af tid
- Kræver en fungerende Internet-forbindelse igennem installationen

Stage2-metoden

En Stage2 er brugt til at bygge hele systemet fra en "semi-samlet" bootstrappet status.

Stage2 installationer tillader dig at springe over bootstrap-processen; ved at gøre dette er fint, hvis du er tilfreds med de optimeringsindstillinger, som vi har valgt til din specifikke stage2-tarball.

Stage2 Fordele og ulemper
+ Du behøver ikke at bruge bootstrap
+ Hurtigere end at starte fra stage1
+ Du kan stadigvæk fin-indstille
- Du kan ikke indstille så meget som i stage1
- Det er stadigvæk ikke den hurtigste metode at installere Gentoo
- Du bliver nødt til at acceptere de optimeringer vi har lavet til bootstrap
- Kræver en fungerende Internet-forbindelse igennem installationen

Stage3-metoden

En stage3 installation indeholder et Gentoo Linux basissystem, som er bygget for dig. Du behøver kun at bygge få pakker, som vi ikke kan vælge for dig på forhånd.

At vælge stage3, giver dig den hurtigste installation af Gentoo Linux, men det betyder også at dit basissystem vil have de optimeringsindstillinger, som vi har valgt for dig (og lad os være ærlig, det er gode indstillinger, som vi med omhug har valgt til at forøge præstationerne, samt vedligeholde stabilitet). Stage3 kræves også, hvis du vil installere Gentoo ved brug af præbyggede pakker eller uden en netværksforbindelse.

Stage3 Fordele og ulemper
+ Hurtigste metode for at få et Gentoo basissystem
- Du kan ikke fin-indstille dit system - det er allerede bygget

Du vil måske være interesseret i at høre, at hvis du vælger forskellige optimeringsindstillinger efter at have installeret Gentoo, vil du have mulighed for at gensamle hele systemet med de ny optimeringsindstillinger.

2.c. Gentoo LiveCDene

Introduktion

Gentoo LiveCDene er en startbare CD, som indeholder et selv-eksisterende Gentoo-miljø. De tillader dig at starte Linux fra CDen. Igennem opstartsprocessen vil dit hardware blive fundet og de passende drivere bliver hentet. De er vedligeholdt af Gentoo udviklere.

Alle LiveCDene tillader dig at starte, opsætte netværk, forberede dine partitioner samt starte med at installere Gentoo fra Internet. Vi leverer i øjeblikket to LiveCDer, som er lige gode til at installere Gentoo fra, så længe du planlægger at udføre en Internet-baseret installation, ved brug af de sidste nye pakker.

De to LiveCDer, som vi leverer på nuværende tidspunkt er:

  • Gentoos minimale LiveCD, en lille, ingen-pjat, startbar CD, med det ene formål at starte systemet, forberede netværk og fortsætte med installationen af Gentoo.
  • Gentoos universelle LiveCD, en startbar CD med de samme muligheder som den minimale LiveCD. Udover det, indeholder den en stage1- og flere forskellige stage3-tarballs (optimeret til individuelle underarkitekturer).

Hvis du har fundet ud af hvilken LiveCD du ønsker, har vi nedskrevet de generelle fordele og ulemper for hver LiveCD.

Gentoos minimale LiveCD

Den minimale LiveCD er kaldet install-hppa-minimal-2004.3-r1.iso og optager kun 65 MB diskplads. Du kan bruge denne LiveCD til at installere Gentoo, men, som altid, kun med en fungerende Internet-forbindelse.

Minimale LiveCD Fordele og ulemper
+ Mindste download
+ Du kan lave en stage1, stage2 eller stage3 ved at hente stage-tarballen fra Internet
- Indeholder ingen stages, ingen Portage-snapshot, ingen præ-byggede pakker og derfor ikke brugbar til netværksfrie installationer.

Gentoos universelle LiveCD

Den universelle LiveCD er kaldet install-hppa-universal-2004.3-r1.iso og optager hele disken på 650 MB. Du kan bruge denne LiveCD til at installere Gentoo, og du kan endda bruge den til at installere Gentoo uden et fungerende netværk, f.eks. når du vil bringe Gentoo til en anden PC end den du installerer på nu :)

Den universelle LiveCD Fordele og ulemper
+ Indeholder alt hvad du får brug for. Du kan endda installere uden en netværksforbindelse.
- Kæmpe download

Andre CDer

Du vil måske finde en såkaldt Package CD på en af vores filspejle. Denne CD er ikke en LiveCD, men indeholder yderligere ressourcer, som kan udnyttes igennem en netværksfri installation. Den indeholder præ-bygget pakker (de såkaldte GRP-sæt), som tillader dig med lethed og hurtigt installere yderligere pakker (som f.eks. OpenOffice.org, KDE, GNOME osv.) med det samme efter en netværksfri Gentoo installation.

2.d. Hent, brænd og start en Gentoo LiveCD

At Hente og brænde LiveCDerne

Du har valgt at bruge en Gentoo LiveCD. Vi vil først starte med at hente og brænde den valgte LiveCD. Vi har forinden diskuteret de mulige LiveCDer, men hvor kan du finde dem?

Du kan hente en af LiveCDerne (og, hvis du ønsker, også en pakke-cd) fra en af vores filspejle. LiveCDerne er placeret i experimental/hppa/2004.3/livecd-folderen.

Indenfra dette bibliotek kan du finde de såkaldte ISO-filer. Disse er fulde CD-billedfiler, som du kan skrive til en CD-R.

Hvis du er bekymret om din downloaded fil er korrupt eller ikke, så kan du tjekke dens MD5 checksum og sammenligne den med den MD5 checksum vi stiller til rådighed (såsom install-x86-minimal-2004.3.iso.md5). Du kan tjekke MD5 checksummen med md5sum værktøjet under Linux/Unix eller md5sum til Windows.

En anden måde at tjekke ægtheden af den hentede fil, er ved at bruge GnuPG til verificere den krypterede signatur (underskrift), som vi leverer (filen som ender med .asc). Hent signaturfilen og modtag den offentlige nøgle:

Kode oversigt 4.1: Modtagelse af den offentlige nøgle

$ gpg --keyserver pgp.mit.edu - -recv-keys 17072058

Verficer nu signaturen:

Kode oversigt 4.2: Verificering af den krypterede signatur

$ gpg - -verify <signature file> <downloaded iso>

For at brænde de hentede ISO(er), skal du vælge 'raw-burning'. Hvordan du gør dette, er meget afhængigt at programmet. Vi vil diskutere cdrecord og K3B her; der kan findes mere information i vores Gentoo FAQ.

  • Med cdrecord, kan du bare skrive cdrecord dev=/dev/hdc <hentet ISO-fil> (udskift /dev/hdc med dit CD-RW-drevs enhedssti).
  • Med K3B, vælg Tools > CD > Burn Image. Derefter kan du finde din ISO-fil indefra 'Image to Burn'-området. Til sidst klik på Start.

Start af LiveCDen

Bemærk: Hvis du har problemer med at opstarte LiveCDen eller andre medier, så læs venligst PA-RISC Linux Boot HOWTO.

Start dit HPPA-system. I opstartsprocessen vil du se en besked, som ser ud som følgende:

Kode oversigt 4.3: HPPA-opstartsbesked

Searching for Potential Boot Devices.
To terminate search, press and hold the ESCAPE key.

Når denne besked kommer frem, tryk og hold ESC-tasten nede, indtil at en valgmenu dukker op. Dette vil tage et stykke tid, så vær tålmådig. Som standard, burde du komme til BOOT_ADMIN-konsolen. Hvis du modtager en valgmenu, vælg Enter Boot Administration mode for at komme ind til BOOT_ADMIN-konsolen. Du burde nu have en '>' prompt.

Indsæt Gentoo LiveCDen i CDROM-drevet. Hvis du ikke kender SCSI ID'en til dit CDROM-drev, vil din PA-RISC-station søge efter den, når du udfører search-kommandoen.

Kode oversigt 4.4: Søge efter SCSI ID

> search
Searching for Devices with Bootable Media.
To terminate search, please press and hold the ESCAPE key.

Din PA-RISC-station vil nu vise alle mulige opstartsmedier. Dette er et eksempel, som resultat af denne kommando:

Kode oversigt 4.5: Mulige opstartsmedier

Device Selection      Device Path             Device Type and Utilities
---------------------------------------------------------------------------

P0                    scsi.5.0                TOSHIBA CD-ROM XM-3301TA
                                                  IPL
P1                    scsi.2.0                COMPAQ ST32550N
                                                  IPL
P2                    lan.0010a7-06d1b6.3.6   server
                                                  IPL

For at starte fra en CDROM, vil du få brug for den tilhørende enhedssti (Device Path). F.eks. hvis vi vil opstarte fra TOSHIBA CDROM-drevet i ovenstående eksempel, vil vil få brug for at taste følgende kommando:

Kode oversigt 4.6: Start fra en CDROM

> boot scsi.5.0 ipl

Trying scsi.5.0

ipl-nøgleordet (Initial Program Loader) fortæller palo (PA-RISC boot Loader) til at gå i interaktiv tilstand. Dette vil tillade dig at ændre, f.eks. kerne-opstartsparametrene.

Når opstarten er færdig, vil palo starte i interaktiv tilstand:

Kode oversigt 4.7: PALO Interaktiv tilstand

Boot path initialized.
Attempting to load IPL.


Hard booted.
palo ipl 1.2 root@b180l.da-kot Tue Apr  8 12:43:07 CEST 2003

Boot image contains:
    0/vmlinux32 4028015 bytes @ 0x1520000
    0/ramdisk 834748 bytes @ 0xf800
Current command line:
0/vmlinux initrd=initrd.gz TERM=linux console=tty root=/dev/ram0 init=/linuxrc
  0: 0/vmlinux
  1: initrd=initrd.gz
  2: TERM=linux
  3: console=tty
  4: root=/dev/ram0
  5: init=/linuxrc

Edit which field?
(or 'b' to boot with this command line)? 

Disse parametre er brugbare til de fleste situationer.

Hvis du får brug for ekstra egenskaber, så skal du tilføje de passende nøgleord til slutningen af kommandolinien. For at tilføje et nøgleord, rediger det sidste felt, tilføj et mellemrum og tast dit nøgleord. Det eneste indbyggede nøgleord, på nuværende tidspunkt, er cdcache, som fortæller LiveCDen til at hente sig selv ind i RAM, som tillader dig at unmounte CDen.

Kode oversigt 4.8: Tilføjelse af cdcache som opstartsindstilling

(or 'b' to boot with this command line)? 5
init=/linuxrc cdcache

Da du nu har leget med dine kerne-opstartsparametre, start den.

Kode oversigt 4.9: Start af kerne

(or 'b' to boot with this command line)? b

Du skulle nu have en root ("#") prompt på den nuværende konsole, og du kan også skifte til andre konsoler ved at bruge Alt-F2, Alt-F3 og Alt-F4. Gå tilbage til din oprindelige konsol, ved at trykke Alt-F1.

Fortsæt nu med Ekstra Hardwareopsætning.

Valgfrit: Brugerkonti

Hvis du planlægger at give adgang til andre folk til dit installationsmiljø eller vil chatte ved brug af irssi uden root-privilegier (af sikkerhedsårsager), bliver du nødt til at lave de nødvendige brugerkonti og ændre root kodeordet.

For at ændre root kodeordet, brug passwd-værktøjet:

Kode oversigt 4.10: Ændring af root kodeordet

# passwd
Password: (Skriv dit nye kodeord)
Re-enter password: (Skriv dit nye kodeord igen)

For at lave en brugerkonto, skal vi først skrive hans brugernavn, fulgt af et kodeord. Vi bruger useradd og passwd til disse opgaver. I det næste eksempel, laver vi en bruger, som bliver kaldet "jens".

Kode oversigt 4.11: Skabelse af en brugerkonto

# useradd -m -G users jens
# passwd jens
New password: (Skriv jens' kodeord)
Re-enter password: (skriv jens' kodeord igen)

Du kan ændre din brugers id fra root til den nyoprettede bruger ved brug af su:

Kode oversigt 4.12: Ændring af bruger id

# su - jens

Valgfrit: At kunne se dokumentationen imens du installerer

Hvis du ønsker at se Gentoo-håndbogen (enten fra CD eller online) igennem installationen, vær sikker på at du har oprettet en brugerkonto (se Valgfrit: brugerkonto). Så tryk Alt-F2 for at gå til en ny terminal og log ind.

Hvis du vil se vores dokumentation på CDen, kan du med det samme køre links2 og læse det:

Kode oversigt 4.13: Se dokumentationen på CDen

# links2 /mnt/cdrom/docs/handbook/html/index.html

Dog, det er anbefalet at du bruger online-versionen af Gentoo-håndbogen, da den er mere opdateret end den der ligger på CDen. Du kan se den ved også at bruge links2, men kun efter at have afsluttet Opsætning af netværk-kapitlet (ellers kan du ikke gå på Internet for at se dokumentet):

Kode oversigt 4.14: Se dokumentationen online

# links2 http://www.gentoo.org/doc/en/handbook/handbook-alpha.xml

Du kan gå tilbage til din originale terminal ved at trykke Alt-F1.

Valgfrit: Start af en SSH-daemon (baggrundsprocess)

Hvis du vil tillade andre bruger at få adgang til din computer, imens du installerer Gentoo (måske fordi at disse brugere vil hjælpe dig med at installere Gentoo, eller måske endda gøre det for dig), vil du blive nødt til at lave en brugerkonto til dem, og måske endda give dem dit root kodeord (gør det kun hvis du virkelig tror fuldt ud på denne bruger).

For at starte en SSH-daemon op, udfør følgende kommando:

Kode oversigt 4.15: Start af en SSH-daemon

# /etc/init.d/sshd start

For at være i stand til at bruge sshd, skal du først sætte dit netværk op. Fortsæt til næste kapitel som omhandler Opsætning af dit netværk.

3. Opsætning af dit netværk

3.a. Automatisk netværksfinding

Måske virker det bare?

Hvis dit system er sat på et Ethernet-netværk via en DHCP-server, er det højt sandsynligt at din netværksopsætning allerede er opsat automatisk for dig. Hvis dette er tilfældet, bør du have mulighed for at tage brug af de mange inkluderede netværksrelaterede kommandoer på installationsCDen, som f.eks. ssh, scp, ping, irssi, wget og links samt andre.

Hvis netværket er opsat for dig, vil /sbin/ifconfig-kommandoen vise en liste over netværksgrænseflader, som udover lo, f.eks. er eth0:

Kode oversigt 1.1: /sbin/ifconfig ved en fungerende netværksopsætning

# /sbin/ifconfig
(...)
eth0      Link encap:Ethernet  HWaddr 00:50:BA:8F:61:7A
          inet addr:192.168.0.2  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::50:ba8f:617a/10 Scope:Link
  	      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
  	      RX packets:1498792 errors:0 dropped:0 overruns:0 frame:0
  	      TX packets:1284980 errors:0 dropped:0 overruns:0 carrier:0
  	      collisions:1984 txqueuelen:100
  	      RX bytes:485691215 (463.1 Mb)  TX bytes:123951388 (118.2 Mb)
  	      Interrupt:11 Base address:0xe800

Valgfri: Opsætning af proxyer

Hvis du har adgang til Internet igennem en proxy, bliver du måske nødt til at opsætte oplysninger om proxy under installationen. Det er meget let at definere en proxy; du behøver kun at definere en variabel, der indeholder informationen om proxy-serveren.

I de fleste tilfælde kan du nøjes med at definere variablerne med serverens værtsnavn. Nedenfor er vist nogle eksempler hvor det antages at proxy'en er proxy.gentoo.org og porten er 8080.

Kode oversigt 1.2: Angivelse af proxy-servere

(Hvis proxy'en skal bruges til HTTP-trafik)
# export http_proxy="http://proxy.gentoo.org:8080"
(Hvis proxy'en skal bruges til FTP-trafik)
# export ftp_proxy="ftp://proxy.gentoo.org:8080"
(Hvis proxy'en skal bruges til RSYNC-trafik)
# export RSYNC_PROXY="proxy.gentoo.org:8080"

Hvis din proxy kræver et brugernavn og kodeord, skal du bruge den følgende syntaks for variablen.

Kode oversigt 1.3: Tilføjelse af brugernavn og kodeord til en proxy-variabel

http://username:password@proxy.gentoo.org:8080

Test netværket

Du kan prøve at pinge din internetudbyders DNS-server (der findes i /etc/resolv.conf) og en hjemmeside som du kender, hvis du vil være sikker på dine pakker når nettet, DNS navneopslag fungerer etc..

Kode oversigt 1.4: Yderligere test af netværket

# ping -c 3 www.yahoo.com

Hvis du kan bruge netværket, så spring resten af denne sektion over og fortsæt med Forberedelse af harddiske. Hvis ikke, læs videre.

3.b. Automatisk netværksopsætning

Hvis ikke netværket virker med det samme, har du på nogle installationsmedier mulighed for at bruge net-setup (til normale eller trådløse netværk) eller adsl-setup (til ADSL-brugere) eller pptp (til PPTP-brugere, kun på x86).

Hvis dit installationsmedie ikke indeholder nogen af disse værktøjer eller dit netværk fungerer ikke endnu, så fortsæt med Manuel netværksopsætning.

Standard: Brug af net-setup

Den simpleste måde at opsætte sit netværk på, hvis det ikke blev opsat automatisk, er at køre scriptet net-setup:

Kode oversigt 2.1: At køre af scriptet net-setup

# net-setup eth0

net-setup vil stille dig nogle spørgsmål om dit netværksmiljø. Når det er overstået burde du have en fungerende netværksforbindelse. Test din netværksforbindelse som angivet før. Hvis testen er positiv, så tillykke! Du er nu klar til at installere Gentoo. Spring resten af denne sektion over og fortsæt med Forberedelse af harddiske.

Hvis dit netværk stadig ikke virker, så fortsæt med Manuel netværksopsætning.

Alternativ: Brug af RP-PPPoE

Hvis du har brug for PPPoE for at få forbindelse til Internettet, så har installationsCDen (hvilken som helst version) gjort det nemt for dig ved at inkludere rp-pppoe. Brug scriptet adsl-setup til at opsætte din forbindelse. Du vil blive spurgt om hvilken Ethernet enhed der er forbundet til dit ADSL-modem, brugernavn og adgangskode, IP-adressen til din DNS-server og om du vil have en standard firewall eller ej.

Kode oversigt 2.2: Brug af rp-pppoe

# adsl-setup
# adsl-start

Hvis noget går galt, så dobbelttjek at du har tastet brugernavn og kodeord korrekt ind ved at kigge i /etc/ppp/pap-secrets eller /etc/ppp/chap-secrets og vær sikker på du bruger den rigtige Ethernet enhed. Hvis din Ethernet enhed ikke eksisterer, bliver du nødt til at indlæse de rigtige netværksmoduler. I så fald bør du fortsætte med Manuel netværksopsætning hvor vi forklarer hvordan de rigtige netværksmoduler indlæses.

Hvis alt virkede, kan du fortsætte med Forberedelse af harddiske.

Alternativ: Brug af PPTP

Bemærk: PPTP-understøttelse er kun tilgængelig til x86

Hvis du har brug for PPTP, kan du benytte pptpclient, som er på vores installationsCDer. Men først er du nødt til at sikre dig at din opsætning er korrekt. Rediger i /etc/ppp/pap-secrets eller /etc/ppp/chap-secrets så den indeholder den rigtige kombination af brugernavn og kodeord:

Kode oversigt 2.3: Redigering af /etc/ppp/chap-secrets

# nano -w /etc/ppp/chap-secrets

Tilpas /etc/ppp/options.pptp hvis det er nødvendigt:

Kode oversigt 2.4: Redigering af /etc/ppp/options.pptp

# nano -w /etc/ppp/options.pptp

Når det er gjort, skal du bare køre pptp (sammen med de indstillinger du ikke kunne angive i options.pptp) for at forbinde til serveren:

Kode oversigt 2.5: Forbindelse til en opkaldsserver

# pptp <server ip>

Fortsæt nu med Forberedelse af harddiske.

3.c. Manuel netværksopsætning

Indlæsning af de rigtige netværksmoduler

Når installationsCDen starter op, prøver den på at finde alle dine hardwareenheder og indlæse de rigtige kerne moduler (drivere) for at understøtte din hardware. I langt hovedparten af tilfældene gør den sit job meget godt. I nogle tilfælde vil den dog ikke automatisk indlæse de kerne moduler du har brug for.

Hvis net-setup eller adsl-setup fejlede, så er det muligt at dit netkort ikke blev fundet med det samme. Det betyder at du selv bliver nødt til at indlæse de rigtige kerne moduler.

For at se hvilke kerne moduler vi tilbyder til netværk, så brug ls:

Kode oversigt 3.1: Søgning efter tilgængelige moduler

# ls /lib/modules/`uname -r`/kernel/drivers/net

Hvis du finder en driver til dit netkort, så brug modprobe til at indlæse kerne modulet:

Kode oversigt 3.2: Brug af modprobe til at indlæse et kerne modul

(Som et eksempel indlæser vi pcnet32 modulet)
# modprobe pcnet32

Brug ifconfig til at undersøge om dit netkort er fundet nu. Et fundet netkort vil resultere i noget lignende dette:

Kode oversigt 3.3: Test af tilgængelighed af netkort, positiv

# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr FE:FD:00:00:00:00  
          BROADCAST NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

Hvis du til gengæld modtager følgende fejl, er netkortet ikke fundet:

Kode oversigt 3.4: Test af tilgængelighed af netkort, negativ

# ifconfig eth0
eth0: error fetching interface information: Device not found

Hvis du har flere netværkskort i dit system, så er de navngivet eth0, eth1, osv. Vær sikker på at det netkort du vil bruge virker fint og husk at bruge den korrekte navngivning igennem dette dokument. Vi antager at det er netværkskortet eth0 der bliver brugt.

Hvis du nu har et fundet netkort, kan du prøve net-setup eller adsl-setup igen (hvilket burde virke), men for de hardcore folk blandt jer, vil vi forklare hvordan netværket opsættes manuelt.

Vælg en af de følgende sektioner, baseret på din netværksopsætning:

Brug af DHCP

DHCP (Dynamic Host Configuration Protocol) gør det muligt at modtage netværksinformationer automatisk (IP-adresse, netmaske, broadcast-adresse, gateway, navneservere etc.). Det virker kun hvis du har en DHCP-server på dit netværk (eller hvis din udbyder tilbyder en DHCP-tjeneste). For at få en netværksenhed til at modtage denne information automatisk skal du bruge dhcpcd:

Kode oversigt 3.5: Brug af dhcpcd

# dhcpcd eth0
Nogle netværksadmistratorer kræver at du bruger
værtsnavnet og domænenavnet leveret af DHCP-serveren.
I det tilfælde, brug
# dhcpcd -HD eth0

Hvis dette virker (prøv at pinge en internetserver som Google), er alt indstillet og du er klar til at fortsætte. Spring resten af denne sektion over og fortsæt med Forberedelse af harddiske.

Forberedelse til trådløs adgang

Bemærk: Understøttelse for iwconfig kommandoen er kun muligt på x86-, amd64- og ppc-installationsCDer. Du kan du stadig få udvidelserne til at virke ved at følge instruktionerne ved linux-wlan-ng projektet(engelsk).

Hvis du bruger et trådløs (802.11) kort, skal du måske opsætte dine trådløse indstillinger før du fortsætter. For at se nuværende trådløse indstillinger for dit kort, kan du bruge iwconfig. Kørsel af iwconfig vil måske vise noget lignende dette:

Kode oversigt 3.6: Visning af nuværende trådløse indstillinger

# iwconfig eth0
eth0      IEEE 802.11-DS  ESSID:"GentooNode"
        Mode:Managed  Frequency:2.442GHz  Access Point: 00:09:5B:11:CC:F2
        Bit Rate:11Mb/s   Tx-Power=20 dBm   Sensitivity=0/65535
        Retry limit:16   RTS thr:off   Fragment thr:off
        Power Management:off
        Link Quality:25/10  Signal level:-51 dBm  Noise level:-102 dBm
        Rx invalid nwid:5901 Rx invalid crypt:0 Rx invalid frag:0 Tx
        excessive retries:237 Invalid misc:350282 Missed beacon:84

Bemærk: Nogle trådløse kort vil have enhedsnavnet wlan0 eller ra0 i stedet for eth0. Køre iwconfig uden nogen kommando-line parametre for at finde det korrekte enhedsnavn.

For de fleste brugere, er der kun to indstillinger, som kan være vigtige at ændre, ESSID (trådløs netværksnavn) eller WEP-nøglen. Hvis ESSID og Access Point-adressen vist, allerede er sat til dit access point, og du bruger ikke WEP, så vil dit trådløse netværk virke. Hvis du mangler at ændre din ESSID, eller tilføje en WEP-nøgle, kan du udføre følgende kommandoer:

Kode oversigt 3.7: Ændring af ESSID og/eller tilføje WEP-nøgle

(Dette indstiller netværksnavnet til "GentooNode")
# iwconfig eth0 essid GentooNode

(Dette indstiller en hex WEP-nøgle)
# iwconfig eth0 key 1234123412341234abcd

(Dette indstiller en ASCII-nøgle - foranstil det med "s:")
# iwconfig eth0 key s:some-password

Du kan bekræfte dine trådløse indstillinger igen ved brug af iwconfig. Når du har et trådløs netværk fungerende, kan du fortsætte med IP-niveau netværksopsætning, som beskrevet i næste sektion (Forståelse af netværksterminologi) eller bruge net-setup værktøjet, som bekrevet førhen.

Forståelse af netværksterminologi

Bemærk: Hvis du kender din IP-adresse, broadcast-adresse, netmaske og dine navnservere kan du springe denne undersektion over og fortsætte med Brug af ifconfig og route.

Hvis alt er slået fejl indtil videre, bliver du nødt til at opsætte netværket manuelt. Det er langt fra svært. Men du skal være lidt inde i netværksterminologi, for at kunne opsætte dit netværk tilfredsstillende. Når du er færdig med at læse dette vil du vide hvad en gateway er, hvad en netmaske bruges til, hvordan enbroadcast-adresse er dannet og hvorfor du har brug for navneservere.

I et netværk er værter identificeret af deres IP-adresse (internetprotokol-adresse). En sådan adresse er en kombination af fire tal mellem 0 og 255. Det er i hvert fald sådan vi opfatter det. I virkeligheden består en IP-adresse af 32 bit (ettaller og nuller). Lad os se på et eksempel:

Kode oversigt 3.8: Eksempel på en IP-adresse

IP-adresse (tal):       192.168.0.2
IP-adresse (bit):       11000000 10101000 00000000 00000010
                        -------- -------- -------- --------
                           192      168       0        2

En IP-adresse er unik for en vært, hvad angår alle tilgængelige netværk, hvilket vil sige at alle værter, du kan nå, skal have unikke IP-adresser. For at kunne skelne mellem en vært inden for et netværk og en vært uden for et netværk er IP-adressen delt op i to: netværksdelen og værtsdelen.

Adskillelsen er skrevet ned med netmasken, en samling af ettaller efterfulgt af nuller. Den del af IP'en der kan lægges på ettallerne er netværksdelen, den anden er værtsdelen. Netmasken kan skrives ned som en IP-adresse.

Kode oversigt 3.9: Eksempel på adskillelse af netværk og vært

IP-adresse:    192      168      0         2
            11000000 10101000 00000000 00000010
Netmaske:   11111111 11111111 11111111 00000000
               255      255     255        0
           +--------------------------+--------+
                     Netværk             Vært

Med andre ord er 192.168.0.14 stadig en del af vores netværk i eksemplet, mens 192.168.1.2 ikke er.

Broadcast-adressen er en IP-adresse med den samme netværksdel som dit netværk, men kun med ettaller som værtsdel. Alle værter på netværket lytter til denne IP-adresse. Dette er virkeligt tiltænkt broadcasting af pakker.

Kode oversigt 3.10: Broadcast-adresse

IP-adresse:    192      168      0         2
            11000000 10101000 00000000 00000010
Broadcast:  11000000 10101000 00000000 11111111
               192      168      0        255
           +--------------------------+--------+
                     Netværk             Vært

For at kunne surfe på Internettet, bliver du nødt til at vide hvilken vært, der deler internetforbindelsen. Denne vært kaldes en gateway. Da dette er en regulær vært, har den en almindelig IP-adresse (fx 192.168.0.1).

Vi har tidligere nævnt at alle værter har sin egen IP-adresse. For at kunne nå denne vært med et navn (i stedet for en IP-adresse) har du brug for en tjeneste der oversætter et navn (fx dev.gentoo.org) til en IP-adresse (fx 64.5.62.82). En sådan tjeneste kaldes en navnetjeneste. For at kunne benytte sådan en tjeneste er du nødt til at definere de nødvendige navneservere i /etc/resolv.conf.

Nogle gange fungerer din gateway også som din navneserver. Ellers er du nødt til at indtaste navneserveren der bliver tilbudt af din internetudbyder.

For at opsummere, så vil du have brug for følgende information inden du fortsætter:

Netværksdel Eksempel
Din IP-adresse 192.168.0.2
Netmaske 255.255.255.0
Broadcast-adresse 192.168.0.255
Gateway 192.168.0.1
Navneserver(e) 195.130.130.5, 195.130.130.133

Brug af ifconfig og route

Opsætningen af dit netværk består af tre dele. Først tildeler vi os selv en IP-adresse ved at benytte ifconfig. Så indstiller vi routing til gateway ved hjælp af route. Til sidst slutter vi af med at placere IP-adresserne på navneserverne i /etc/resolv.conf.

For at tildele en IP-adresse har du brug for din IP-adresse, broadcast-adresse og netmasken. Udfør så følgende kommando, hvor du udskifter ${IP_ADDR} med din IP-adresse, ${BROADCAST} med din broadcast-adresse og ${NETMASK} med din netmaske:

Kode oversigt 3.11: Brug af ifconfig

# ifconfig eth0 ${IP_ADDR} broadcast ${BROADCAST} netmask ${NETMASK} up

Konfigurer nu routing med route. Skift ${GATEWAY} ud med din gateways IP-adresse:

Kode oversigt 3.12: Brug af route

# route add default gw ${GATEWAY}

Åbn nu /etc/resolv.conf med din foretrukne editor (i vores eksempel bruger vi nano):

Kode oversigt 3.13: Oprettelse af /etc/resolv.conf

# nano -w /etc/resolv.conf

Sæt nu din(e) navneserver(e) ind i følgende skabelon. Sørg for at udskifte ${NAMESERVER1} og ${NAMESERVER2} med de rigtige navneserver-adresser:

Kode oversigt 3.14: /etc/resolv.conf skabelon

nameserver ${NAMESERVER1}
nameserver ${NAMESERVER2}

Det var det. Test nu dit netværk ved at pinge en internetserver (f.eks. Google). Hvis det virker, så tillykke. Du er nu klar til at installere Gentoo. Fortsæt med Forberedelse af harddiske.

4. Forberedelse af harddiske

4.a. Introduktion til blok-enheder

Blok-enheder

Vi vil tage et godt kig på disk-orienterede aspekter af Gentoo Linux og Linux generelt, inklusiv Linux filesystemer, partitioner og blok-enheder. Så, når du er blevet godt kendt med diske og filsystemer, vil du blive vejledt igennem processen af at opsætte partioner og filsystemer til din Gentoo Linux installation.

For at begynde, vil vi introducere begrebet blok-enheder. Den mest kendte blok-enhed er sikkert den, som repræsenterer den første SCSI-harddisk på et Linux system, med navnet /dev/sda.

Blok-enhederne ovenover repræsenterer en abstrakt grænseflade til harddisken. Brugerprogrammer kan bruge disse blok-enheder, til at interagere med din harddisk, uden at skulle bekymre sig om at dine drev er IDE, SCSI eller noget andet. Programmet kan simpelthen adressere lageret på harddisken, som et bundt af tilstødende, vilkårlige-tilgængelige 512-byte blokke.

Partitioner og portioner

Selvom det er teoretisk muligt at bruge hele harddisken til dit Linux system, er det næsten aldrig gjort i praksis. I stedet for er hele hardiskens blok-enheder opsplittet i mindre, mere håndgribelige blok-enheder. På de fleste systemer er disse kaldet partitioner. Andre arkitekturer bruger en lignende teknik, kaldet portioner (slices).

4.b. Design af et partitionsskema

Hvor mange og hvor stort?

Antallet af partitioner er meget afhængigt af dit miljø. F.eks., hvis du har en hel del brugere, vil det være nærmest at lave dit /home separat, idet at det forøger sikkerheden og gør det nemmere at lave backup. Hvis du installerer Gentoo for at arbejde som en mail-server, burde din /var være separat, idet alle emails er gemt inde i /var. Et godt valg af filsystem vil derefter maksimere din ydelse. Spil-servere bør have en separat /opt, idet at de fleste spil-servere bliver installeret der. Forklaringen er den samme som for /home: sikkerhed og backup. Du vil med sikkerhed ønske at holde /usr stor: ikke alene indeholder den de fleste programmer, Portage-træet alene optager omkring 500 MB, undtagen de forskellige kildekoder, som er gemt inde i den.

Som du kan se, afhænger det meget af hvad du vil opnå. Separate partitioner eller volumes har følgende fordele:

  • Du kan vælge det bedste ydelsesstærke filsystem til hver partition eller volume
  • Hele dit system bør ikke løbe tør for fri harddisk-plads, hvis et ødelagt værktøj bliver ved med at skrive filer til en partition eller volume
  • Hvis nødvendigt, et filsystem-tjek er reduceret i tid, idet flere tjek kan blive gjort parallelt (selvom denne fordel er større med flere harddiske end med flere partitioner)
  • Sikkerhed kan blive forøget ved at mounte nogle partitioner eller volumes read-only (kun-læs), nosuid (setuid bits er ignoreret), noexec (executable bits er ignoreret) osv.

Dog har flere partitioner en stor ulempe: hvis det ikke er opsat ordentligt, kan det betyde at have et system med masser af fri plads på én partition og intet på en anden. Der er også en begrænsning til 15 partitioner på SCSI og SATA.

4.c. Brug af fdisk på HPPA for at partitionere din disk

Brug fdisk til at lave de partitioner du ønsker:

Kode oversigt 3.1: At partitionere disken

# fdisk /dev/sda

HPPA-maskiner bruger PC-standard DOS-partitionstabeller. For at oprette en ny DOS-partitionstabel, tast da bare o kommandoen.

Kode oversigt 3.2: Oprettelse af DOS-partitionstabel

# fdisk /dev/sda

Command (m for help): o
Building a new DOS disklabel.

PALO (HPPAs boot-loader) har brug for en speciel partition for at virke. Du bliver nødt til at lave en partition med minimum 16 MB i starten af din disk. Denne partition skal være af typen f0 (Linux/PA-RISC boot).

Vigtigt: Hvis du ignorer dette og fortsætter uden en speciel PALO partition, så vil dit system holde op med at elske dig og ikke være i stand til at starte. Også, hvis din disk er større end 2Gb, så skal du også være sikker på at boot partitionen er indenfor de første 2 GB af din disk. PALO er ikke i stand til at læse en kerne efter grænsen på 2 GB.

Kode oversigt 3.3: Et simpelt standard partitionsskema

# cat /etc/fstab
/dev/sda2    /boot   ext3    noauto,noatime   1 1
/dev/sda3    none    swap    sw               0 0
/dev/sda4    /       ext3    noatime          0 0
		   	 
# fdisk /dev/sda
					   	 
Command (m for help): p
								   	
Disk /dev/sda: 4294 MB, 4294816768 bytes
133 heads, 62 sectors/track, 1017 cylinders
Units = cylinders of 8246 * 512 = 4221952 bytes

Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1           8       32953   f0  Linux/PA-RISC boot
/dev/sda2               9          20       49476   83  Linux
/dev/sda3              21          70      206150   82  Linux swap
/dev/sda4              71        1017     3904481   83  Linux

Nu hvor dine partitioner er lavet, så kan du fortsætte med Oprettelse af filsystemer.

4.d. Oprettelse af filsystemer

Introduktion

Nu da dine partitioner er lavet, er det tid til at lave filsystemer på dem. Hvis du er ligeglad med hvilket filsystem du vælger og er tilfreds med hvad vi bruger som standard her i denne håndbog, så kan du fortsætte med At anvende et filsystem på en partition. Ellers kan du fortsætte for at lære mere om de tilgængelige filsystemer...

Filsystemer?

Der er adskillige filsystemer til rådighed. Ext2, ext3, XFS og reiserfs er stabile til HPPA-arkitekturen, imens andre er meget eksperimentielle.

ext2 er det afprøvede og sande Linux filsystem, men det har ikke metadata journaler, hvilket betyder at rutinemæssige tjek af filsystemer ved opstart kan tage en del tid. Der er nu et udvalg af filsystemer af nyere generation med journal, der kan tjekkes for konsekvens meget hurtigt og er derfor at foretrække fremfor deres tilsvarende uden journal. Filsystemer med journal kan afskaffe lange ventetider når dit system starter op og dine filsystemer er i en ikke konsekvent tilstand.

ext3 er den journaliserede udgave af ext2 filsystemet, der giver metadata journaler til hurtig genskabelse og yderligere andre ydelse fremmende journal muligheder så fuld data og ordnet data journal. ext3 er meget godt og et pålideligt filsystem. Det har en ekstra mulighed for at bruge hashede b-træer til at indeksere, hvilket giver høj ydelse i næsten alle situationer. For at sige det kort, ext3 er et fremragende filsystem.

ReiserFS er et filsystem baseret på B*-træer der har en god alsidig ydelse og slår både ext2 og ext3 stor når det kommer til at håndtere små filer (filer mindre end 4k), ofte med en faktor på 10x-15x. ReiserFS skalerer også ekstremt godt og har metadata journaler. Fra og med kerne 2.4.18+ er ReiserFS solid og brugbart til både et formål som alment filsystem, og til ekstreme tilfælde hvor man laver store filsystemer, brugen af mange små filer, meget store filer og biblioteker, der indeholder titusinder af filer.

XFS er et filsystem med metadata journaler, som kommer med et robust sæt af muligheder og er optimeret til skalerbarhed. Vi anbefaler kun at bruge dette filsystem til Linux systemer med high-end SCSI og/eller fiberkanal lager og en uafbrydbar strømforsyning. Fordi XFS aggressivt gemmer indkommende midlertidige data i hukommelsen, kan dårligt designede programmer (dem der ikke tager fornuftige forholdregler, når de skriver filer til disken og der er faktisk en del af dem) miste en hel del data, hvis systemet uventet går ned.

JFS er IBM's høj-ydelses filsystem med journal. Det er fornyligt blevet klar til produktion og der har ikke være tilstrækkelige optegnelser til at kommentere positivt eller negativt omkring dets stabilitet pt.

At anvende et filsystem på en partition

For at lave et filsystem på en partition eller enhed, så er der værktøjer til rådighed for hvert filsystem:

Filsystem Kommando til at lave
ext2 mke2fs
ext3 mke2fs -j
reiserfs mkreiserfs
xfs mkfs.xfs
jfs mkfs.jfs

F.eks. for at få boot partitionen (/dev/sda2 i vores tilfælde) i ext2 og root partitionen (/dev/sda4 i vores tilfælde) i ext3 (som i vores tilfælde), ville vi bruge:

Kode oversigt 4.1: At anvende et filsystem på en partition

# mke2fs /dev/sda2
# mke2fs -j /dev/sda4

Lav nu filsystemerne på dine for nyligt skabte partitioner (eller logiske enheder).

At aktivere swap-partitionen

mkswap er kommandoen der bruges til at initialisere swap partitioner:

Kode oversigt 4.2: At lave en swap signatur

# mkswap /dev/sda3

For at aktivere swap-partitionen, brug swapon:

Kode oversigt 4.3: At aktivere swap-partitionen

# swapon /dev/sda3

Lav og aktiver swap med de ovenstående kommandoer.

4.e. At mounte

Nu hvor dine partitioner er initialiserede og huser et filsystem, er det tid til at mounte disse partitioner. Brug mount kommandoen. Glem ikke at lave de nødvendige mount-biblioteker til hver partition, som du har oprettet. Som et eksempel vil vi mounte root og boot-partionerne:

Kode oversigt 5.1: At mounte partitioner

# mount /dev/sda4 /mnt/gentoo
# mkdir /mnt/gentoo/boot
# mount /dev/sda2 /mnt/gentoo/boot

Bemærk: Hvis du vil have din /tmp til at være på en separat partition, så vær sikker på at ændre dens rettigheder efter at være blevet mountet: chmod 1777 /mnt/gentoo/tmp. Dette gælder også for /var/tmp.

Vi bliver også nødt til at mounte proc filsystemet (en virtuel grænseflade til kernen) på /proc. Men først skal vi placere vores filer på partitionerne.

Fortsæt med Installere Gentoo installationsfiler.

5. Installation af Gentoo installationsfiler

5.a. Installation af stage-tarball

At sætte Dato/Tid rigtigt

Før du forsætter, så bliver du nødt til at tjekke din dato/tid og opdatere den. Et ur der ikke er sat ordentlig op kan lede til mærkelige resultater i fremtiden!

For at verificere den nuværende dato/tid, kør da date:

Kode oversigt 1.1: At verificere dato/tid

# date
 Fri Mar 29 16:21:18 CEST 2005

Hvis dato/tid bliver vist forkert, opdater den da ved brug af date MMDDhhmmCCYY syntaksen (Måned, Dag, h(time), minut, C(årtusinde) og Y(år)). F.eks. sæt datoen til den 29. marts 16:21 i året 2005:

Kode oversigt 1.2: At sætte dato/tid

# date 032916212005

Gør dit valg

Det næste trin, som du skal udføre, er at installere stage-tarball'en, som du har valgt, på dit system. Du har muligheden for at hente den krævede tarball fra Internet eller, hvis du har startet fra én af Gentoo universelle installationsCDer, kopiere den så fra CDen selv. Hvis du har en universel CD, og den ønskede stage er på CDen, at hente den fra Internet, er spild af båndbredde, idet stage-filerne er de samme. I de fleste tilfælde kan kommandoen uname -m blive brugt til at finde ud af, hvilken stage-fil du skal hente.

5.b. Standard: Bruge af stage-fil fra Internet

Hentning af stage-tarball

Skift til dit Gentoo mountpunkt, hvor du mountede dit filsystem (højst sandsynligt /mnt/gentoo):

Kode oversigt 2.1: Gå til Gentoo-mountpunkt

# cd /mnt/gentoo

Afhængigt af dit installationsmedie, har du et par forskellige værktøjer tilgængeligt til at hente en stage. Hvis du har links2 til rådighed, så kan du med det samme surfe hen til Gentoo filspejl-listen og vælge et filspejl nær ved dig.

Hvis du ikke har links2 tilgængeligt, bør du have lynx til rådighed. Hvis du har brug for en proxy, export http_proxy- og ftp_proxy-variablerne:

Kode oversigt 2.2: Opsætning af proxy-informationer til lynx

# export http_proxy="http://proxy.vært.dk:port"
# export ftp_proxy="http://proxy.vært.dk:port"

Vi vil nu forudsætte at du har links2 tilrådighed.

Vælg releases/ biblioteket, efterfulgt af arkitekturen (x86/) og Gentoo-versionen (for eksempel 2005.1/) og afslut med at gå ind i stages/ biblioteket. Der skulle du gerne se alle tilgængelige stage-filer til din arkitektur (de vil evt. blive gemt i underbiblioteker som er navngivet efter hver underarkitektur). Vælg én og tryk på D for at hente den. Når du er færdig tryk da på Q for at lukke browseren.

Kode oversigt 2.3: Surf til filspejl-listen med links2

# links2 http://www.gentoo.org/main/en/mirrors.xml
(Hvis du har brug for proxy-understøttelse med links2:)      
# links2 -http-proxy proxy.server.com:8080 http://www.gentoo.org/main/en/mirrors.xml

Hvis du vil tjekke integriteten af den downloadede stage tarball, brug da md5sum og sammenlign outputtet med den MD5 checksum der er på filspejlet. F.eks. for at tjekke ægtheden af x86 stage tarball:

Kode oversigt 2.4: Et eksempel på at tjekke integriteten af en stage tarball

# md5sum -c stage1-x86-2005.1.tar.bz2.md5
stage1-x86-2005.1.tar.bz2: OK

Udpakning af en stage tarball

Nu skal vi udpakke din hentede stage-fil til dit system. Vi bruger GNUs tar til dette, eftersom det er det nemmeste:

Kode oversigt 2.5: Udpakning af stagen

# tar -xvjpf stage?-*.tar.bz2

Sørg for at du bruger de samme parametre (-xvjpf). x'et står for Extract, v'et står for Verbose for at se hvad der sker i udpakningsprocessen (denne er valgfri), j'et står for Decompress with bzip2, p'et står for Preserve permissions og f'et pointerer at vi vil udpakke en fil, i stedet for standard input.

Advarsel: stage3-athlon-xp-2005.1.tar.bz2, stage3-pentium3-2005.1.tar.bz2 og stage3-pentium4-2005.1.tar.bz2-filerne har seriøse rettighedsfejl. Efter at have udpakket disse, kør chmod 0755 /mnt/gentoo for at ordne denne fejl før du fortsætter med installationen.

Bemærk: Nogle arkitekturers (f.eks. MIPS) installationsCDer og opstart-billedfiler afhænger at om tar er indbygget til BusyBox, som på nuværende tidspunkt ikke understøtter -v valgmuligheden. Derfor vil den måske ikke virke.

Nu da denne etape er færdig, fortsæt med Installere Portage.

5.c. Alternativ: Brug af en stage-fil fra installationsCDen

Udpakning af stage-tarball

De forskellige etaper på CDen ligger i /mnt/cdrom/stages biblioteket. For at se en liste af tilgængelige stage-filer, brug ls:

Kode oversigt 3.1: Liste af tilgængelige stage-filer

# ls /mnt/cdrom/stages

Hvis systemet svarer med en fejl, er det måske fordi du skal mounte CDROM-drevet først:

Kode oversigt 3.2: Mounting af CDROM-drevet

# ls /mnt/cdrom/stages
ls: /mnt/cdrom/stages: No such file or directory
# mount /dev/cdroms/cdrom0 /mnt/cdrom
# ls /mnt/cdrom/stages

Gå nu ind i dit Gentoo mountpunkt (som regel /mnt/gentoo):

Kode oversigt 3.3: Skift bibliotek til /mnt/gentoo

# cd /mnt/gentoo

Vi vil nu udpakke den valgte stage-tarball. Vi vil gøre dette ved brug af af GNU tar værktøjet. Sørg for at bruge de samme parametre (-xvjpf)! Igen, er v-argumentet valgfrit og ikke understøttet i nogle tar-versioner. I det næste eksempel vil vi udpakke stage3-<subarch>-2005.1.tar.bz2. Sørg for at udskifte tarball-filnavnet med den valgte stage-fil.

Kode oversigt 3.4: Udpakning af stage-tarball

# tar -xvjpf /mnt/cdrom/stages/stage3-<subarch>-2005.1.tar.bz2

Advarsel: stage3-athlon-xp-2005.1.tar.bz2, stage3-pentium3-2005.1.tar.bz2 og stage3-pentium4-2005.1.tar.bz2-filerne har seriøse rettighedsfejl. Efter at have udpakket disse, kør chmod 0755 /mnt/gentoo for at ordne denne fejl før du fortsætter med installationen.

Nu da denne etape er installeret, fortsæt med Installere Portage.

5.d. Installere Portage

Udpakning af Portage-snapshot

Du skal nu installere et Portage-snapshot, en samling af filer, som informerer hvilke softwaretitler, som du kan installere, hvilke profiler der er tilgængelige osv.

Hent og Installere et Portage-snapshot

Gå til det mount-punkt, hvor du mountede dit filsystem (meget sandsynligt /mnt/gentoo):

Kode oversigt 4.1: Går til Gentoo-mountpunktet

# cd /mnt/gentoo

Fyr op for links2 (eller lynx) og gå til vores Gentoo filspejleliste. Vælg et filspejl tæt på dig og åben snapshots/ folderen. Derinde hent den sidste nye Portage-snapshot ved at vælge den og taste D.

Kode oversigt 4.2: Gennemse Gentoo filspejle

# links2 http://www.gentoo.org/main/en/mirrors.xml

Afslut nu browseren ved at taste Q. Du vil nu have et Portage-snapshot gemt i /mnt/gentoo. I næste trin, vil vi udpakke Portage-snapshottet til dit filsystem. Vær sikker på at du bruger præcist denne kommando; den sidste valgmulighed er med stort C, ikke c.

Kode oversigt 4.3: Udpakning af Portage-snapshot

(Udskift <dato> med den datostempel af den hentede snapshot)
# tar -xvjf /mnt/gentoo/portage-<date>.tar.bz2 -C /mnt/gentoo/usr

5.e. Opsætning af kompileringsparametre

Introduktion

For at optimere Gentoo kan du sætte et par variabler, som har inflydelse på den måde Portage opfører sig. Alle disse variabler kan sættes som miljø-variable (ved brug af export), men det er ikke permanent. For at gemme din opsætning, kommer Portage med /etc/make.conf, en opsætningsfil til Portage. Det er denne fil, vi nu vil rette i.

Bemærk: En kommenteret liste af alle mulige variable, kan findes i /mnt/gentoo/etc/make.conf.example. For at få en fungerende Gentoo installation, behøver du kun at sætte de variabler, som er nævnt herunder.

Åben dit favorit redigeringsprogram (i denne guide bruger vi nano), så vi kan komme i gang med at ændre de optimeringsvariabler, vi vil diskutere herefter.

Kode oversigt 5.1: Åbning af /etc/make.conf

# nano -w /mnt/gentoo/etc/make.conf

Som du nu sikkert har lagt mærke til, er make.conf.example-filen struktureret på en generel måde: kommentar-linier, som starter med "#" og andre linier, som definerer variabler ved brug af VARIABLE="indhold" syntaxen. make.conf bruger samme syntaks. Flere af disse variabler bliver diskuteret i næste trin.

CHOST

Advarsel: Selvom det måske kan være interessant for ikke-stage1 brugere, så skal de IKKE udskifte deres CHOST-opsætning i make.conf. Gør man dette, bliver systemet måske ubrugeligt. Igen: Du skal kun ændre denne variabel, hvis du bruger en stage1-installation.

CHOST-variablen definerer hvilken arkitektur, gcc skal kompilere programmerne til. Mulighederne er:

Arkitektur Underarkitektur CHOST opsætning
x86 i386 i386-pc-linux-gnu
x86 i486 i486-pc-linux-gnu
x86 i586 i586-pc-linux-gnu
x86 i686 og derover (inkl. Athlon) i686-pc-linux-gnu
alpha alpha-unknown-linux-gnu
ppc powerpc-unknown-linux-gnu
ppc64 powerpc64-unknown-linux-gnu
sparc sparc-unknown-linux-gnu
sparc64 sparc-unknown-linux-gnu
hppa (generic) hppa-unknown-linux-gnu
hppa pa7000 hppa1.1-unknown-linux-gnu
hppa pa8000 og derover hppa2.0-unknown-linux-gnu
mips mips-unknown-linux-gnu
amd64 x86_64-pc-linux-gnu

Vær venligst sikker på at du bruger den korrekte CHOST-indstilling. F.eks. er CHOST-indstillingen til sparc64 stadigvæk sparc-unknown-linux-gnu og ikke sparc64-unknown-linux-gnu!

Brugere, som er interesseret i at bootstrappe hele deres system med NPTL-understøttelse på et x86-system, skal indstille deres CHOST til i586-pc-linux-gnu eller højere.

CFLAGS og CXXFLAGS

CFLAGS- og CXXFLAGS-variablerne definerer optimeringsflag til gcc, med C og C++ kompilerne i den rækkefølge. Selvom vi definerer dem generelt her, vil du kun få optimal ydeevne, hvis du optimerer disse flag for hvert program seperat. Det skyldes at alle programmer er forskellige.

I make.conf skal du generelt optimere de flag du tror vil gøre dit system bedst. Lad være med at placere eksperimenterende opsætninger i denne variabel; For meget optimering kan få programmer til at opføre sig mærkelig (gå ned, eller endnu værre, fungere forkert).

Vi vil ikke forklare alle mulige optimeringsmuligheder. Hvis du vil kende dem alle, kan du læse GNU Online Manual(er) eller gcc info siden (info gcc virker kun på et færdigt opsat Linux-system). make.conf.example-filen i sig selv, indeholder også mange eksempler og informationer; glem ikke, at du også skal læse dette.

Den første parameter er -march=-flaget, som specificerer navnet på din arkitektur. Mulige parametre er beskrevet i make.conf.example-filen (som kommentarer). For eksempel til x86 Athlon XP arkitekturen:

Kode oversigt 5.2: GCC march opsætning

# AMD64 brugere, som ønsker at bruge et rent 64 bit system, bør bruge -march=k8
-march=athlon-xp
#EM64T brugere bør bruge -march=nocona

En anden parameter er -O-flaget(det er et stort O, ikke et nul), som specificerer gccs optimeringsklasse-flag. Mulige klasser er s (for størrelses optimering), 0(nul - ingen optimering), 1, 2, 3 til mere hastighedsoptimering, (hver klasse har samme flag som den forrige, plus nogle ekstra). For eksempel en klasse 2 optimering:

Kode oversigt 5.3: GCC O opsætning

-O2

Et andet populært optimeringsflag er -pipe (brug af pipes i stedet for midlertidige filer til kommunikation mellem forskellige stadier af kompilering).

Husk at hvis du bruger -fomit-frame-pointer (som sørger for at framepointere ikke er i registret til de funktioner, der ikke skal bruge den) kan skabe seriøse problemer med at debugge programmer!

Når du definerer dine CFLAGS og CXXFLAGS, bør du kombinere forskellige optimeringsflag, som i det følgende eksempel:

Kode oversigt 5.4: Definering af CFLAGS og CXXFLAGS variablerne

# AMD64 brugere bør bruge march=k8
CFLAGS="-march=athlon-xp -pipe -O2"
# EM64T brugere bør bruge march=nocona
CXXFLAGS="${CFLAGS}" # Bruger den samme opsætning til begge flag

MAKEOPTS

Med MAKEOPTS definerer du, hvor mange parallele kompileringer, der skal fortages, når du installere en pakke. Et godt valg er antallet af CPUer i dit system, plus en ekstra, men den retningslinie er ikke altid perfekt.

Kode oversigt 5.5: MAKEOPTS for et regulært, 1-CPUs system

MAKEOPTS="-j2"

Klar, parat, start!

Opdater din /mnt/gentoo/etc/make.conf, så den passer dig, og gem den (nano-brugere ville bruge Ctrl+X. Du er nu klar til at fortsætte med Installation af Gentoo basissystem.

6. Installation af Gentoo basissystem

6.a. At skifte rod-mappe (Chrooting)

Valgfrit: Valg af filspejle

For at hente kildekoderne hurtigt, er det anbefalet at vælge en hurtig filspejl. Portage vil kigge i din make.conf-fil efter GENTOO_MIRRORS-variablen og brug filspejlene deri. Du kan kigge igennem vores Filspejle liste og søge efter en filspejl (eller filspejle), som er i nærheden af dig (de er typisk også dem der er de hurtigste), men vi leverer et lækkert værktøj kaldet mirrorselect som leverer dig en grænseflade til at vælge de filspejle du vil have.

Kode oversigt 1.1: Brug af mirrorselect til GENTOO_MIRRORS-variablen

# mirrorselect -i -o >> /mnt/gentoo/etc/make.conf

Advarsel: Vælg ikke nogen IPv6 filspejle. Vores stage-filer understøtter på nuværende tidspunkt ikke IPv6.

En anden vigtig indstilling er SYNC-indstillingen i make.conf. Denne variabel indeholder rsync-seren, som du ønsker at bruge, når du opdaterer dit Portage-træ (samlingen af ebuilds og scripts, som indeholder alle informationer, som Portage har brug for at hente og installere software). Selvom du kan manuelt indtaste serveren selv, kan mirrorselect gør dette let for dig:

Kode oversigt 1.2: Valg af rsync-filspejl ved brug af mirrorselect

# mirrorselect -i -r -o >> /mnt/gentoo/etc/make.conf

Efter at have kørt mirrorselect, er det klogt at kigge alle indstillingerne igennem i /mnt/gentoo/etc/make.conf!

Kopiering af DNS-information

Der mangler stadig én ting, før vi skifter til det nye miljø, og det er at kopiere DNS-informationerne i /etc/resolv.conf. Du skal gøre dette for at sikre, at netværket stadig virker, efter skiftet til det nye miljø. /etc/resolv.conf indeholder navneserverne til dit netværk.

Kode oversigt 1.3: Kopiering af DNS-information

("-L" muligheden er nødvendigt for at være sikker på at vi ikke kopiere et symbolsk link)
# cp -L /etc/resolv.conf /mnt/gentoo/etc/resolv.conf

Mount af proc-filsystemet

Mount /proc-filsystemet til /mnt/gentoo/proc for at tillade installationen at bruge de kerne-leverede informationer, selv inde i det chrootede miljø.

Kode oversigt 1.4: Mount af /proc

# mount -t proc none /mnt/gentoo/proc

Skift til det nye miljø

Nu, hvor alle partitionerne er initialiseret og basismiljøet installeret, er det tid til at skifte til vores nye installationsmiljø, ved at lave et rod skifte. Det betyder at vi skifter fra det nuværende installationsmiljø (installationsCD eller andet installationsmedie) til dit installationssystem (nemlig de initialiserede partitioner).

Denne rodskiftning gøres i tre skridt. Først vil vi ændre roden fra / (på installationsmediet) til /mnt/gentoo (på dine partitioner) ved at bruge chroot. Derefter vil vi skabe et nyt miljø ved at bruge env-update, som hovedsageligt opretter miljø-variabler. Til sidst indlæser vi disse variabler ind i hukommelsen, ved brug af source.

Kode oversigt 1.5: Skifte til det nye miljø

# chroot /mnt/gentoo /bin/bash
# env-update
 * Caching service dependencies...
# source /etc/profile

Tillykke! Du er nu inde i dit eget Gentoo Linux miljø. Selvfølgelig er det langt fra færdig, hvilket er derfor installationen stadigvæk har nogle sektioner tilbage :-)

Opdatering af Portage-træet

Du bør nu opdatere dit Portage-træ til den sidste nye. emerge --sync gør dette for dig.

Kode oversigt 1.6: Opdatering af Portage-træet

# emerge --sync
(Hvis du bruger en langsom terminal, som f.eks. framebuffer eller en seriel
konsol, kan du tilføje --quiet-valgmuligheden for at sætte lidt fart på :)
# emerge --sync --quiet

Hvis du er bag en firewall, som blokerer rsync-trafik, kan du bruge emerge-webrsync, som vil hente og installere en portage-snapshot til dig.

Hvis du bliver advaret om, at der eksisterer en ny version af Portage og at du skal opdatere Portage, bør du ignorere det. Portage bliver opdateret for dig senere under installationen.

Valg af den rigtige profil

Først introducerer vi lige en definition.

En profil er en byggeklods til alle Gentoo-systemer. Den specificere ikke kun standardværdier til CHOST, CFLAGS og andre vigtige variabler, den låser også systemet til et specifikt område af pakkeversioner. Disse er alle håndteret af Gentoo-udviklere.

Tidligere var sådan en profil næsten aldrig rørt af en bruger. Dog kan x86-, hppa- og alpha-brugere vælge to profiler, en til 2.4-kernen og en til 2.6-kernen. Dette krav er blevet fremsat for at forbedre integrationen af 2.6-kerner. ppc- og ppc64-arkitekturerne har også yderligere profiler tilgængeligt. Vi vil tale om dem senere.

Du kan se hvilke profiler, som du bruger på nuværende tidspunkt, med følgende kommando:

Kode oversigt 1.7: Verifikation af systemprofil

# ls -FGg /etc/make.profile
lrwxrwxrwx  1 48 Apr  8 18:51 /etc/make.profile -> ../usr/portage/profiles/default-linux/x86/2005.1/

Hvis du bruger en af de tidligere nævnte tre arkitekturer, vil standardprofilen give dig et Linux 2.6-baseret system. Det er anbefalet som standard, men du har også mulighed for at vælge en anden profil.

Nogen brugere ønsker at installere et system baseret på den gamle Linux 2.4-profil. Hvis du har en god begrundelse for dette, bør du først kigge efter om en yderligere profil eksisterer. På x86, kan vi gøre dette med følgende kommando:

Kode oversigt 1.8: Finding af at yderligere profil eksisterer

# ls -d /usr/portage/profiles/default-linux/x86/2005.1/2.4
/usr/portage/profiles/default-linux/x86/2005.1/2.4

Det ovenstående eksempel viser at den yderligere 2.4 profil eksisterer (f.eks. klagede den ikke over en manglede fil eller folder). Det er anbefalet at du bruger standarden, men hvis du ønsker at skifte, kan du gøre som følgende:

Kode oversigt 1.9: Skifte til en 2.4 profil

(Vær sikker på at bruge den rigtige arkitektur, eksempelet nedenfor er til x86)
# ln -snf /usr/portage/profiles/default-linux/x86/2005.1/2.4 /etc/make.profile
(Vise en liste af filer i 2.4-profilen)
# ls -FGg /etc/make.profile/
total 12
-rw-r--r--  1 939 Dec 10 14:06 packages
-rw-r--r--  1 347 Dec  3  2004 parent
-rw-r--r--  1 573 Dec  3  2004 virtuals

Til ppc, er der en del nye profiler leveret med 2005.1.

Kode oversigt 1.10: PPC-profiler

  	 (Normal PPC-profil, til alle PPC-maskiner)
  	 # ln -snf /usr/portage/profiles/default-linux/ppc/2005.1/ppc /etc/make.profile
  	 (G3 profil)
  	 # ln -snf /usr/portage/profiles/default-linux/ppc/2005.1/ppc/G3 /etc/make.profile
  	 (G3 Pegasos profil)
  	 # ln -snf /usr/portage/profiles/default-linux/ppc/2005.1/ppc/G3/Pegasos/ /etc/make.profile
  	 (G4 (Altivec) profil)
  	 # ln -snf /usr/portage/profiles/default-linux/ppc/2005.1/ppc/G4 /etc/make.profile
  	 (G4 Pegasos profil)
  	 # ln -snf /usr/portage/profiles/default-linux/ppc/2005.1/ppc/G4/Pegasos/ /etc/make.profile
  	 

Til ppc64, er der en del nye profiler leveret med 2005.1.

Kode oversigt 1.11: PPC64-profiles

  	 (Standard 64bit userland PPC64-profil, til alle PPC64-maskiner)
  	 # ln -snf /usr/portage/profiles/default-linux/ppc/2005.1/ppc64/64bit-userland /etc/make.profile
  	 (Standard 32bit userland PPC64-profil, til alle PPC64-maskiner)
  	 # ln -snf /usr/portage/profiles/default-linux/ppc/2005.1/ppc64/32bit-userland /etc/make.profile
  	 (Hver type af userland har underprofiler, som følger her, med (userland) erstatet af den valgte userland fra ovenstående)
  	 (970 profil til JS20)
  	 # ln -snf /usr/portage/profiles/default-linux/ppc/2005.1/ppc64/(userland)/970 /etc/make.profile
  	 (G5 profil)
  	 # ln -snf /usr/portage/profiles/default-linux/ppc/2005.1/ppc64/(userland)/970/pmac /etc/make.profile
  	 (POWER3 profil)
  	 # ln -snf /usr/portage/profiles/default-linux/ppc/2005.1/ppc64/(userland)/power3 /etc/make.profile
  	 (POWER4 profil)
  	 # ln -snf /usr/portage/profiles/default-linux/ppc/2005.1/ppc64/(userland)/power4 /etc/make.profile
  	 (POWER5 profil)
  	 # ln -snf /usr/portage/profiles/default-linux/ppc/2005.1/ppc64/(userland)/power5 /etc/make.profile
  	 (Multilib-profilen er ikke stabil til denne udgivelse.)
  	 

Opsætning af USE-variabler

USE er en af de mest kraftfulde variabler, som Gentoo udbyder til dens brugere. Mange programmer kan kompileres med eller uden valgfri understøttelse af bestemte ting. For eksempel, kan nogle programmer kompileres med gtk understøttelse, eller med qt understøttelse. Andre kan kompileres med eller uden SSL understøttelse. Nogle programmer kan endda kompileres med framebuffer understøttelse (svgalib) i stedet for X11-understøttelse (X-server).

De fleste distributioner kompilerer deres pakker med understøttelse for så meget som muligt, hvilket forøger størrelsen og starttiden på programmerne, for ikke at tale om de enorme mængder af afhængigheder. Med Gentoo kan du selv definere, hvilke muligheder, dine pakker skal kompileres med. Det er her USE, kommer ind i spillet.

I USE-variablen, definerer du nøgleord, som bliver lagt oven på kompileringsparametrene. For eksempel vil ssl kompilere ssl understøttelse ind i de programmer, der understøtter det. -X vil fjerne understøttelse af X-server (bemærk minus-tegnet forrest).gnome gtk -kde -qt vil kompilere dine programmer med gnome (og gtk) understøttelse, men ikke med kde (og qt) understøttelse, hvilket gør dit system fuldt ud fin-indstillet til GNOME.

Standard USE-indstillingerne er placeret i make.defaults-filerne for din profil. Du finder make.defaults-filerne i folderen, som /etc/make.profile peger på samt alle næstgående foldere. Standard USE-indstilling er summen af alle USE-indstillinger i alle make.defaults-filere. Hvad du placerer i /etc/make.conf bliver udregnet mod disse standardværdier. Hvis du lægger noget til USE-indstillingen, bliver den lagt til standardlisten. Hvis du fjerner noget fra USE-indstillingen (ved at placere et minus-tegn foran det) så bliver det fjernet fra standardlisten (hvis det på noget tidspunkt var til stede). Redigér ALDRIG noget i /etc/make.profile biblioteket; det bliver overskrevet når du opdaterer Portage!

En fuld beskrivelse af USE kan findes i den anden halvdel af Gentoo-håndbogen, USE-flag. En fuld beskrivelse er tilgængeligt. USE-flag kan blive fundet i dit system ved /usr/portage/profiles/use.desc.

Kode oversigt 1.12: Se mulige USE-flag

# less /usr/portage/profiles/use.desc
(Du kan scrolle ved bruge af pil-tasterne og afslutte ved at trykke 'q')

Som et eksempel, viser vi en USE-indstilling til et KDE baseret system med DVD, ALSA og brænding af CD-ROM understøttelse:

Kode oversigt 1.13: Åbning af /etc/make.conf

# nano -w /etc/make.conf

Kode oversigt 1.14: USE indstilling

USE="-gtk -gnome qt kde dvd alsa cdr"

Valgfrit: GLIBC Locales

Du vil sikkert bruge en eller måske to locales på dit system. Indtil nu efter samlingen af glibc, var et fuld sæt af locales være tilgængelige og oprettet. Fra nu af kan du aktivere userlocales USE-flaget og specifere kun de locales, du har brug for i /etc/locales.build. Gør kun dette, hvis du ved hvilke locales, som du kan vælge. Dette vil ikke virke til bootstrapping, men når du gensamler glibc bagefter vil den.

Kode oversigt 1.15: Aktivering af userlocales USE-flag, specielt til glibc

# mkdir -p /etc/portage
# echo "sys-libs/glibc userlocales" >> /etc/portage/package.use

Specificer nu locales, som du ønsker at bruge:

Kode oversigt 1.16: Åbning af /etc/locales.build

# nano -w /etc/locales.build

De følgende er eksempler på hvad du får ved både Engelsk (Amerikansk) og Tysk (Tyskland) med de tilhørende karakter-formater (som UTF-8).

Kode oversigt 1.17: Specificering af dine locales

en_US/ISO-8859-1
en_US.UTF-8/UTF-8
de_DE/ISO-8859-1
de_DE@euro/ISO-8859-15

6.b. Forskelle mellem Stage1, Stage2, og Stage3

Sæt dig ned og tænk over de tidligere trin. Vi bad dig vælge stage1, stage2 eller stage3 og advarede dig, om at dit valg ville være vigtigt for de videre installationstrin. Her er det første sted, hvor dit valg definerer de følgende trin.

  • Hvis du valgte stage1, så skal du følge begge trin i dette kapitel (startende med Fra Stage1 til Stage2)
  • Hvis du valgte stage2 skal du kun springe det første trin over og straks starte med det andet trin (Fra Stage2 til Stage3)
  • Hvis du valgte stage3 så kan du springe begge trin over og fortsætte med Opsætning af kernen

6.c. Fra Stage1 til Stage2

Introduktion til bootstrapping

Så du vil kompilere alting fra bunden? jamen okay så :-)

I dette trin vil vi bootstrappe dit Gentoo system. Dette tager lang tid, men resultatet er et system, som er blevet optimeret, fra bunden og op, til din specifikke maskine og dine behov.

At bootstrappe betyder at man bygger GNU C biblioteket, GNU Compiler Collection og flere andre nøgle-systemprogrammer. GNU Compiler Collectionen skal enddag bygges to gange: Først med den generelle compiler, som vi udbyder, og en anden gang med den compiler, du lige har bygget.

Før vi starter med at bootstrappe, vil du måske hente alt kildekode først. Hvis du ikke vil gøre dette, fortsæt med Bootstrap af systemet.

Valgfrit: Hent kildekoden først

Hvis du ikke har kopieret alt kildekoden til dit system tidligere, så vil bootstrap-scriptet automatisk hente alle de nødvendige filer. Hvis du vil hente kildekoden først og så senere bootstrappe system (f.eks. fordi du ikke vil have din internet forbindelse åben under kompilering) så kan du bruge -f (bogstavet f for det engelske fetch) parameteren på bootstrap-scriptet, det vil resultere i at den henter alt kildekoden for dig.

Kode oversigt 3.1: Download den nødvendige kildekode

# cd /usr/portage
# scripts/bootstrap.sh -f

Bootstrappe af systemet

Okay så, tag dit keyboard og tast den næste kommando ind for at starte bootstrap-processen. Gå derefter et eller andet sted hen og underhold dig selv fordi det her kommer til at tage en god del tid, at blive færdig med.

Kode oversigt 3.2: At bootstrappe systemet

# cd /usr/portage
# scripts/bootstrap.sh

Forsæt nu med det næste trin, Fra Stage2 til Stage3.

6.d. Fra Stage2 til Stage3

Introduktion

Hvis du læser denne sektion, så har du et bootstrappet system (enten fordi du selv har bootstrappet tidligere, eller fordi du bruger en stage2). Du skal nu til at bygge alle systempakkerne.

Alle systempakkerne? Nej ikke rigtigt. I dette trin bygger du de system pakker, hvor der ikke er nogle alternativer til, og som skal bruges til et virkende system. Nogle system pakker har flere alternativer (så som system loggere) og eftersom Gentoo, handler om valg, så vil vi ikke tvinge en type ned over hovedet på dig.

Valgfrit: Oversigt over hvad der bliver lavet

Hvis du vil vide hvilke pakker, der vil blive installeret, så kan du køre emerge --pretend --emptytree system. Dette vil vise en liste med alle pakker der vil blive kompileret. Eftersom den liste er rimelig stor skal du nok bruge en pager som f.eks. less eller more til at gå op og ned gennem listen.

Kode oversigt 4.1: Vis hvad 'emerge system' vil gøre

# emerge --pretend --emptytree system | less

Noter at hvis du ikke har rørt ved standard CFLAGS/CXXFLAGS-indstillinger, er brug af emerge --pretend --newuse system nok: det vil genbygge programmer, som er berørte af ændringer i USE-flags (i sammenligning med de USE-flag, som vi brugte, da vi byggede stage2). Hvis du heller ikke rørte ved USE-flag heller, hvorfor kører du så en stage2-installation?

Valgfrit: Hente kildekoder

Hvis du vil have emerge til at downloade kildekoden, før du fortsætter (f.eks. fordi du ikke vil have internet-forbindelsen åben, mens du kompilerer alle pakkerne) så kan du bruge --fetchonly parametren til emerge, som vil hente alt kildekode for dig.

Kode oversigt 4.2: Hentning af kildekoder

# emerge --fetchonly --emptytree system

Opbygning af systemet

For at starte opbygningsprocessen af system, skal du køre emerge --emptytree system. Dette trin tager forholdsvis lang tid at færdiggøre så find på noget andet at lave end at stirre ind i skærmen.

Kode oversigt 4.3: Opbygning af systemet

# emerge --emptytree system

Igen, hvis du ikke har rørt ved standard CFLAGS- og CXXFLAGS-indstillinger, er brug af --newuse nok.

Du kan nu med sikkerhed ignorere alle advarsler omkring de opdaterede opsætningsfiler (og køre etc-update). Når dit Gentoo system er fuldt installeret og genstartet, læs da vores dokumentation omkring opsætning af filbeskyttelse.

Når opbygningen er færdig, skal du forsætte med Opsætning af kernen.

7. Opsætning af kernen

7.a. Tidszone

Du bliver først nødt til at vælge din tidszone så. at dit system ved hvor det er lokaliseret. Kig efter din tidszone i /usr/share/zoneinfo, og lav derefter en symbolsk henvisning til /etc/localtime ved brug af ln:

Kode oversigt 1.1: At sætte tidszone informationen

# ls /usr/share/zoneinfo
(Hvis du vil bruge GMT)
# ln -sf /usr/share/zoneinfo/GMT /etc/localtime

7.b. Installation af kildekoderne

Valg af kerne

Kernen omkring alle distributioner er bygget på Linux-kernen. Det er et lag imellem bruger-programmer og dit systems hardware. Gentoo giver dens brugere flere forskellige mulige kerne-kildekoder. En fuld liste med beskrivelser forefindes i Gentoo Linux kerne vejledning.

HPPA understøtter ikke 2.4-serien længere. Du skal bruge hppa-dev-sources.

Kode oversigt 2.1: Installation af kerne-kildekode

# emerge hppa-sources

Når du tager et kig i /usr/src, burde du se en genvej kaldet linux, som peger mod din kerne-kildekode:

Kode oversigt 2.2: Se genvej til kerne-kildekode

# ls -l /usr/src/linux
lrwxrwxrwx    1 root     root           12 Oct 13 11:04 /usr/src/linux -> linux-2.6.10_p1

Hvis det ikke er det (altså at genvejen peger mod en anden kerne-kildekode) skal du ændre genvejen før du fortsætter:

Kode oversigt 2.3: Ændring af genvejen til kerne-kildekode

# rm /usr/src/linux
# cd /usr/src
# ln -s linux-2.6.10_p1 linux

Nu er det tid til at opsætte og kompilere din kernes kildekoder. Alle arkitekturer kan bruge genkernel til dette, som vil bygge en omfattende kerne, som også er brugt på LiveCDen. Vi forklarer dog den "manuelle" opsætning først, idet det er den bedste metode til at optimere dit system.

Hvis du vil opsætte din kerne manuelt, forsæt nu med Standard: Manuel opsætning. Hvis du du vil bruge genkernel, bør du læse Alternativ: Brug af genkernel i stedet for.

7.c. Standard: Manuel opsætning

Introduktion

At opsætte kernen manuelt bliver ofte anset som det sværeste, som enhver Linux-bruger skal gå igennem. Intet er mindre rigtigt -- efter opsætninger af nogle kerner, vil du ikke kunne huske at det var svært ;)

Én ting er dog rigtigt: du skal kende dit system, når du starter med at opsætte en kerne manuelt. De fleste informationer kan samles ved at emerge pciutils (emerge pciutils), som indeholder lspci. Du kan nu have mulighed for at bruge lspci inden i det chrootede miljø. Du kan med sikkerhed ignorere alle pcilib advarsler (som pcilib: cannot open /sys/bus/pci/devices) som lspci fortæller. Alternativt, kan du køre lscpi fra et ikke-chrootet miljø. Resultatet er det samme. Du kan også køre lsmod for at se hvilke kerne-moduler, installationsCDen bruger (det vil måske give dig en god idé om hvad du skal aktivere).

Gå nu til kerne-kildekode mappen og udfør make menuconfig. Dette vil starte en ncurses-baseret opsætningsmenu.

Kode oversigt 3.1: Påkalde menuconfig

# cd /usr/src/linux
# make menuconfig

Du vil blive hilst af flere opsætningssektioner. Vi vil først give dig en liste af de valgmuligheder, som du skal aktivere (ellers vil Gentoo ikke funktionere, eller funktionere ordentligt uden ekstra finindstillinger).

Aktivering af krævede valgmuligheder

Først skal du aktivere brugen af udviklings- og forsøgskoder/-drivere. Du vil få brug for dette, ellers vil meget vigtige koder/drivere ikke vise sig:

Kode oversigt 3.2: Valg af eksperimentielle koder/drivere, Generel opsætning

Code maturity level options --->
  [*] Prompt for development and/or incomplete code/drivers
General setup --->
  [*] Support for hot-pluggable devices

Gå nu til File Systems og vælg understøttelse til de filsystemer, som du bruger. Kompiler dem ikke som moduler, ellers vil dit Gentoo system ikke have mulighed for at montere dine partitioner. Vælg også Virtual memory, /proc file system, /dev file system og Automatically mount at boot:

Kode oversigt 3.3: Valg af nødvendige filsystemer

File systems --->
  Pseudo Filesystems --->
    [*] /proc file system support
    [*] /dev file system support (OBSOLETE)
    [*]   Automatically mount at boot
    [*] Virtual memory file system support (former shm fs)

(Vælg en eller flere af de følgende valgmuligheder, som er nødvendige for dit system)
  <*> Reiserfs support
  <*> Ext3 journalling file system support
  <*> JFS filesystem support
  <*> Second extended fs support
  <*> XFS filesystem support

Hvis du bruger PPPoE til at forbinde til Internettet eller du bruger en opkaldsmodem, vil du få brug for de følgende valgmuligheder i kernen:

Kode oversigt 3.4: Valg af PPPoE nødvendige drivere

Device Drivers --->
   Networking support --->
     <*> PPP (point-to-point protocol) support
     <*>   PPP support for async serial ports
     <*>   PPP support for sync tty ports

De to kompressionsvalgmuligheder vil ikke være ubrugelige, men er slet ikke nødvendige, det samme med PPP over Ethernet valgmuligheden, som måske vil blive brugt af rp-pppoe, når den er opsat til at lave kerne-modus PPPoE.

Bemærk: Brugere af en 2.6 kerne vil finde nogle af de ovennævnte valgmuligheder under Device Drivers.

Hvis du kræver det, glem ikke at inkludere understøttelse af dit netkort i kernen.

Hvis du har en HIL-mus eller tastatur, glem ikke at kompilere understøttelse til dem.

Kode oversigt 3.5: Activating HIL keyboard support

Input device support --->
   [*] Keyboards
   [*]   HP HIL keyboard support

Kode oversigt 3.6: Activating HIL mouse support

   [*] Mice
   [*]   HIL pointers (mice etc).

Inkluder også skærmdriver-understøttelse:

Kode oversigt 3.7: Understøttelse af skærmdriver

Graphics support --->
  [*] Support for frame buffer devices
     [*] HP STI frame buffer device support
  Console display driver support --->
     [*] STI text console
     [*] Framebuffer Console support

Når du er færdig med at opsætte kernen, fortsæt med Kompilering og installation.

Kompilering og installation

Nu da din kerne er opsat, er det tid til at kompilere og installere den. Afslut opsætningen (Exit) og start samlingsprocessen:

Kode oversigt 3.8: Kompilering af kerne

# make && make modules_install

Når kernen er færdig med at kompilere, kopier den da over til /boot. I det næste eksempel forudsætter vi, at du har opsat og kompileret hppa-sources-2.6.10_p1 (hvilket måske ikke er den rigtige kerne til din arkitektur!):

Kode oversigt 3.9: Installation af kerne

# cp vmlinux /boot/vmlinux
# cp System.map /boot/System.map-2.6.10

Det er også klogt at kopiere din kerneopsætningsfil til /boot, bare for en sikkerheds skyld :)

Kode oversigt 3.10: Backup af din kerneopsætning

# cp .config /boot/config-2.6.10

Hvis du er en MIPS-bruger og dit system ikke vil starte ELF-kerner, kompiler kernen ved brug af make vmlinux.ecoff i stedet for make vmlinux. Kerne-billedfilen vil blive gemt som arch/mips/boot/vmlinux.ecoff i stedet for vmlinux.

Fortsæt nu med Installation af separate kernemoduler.

7.d. Alternativ: Brug af genkernel

Hvis du læser denne sektion, så har du valgt at bruge vores genkernel script til at opsætte din kerne for dig.

Nu da dit kerne-kildekodetræ er installeret, er det tid til at kompilere din kerne ved at bruge vores genkernel script til at automatisk bygge en kerne for dig. genkernel virker ved at opsætte en kerne, næsten identisk med hvordan vores LiveCD-kerne er blevet opsat. Dette betyder, at når du bruger genkernel til at bygge din kerne, vil dit system generelt finde alt dit hardware ved opstart, ligesom din LiveCD gør. Fordi at genkernel ikke kræver nogen manuel kerneopsætning, er den en ideel løsning for de brugere, som ikke føler sig veltilpas med at kompilere deres egne kerner.

Lad os nu se hvordan vi bruger genkernel. Først skal du emerge genkernel'ens ebuild:

Kode oversigt 4.1: Emerge genkernel

# emerge genkernel

Kompiler nu din kerne-kildekoder ved at køre genkernel all. Vær opmærksom på at, når genkernel kompilerer en kerne, som understøtter det meste hardware, kan kompileringen tage noget tid at færdiggøre!

Notér at hvis din boot-partition ikke bruger ext2- eller ext3- filsystem, skal du manuelt opsætte din kernel ved brug af genkernel --menuconfig all og tilføje understøttelse til dit filsystem i kernen (dvs. ikke som module).

Kode oversigt 4.2: Start af genkernel

# genkernel all
GenKernel v3.0.1_beta10
* ARCH: x86    
* KERNEL VER: 2.4.24
* kernel: configuring source
* kernel: running mrproper
(output fjernet for at forøge læsbarheden)
* Kernel compiled successfully!
* Required Kernel Params:
*   : root=/dev/ram0 init=/linuxrc real_root=/dev/$ROOT
*     where $ROOT is the devicenode for your root partition as
*     you should have specified in /etc/fstab
*              
* You MUST tell your bootloader to use the generated initrd
*              
* Recommended Kernel Params:
*   : vga=0x317 splash=verbose
*              
* Do NOT report kernel bugs (configs included) as genkernel bugs.
* Make sure you have the latest genkernel before reporting bugs
*              
* For more info see /usr/share/genkernel/README

Når genkernel afslutter, vil en kerne, et fuld sæt af moduler og initial root disk (initrd) være færdiggjort. Vi vil bruge kernen og initrd, når vi opsætter en boot-loader senere i dette dokument. Skriv navnene på kernen og initrd ned, da du vil få brug for dem, når du skriver til boot-loaderens opsætningsfil. Initrd vil blive startet med det samme efter at opstartsprocessen udfører automatisk-hardwarefinding (ligesom på LiveCDen) før dit "rigtige" system starter op.

Kode oversigt 4.3: Tjekker den oprette kerne-billedfils navn og initrd

# ls /boot/kernel* /boot/initrd*

Lad os nu udføre et trin mere, for at få vores system til at blive mere som LiveCDen -- lad os emerge coldplug. Imens initrd automatisk finder hardware, som der er brug for til at starte dit system, vil coldplug automatisk finde alt andet. For at emerge og aktivere coldplug, tast følgende:

Kode oversigt 4.4: Emerge og aktivering af coldplug

# emerge coldplug
# rc-update add coldplug boot

Hvis du vil have at dit system reagerer på hotplug-aktiviter, vil du også få brug for at installere og indstille hotplug:

Kode oversigt 4.5: Emerge og aktivering af hotplug

# emerge hotplug
# rc-update add hotplug default

7.e. Installation af separate kernemoduler

Opsætning af moduler

Du bør opliste de moduler, som du vil have automatisk hentet, i /etc/modules.autoload.d/kernel-2.6 (eller kernel-2.6). Du kan også tilføje ekstra valgmuligheder til modulerne, hvis du vil.

For at se alle de tilgængelige moduler, kør følgende find-kommando. Glem ikke at udskifte "<kernel version>" med den version af kernen, du lige har kompileret:

Kode oversigt 5.1: Se alle mulige moduler

# find /lib/modules/<kernel version>/ -type f -iname '*.o' -or -iname '*.ko'

For automatisk at hente f.eks 3c59x.o modulet, skal du ændre kernel-2.4 eller kernel-2.6 filen og skrive modulnavnet i den.

Kode oversigt 5.2: At redigere /etc/modules.autoload.d/kernel-2.6

# nano -w /etc/modules.autoload.d/kernel-2.6

Kode oversigt 5.3: /etc/modules.autoload.d/kernel-2.6

3c59x

Fortsæt installationen med Opsætning af dit system.

8. Opsætning af dit system

8.a. Informationer om filsystemet

Hvad er fstab?

Under Linux skal alle partitioner, som systemet benytter, være på listen i /etc/fstab. Denne fil indeholder mount-punkterne til disse partitioner (hvor de bliver set i filsystemets struktur), hvordan de skal mountes og med hvilke specielle indstillinger (automatisk eller ej, om brugere kan eller ikke kan mounte dem, osv.).

Oprettelse af /etc/fstab

/etc/fstab benytter en speciel syntaks. Hver linje består af seks felter, adskilt af mellemrum eller tabulatorer (og gerne flere af begge). Hvert felt har sin egen betydning:

  • Det første felt beskriver partitionen (stien til enhedsfilen)
  • Andet felt viser mount-punktet hvor partitionen skal mountes
  • Tredje felt viser hvilket filsystem partitionen benytter
  • Det fjerde felt viser mount-indstilliger, der bliver brugt af mount, når den vil mounte en partition. Da hvert filsystem har sine egne mount-indstillinger, opfordres du til at læse manpagen mount (man mount) for at få et fuldt overblik. Flere mount-indstillinger er adskilt med komma.
  • Femte felt er brugt af dump til bestemme om en partion har brug for at blive dumpet eller ej. Du kan normalt lade dette være 0 (nul).
  • Sjette felt er brugt af fsck til at bestemme rækkefølgen for kontrol af filsystemer, hvis systemet ikke er blevet lukket ordentlig ned. Filsystemet med roden bør være 1, mens resten bør være 2 (eller 0 hvis en kontrol af filsystemet ikke er nødvendig).

Standard-filen /etc/fstab leveret af Gentoo er ikke en valid fstab-fil, så start nano (eller dit foretrukne redigeringsprogram) for at oprette din /etc/fstab:

Kode oversigt 1.1: Åbning af /etc/fstab

# nano -w /etc/fstab

Lad os se på hvordan vi skal lave opsætningen for /boot partitionen. Dette er kun et eksempel, så hvis din arkitektur ikke har brug for en /boot partition (f.eks. PPC), så lad være med at kopiere det ordret.

I vores standardeksempel med x86 partitionering er /boot partitionen /dev/hda1 med ext2 som filsystem. Den bør kontrolleres ved boot, så vi skriver:

Kode oversigt 1.2: Eksempel på linjen med /boot i /etc/fstab

/dev/hda1   /boot     ext2    defaults        1 2

Nogle brugere ønsker ikke at deres /boot partition bliver automatisk mountet for at forbedre systemets sikkerhed. Disse personer bør udskifte defaults med noauto. Dette betyder at du selv skal mounte denne partition manuelt, hver gang du skal bruge den.

For at forbedre ydelsen vil de fleste brugere tilføje noatime som en mount-indstilling, hvilket vil resultere i et hurtigere system, da tilgangstider ikke bliver registreret (hvilket du normalt ikke har brug for):

Kode oversigt 1.3: En forbedret /boot linje i /etc/fstab

/dev/hda1   /boot     ext2    noauto,noatime    1 2

Hvis vi forsætter med dette, får vi de tre følgende linjer (for /boot, / og swap-partitionen):

Kode oversigt 1.4: De tre linjer i /etc/fstab

/dev/hda1   /boot     ext2    defaults,noatime  1 2
/dev/hda2   none      swap    sw                0 0
/dev/hda3   /         ext3    noatime           0 1

For at gøre det færdigt bør du tilføje en definition for /proc, tmpfs (påkrævet) og for dit CD-ROM drev (og selvfølgelig også for andre partitioner og drev, hvis du har det):

Kode oversigt 1.5: Et komplet eksempel på /etc/fstab

/dev/hda1   /boot     ext2    defaults,noatime     1 2
/dev/hda2   none      swap    sw                   0 0
/dev/hda3   /         ext3    noatime              0 1

none        /proc     proc    defaults             0 0
none        /dev/shm  tmpfs   nodev,nosuid,noexec  0 0

/dev/cdroms/cdrom0    /mnt/cdrom    auto      noauto,user    0 0

auto får mount til at gætte på filsystemet (anbefalet for flytbare medier, da de kan være skabt med et enkelt ud af mange filsystemer) og user gør det muligt, for andre brugere end root, at mounte CDen.

Brug nu eksemplet ovenfor til at oprette din /etc/fstab. Hvis du er SPARC-bruger, bør du også tilføje den følgende linje til /etc/fstab:

Kode oversigt 1.6: Tilføjelse af filsystemet openprom i /etc/fstab

none        /proc/openprom  openpromfs    defaults      0 0

Dobbelt-tjek din /etc/fstab, gem og afslut for at fortsætte.

8.b. Oplysninger om netværk

Værstnavn, domænenavn etc.

Et af de valg, man som bruger, skal gøre, er at bestemme et navn til sin PC. Dette lader til at være ret let, men mange brugere har problemer med at finde et passende navn til deres Linux PC. For at gøre det kort, så kan du ændre ethvert navn du vælger, senere. For vores skyld kan du kalde dit system tux og dit domæne homenetwork.

Vi bruger disse værdier i de næste eksempler. Først angiver vi værtsnavnet:

Kode oversigt 2.1: Angivelse af værtsnavn

# nano -w /etc/conf.d/hostname
(Indsæt dit værtsnavn i HOSTNAME-variablen)
HOSTNAME="tux"

Herefter angiver vi domænenavn:

Kode oversigt 2.2: Angivelse af domænenavn

# nano -w /etc/conf.d/domainname
(Indsæt domænenavnet i DNSDOMAIN-variablen)
DNSDOMAIN="hjemmenetvaerk"

Hvis du har et NIS-domæne (hvis du ikke ved hvad det er, har du ikke et), skal du også angive det:

Kode oversigt 2.3: Angivelse af NIS-domænenavn

# nano -w /etc/conf.d/domainname
(Indsæt NIS-domænenavnet i NISDOMAIN-variablen)
NISDOMAIN="mit-nisdomaene"

Tilføj nu scriptet domainname til standard runlevel:

Kode oversigt 2.4: Tilføjelse af domainname til standard runlevel

# rc-update add domainname default

Opsætning af dit netværk

Før du får den "Hallo, vi har været igennem det før"-følelse, skal du huske på at den opsætning af netværket du lavede i starten af Gentoo installationen, kun var for installationen. Nu skal du lave den permanente opsætning af dit netværk til dit Gentoo system.

Al netværksinformation er samlet i /etc/conf.d/net. Den benytter en meget ligefrem, men ikke særlig intuitiv, syntaks, hvis du ikke kender til manuel netværksopsætning. Men frygt ikke, vi vil forklare det hele. Et fuldt kommenteret eksempel, som dækker mange forskellige opsætninger, er tilgængeligt i /etc/conf.d/net.example.

DHCP er brugt som standard, og kræver derfor ingen yderligere opsætning.

Hvis du skal opsætte din netværksforbindelse, enten fordi du skal bruge specifikke DHCP-valgmuligheder eller fordu du ikke bruger DHCP overhovedet, åben /etc/conf.d/net med dit favorit redigeringsprogram (nano er brugt i dette eksempel):

Kode oversigt 2.5: Åbning af /etc/conf.d til redigering

# nano -w /etc/conf.d/net

Du vil se følgende fil:

Kode oversigt 2.6: Standard /etc/conf.d/net

# This blank configuration will automatically use DHCP for any net.*
# scripts in /etc/init.d.  To create a more complete configuration,
# please review /etc/conf.d/net.example and save your configuration
# in /etc/conf.d/net (this file :]!).

For at indtaste din egen IP-adresse, netmaske og gateway, skal du indstille både config_eth0 og routes_eth0:

Kode oversigt 2.7: Manuel indstilling af IP-informationer til eth0

config_eth0=( "192.168.0.2 netmask 255.255.255.0" )
routes_eth0=( "default gw 192.168.0.1" )

For at bruge DHCP og tilføje specifikke DHCP-valgmuligheder, definer config_eth0 og dhcp_eth0:

Kode oversigt 2.8: Automatisk optagning af IP-adresse til eth0

config_eth0=( "dhcp" )
dhcp_eth0="nodns nontp nonis"

Læs venligst /etc/conf.d/net.example for en liste af alle mulighederne.

Hvis du har forskellige netværksgrænseflader, gentag ovenstående trin til config_eth1, config_eth2 osv.

Gem nu indstillingerne og afslut for at fortsætte.

Automatisk start af netværk ved opstart

For at aktivere dine netværkenheder ved opstarten, skal du tilføje dem til standard runlevel. Hvis du har PCMCIA-enheder, bør du springe denne sektion over, da PCMCIA-enheder er startet af scriptet PCMCIA init.

Kode oversigt 2.9: Tilføjelse af net.eth0 til standard runlevel

# rc-update add net.eth0 default

Hvis du har flere netværksenheder, skal du oprette tilsvarende net.eth1, net.eth2 etc. initscripts til dem. Du kan bruge ln til det:

Kode oversigt 2.10: Oprettelse af ekstra initscripts

# cd /etc/init.d
# ln -s net.eth0 net.eth1
# rc-update add net.eth1 default

Angivelse af netværksinformation

Du skal nu informere Linux om dit netværk. Dette er defineret i /etc/hosts og hjælper med at oversætte værtsnavne til IP-adresser, for værter der ikke er blevet oversat af din navneserver. Hvis f.eks. dit interne netværk består af tre PC'er navngivet jenny (192.168.0.5), benny (192.168.0.6) og tux (192.168.0.7 - dette system) skal du åbne /etc/hosts og indsætte disse værdier:

Kode oversigt 2.11: Åbn /etc/hosts

# nano -w /etc/hosts

Kode oversigt 2.12: Indsættelse af netværksinformation

127.0.0.1     localhost
192.168.0.5   jenny.homenetwork jenny
192.168.0.6   benny.homenetwork benny
192.168.0.7   tux.homenetwork tux

Hvis dit system er det eneste (eller navneserveren klarer alle navneoversættelser), er en enkelt linje nok. F.eks., hvis du vil kalde dit system tux:

Kode oversigt 2.13: /etc/hosts for enlige eller fuldt integrerede PC'er

127.0.0.1     localhost tux

Gem og afslut din editor for at afslutte.

Hvis du ikke har PCMCIA, kan du nu fortsætte med Systeminformation. PCMCIA-brugere bør læse det følgende emne om PCMCIA.

Valgfri: Få PCMCIA til at køre

Bemærk: pcmcia-cs er kun tilgængelig til x86, amd64 og ppc platformene.

PCMCIA-brugere bør først installere pcmcia-cs-pakken. Dette er også for brugere, som arbejder med en 2.6-kerne (selvom de ikke bruger PCMCIA-driverne fra denne pakke). USE="-X" er nødvendigt for at sikre at xorg-x11 ikke bliver installeret på dette tidspunkt:

Kode oversigt 2.14: Installation af pcmcia-cs

# USE="-X" emerge pcmcia-cs

Når pcmcia-cs er installeret, så tilføj pcmcia til standard runlevel:

Kode oversigt 2.15: Tilføjelse af pcmcia til standard runlevel

# rc-update add pcmcia default

8.c. Systeminformation

Root-kodeord

Først skal vi sætte root-kodeordet ved at taste:

Kode oversigt 3.1: At sætte root-kodeordet

# passwd

Hvis du vil have at root kan logge ind via en seriel konsol, tilføj tts/0 til /etc/securetty:

Kode oversigt 3.2: Tilføjelse af tts/0 til /etc/securetty

# echo "tts/0" >> /etc/securetty

Systeminformation

Gentoo bruger /etc/rc.conf til generel system opsætning. Åbn /etc/rc.conf og nyd alle kommentarerne i filen :)

Kode oversigt 3.3: Åbning af /etc/rc.conf

# nano -w /etc/rc.conf

Når du har er færdig med at opsætte /etc/rc.conf, gem og afslut.

Som du kan se, er denne fil kommenteret en del, for at hjælpe dig med opsætningen af de nødvendige variabler. Du kan opsætte dit system til at bruge unicode og definere dit standard-redigeringsprogram og din grafiske loginhåndtering (som f.eks. gdm eller kdm).

Gentoo bruger /etc/conf.d/keymaps for at håndtere tastaturopsætningen. Rediger den til at opsætte dit tastatur.

Kode oversigt 3.4: Åbning af /etc/conf.d/keymaps

# nano -w /etc/conf.d/keymaps

Vær særlig opmærksom på indstillingen af KEYMAP. Hvis du vælger et forkert KEYMAP, vil du få mærkelige resultater, når du skriver på tastaturet.

Bemærk: Brugere af USB-baserede SPARC systemer og SPARC kloner, kan have brug for at vælge en i386 keymap (som f.eks. "us") i stedet for "sunkeymap". PPC bruger x86-keymaps til de fleste systemer. Bruger, som ønsker at bruge ADB-keymaps ved opstart, skal aktivere ADB-keycode indstillinger i deres kerne og skal sætte en mac/ppc-keymap i /etc/conf.d/keymaps.

Når du er færdig med at opsætte /etc/conf.d/keymaps, gem og afslut.

Gentoo bruger /etc/conf.d/clock til at indstille klokken. Rediger den så den passer til dine behov.

Kode oversigt 3.5: Åbning af /etc/conf.d/clock

# nano -w /etc/conf.d/clock

Hvis din hardware-ur ikke bruger UTC, skal du tilføje CLOCK="local" i filen. Ellers vil du notere tidsforskydelser. Yderligere, Windows forudsætter at dit hardware-ur bruger lokal tid, så hvis du vil dualboote, bør du sætte denne variabel dertil, ellers vil dit ur gå amok.

Når du er færdig med opsætningen af /etc/conf.d/clock, så gem og afslut.

Hvis du ikke installerer Gentoo på IBM PPC64 hardware, fortsæt med Installation af nødvendige systemværktøjer.

Opsætning af konsollen

Bemærk: Den følgende sektion er lavet til IBM PPC64 hardware-platformene.

Hvis du kører Gentoo i en IBM PPC64 hardware og bruger virtuel konsol, skal du afkommentere den rigtige linie i /etc/inittab for at få den virtuelle konsol til at dukke op ved login-prompt.

Kode oversigt 3.6: Aktivering af hvc-understøttelse i /etc/inittab

hvc0:12345:respawn:/sbin/agetty -L 9600 hvc0
hvsi:12345:respawn:/sbin/agetty -L 19200 hvsi0

Du bør også tage tiden til at kigge efter om alt er korrekt i /etc/securetty

Du kan nu fortsætte med Installation af nødvendige systemværktøjer.

9. Installation af nødvendige systemværktøjer

9.a. Enhedshåndtering

Hvis du bruger en 2.4-kerne og installerer Gentoo fra stage 3, er der nogen få ting, du skal gøre. Siden Gentoo nu bruger udev som standard, og udev ikke er understøttet af 2.4-kerner, skal du bruge devfsd og fjerne udev.

Kode oversigt 1.1: Installation af devfsd

(For dem der bruger 2.4.x kerner ved en stage 3 installation)
# emerge --unmerge udev
# emerge devfsd

9.b. Systemslogning

Da vi forklarede hvad stage3 var, sagde vi, at den indeholdte alle nødvendige systemsredskaber, hvor vi desvære ikke kan lade brugerne vælge. Vi sagde også, at vi ville installere alle de andre redskaber senere. Tja, så er vi jo kommet til det punkt :)

Det første redskab, du skal tage stilling til, skal muliggøre at du kan logge dit systems aktivitet. Unix og Linux har historisk haft fantastiske muligheder for logning -- hvis du vil, kan du logge absolut alt der sker på dit system, og gemme det i logfiler. Dette sker gennem systemloggeren.

Gentoo giver dig flere system-loggere at vælge imellem. Der er sysklogd, som er det traditionelle sæt af systemlogningsdaemoner (baggrundsprocesser), syslog-ng, en acanceret systemslogger og metalog som er et meget konfigurerbart systemlogningsprogram. Andre kan også være tilgængelige via Portage - vores antal af tilgængelige pakker stiger hver dag.

Hvis du planlægger at bruge sysklogd eller syslog-ng, ville du måske ønske at installere logrotate efter, idet disse systemloggere ikke leverer nogen rotationsmekanisme til log-filerne.

For at installere den system-logger du har valgt, skal du emerge den, og sørge for at den bliver sat ind i din default runlevel ved at bruge rc-update. Følgende eksempel installerer syslog-ng. Selvfølgelig skal du bare sætte navnet på din system-logger ind i stedet for:

Kode oversigt 2.1: Installation af et systemslogningsprogram

# emerge syslog-ng 
# rc-update add syslog-ng default 

9.c. Valgfrit: Cron-daemon

Dernæst har vi cron-daemonen. Selv om den er valgfri og egentlig ikke nødvendig for at dit system fungerer, er det klogt at installere én. Men hvad er en cron-daemon? En cron-daemon kører tidsbestemte kommandoer. Den er meget god at have ved hånden, hvis du skal køre en kommando med jævne mellemrum (for eksempel dagligt, ugentligt, eller hvert måned).

Gentoo giver dig tre forskellige cron-daemoner at vælge imellem: dcron, fcron og vixie-cron. Installation af cron-daemonen minder meget om installationen af systemsloggeren. Men, dcron og fcron kræver en ekstra konfigurations kommando, nemlig crontab /etc/crontab. Hvis du ikke ved hvilken en du skal vælge, så brug vixie-cron.

Vi leverer kun vixie-cron til netværksløse installationer. Hvis du vil have en anden cron-daemon, så vent med at installere den til senere.

Kode oversigt 3.1: Installation af en cron-daemon

 #
emerge vixie-cron 
# 
rc-update add vixie-cron default 
(Kun hvis du har valgt dcron eller fcron)
# crontab /etc/crontab 

9.d. Valgfrit: Filregister

Hvis du vil registere dit system's filer, så du kan finde dem hurtigt med locate-værktøjet, så skal du installere sys-apps/slocate.

Kode oversigt 4.1: Installation af slocate

# emerge slocate

9.e. Filsystemsredskaber

Afhængig af hvilke filsystemer du bruger, skal du installere de relevante filsystemsredskaber (til at tjekke filsystemets integritet, for at lave yderligere filsystemer osv.).

Den følgende liste opregner de redskaber, du skal installere, hvis du bruger et specifikt filsystem:

Filsystem Redskab Installationskommando
XFS xfsprogs emerge xfsprogs
ReiserFS reiserfsprogs emerge reiserfsprogs
JFS jfsutils emerge jfsutils

Hvis du bruger EVMS, skal du også installere evms:

Kode oversigt 5.1: Installation af EVMS-redskaber

# emerge evms 

Hvis du ikke behøver nogen yderligere netværksrelaterede redskaber (som f.eks. rp-pppoe eller en dhcp-klient), fortsæt med Opsætning af boot-loader.

9.f. Netværksredskaber

Valgfrit: Installation af en DHCP-klient

Hvis du ønsker at Gentoo automatisk henter en IP-adresse på dit netværksgrænseflade(r), skal du installere dhcpcd (eller en anden DHCP-klient) på dit system. Hvis du ikke gør dette nu, vil du ikke have mulighed for at få forbindelse til Internet efter installationen!

Kode oversigt 6.1: Installation af dhcpcd

# emerge dhcpcd

Valgfrit: Installation af en PPPoE-klient

Hvis du bruger rp-pppoe til at koble op til internettet, så skal du installere den.

Hvis du ikke bruger GRP skal du installere rp-pppoe med følgenede kommando:

Kode oversigt 6.2: Installation af rp-pppoe

# 
USE="-X" emerge rp-pppoe 

USE="-X" er der, for at sikre at X ikke bliver installeret, som en afhængighed (rp-pppoe har grafiske redskaber; hvis du vil bruge disse, kan du rekompilere rp-pppoe senere, eller lade xorg-x11 installere nu -- som tager et godt stykke tid at kompilere).

RAID-værktøj til IBM-hardware

Hvis du bruger SCSI-RAID på et POWER5-baseret system, bør du overveje at installere iprutils, som tillader dig at arbejde med RAID disk-array, få status på diskene i arrayen og opdatere microkoder imellem deres funktioner.

Kode oversigt 6.3: Installation af iprutils

# emerge iprutils

Nu kan du gå videre med Opsætning af boot-loader.

10. Opsætning af boot-loader

10.a. Installation af PALO

På PA-RISC platformen hedder boot-loaderen palo. Du bliver måske nødt til at emerge den på din maskine først.

Kode oversigt 1.1: At installere palo

# emerge palo

Du kan finde opsætningsfilen i /etc/palo.conf. Her er et opsætningseksempel:

Kode oversigt 1.2: Eksempel på /etc/palo.conf

--commandline=2/vmlinux root=/dev/sdb2 HOME=/
--recoverykernel=/vmlinux.old
--init-partitioned=/dev/sdb

Den første linje fortæller palo om placeringen af kernen og hvilke opstartsparametre, det skal bruge. 2/vmlinux betyder at kernen /vmlinux ligger på anden partition. Pas på, stien til kernen er relativ til partitionen, ikke til roden af dit filsystem.

Den anden linje indikerer hvilken genskabelseskerne, der skal bruges. Hvis det er din første installation og du ikke har en genskabelseskerne, skal du udkommentere linjen. Den tredje linje indikerer hvilken disk palo vil lægge sig på.

Når opsætningen er færdig, så kør palo.

Kode oversigt 1.3: Anvend PALO-opsætningen

# palo

Fortsæt nu med Genstart af systemet.

10.b. Genstart af systemet

Afslut det chrooted miljø og afmount alle mountede partitioner. Indtast så den magiske kommando, du har ventet på: reboot.

Kode oversigt 2.1: Afslutning af chroot og afmount af partitioner samt genstart

# exit
cdimage ~# cd
cdimage ~# umount /mnt/gentoo/boot /mnt/gentoo/proc /mnt/gentoo
cdimage ~# reboot

Selvfølgelig, glem ikke at fjerne den opstartbare CD, ellers vil CDen igen starte op i stedet for dit nye Gentoo system.

Når du har genstartet din Gentoo installation, afslut med Afslutning af din Gentoo installation.

11. Afslutning af din Gentoo installation

11.a. Brugeradministation

Tilføjelse af en dagligdagsbruger

At arbejde som root på et Unix/Linux system er farligt og bør undgås så vidt som muligt. Derfor anbefales det meget at tilføje en dagligdagsbruger.

Grupperne, som en bruger er medlem af, definerer hvilke aktiviteter, brugeren kan udføre. Den følgende tabel viser et antal vigtige grupper, som du måske ville bruge:

Gruppe Beskrivelse
audio få adgang til lydenheder
cdrom få direkte adgang til optiske enheder
floppy få direkte adgang til diskettedrev
games få adgang til at spille spil
usb få adgang til USB-enheder
video få adgang til video-optagelseshardware og udføre hardware acceleration
wheel få adgang til at bruge su

For eksempel, for at tilføje en bruger med navnet jens, som er medlem af wheel-gruppen, users-gruppen og audio-gruppen, log ind som root først (kun root kan oprette brugere) og kør useradd:

Kode oversigt 1.1: Tilføjelse af en dagligdagsbruger

Login: root
Password: (Dit root-kodeord)
# useradd jens -m -G users,wheel,audio -s /bin/bash
# passwd jens
Password: (Indtast kodeordet for jens)
Re-enter password: (Indtast kodeordet igen for at bekræfte det)

Hvis en bruger nogensinde får brug for at lave nogle opgaver, som root, kan denne bruge su - for midlertidigt at få root rettigheder. En anden måde er at bruge sudo-pakken, som hvis opsat korrekt, er meget sikker.

12. Hvad kan jeg gøre efter dette?

12.a. Dokumentation

Tillykke! Du har nu et fungerende Gentoo system. Men hvad skal man nu gøre efter dette? Hvad er mulighederne nu? Hvad burde man udforske først? Gentoo giver dens brugere en masse muligheder, og har derfor en masse dokumenterede (og mindre dokumenterede) egenskaber.

Du burde virkeligt tage et kig på den næste del af Gentoo-håndbogen, der hedder Arbejde med Gentoo, som forklarer hvordan du holder dit software opdateret, hvordan du installerer mere software, hvad USE-flag er, hvordan dit Gentoo Init-system virker osv.

Hvis du er interesseret i et optimeret system til brug som arbejdsplads/desktop, eller vil lære hvordan du opsætter dit system til at blive til en fuldt fungerende arbejdsplads, se da i vores Gentoo-arbejdspladsressourcer. Yderligere, vil du måske også ønske at bruge vores localization guide for at gøre dit system lidt mere hjemligt.

Vi har også et dokument omkring Gentoo Sikkerhed(dog på engelsk) som er værd at læse.

For at få en fuld liste over vores dokumentation, se vores side Dokumentationsressourcer.

12.b. Gentoo Online

Du er selvfølgelig altid velkommen på vores Gentoo Forummer eller en af de mange Gentoo IRC-kanaler.

Vi har også en hel del mail-lister åbne til alle vores brugere. Informationer om hvordan man tilføjer sig, fortælles på den side.

Vi vil nu lukke for hanen og lade dig nyde din installation :)

B. Arbejde med Gentoo

1. En Introduktion til Portage

1.a. Velkommen til Portage

Portage er nok Gentoo's mest fremtrædende innovation i softwarehåndtering. Med dens fleksibilitet og enorme mængder af egenskaber, er den ofte set som det bedste softwarehåndteringsværktøj til Linux.

Portage er fuldstændigt skrevet i Python og Bash og er derfor fuldstændig visuelle for brugere, idet begge er scriptsprog.

De fleste brugere vil arbejde med Portage igennem emerge-værktøjet. Dette kapitel er ikke ment til at duplikere informationer omkring emerge man-sider. For en komplet gennemgang af emerges muligheder, læs venligst man-siderne:

Kode oversigt 1.1: Læsning af emerge man-sider

$ man emerge

1.b. Portage-træet

Ebuilds

Når vi taler om pakker, mener vi ofte softwaretitler, som er tilgængelige for Gentoo-brugere igennem Portage-træet. Portage-træet er en samling af ebuilds, filer som indeholder informationer Portage behøver for at vedligeholde software (installation, søgning, forespørgsel ...). Disse ebuilds er placeret i /usr/portage som standard.

Når Portage spørger efter om at udføre aktivititer for softwaretitlerne, vil den bruge ebuilds på dit system som en base. Det er derfor vigtigt at du regulært opdaterer ebuilds på dit system, så Portage ved noget om de nye software-, sikkerheds-opdateringer osv.

Opdatering af Portage

Portage-træet er typisk opdateret ved brug af rsync, et hurtigt udvidbar filoverførselsværktøj. Opdatering er meget simpelt, idet emerge-kommandoen leverer et værktøj til rsync:

Kode oversigt 2.1: Opdatering af Portage-træet

# emerge --sync

Hvis du ikke har mulighed for at rsync'e, fordi du har firewall-forhindringer, kan du stadigvæk opdatere dit Portage-træ ved brug af vores daglig generet Portage-træ snapshots. emerge-webrsync-værktøjet fanger automatisk og installerer de sidste nye snapshots på dit system:

Kode oversigt 2.2: Kørsel af emerge-webrsync

# emerge-webrsync

1.c. Vedligeholdelse af software

Søgning efter software

For at søge igennem Portage-træet efter softwaretitler, kan du bruge emerges indbyggede søgemuligheder. Som standard, vil emerge --search returnere navne på pakker hvor titlen matcher (enten fuldt eller delvis) det givne søge-term.

F.eks., for at søge efter alle pakker, som har "pdf" i deres navn:

Kode oversigt 3.1: Søgning af pdf-navngivne pakker

$ emerge --search pdf

Hvis du også vil søge igennem beskrivelserne, kan du bruge --searchdesc (eller -S) muligheden:

Kode oversigt 3.2: Søgning af pdf-relaterede pakker

$ emerge --searchdesc pdf

Når du kigger på outputtet, vil du notere at den giver dig en del informationer. Disse felter er klart markeret, så vi vil ikke gå længere ind i deres betydninger:

Kode oversigt 3.3: Eksempel på `emerge --search` output

 *  net-print/cups-pdf
      Latest version available: 1.5.2
      Latest version installed: [ Not Installed ]
      Size of downloaded files: 15 kB
      Homepage:    http://cip.physik.uni-wuerzburg.de/~vrbehr/cups-pdf/
      Description: Provides a virtual printer for CUPS to produce PDF files.
      License:     GPL-2

Installation af software

Når du har fundet en softwaretitel, som du kan lide, kan du nemt installere den ved brug af emerge: tilføj blot pakkenavnet. F.eks. for at installere gnumeric:

Kode oversigt 3.4: Installation af gnumeric

# emerge gnumeric

Siden mange programmer afhænger af hinanden, vil et forsøg på at installere en specifik softwarepakke evt. resultere i installation af en del afhængigheder. Men bare roligt, Portage håndterer også afhængigheder. Hvis du vil finde ud af hvad Portage ville installere, når du spørger den om at installere en specifik pakke, tilføj --pretend muligheden. F.eks.:

Kode oversigt 3.5: At lade som du bygger gnumeric

# emerge --pretend gnumeric

Når du beder Portage om at installere en pakke, vil den hente de nødvendige kildekoder fra Internet (hvis nødvendigt) og gemme dem, som standard, i /usr/portage/distfiles. Efter dette, vil den pakke ud, bygge og installere pakken. Hvis du vil have Portage til at kun hente kildekoderne, uden af installere dem, tilføj --fetchonly valgmuligheden til emerge kommandoen:

Kode oversigt 3.6: Hentning af kildekode til gnumeric

# emerge --fetchonly gnumeric

Finding af installeret pakkedokumentation

Mange pakker kommer med deres egen dokumentation. Nogengange finder doc USE-flaget ud af om pakkedokumentation bør blive installereret eller ej. Du kan tjekke eksistensen af doc USE-flag med emerge -vp <package name> kommandoen.

Kode oversigt 3.7: Tjekke eksistensen af et doc USE-flag

(alsa-lib er kun et eksempel selvfølgelig.)
# emerge -vp alsa-lib
[ebuild  N    ] media-libs/alsa-lib-1.0.9_rc3  +doc -jack 674 kB

Du kan aktivere eller deaktivere doc USE-flaget enten globalt i /etc/make.conf-filen eller pr. pakke i /etc/portage/package.use-filen. USE-Flag-kapitlet dækker dette aspekt i detaljer.

Når pakken er installeret, er dens dokumentation generelt fundet i en underfolder navngivet efter pakken under /usr/share/doc-folderen. Du kan også vise en liste over installerede filer med equery-værktøjet, som er en del af app-portage/gentoolkit pakken.

Kode oversigt 3.8: Lokalisering af pakkedokumentation

# ls -l /usr/share/doc/alsa-lib-1.0.9_rc3
total 28
-rw-r--r--  1 root root  669 May 17 21:54 ChangeLog.gz
-rw-r--r--  1 root root 9373 May 17 21:54 COPYING.gz
drwxr-xr-x  2 root root 8560 May 17 21:54 html
-rw-r--r--  1 root root  196 May 17 21:54 TODO.gz
	 
(Alternativt, brug equery for at finde interessante filer:)
# equery files alsa-lib | less
media-libs/alsa-lib-1.0.9_rc3
* Contents of media-libs/alsa-lib-1.0.9_rc3:
/usr
/usr/bin
/usr/bin/alsalisp
(Output fraklippet)

Fjernelse af software

Når du ønsker at fjerne en softwarepakke fra dit system, brug emerge --unmerge. Dette vil fortælle Portage at fjerne alle filer installeret af denne pakke på dit system undtagen de opsætningsfiler, for dette program, hvis du har ændret dem efter installationen. Ved at efterlade opsætningsfilerne, tillader dig at fortsætte med arbejde med pakken, hvis du tænker på at installere den igen.

Dog, en stor advarsel til dette: Portage tjekker ikke om at en pakke, som du ønsker at fjerne, er krævet af en anden pakke. Den vil dog advare dig, når du ønsker at fjerne en vigtig pakke, som vil ødelægge dit system, hvis du afinstallerer denne.

Kode oversigt 3.9: Fjernelse af gnumeric fra systemet

# emerge --unmerge gnumeric

For at fjerne en pakke fra dit system, vil afhængighederne til denne pakke, som var automatisk installeret når du installerede software, stadigvæk være der. For at få Portage til at finde alle afhængigheder, som nu kan fjernes, brug emerges --depclean funktion. Vi vil tale om dette senere.

Opdatering af dit system

For at holde dit system i perfekt form (og ikke at nævne installere de sidste nye sikkerhedsopdateringer), skal du opdatere dit system jævnligt. Siden Portage kun tjekker ebuilds fra dit Portage-træ, skal du først opdatere dit Portage-træ. Når Portage-træet er opdateret, kan du opdatere dit system med emerge --update world:

Kode oversigt 3.10: Opdatering af dit system

# emerge --update world

Portage vil så søge efter en nyere version af de programmer, som du har installeret. Dog, den vil kun verificere de versioner af programmerne, som du har specifikt installeret, ikke afhængighederne. Hvis du vil opdatere enhver pakke på dit system, tilføj --deep muligheden:

Kode oversigt 3.11: Opdatering af hele dit system

# emerge --update --deep world

Idet sikkerhedsopdateringer også sker til pakker, som du ikke har installeret selv på dit system (men er hentet via afhængigheder fra andre programmer), er det anbefalet at køre denne kommando fra tid til anden.

Hvis du har ændret nogen af dine USE-flag på det sidste, bør du også tilføje --newuse. Portage vil så verificere om ændringerne kræver installationen af nye pakker eller gensamling af eksisterende:

Kode oversigt 3.12: Udførsel af fuldstændig opdatering

# emerge --update --deep --newuse world

Metapakker

Nogle pakker i Portage-træet har ingen reel indhold, men er brugt til at installere en samling af pakker. F.eks. vil kde-pakken installere et komplet KDE-miljø på dit system ved at installere forskellige KDE-relaterede pakker, samt afhængigheder.

Hvis du vil fjerne sådan en pakke fra dit system, vil en kørsel af emerge --unmerge på pakken ikke have megen effekt, idet afhængighederne fortsat bliver på systemet.

Portage har en funktionalitet for at fjerne hjemløse afhængigheder, men siden tilgængeligheden af software er dynamisk afhængig, skal du først opdatere dit system fuldstændigt, inklusive de ny ændringer, som du tilføjede ved at ændre USE-flag. Efter dette, kan du køre emerge --depclean for at fjerne hjemløse afhængigheder. Når dette er gjort, skal du genbygge de programmer, som var dynamisk linket til de nu fjernede softwaretitler, men ikke kræves af nogen længere.

Alt dette er håndteret af de følgende tre kommandoer:

Kode oversigt 3.13: Fjernelse af hjemløse afhængigheder

# emerge --update --deep --newuse world
# emerge --depclean
# revdep-rebuild

revdep-rebuild er leveret af gentoolkit pakken; glem ikke at emerge den først:

Kode oversigt 3.14: Installation af gentoolkit pakken

# emerge gentoolkit

1.d. Når Portage klager...

Om SLOTs, virtuals, brancher, arkitekturer og profiler

Som vi har sagt før, er Portage ekstremt kraftfuld og understøtter mange egenskaber, som andre softwarehåndteringsværktøjer mangler. For at forstå dette, forklarer vi nogle få aspekter af Portage, uden at gå i detaljer.

Med Portage kan forskellige versioner af en pakke eksistere samtidigt på et system. Imens andre distributioner har tendens til at navngive deres pakker efter disse versioner (som freetype og freetype2) bruger Portage en teknologi kaldet SLOTs. En ebuild erklærer en specifik SLOT for dens version. Ebuilds med forskellige SLOTs kan eksistere samtidigt på samme system. F.eks. freetype-pakken har ebuilds med SLOT="1" og SLOT="2".

Der er også pakker, som leverer samme funktionalitet, men er implementeret forskelligt. F.eks. metalogd, sysklogd og syslog-ng er alle systemlogningsprogrammer. Programmerne som stoler på tilgængeligheden af en "systemlogger" kan ikke afhænge af, f.eks. metalogd, idet den ene systemlogger er lige så god som den anden. Portage tillader for virtuals: hver systemlogger leverer virtual/syslog, så programmer kan afhænge af virtual/syslog.

Software i Portage-træet kan være placeret i forskellige brancher. Som udgangspunkt accepterer dit system kun pakker, som Gentoo mener er stabile. De fleste nye softwaretitler, når leveret, er tilføjet til test-branchen, hvilket betyder at flere tests skal udføres før den bliver markeret som stabil. Selvom du kan se ebuilds for disse softwaretitler i Portage-træet, vil Portage ikke opdatere dem, før de er placeret i den stabile branche.

Noget software er kun tilgængelig for få arktitekturer. Eller hvis softwaren ikke virker på andre arktitekturer, eller den kræver flere tests, eller en udvikler som har leveret softwaren til Portage-træet ikke kan verificere at den virker på andre arktitekturer.

Hver Gentoo installation lever af en specifik profile som indeholder, udover andre informationer, en liste over pakker, som er krævet for at systemet kan funktionere normalt.

Blokerede pakker

Kode oversigt 4.1: Portage-advarsel om blokerede pakker (med --pretend)

[blocks B     ] mail-mta/ssmtp (is blocking mail-mta/postfix-2.2.2-r1)

Kode oversigt 4.2: Portage-advarsel om blokerede packages (uden --pretend)

 !!! Error: the mail-mta/postfix package conflicts with another package.
 !!!        both can't be installed on the same system together.
 !!!        Please use 'emerge --pretend' to determine blockers.

Ebuilds indeholder specifikke felter, som informerer Portage om dens afhængigheder. Det er to mulige afhængigheder: bygge-afhængigheder, erklæret i DEPEND og kørsel-afhængigheder, erklæret i RDEPEND. Når en af disse afhængigheder præcist markerer en pakke eller virtual som ikke værende kompatibel, trigger den en blokering.

For at ordne en blokade, kan du vælge at ikke installere pakken eller afinstallere den pakke der skaber konflikten først. I det givne eksempel, kan du vælge ikke at installere postfix eller at fjerne ssmtp først.

Maskerede pakker

Kode oversigt 4.3: Portage-advarsel om maskerede pakker

 !!! all ebuilds that could satisfy "bootsplash" have been masked.

Kode oversigt 4.4: Portage-advarsel om maskerede pakker

 !!! possible candidates are:
 - gnome-base/gnome-2.8.0_pre1 (masked by: ~x86 keyword)
 - lm-sensors/lm-sensors-2.8.7 (masked by: -sparc keyword)
 - sys-libs/glibc-2.3.4.20040808 (masked by: -* keyword)
 - dev-util/cvsd-1.0.2 (masked by: missing keyword)
 - media-video/ati-gatos-4.3.0 (masked by: package.mask)
 - sys-libs/glibc-2.3.2-r11 (masked by: profile)

Når du vil installere en pakke, som ikke er tilgængelig på dit system, vil du modtage denne maskerings-fejl. Du bør prøve at installere et andet program, som er tilgængelig til dit system eller vente indtil pakken er tilgængelig. Der er altid en grund til at en pakke er markeret:

  • ~arch nøgleordet betyder at programmet ikke er testet tilstrækkeligt for at blive markeret som stabil. Vente nogle date eller uger og prøv igen.
  • -arch nøgleordet eller -* nøgleordet betyder at programmet ikke virker til din arktitektur. Hvis du tror at denne pakke virker, placerer en fejlrapport i vores bugzilla hjemmeside.
  • manglende nøgleord betyder at programmet ikke er testet på arkitekturen endnu. Spørg arktitektur-porting-teamet for at teste denne pakke eller test den for dem og rapporter dine resultater til bugzilla hjemmesiden.
  • package.mask betyder at en pakke er fundet korrupt, ustabil eller værre og er med vilje markeret som brug-ikke-denne-pakke.
  • profile betyder at pakken ikke er fundet mulig til din profil. Programmet kan ødelægge dit system, hvis du installerer denne eller den er bare ikke kompatibel med den profil du bruger.

Manglende afhængigheder

Kode oversigt 4.5: Portage-advarsel om en manglende afhængighed

 emerge: there are no ebuilds to satisfy ">=sys-devel/gcc-3.4.2-r4".
 !!! Problem with ebuild sys-devel/gcc-3.4.2-r2
 !!! Possibly a DEPEND/*DEPEND problem.

Programmet, som du prøver at installere, afhængiger af en anden pakke, som ikke er tilgængelig på dit system. Tjek venligst bugzilla hvis dette problem er kendt og ikke, så rapporter denne. Medmindre du blander brancher, skulle dette ikke fremkomme og er derfor en fejl.

Flertydige ebuild navne

Kode oversigt 4.6: Portage-advarsel om flertydige ebuild navne

 !!! The short ebuild name "aterm" is ambiguous.  Please specify
 !!! one of the following fully-qualified ebuild names instead:

	     dev-libs/aterm
	     x11-terms/aterm

Programmet, som du prøver at installere, har et navn, som har flere end en type pakke. Du skal også supplere kategori-navnet. Portage vil informere dig om mulige pakker at vælge imellem.

Cirkulære afhængigheder

Kode oversigt 4.7: Portage-advarsel om cirkulære afhængigheder

 !!! Error: circular dependencies:
 ebuild / net-print/cups-1.1.15-r2 depends on ebuild / app-text/ghostscript-7.05.3-r1
 ebuild / app-text/ghostscript-7.05.3-r1 depends on ebuild / net-print/cups-1.1.15-r2

To (eller flere) pakker, som du prøver at installere, afhængiger af hinanden og kan derfor ikke blive installeret. Dette er med stor sandsynlighed en fejl i Portage-træet. Prøv venligst at resynce efter et stykke tid og prøv igen. Du kan også tjekke bugzilla, hvis problemet er kendt, ellers rapportere denne.

Hentning lykkedes ikke

Kode oversigt 4.8: Portage-advarsel om at hentning ikke lykkedes

 !!! Fetch failed for sys-libs/ncurses-5.4-r5, continuing...
 (...)
 !!! Some fetch errors were encountered.  Please see above for details.

Portage var ikke i stand til at hente kildekoderne til det givne program og vil derfor prøve at installere de andre programmer (hvis muligt). Denne fejl kan være pga. af filspejlet ikke var synkroniseret korrekt eller fordi at ebuild'en peger på et inkorrekt sted. Serveren hvorpå kildekoderne ligger kan også være nede af en grund.

Prøv igen efter en time og se om fejlen stadigvæk er der.

System-profil-beskyttelse

Kode oversigt 4.9: Portage-advarsel om en profil-beskyttede pakke

 !!! Trying to unmerge package(s) in system profile. 'sys-apps/portage'
 !!! This could be damaging to your system.

Du har efterspurgt at få fjernet en pakke, som er dit systems kernepakker. Den er placeret i din profil som krævet, og derfor må den ikke fjernes fra dit system.

2. USE-flag

2.a. Hvad er USE-flag?

Ideerne bag ved USE-flag

Når du installerer Gentoo (eller enhver anden distribution, eller endda operativ-system for at nævne det) foretager du nogle valg, afhængigt af miljøet du arbejder med. En opsætning af en server er forskellig fra en opsætning af en arbejdsstation. En spil-arbejdsstation er forskellig fra en 3D-gengivelse-arbejdsstation.

Det er ikke kun rigtigt for at vælge de pakker, som du vil installere, men også hvilke egenskaber en specifik pakke bør understøtte. Hvis du ikke behøver OpenGL, hvorfor skulle du interessere dig for at installere OpenGL og bygge OpenGL-understøttelse til de fleste af vores pakker? Hvis du ikke vil bruge KDE, hvorfor vi du interessere dig for at kompilere pakker med KDE-understøttelse, hvis disse pakker virker fejlfrit uden?

For at hjælpe brugere med at beslutte, hvad man bør installere/aktivere eller ikke, vil vi få brugeren til at specificere sit miljø på en nem måde. Dette tvinger brugeren til at beslutte, hvad han virkelig vil have og letgør processen for Portage, vores pakkebehandlingssystem, for at lave hjælpsomme beslutninger.

Definition af et USE-flag

Tag et skridt ind i USE-flag verdenen. Sådan et flag er et nøgleord, der udtrykker understøttelse og afhængighedsinformationer til sådan et koncept. Hvis du definerer et specifikt USE-flag, vil Portage vide om, at du vil have understøttelse for dette valgte nøgleord. Selvfølgelig vil dette også ændre afhængighedsinformationerne for en pakke.

Lad os tage et kig på et specifikt eksempel: kde-nøgleordet. Hvis du ikke har dette nøgleord i dine USE-variablerne, vil alle pakker, som har valgfri KDE-understøttelse, blive kompileret uden KDE-understøttelse. Alle pakker, som har valgfrie KDE-afhængigheder, vil blive installeret uden at installere KDE-biblioteker (som en afhængighed). Hvis du har defineret kde-nøgleordet, vælg da de pakker, som vil være kompileret med KDE-understøttelse, og KDE-libs vil blive installeret, som en afhængighed.

Ved at definere nøgleordene korrekt, vil du modtage et system, som er skræddersyet specifikt til dine behov.

Hvilke USE-flag eksisterer?

Der er to typer USE-flag: globale og lokale USE-flag.

  • Et globalt USE-flag er brugt af en del pakker, over hele systemet. Dette er hvad de fleste folk forstår som USE-flag.
  • Et lokalt USE-flag er brugt af en enkelt pakke for at lave pakke-specifikke beslutninger.

En liste over tilgængelige globale USE-flag, kan blive fundet online eller lokalt i /usr/portage/profiles/use.desc. Et kort (meget ufuldendt) udsnit:

Kode oversigt 1.1: Et kort udsnit af tilgængelige USE-flag

gtk     - Tilføjer understøttelse til x11-libs/gtk+ (GIMP-værktøjskassen)
gtk2    - Brug af gtk+-2.0.0 i stedet for gtk+-1.2 i nogle situationer, hvor programmet undersøtter begge.
gtkhtml - Tilføjer understøttelse til gnome-extra/gtkhtml
guile   - Tilføjer understøttelse til dev-util/guile (interpreter til Scheme)
icc     - Brug af Intels C++ Compiler, hvis pakken understøtter det
icc-pgo - Aktivering af 'PGO data generation' eller brug den ved brug af icc.
imap    - Tilføjer understøttelse til IMAP

En liste over lokale mulige USE-flag kan blive fundet lokalt i /usr/portage/profiles/use.local.desc.

2.b. Brug af USE-flag

Erklær permanente USE-flag

I håbet af at du er overbevist om vigtigheden af USE-flag, vil vi nu informere dig om, hvordan man erklærer USE-flag.

Som tidligere nævnt, er alle USE-flags erklæret inde i USE-variabelen. For at gøre det nemt for brugere at søge og vælge USE-flag, har vi allerede leveret en standard USE-indstilling. Denne indstilling er en samling af USE-flag, som vi mener er de mest brugte af Gentoo brugere. Denne standard-indstilling er erklæret i make.defaults fil delen af din profil.

Den profil dit system lytter til bliver peget på af /etc/make.profile symlinket. Hver profil virker ovenpå en anden større profil, slutresultatet er derfor summen af alle profilerne. Den øverste profil er base profilen (/usr/portage/profiles/base).

Lad os kigge på standard opsætningen:

Kode oversigt 2.1: Akkumuleret /usr/portage/profiles/default-linux/x86/2004.3/make.defaults USE variabler

(Dette eksempel er summen af opsætningen i base, default-linux,
default-linux/x86 og default-linux/x86/2004.3)
USE="x86 oss apm arts avi berkdb bitmap-fonts crypt cups encode fortran f77
     foomaticdb gdbm gif gpm gtk gtk2 imlib jpeg kde gnome libg++ libwww mad
     mikmod motif mpeg ncurses nls oggvorbis opengl pam pdflib png python qt
     quicktime readline sdl spell ssl svga tcpd truetype X xml2 xmms xv zlib"

Som du kan se, indeholder denne variabel allerede en hel del nøgleord. Du skal ikke ændre noget i make.defaults-filen for at skræddersy USE-variabelen til dine behov: ændringer i denne fil vil blive fjernet, når du opdaterer Portage!

For at ændre denne standard-indstilling, skal du tilføje eller fjerne nøgleord til USE-variabelen. Dette er gjort globalt ved at definere USE-variabelen i /etc/make.conf. Dette er variabelen, som du kan tilføje ekstra USE-flag, som du kræver, eller fjerne de USE-flag, som du ikke vil bruge. Sidstnævnte er gjort ved at foranstille nøgleordet med et minus-tegn ("-").

F.eks. for at fjerne understøttelse til KDE og QT, men tilføje understøttelse til ldap, følgende USE kan blive defineret i /etc/make.conf:

Kode oversigt 2.2: Et eksempel på en USE-opsætning /etc/make.conf

USE="-kde -qt ldap"

Erklæringer af USE-flag til individuelle pakker

Nogen gange ønsker du at erklære specifikke USE-flag til et af (eller flere) programmerne, men ikke i hele systemet. For at gøre dette, skal du oprette /etc/portage-folderen (hvis den ikke allerede eksisterer) og redigere /etc/portage/package.use.

F.eks., hvis du ikke vil have berkdb-understøttelse globalt, men kun vil have den til mysql, ville du tilføje:

Kode oversigt 2.3: /etc/portage/package.use eksempel

dev-db/mysql berkdb

Du kan selvfølgelig også specifikt udlade USE-flag for et specifikt program. F.eks., hvis du ikke vil have java-understøttelse i PHP:

Kode oversigt 2.4: /etc/portage/package.use eksempel nr.2

dev-php/php -java

Erklæringer af midlertidige USE-flag

Nogen gange vil du ønske at tilføje en specifik USE-indstilling kun én gang. I stedet for at redigere /etc/make.conf to gange (for at lave og fjerne USE-ændringer) kan du bare erklære USE-variabelen, som en miljø-variabel. Huske at, når du gen-emerger eller opdaterer dette program (enten specifik eller som en del af en systemopdatering), vil dine ændringer forsvinde!

Som et eksempel, vil vi midlertidigt fjerne java fra USE-opsætningen, når vi installerer mozilla.

Kode oversigt 2.5: Brug af USE, som en miljøvariabel

# USE="-java" emerge mozilla

Automatiske USE-flag

Efter at et antal pakker er installeret, kan yderligere USE-flag blive automatisk aktiveret for dig, hvis du ikke selv deaktiverer dem. For at se listen af pakker, som igangsætter automatiske USE-flag, tjek /etc/make.profile/use.defaults- og use.defaults-filerne i de øvre profiler.

Kode oversigt 2.6: Et udsnit af /etc/make.profile/use.defaults

gnome           gnome-base/gnome
gtk             x11-libs/gtk+
qt              x11-libs/qt
kde             kde-base/kdebase
motif           x11-libs/openmotif

Rangorden

Selvfølgelig er der en vis rangorden på hvilken indstilling, der har prioritet over USE-opsætning. Du vil ikke erklære USE="-java", kun for at se om at java stadigvæk er brugt i forhold til en indstilling, som har en højere priotitet. Rangordenen for USE-opsætningen er, opstilt efter prioritet (første har laveste prioritet):

  1. Standard USE-opsætning, erklæret i make.defaults filens delen af din profil
  2. Arvet USE-opsætning, hvis en pakke fra /etc/make.profile/use.defaults er installeret
  3. Brugerdefineret USE-indstilling i /etc/make.conf
  4. Brugerdefineret USE-indstilling, som en miljø-variabel
  5. Brugerdefineret USE-indstilling i /etc/portage/package.use

For at se den færdige USE-opsætning, som set af Portage, kør emerge --info. Dette vil give dig en liste over alle relevante variabler (inklusiv USE-variabler) med indholdet brugt af Portage.

Kode oversigt 2.7: At køre emerge --info

# emerge --info

Tilpasse hele dit system ved brug af nye USE-flag

Hvis du har ændret dine USE-flag og ønsker at hele dit system skal bruge disse nye flag, brug emerge --newuse valgmulighed:

Kode oversigt 2.8: Genbygning af hele systemet

# emerge --update --deep --newuse world

Dernæst, kør Portages depclean for at fjerne betingede afhængigheder som er blevet emerged på dit "gamle" system, men som er blevet forældet ved brug af de nye USE-flag.

Advarsel: Kørsel af emerge --depclean er en farlig opgave og bør håndteres med forsigtighed. Dobbelt-tjek den leverede liste af "forældede" pakker for at sørge for at den ikke fjerner pakker, som du behøver. I det følgende eksempel, tilføjer vi -p-kontakten for at have depclean til at kun vise pakkerne, uden at fjerne dem.

Kode oversigt 2.9: Fjernelse af forældede pakker

# emerge -p --depclean

Når depclean er færdig, kør revdep-rebuild for genbygge de programmer, som er dynamisk linket til delte objekter, leveret af mulige fjernede pakker. revdep-rebuild er en del af gentoolkit-pakken; glem ikke at emerge den først.

Kode oversigt 2.10: Kørsel af revdep-rebuild

# revdep-rebuild

Når det hele er udført, bruger dit system de nye USE-flag indstillinger.

2.c. Pakke-specifikke USE-flag

Se tilgængelige USE-flag

Lad os tage eksemplet fra mozilla: hvilke USE-flag lytter den til? For at finde ud af dette, bruger vi emerge med --pretend og --verbose valgmulighederne:

Kode oversigt 3.1: Se brugte USE-flag

# emerge --pretend --verbose mozilla
These are the packages that I would merge, in order:

Calculating dependencies ...done!
[ebuild  N    ] net-www/mozilla-1.5-r1 +java +crypt -ipv6 -gtk2 +ssl +ldap 
+gnome -debug +mozcalendar -mozaccess -mozxmlterm -moznoirc -moznomail
-moznocompose -moznoxft 

emerge er ikke det eneste værktøj til dette job. I virkeligheden har vi et værktøj tilegnet til pakke-informationer, kaldet equery, som er placeret i gentoolkit-pakken. Først, installer gentoolkit:

Kode oversigt 3.2: Installation af gentoolkit

# emerge gentoolkit

Kør nu equery med uses parameteren for at se USE-flag af en vis pakke. F.eks. gnumeric-pakken:

Kode oversigt 3.3: Brug af equery for at se brugte USE-flag

# equery uses gnumeric
[ Colour Code : set unset ]
[ Legend      : (U) Col 1 - Current USE flags        ]
[             : (I) Col 2 - Installed With USE flags ]

 U I [ Found these USE variables in : app-office/gnumeric-1.2.0 ]
 - - libgda  : Adds GNU Data Access (CORBA wrapper) support for gnumeric
 - - gnomedb : unknown
 + + python  : Adds support/bindings for the Python language
 + + bonobo  : Adds support for gnome-base/bonobo (Gnome CORBA interfaces)

3. Portages egenskaber

3.a. Portage egenskaber

Portage har yderligere egenskaber, som gør din Gentoo-oplevelse endnu bedre. Mange af disse egenskaber kræver specifikke softwareværktøjer, som forbedrer ydelse, stabilitet, sikkerhed ...

For at aktivere eller deaktivere specifikke Portage-egenskaber, skal du redigere /etc/make.confs FEATURES-variabel, som indeholder de forskellige feature-nøgleord, separeret med tomme pladser. I flere tilfælde skal du også installere yderligere værktøjer, som denne egenskab afhænger af.

Ikke alle egenskaber, som Portage understøtter er vist her. For en fuld oversigt, læs da make.conf man-side:

Kode oversigt 1.1: Læsning af make.conf man-side

$ man make.conf

For at finde ud af dine FEATURES standard-indstillinger, kør emerge --info og søg efter FEATURES-variablen eller greb den ud:

Kode oversigt 1.2: Finding af FEATURES som allerede er indstillet

$ emerge --info | grep FEATURES

3.b. Distribueret samling

Brug af distcc

distcc er et program, der distribuerer kompilering over flere, ikke nødvendigvis identiske, maskiner på et netværk. distcc-klienten sender alle nødvendige informationer til de tilgængelige distcc-servere (som kører distccd), så de kan kompilere dele af kildekode for klienten. Slutresultatet er en hurtigere kompileringstid.

Du kan finde flere uddybbende informationer om distcc (og informationer om hvordan man får det til at virke med Gentoo) i vores Gentoo Distcc Dokumentation.

Installation af distcc

Distcc kommer med en grafisk overvåger til at overvåge de opgaver, som din computer sender afsted til kompileringen. Hvis du bruger Gnome, så indsæt 'gnome' i dine USE-flag. Hvis du imidlertid ikke bruger Gnome og stadigvæk vil have overvågeren, så skal du indsætte 'gtk' i dine USE-flag.

Kode oversigt 2.1: Installation af distcc

# emerge distcc

Aktivering af Portage-understøttelse

Tilføj distcc til din FEATURES-variable inde i /etc/make.conf. Derefter, rediger MAKEOPTS-variablen til dit behov. En kendt guideline er at indsætte "-jX" med X som det antal CPUer som kører distccd (inklusiv den nuværende vært) plus en, men du vil måske have bedre resultater med andre numre.

Kør nu distcc-config og gå til listen over distcc-servere der er til rådighed. For et simpelt eksempel, forventer vi at de tilrådige distcc servere er 192.168.1.102 (nuværende vært), 192.168.1.103 og 192.168.1.104 (to "fjerne" værter):

Kode oversigt 2.2: Indstilling af distcc for bruge tre tilrådige distcc-servere

# distcc-config --set-hosts "192.168.1.102 192.168.1.103 192.168.1.104"

Selvfølgelig, glem ikke også at køre distccd-daemonen (baggrundsprocessen):

Kode oversigt 2.3: Start af distcc-daemon

# rc-update add distccd default
# /etc/init.d/distccd start

3.c. Midlertidig Gemt Samling

Om ccache

ccache er en hurtig opbevarelse af midlertidige samlinger. Når du samler et program, vil den 'cache' mellemresultater, så når du igen gensamler det samme program, vil samlingstiden blive reduceret meget. I normale samlinger kan det resultere op fra 5 til 10 gange hurtigere samlingstid.

Hvis du er interesseret i hvordan ccache fungerer, besøg venligst ccache hjemmeside.

Installation af ccache

For at installere ccache, kør emerge ccache:

Kode oversigt 3.1: Installation af ccache

# emerge ccache

Aktivering af Portage-understøttelse

Åben /etc/make.conf og tilføj ccache til FEATURES-variabelen. Derefter, tilføj en ny variabel kaldet CCACHE_SIZE og sæt den til "2G":

Kode oversigt 3.2: Redigering af CCACHE_SIZE i /etc/make.conf

CCACHE_SIZE="2G"

For at tjekke ccache funktioner, spørg ccache for at give dig dens statistikker:

Kode oversigt 3.3: Se ccache-statistikker

# ccache -s

Brug af ccache til ikke-Portage C-samling

Hvis du vil bruge ccache til ikke-Portage samlinger, tilføj /usr/lib/ccache/bin til begyndelsen af din PATH-variabel (før /usr/bin). Dette blive gjort ved at redigere /etc/profile:

Kode oversigt 3.4: Redigering af /etc/profile

PATH="/usr/lib/ccache/bin:${PATH}"

3.d. Binære pakke understøttelse

Oprettelse af Præsamlede pakker

Portage understøtter installationen af præsamlede pakker. Selvom Gentoo ikke leverer præsamlede pakker af sig selv (udover GRP-snapshots) kan Portage være fuld opmærksom på præsamlede pakker.

For at oprette præsamlede pakker, kan du bruge quickpkg hvis pakken allerede er installeret på dit system, eller emerge med --buildpkg eller --buildpkgonly valgmulighederne.

Hvis du vil have Portage til at oprette præsamlede pakker for enhver pakke du installerer, tilføj buildpkg til FEATURES-variablen.

Mere udvidet understøttelse for at oprette præsamlede pakkesæt, kan gøres med catalyst. For flere informationer om catalyst, læs venligst Catalyst Reference Manual (engelsk) og Catalyst Howto (også engelsk).

Installation af præsamlede pakker

Selvom Gentoo ikke levere en, kan du oprette en central vært, hvor du gemmer dine præsamlede pakker. Hvis du vil bruge denne vært, skal du gøre Portage opmærksom på den ved at bruge PORTAGE_BINHOST-variablen, som peger på denne. F.eks. hvis de præsamlede pakker er på ftp://buildhost/gentoo:

Kode oversigt 4.1: Opsætning af PORTAGE_BINHOST i /etc/make.conf

PORTAGE_BINHOST="ftp://buildhost/gentoo"

Når du vil installere en præsamlet pakke, tilføj --getbinpkg valgmuligheden til emerge-kommandoen sammen med --usepkg valgmuligheden. Den førstnævnte fortæller emerge at hente de præsamlede pakker fra den tidligere nævnte vært, imens den sidstnævnte spørger emerge om at prøve at installere den præsamlede pakke først, før den henter kildekoderne og samler den.

F.eks. for at installere gnumeric med en præsamlet pakke:

Kode oversigt 4.2: Installation af gnumeric præsamlede pakke

# emerge --usepkg --getbinpkg gnumeric

Flere informationer om emerges præsamlede pakkemuligheder kan blive fundet i emerges man-sider:

Kode oversigt 4.3: Læsning af emerge man-sider

# man emerge

4. Startscripts

4.a. Runlevels

Opstart af dit system

Når du starter dit system, vil du ligge mærke til en del tekst, som flyder forbi. Hvis du virkelig ligger mærke til det, vil nu bemærke at denne tekst er den samme hver gang du genstarter dit system. Sekvensen af alle disse aktiviteter, er kaldet opstartsekvensen og er (mere eller mindre) statisk defineret.

Først vil din boot-loader hente kerne-billedfilen, som du har defineret i boot-loader opsætningen ind i hukommelsen efter den fortæller processoren til at køre kernen. Når kernen er hentet og kører, vil den initialisere alle kerne-specifikke strukturer og opgaver, og starte init-processen.

Denne proces sørger så for, at alle filsystemer (defineret i /etc/fstab) er mountet og klar til at blive brugt. Så igangsætter den flere scripts, placeret i /etc/init.d, som vil starte de tjenester du behøver, for at have et succesfuldt opstartet system.

Til sidst, når alle scripts er startet, aktiverer init terminalerne (i de fleste tilfælde er det kun de virtuelle konsoler, som er gemt bag ved Alt-F1, Alt-F2 osv.) vedhæftet en speciel proces, kaldet agetty til den. Denne proces vil så sørge for at du kan logge ind igennem disse terminaler ved at køre login.

Init-scripts

init starter ikke kun scripts i /etc/init.d tilfældigt. Den kører endda ikke alle scripts i /etc/init.d, men kun dem den er blevet bedt om køre. Den beslutter hvilke scripts, der skal startes, ved at kigge i /etc/runlevels.

Først kører init alle scripts fra /etc/init.d, som har symbolske links inden i /etc/runlevels/boot. Sædvanligvis vil den starte scripts i alfabetisk orden, men nogle scripts har afhængighedsinformationer i dem, som fortæller systemet at et andet script skulle blive kørt i stedet for en anden én.

Når alle /etc/runlevels/boot refererede scripts er kørt, fortsætter init med at køre de scripts, som har et symbolsk link til dem i /etc/runlevels/default. Igen, den vil bruge den alfabetiske orden for at beslutte hvilket script, den skal køre først, undtagen hvis et script har afhængighedsinformationer i den, i hvilket tilfælde rækkefølgen er ændret til at levere en gyldig opstartsekvens.

Hvordan init virker

Selvfølgelig vil init ikke beslutte alt selv. Den behøver en opsætningsfil, som specificerer, hvilke aktiviteter der skal udføres. Denne opsætningsfil er /etc/inittab.

Hvis du husker opstartssekvensen, som vi lige har beskrevet for dig, vil du huske at inits første aktivitet er at mounte alle filsystemer. Dette er defineret i den følgende linje fra /etc/inittab:

Kode oversigt 1.1: System-initialieringslinjen i /etc/inittab

si::sysinit:/sbin/rc sysinit

Denne linje fortæller init at den skal køre /sbin/rc sysinit for at initialisere systemet. /sbin/rc-scriptet tager sig af initialiseringen, så du kan sige at init ikke gør meget -- den delegerer opgaven om, for at initialise systemet til en anden proces.

For det andet, init starter alle scripts, som har symbolske links i /etc/runlevels/boot. Dette er defineret i den følgende linje:

Kode oversigt 1.2: System-initialiseringen, fortsat

rc::bootwait:/sbin/rc boot

Igen, udfører rc-scriptet de nødvendige opgaver. Noter at ting givet til rc (boot) er det samme, som underbiblioteket af /etc/runlevels, som er brugt.

Nu vil init tjekke dens opsætningsfil for at se hvad runlevel der bør køre. For at beslutte dette, læser den følgende linje fra /etc/inittab:

Kode oversigt 1.3: initdefault-linjen

id:3:initdefault:

I dette tilfælde (som hoveddelen af Gentoo-brugere vil bruge), er runlevel'ens id 3. Ved at bruge denne information, tjekker init hvad den skal køre for at starte runlevel 3:

Kode oversigt 1.4: runlevel definitioner

l0:0:wait:/sbin/rc shutdown
l1:S1:wait:/sbin/rc single
l2:2:wait:/sbin/rc nonetwork
l3:3:wait:/sbin/rc default
l4:4:wait:/sbin/rc default
l5:5:wait:/sbin/rc default
l6:6:wait:/sbin/rc reboot

Linjen, som definerer level 3, bruger rc-scriptet til at starte tjenesterne (nu med parameteren default). Noter at parameteren af rc er den samme, som underbiblioteket i /etc/runlevels.

Når rc er færdig, beslutter init hvilke virtuelle konsoler, der bør aktiveres og hvilke kommandoer den behøver at køre ved hver konsol:

Kode oversigt 1.5: Virtuelle konsolers definitioner

c1:12345:respawn:/sbin/agetty 38400 tty1 linux
c2:12345:respawn:/sbin/agetty 38400 tty2 linux
c3:12345:respawn:/sbin/agetty 38400 tty3 linux
c4:12345:respawn:/sbin/agetty 38400 tty4 linux
c5:12345:respawn:/sbin/agetty 38400 tty5 linux
c6:12345:respawn:/sbin/agetty 38400 tty6 linux

Hvad er en runlevel?

Du har set at init bruger et nummeringsskema for at beslutte hvilke runlevel'er, den skal aktivere. En runlevel er en tilstand, i hvilket dit system kører og indeholder en samling af scripts (runlevel-scripts eller initscripts), som skal være kørt, når du indtræder eller forlader en runlevel.

I Gentoo er der syv runlevels defineret: tre interne runlevels, og fire brugerdefinerede runlevels. De interne runlevels er kaldet sysinit, shutdown og reboot og gør præcist som deres navne siger: initialisere systemet, slukker systemet og genstarter systemet.

De brugerdefinerede runlevels er disse med en ledsagende /etc/runlevels underbibliotek: boot, default, nonetwork og single. boot-runlevel starter alle system-nødvendige tjenester, som alle andre runlevels bruger. De resterende tre runlevels er forskellige i hvilke tjenester, de starter: default er brugt til dagsoperationer, nonetwork er brugt i det tilfælde, hvor ingen netværksaktivitet er krævet, og single er brugt til når du skal reparere systemet.

Arbejde med init-scripts

De scripts, som rc-processen starter, er kaldet init scripts. Hver script i /etc/init.d kan blive kørt med disse parametre start, stop, restart, pause, zap, status, ineed, iuse, needsme, usesme eller broken.

For at starte, stoppe eller genstarte en tjeneste (og alle afhængige tjenester), skal start, stop og restart bruges:

Kode oversigt 1.6: Start af Postfix

# /etc/init.d/postfix start

Bemærk: Kun de tjenester, som kræver at den givne tjeneste er stoppet eller genstartet. De andre afhængige tjenester (dem som bruger tjenesten, men ikke kræver den) er ladt uberørt.

Hvis du vil stoppe en tjeneste, men ikke tjenester der afhænger af den, kan du bruge pause parameteren:

Kode oversigt 1.7: Stop af Postfix, men lad de afhængige tjenester blive kørende

# /etc/init.d/postfix pause

Hvis du vil se hvilken status en tjeneste har (startet, stoppet, pause, ...), kan du bruge status parameteren:

Kode oversigt 1.8: Statusinformation for postfix

# /etc/init.d/postfix status

Hvis statusinformationen fortæller dig, at tjenesten kører, men du ikke ved om den gør det, kan du tilbagestille statusinformationen til "stoppet" med zap-parameteren:

Kode oversigt 1.9: Tilbagestille statusinformation for postfix

# /etc/init.d/postfix zap

For at spørge hvilke afhængigheder tjenesterne har, kan du bruge iuse eller ineed. Med ineed kan du se hvilke tjenester, som er virkelige nødvendige for den korrekte funktionsbestemte metode af en tjeneste. iuse på den anden side, viser at tjenester, som er brugt af tjenesten, men ikke nødvendigvis for den korrekte funktionalitet.

Kode oversigt 1.10: Kræve en liste af alle nødvendige tjenester, som Postfix afhænger

# /etc/init.d/postfix ineed

Lige sådan kan du spørge hvilke tjenester kræver tjenesten (needsme) eller den kan bruge (usesme):

Kode oversigt 1.11: Kræve en liste af alle tjenester, som kræver Postfix

# /etc/init.d/postfix needsme

Til sidst, kan du spørge hvilke afhængigheder, som tjenesten kræver, men som mangler:

Kode oversigt 1.12: Kræve en liste over manglende afhængigheder for Postfix

# /etc/init.d/postfix broken

4.b. Arbejde med rc-update

Hvad er rc-update?

Gentoos initsystem bruger et afhængighedstræ, som beslutter hvilke tjenester, som behøver at blive startet først. Da dette er en kedelig opgave, som vi ikke vil have at vores brugere skal gøre manuelt, har vi lavet værktøjer, som gør det lettere for administrationen af runlevels og init-scripts.

Med rc-update kan du tilføje og fjerne init-scripts til en runlevel. rc-update-værktøjet vil så automatisk spørge for depscan.sh-scriptet for at genbygge afhængighedstræet.

Tilføje og fjerne tjenester

Du har allerede tilføjet init-scripts til "default" runlevel igennem installation af Gentoo. På dette tidspunkt har du måske ikke haft en forståelse for hvad "default" er til for, men nu burde du. rc-update-scriptet kræver en anden parameter, som definerer aktiviteten: add (tilføj), del (slet) eller show (vis).

For at tilføje eller fjerne et init-script, skal du blot give rc-update add eller del parameteren, fulgt af init-scriptet og runlevel. F.eks.:

Kode oversigt 2.1: Fjernelse af Postfix fra default runlevel

# rc-update del postfix default

rc-update show kommandoen vil vise de tilgængelige init-scripts og vise en liste fra hvilke runlevels, de vil køre:

Kode oversigt 2.2: Modtagelse af init-script informationer

# rc-update show

4.c. Opsætning af tjenester

Hvorfor er det nødvendigt at opsætte ekstra?

Init-scripts kan være pænt komplekse. Det er derfor ikke interessant at have brugere til at redigere direkte i init-scripts, da det kunne skabe flere fejl. Det er dog vigtigt at kunne opsætte sådan en tjeneste. F.eks. vil du ønske at give flere muligheder til tjenesten selv.

En anden grund er at have denne opsætning udenfor init-script, er at kunne opdatere init-scripts uden at skulle være bange for at dine opsætningsændringer bliver overskrevet.

/etc/conf.d biblioteket

Gentoo leverer en let metode for at opsætte sådan en tjeneste: hver init-script som kan blive opsat, har en fil i /etc/conf.d. F.eks. har apache2s initscript (kaldet /etc/init.d/apache2) en opsætningsfil, kaldet /etc/conf.d/apache2, hvilket indeholder de indstillinger, som du vil sætte til Apache 2 serveren, når den er startet:

Kode oversigt 3.1: Variabler defineret i /etc/conf.d/apache2

APACHE2_OPTS="-D PHP4"

Sådan en opsætningsfil inderholder variabler og kun variabler (lige som /etc/make.conf), som gør det meget let at opsætte tjenester. Det tillader os at levere flere informationer omkring variablerne (som kommentarer).

4.d. Skrive init-scripts

Skal jeg gøre det?

Nej. At skrive et init-script er normalt ikke nødvendigt, idet Gentoo leverer klar-til-brug init-scripts til alle leverede tjenester. Dog, du har måske installeret en tjeneste, uden at bruge Portage, hvilket betyder at du i de fleste tilfælde skal oprette et init-script.

Brug ikke init-script leveret til tjenesten, hvis den ikke er eksklusivt skrevet til Gentoo: Gentoos init-scripts er ikke kompatibel med de init-scripts brugt af de andre distributioner!

Layout

Basislayoutet af en init-script er vist nedenfor.

Kode oversigt 4.1: Basislayout af en init-script

#!/sbin/runscript

depend() {
  (Afhængighedsinformation)
}

start() {
  (Kommandoer nødvendige for at starte tjenesten)
}

stop() {
  (Kommandoer nødvendige for at stoppe tjenesten)
}

restart() {
  (Kommandoer nødvendige for at genstarte tjenesten)
}

Enhver init-script kræver start() funktionen til at blive defineret. Alle andre sektioner er valgbare.

Afhængigheder

Der er to afhængigheder, som du kan definere: use og need. Som vi har fortalt før, er need-afhængigheden mere strikt end use-afhængigheden. Ved at følge denne afhængighedstype, får du den tjeneste du behøver, eller den virtuelle-afhængighed.

En virtuel afhængighed er en afhængighed, som en tjeneste leverer, men den er ikke kun leveret af denne tjeneste. Dit init-script kan være afhængigt af en systemlogning, men der er mange systemloggere at vælge imellem (metalogd, syslog-ng, sysklogd, ...). Da du ikke kan mangle enhver af dem (intet normalt system har alle disse systemloggere installeret og kørende) vil sørge for at alle disse tjenester leverer en virtuel afhængighed.

Lad os tage et kig på afhængighedsinformationerne for postfix-tjenesten.

Kode oversigt 4.2: Afhængighedsinformationer for Postfix

depend() {
  need net
  use logger dns
  provide mta
}

Som du kan se, postfix-tjenesten

  • kræver (virtuel) net-afhængigheden (som er sørget for, f.eks. /etc/init.d/net.eth0)
  • bruger (virtuel) logger-afhængigheden (som er sørget for, f.eks. /etc/init.d/syslog-ng)
  • bruger (virtuel) dns-afhængigheden (som er sørget for, f.eks. /etc/init.d/named)
  • sørger for (virtuel) mta-afhængighed (som er brugt normalt af alle mail-servere)

Kontrol over rækkefølgen

I nogle tilfælde, kræver du ikke en tjeneste, men ønsker at din tjeneste bliver startet før (eller efter) en anden tjeneste hvis den er tilgængelig på systemet (noter betingelsen - det er ikke en afhængighed længere) og kører i samme runlevel (noter betingelsen - kun tjenester i samme runlevel er involveret). Du kan sørge for denne information ved at bruge before- (før) eller after- (efter) indstillingerne.

Som et eksempel, vil vi se på indstillingerne til Portmap-tjenesten:

Kode oversigt 4.3: depend()-funktionen i Portmap-tjenesten

depend() {
  need net
  before inetd
  before xinetd
}

Du kan også bruge "*" til at fange alle tjenester i samme runlevel, dog er det ikke tilrådeligt.

Kode oversigt 4.4: Kørsel af init-script, som den første script i runlevel'en

depend() {
  before *
}

Standardfunktioner

Lige efter depend()-funktionaliteten, behøver du også at definere start()-funktionen. Denne indeholder alle de kommandoer, som er nødvendige for at initialisere din tjeneste. Det er tilrådeligt at bruge ebegin og eend funktionerne for at informere brugeren om hvad der sker:

Kode oversigt 4.5: Eksempel start()-funktionen

start() {
  ebegin "Start af min tjeneste"
  start-stop-daemon --start --quiet --exec /path/to/my_service
  eend $?
}

Hvis du vil have flere eksempler af start()-funktionen, læs venligt kildekoden til de tilgængelige init-scripts i dit /etc/init.d-bibliotek. Som til start-stop-daemon, er der en udemærket man-side tilrådighed, hvis du behøver flere informationer:

Kode oversigt 4.6: man-side til start-stop-daemon

# man start-stop-daemon

Andre funktioner, som du kan definere er: stop() og restart(). Du er ikke tvunget til at definere disse funktioner! Vores initsystem er intelligent nok til at udfylde disse funktioner selv, hvis du bruger start-stop-daemon.

Gentoos opstartsscript-syntaks er baseret på Bourne Again Shell (bash), så du kan frit bruge bash-kompatible konstruktioner inden i dine opstartsscripts.

Tilføje skræddersyede indstillinger

Hvis du vil have dit init-script til at understøtte flere indstillinger, end dem vi allerede har vist dig, bør du tilføje disse indstillinger i opts-variabelen, og oprette en funktion med samme navn som indstillingen. F.eks. for at understøtte en valgmulighed kaldet restartdelay:

Kode oversigt 4.7: Understøttelse af restartdelay-valgmuligheden

opts="${opts} restartdelay"

restartdelay() {
  stop
  sleep 3    # Vent 3 sekunder før der startes igen
  start
}

Tjenestens opsætningsvariabler

Du behøver ikke at gøre noget for at understøtte en opsætningsfil i /etc/conf.d: hvis dit init-script er startet, vil følgende filer automatisk blive til kilder (dvs. variablerne er tilgængeligt til brug):

  • /etc/conf.d/<dit init-script>
  • /etc/conf.d/basic
  • /etc/rc.conf

Også, hvis dit init-script sørger for en virtuel afhængighed (som net), vil filen blive, associeret med den afhængighed (som /etc/conf.d/net), også blive til kilder.

4.e. Ændring af runlevel'ens adfærd

Hvem kan drage nytte af dette?

Mange bærbar-brugere kender situationen: når du er hjemme og skal starte net.eth0 og når du er på vejen vil du ikke starte net.eth0 (idet der ikke er noget netværk tilgængeligt). Med Gentoo kan du ændre runlevel-adfærd til din egen fordel.

F.eks. kan du oprette en anden "default" runlevel, som du kan starte og indeholder andre initscripts fastsat til det. Du kan så vælge ved opstart, hvilken "default" runlevel du vil bruge.

Brug af softlevel

Først af alt, opret runlevel-mappen til din anden "default" runlevel. Som et eksempel opretter vi offline runlevel:

Kode oversigt 5.1: Oprettelse af runlevel-mappe

# mkdir /etc/runlevels/offline

Tilføj de nødvendige initscripts til dine nyoprettede runlevels. F.eks. hvis du vil have en eksakt kopi af din nuværende default runlevel, men uden net.eth0:

Kode oversigt 5.2: Tilføjelse af nødvendige initscripts

(Kopier alle services fra standard runlevel til offline runlevel)
# ls /etc/runlevels/default
# for service in *; do rc-update add $service offline; done
(Fjern uønskede services fra offline runlevel)
# rc-update del net.eth0 offline
(Vise aktive services i offline runlevel)
# rc-update show offline
(Delvis udsnit af output)
               acpid | offline
          domainname | offline
               local | offline
            net.eth0 |

Rediger nu din boot-loader opsætning og tilføj en ny post til offline runlevel'en. F.eks. i /boot/grub/grub.conf:

Kode oversigt 5.3: Tilføjelse af post til offline runlevel'en

title Gentoo Linux Offline Usage
  root (hd0,0)
  kernel (hd0,0)/kernel-2.4.25 root=/dev/hda3 softlevel=offline

Voilà, nu er alt klart. Hvis du starter dit system op og vælger den nyoprettede post, vil offline runlevel'en blive brugt i stedet for default.

Brug af bootlevel

Brug af bootlevel er komplet i overenstemmelse med softlevel. Den eneste forskel her er at du definerer en anden "boot" runlevel i stedet for en anden "default" runlevel.

5. Miljø-variabler

5.a. Miljø-variabler?

Hvad de er

En miljø-variabel er et navngivent objekt, der inderholder informationer, som bliver benyttet af en eller flere applikationer. Mange brugere (specielt dem der er nye i Linux) finder det en smule mærkeligt eller uhåndterligt. Dette er dog en fejltagelse; ved at bruge miljø-variabler, kan man let skifte en indstilling for en eller flere applikationer.

Vigtige eksempler

Den følgende tabel viser en række af variabler, der benyttes af et Linux system og beskriver deres brug. Eksempelværdier er præsenteret efter tabellen.

Variabel Beskrivelse
PATH Denne variabel indeholder en kolonsepareret liste over mapper, som dit system leder i efter eksekverbare filer. Hvis du indtaster et navn på en eksekverbar fil (som f.eks. ls, rc-update eller emerge), og denne fil ikke er placeret i en af de oplistede mapper, vil dit system ikke eksekvere den (medmindre du angiver den fulde sti som kommando, f.eks. /bin/ls).
ROOTPATH Denne variabel har samme funktion som PATH, men denne bestemmer kun hvilke mapper, som skal tjekkes når root-brugeren indtaster en kommando.
LDPATH Denne variabel indeholder en kolonsepareret liste over mapper, som den 'dynamiske linker' søger igennem, for at finde et bibliotek.
MANPATH Denne variabel indeholder en kolonsepareret liste over mapper, som kommandoen man søger i, efter man-siderne.
INFODIR Denne variabel indeholder en kolonsepareret liste over mapper, som kommandoen info søger i, efter info-siderne.
PAGER Denne variabel indeholder stien til det program, der benyttes til at vise indholdet af en fil med (som f.eks. less eller more).
EDITOR Denne variabel indeholder stien til det program, der benyttes til at ændre indholdet af filer med (som f.eks. nano eller vi).
KDEDIRS Denne variabel indeholder en kolonsepareret liste over mapper, som indeholder KDE-specifikt materiale.
CLASSPATH Denne variabel indeholder en kolonsepareret liste over mapper, som indeholder Java-klasser.
CONFIG_PROTECT Denne variabel indeholder en mellemrums-adskilt liste over mapper, der skal beskyttes af Portage under opdateringer.
CONFIG_PROTECT_MASK Denne variabel indeholder en mellemrums-adskilt liste over mapper, der ikke skal beskyttes af Portage under opdateringer.

Nedenfor finder du et eksempel af en definition af alle disse variabler:

Kode oversigt 1.1: Eksempeldefinitioner

PATH="/bin:/usr/bin:/usr/local/bin:/opt/bin:/usr/games/bin"
ROOTPATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin"
LDPATH="/lib:/usr/lib:/usr/local/lib:/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3"
MANPATH="/usr/share/man:/usr/local/share/man"
INFODIR="/usr/share/info:/usr/local/share/info"
PAGER="/usr/bin/less"
EDITOR="/usr/bin/vim"
KDEDIRS="/usr"
CLASSPATH="/opt/blackdown-jre-1.4.1/lib/rt.jar:."
CONFIG_PROTECT="/usr/X11R6/lib/X11/xkb /opt/tomcat/conf \
                /usr/kde/3.1/share/config /usr/share/texmf/tex/generic/config/ \
                /usr/share/texmf/tex/platex/config/ /usr/share/config"
CONFIG_PROTECT_MASK="/etc/gconf"

5.b. Definition af variabler globalt

Mappen /etc/env.d

For at centralisere definitionerne af disse variable, introducerer Gentoo mappen /etc/env.d. I denne mappe finder du en række af filer, som 00basic, 05gcc etc., der indeholder variablerne som applikationernes filnavne antyder, har brug for.

Da du f.eks. installerede gcc, blev en fil kaldet 05gcc oprettet, af den ebuild, der indeholder definitionerne på de følgende variabler:

Kode oversigt 2.1: /etc/env.d/05gcc

PATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2"
ROOTPATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2"
MANPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/man"
INFOPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/info"
CC="gcc"
CXX="g++"
LDPATH="/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3"

Andre distributioner vil fortælle dig, at du skal ændre eller tilføje sådanne miljø-variabeldefinitioner i /etc/profile eller andre steder. Gentoo gør på den anden side det let for dig (og for Portage), at vedligeholde og administrere miljø-variablerne uden at skulle lægge mærke til rækken af filer, der kan indeholde miljø-variabler.

Når f.eks. gcc bliver opdateret, bliver filen /etc/env.d/05gcc også opdateret, uden at kræve nogen som helst interaktion fra brugeren.

Dette er ikke kun til fordel for Portage, men også for dig som bruger. Fra tid til anden kan du blive spurgt, om du vil sætte en bestemt miljøvariabel for hele systemet. Som et eksempel tager vi variablen http_proxy. I stedet for at rode med /etc/profile, kan du nu oprette en fil (/etc/env.d/99local) og indtaste din(e) definition(er) i den:

Kode oversigt 2.2: /etc/env.d/99local

http_proxy="proxy.server.com:8080"

Ved at benytte samme fil til alle dine variabler, har du et hurtigt overblik over de variabler, du har defineret selv.

Scriptet env-update

Flere filer i /etc/env.d definerer variablen PATH. Dette er ikke forkert; når du kører env-update, vil det tilføje de flere definitioner før den opdaterer miljø-variablerne, og gør det dermed nemmere for pakker (eller brugere) at tilføje deres egen opsætning af miljø-variablerne, uden at forstyrre de allerede eksisterende værdier.

Scriptet env-update vil tilføje værdierne i den alfabetiske rækkefølge af /etc/env.d filerne. Dette er årsagen til mange af filerne i /etc/env.d begynder med et nummer.

Kode oversigt 2.3: Opdateringsrækkefølge benyttet af env-update

         00basic        99kde-env       99local
     +-------------+----------------+-------------+
PATH="/bin:/usr/bin:/usr/kde/3.2/bin:/usr/local/bin"

Sammenkædningen af variabler sker ikke altid, kun med de følgende variabler: KDEDIRS, PATH, CLASSPATH, LDPATH, MANPATH, INFODIR, INFOPATH, ROOTPATH, CONFIG_PROTECT, CONFIG_PROTECT_MASK, PRELINK_PATH og PRELINK_PATH_MASK. For alle andre variabler, er sidste nye defineret værdi (i alfabetisk orden af filer i /etc/env.d) brugt.

Når du kører env-update, vil scriptet automatisk oprette alle miljøvariablerne og placere dem i /etc/profile.env (som er brugt af /etc/profile). Det vil også trække informationen ud fra variablen LDPATH, og bruge den til at oprette /etc/ld.so.conf. Efter dette, vil det køre ldconfig for at genskabe filen /etc/ld.so.cache, der benyttes af den 'dynamiske linker'.

Hvis du vil se effekten af env-update straks efter du har kørt det, kør den følgende kommando for at opdatere dit miljø. Brugere, der selv har installeret Gentoo, vil sikkert huske dette fra installationsinstruktionerne:

Kode oversigt 2.4: Opdatering af miljøet

# env-update && source /etc/profile

Bemærk: Ovenstående kommando opdaterer kun variabler i din nuværende terminal, nye konsoller og deres børn. Derfor, hvis du arbejder i X11, skal du enten indtaste source /etc/profile i hver ny terminal, du åbner eller genstarte X, så alle nye terminaler henter kilden fra de nye variabler. Hvis du bruger en loginhåndtering, gå root og indtast /etc/init.d/xdm restart. Hvis ikke, skal du logge ud og logge ind igen for at X kan spawne børn med de nye variabelværdier.

5.c. Definering af variabler lokalt

Brugerspecifikt

Det er ikke altid, du vil definere dine miljø-variabler globalt. F.eks. har du måske lyst til at tilføje /home/min_bruger/bin til variablen PATH, men du vil ikke have, at alle andre brugere på dit system også skal have det i deres PATH. Hvis du vil definere en miljøvariabel lokalt, skal du bruge ~/.bashrc eller ~/.bash_profile:

Kode oversigt 3.1: Udvidelse af PATH til lokalt brug i ~/.bashrc

PATH="${PATH}:/home/min_bruger/bin"

Når du logger ind igen, vil variablen PATH være opdateret.

Sessionsspecifikt

Nogle gange er der behov for endnu strengere definitioner. Du vil måske gerne være i stand til at benytte binære filer fra en midlertidigt mappe, som du har oprettet, uden at bruge stien til de binære filer, eller ændre i ~/.bashrc til den korte tid, du har brug for den.

I sådant et tilfælde kan du blot definere variablen PATH i din nuværende session, ved at bruge kommandoen export. Så længe du ikke logger ud, vil variablen PATH bruge de midlertidige indstillinger.

Kode oversigt 3.2: Definering af en sessionsspecifik miljø-variabel

# export PATH="${PATH}:/home/my_user/tmp/usr/bin"

C. At arbejde med Portage

1. Filer og biblioteker

1.a. Portage-filer

Opsætningsdirektiver

Portage kommer med en standardopsætning gemt i /etc/make.globals. Når du kigger i den, vil du lægge mærke til at alt Portage-opsætning er håndteret igennem variabler. Hvilke variabler Portage lytter til og hvad de betyder, bliver beskrevet senere.

Siden mange opsætningsdirektiver er forskellige imellem arkitekturer, har Portage også standardopsætningsfiler som er en del af din profil. Din profil bliver peget på af /etc/make.profile symlinket; Portages opsætninger bliver sat i make.defaults filerne i din profil og alle parent profiler. Vi vil forklare mere omkring profiler og /etc/make.profile-folderen senere.

Hvis du planlægger at ændre en opsætningsvariabel, skal du ikke ændre /etc/make.globals eller make.defaults. I stedet for, brug /etc/make.conf, som har forrang over de andre tidligere nævnte filer. Du vil også finde en /etc/make.conf.example. Som navnet fortæller, er den ment som et eksempel - Portage læser ikke i denne fil.

Du kan også definere en Portage-opsætningsvariabel som en miljøvariabel, men vi anbefaler det ikke.

Profil-specifikke informationer

Vi har allerede mødt /etc/make.profile-folderen. Nå, men det er faktisk ikke en folder, men en symbolsk henvisning til en profil, der som standard er en inde fra /usr/portage/profiles. Du kan dog oprette dine egne profiler et andet sted og pege til dem. Profilen, som det symbolske link peger på, er den profil dit system tilhører.

En profil indeholder arkitektur-specifikke informationer til Portage, f.eks. en liste af pakker der passer til systemet i sammenhæng med en profil, en liste af pakker, som ikke virker (eller er maskeret) etc.

Bruger-specifik opsætning

Når du ønsker at overskrive Portages egenskaber, i forhold til installationen af software, skal du redigere filer inde i /etc/portage. Du er virkelig anbefalet til at bruge filer inde i /etc/portage og virkelig afskrækket til at overskrive egenskaben igennem miljø-variabler!

Inde i /etc/portage kan du oprette følgende filer:

  • package.mask, som er en liste over pakker du aldrig ønsker Portage at installere
  • package.unmask, som er en liste over pakker, som du vil have mulighed for at installere, selvom Gentoo-udviklere virkeligt afskrækker dig fra at emerge dem
  • package.keywords, som er en liste over pakker, som du vil have mulighed for at installere, selvom denne pakke ikke er fundet muligt til dit system eller arkitektur (endnu)
  • package.use, som er en liste over USE-flag, som du vil bruge til specifikke pakker, uden at hele systemet bruger disse USE-flag

Flere informationer omkring /etc/portage-folderen og en fuldstændig liste af mulige filer du kan oprette, kan blive fundet i Portages man-sider:

Kode oversigt 1.1: Læsning af Portages man-sider

$ man portage

Ændring af Portage-filer og placering af foldere

De tidligere nævnte opsætningsfiler kan ikke blive gemt et andet sted - Portage vil altid kigge efter disse opsætningsfiler i deres eksakte placering. Portage bruger dog mange andre steder til forskellige formål: bygge-folder, kildekode-lager, Portage-træets placering ...

Alle disse hensigter er velkendte placeringer, men kan ændres til din egen smag igennem /etc/make.conf. Resten af dette kapitel forklarer hvilke special-hensigt-placeringer, Portage bruger, og hvordan man ændrer deres placering på dit filsystem.

Dette dokument er dog ikke ment til at bruges som reference. Hvis du vil have 100% dækning, læs venligst Portages og make.confs man-sider:

Kode oversigt 1.2: Læsning af Portages og make.conf's man-sider

$ man portage
$ man make.conf

1.b. Lagring af filer

Portage-træet

Portage-træets standardplacering er /usr/portage. Dette er defineret ved PORTDIR-variablen. Når du gemmer Portage-træet et andet sted (ved at ændre denne variabel), så glem ikke at ændre /etc/make.profiles symbolske henvisning imens.

Hvis du ændrer PORTDIR-variablen, bør du også ændre følgende variabler, idet de ikke vil notere PORTDIRs ændring. Dette er pga. hvordan Portage håndterer variabler: PKGDIR, DISTDIR, RPMDIR.

Præ-byggede binære filer

Selvom Portage ikke bruger præ-byggede binære filer som standard, er der stor understøttelse for dem. Når du beder Portage om at arbejde med præ-bygget pakker, vil den kigge efter dem i /usr/portage/packages. Denne placering er defineret ved PKGDIR-variablen.

Kildekode

Programmernes kildekoder er gemt i /usr/portage/distfiles som standard. Denne placering er defineret af DISTDIR-variablen.

RPM-filer

Selvom Portage ikke bruger RPM-filer, er det muligt at generere disse ved brug af ebuild-kommandoen (se Ebuild-programmet). Standard-placeringen, hvor Portage gemmer RPM-filer er /usr/portage/rpm og er defineret af RPMDIR-variablen.

Portage Database

Portage gemmer status på dit system (hvilke pakker der er installeret, hvilke filer der tilhører hvilken pakke osv.) i /var/db/pkg. Ændre ikke disse filer manuelt! Dette vil ødelægge Portages kendskab til dit system.

Portage midlertidige filer

Portages midlertidige filer (med modifikationstid, virtuelle, afhængighedstræ informationer osv.) er gemt i /var/cache/edb. Denne placering er virkelig midlertidig: du kan rense den, hvis du ikke kører nogen portage-relaterede programmer på dette tidspunkt.

1.c. Bygning af software

Midlertidige Portage-filer

Portages midlertidige filer er gemt i /var/tmp som standard. Dette er defineret ved PORTAGE_TMPDIR-variablen.

Hvis du ændrer PORTAGE_TMPDIR-variablen, bør du også ændre de følgende variabler, idet de ikke vil notere PORTAGE_TMPDIR-ændringen. Dette er pga. hvordan Portage håndterer variablen: BUILD_PREFIX.

Bygge-folderen

Portage opretter en specifik folder til bygning af hver pakke den emerger, i /var/tmp/portage. Denne placering er defineret af BUILD_PREFIX-variablen.

Direkte filsystems placering

Som standard installerer Portage alle filer i det nuværende filsystem (/), men du kan ændre dette ved sætte ROOT-miljøvariablen. Dette er brugbart, når du vil skabe nye bygge-billedfiler.

1.d. Logningsegenskaber

Ebuild log

Portage kan oprette logfiler for hver ebuild, men kun, når PORT_LOGDIR-variablen er sat til en placering, som kan skrives af Portage (portage-brugeren). Som standard er denne variabel ikke aktiveret.

2. Opsætning gennem variabler

2.a. Opsætning af Portage

Som noteret førhen, er Portage opsætbar igennem variabler, som du bør definere i /etc/make.conf. Læs venligst make.confs man-sider for flere og dybdegående informationer:

Kode oversigt 1.1: At læse make.confs man-sider

$ man make.conf

2.b. Bygge-specifikke valgmuligheder

Opsætning og samlingsvalgmuligheder

Når Portage bygger programmer, flytter den indholdet af de følgende variabler til kompileren og opsætningsscriptet:

  • CFLAGS og CXXFLAGS definerer de ønskede kompiler-flag til C og C++ kompilering
  • CHOST definerer bygningsværtens informationer til programmets opsætningsscript
  • MAKEOPTS bliver flyttet til make-kommandoen og er normalt sat til at definere antallet af parallelisme brugt igennem kompilering. Flere informationer omkring make-valgmuligheder kan blive fundet i make's man-sider.

USE-variablen er også brugt igennem opsætningen og kompileringen, men er blevet forklaret i mange detaljer i de foregående kapitler.

Merge valgmuligheder

Når Portage har emerget en nyere version af en specifik softwaretitel, vil den fjerne de udgåede filer fra gamle versioner på dit system. Portage giver brugeren en 5-sekunders udsættelse, før den afmerger den gamle version. Disse 5 sekunder er defineret af CLEAN_DELAY-variablen.

2.c. Opsætningsfilbeskyttelse

Portages beskyttede placeringer

Portage overskriver filer, som er leveret af nyere versioner af en softwaretitel, hvis filerne ikke er gemt i et beskyttet område. Disse beskyttede placeringer er defineret af CONFIG_PROTECT-variablen og er generelt opsætningsfilsplaceringer. Bibliotekslisten er mellemrums-afgrænset.

En fil, som ville blive skrevet i sådan en beskyttet placering er omdøbt og brugeren er advaret om en nyere eksisterende version af den givne opsætningsfil.

Du kan få mere at vide omkring den nuværende CONFIG_PROTECT-indstilling fra emerge --info outputtet:

Kode oversigt 3.1: Få CONFIG_PROTECT-indstillingen

$ emerge --info | grep 'CONFIG_PROTECT='

Flere informationer omkring Portages opsætningsfilbeskyttelse er tilgængeligt igennem emerge:

Kode oversigt 3.2: Flere informationer omkring opsætningsfilbeskyttelse

$ emerge --help config

At udelukke foldere

For at 'afbeskytte' specifikke underfoldere af beskyttede placeringer kan du bruge CONFIG_PROTECT_MASK-variablen.

2.d. Valgmuligheder af hentning

Server-placeringer

Når de forespurgte informationer eller data ikke er tilgængelige på dit system, vil Portage hente det fra Internettet. Server-placeringerne til de forskellige informationer og data-kanaler er defineret af de følgende variabler:

  • GENTOO_MIRRORS definerer en liste af server-placeringer, som indeholder kildekoder (distfiles)
  • PORTAGE_BINHOST definerer en specifik server-placering, som indeholder præ-byggede pakker til dit system

En tredje indstilling involverer placeringen af rsync-serveren, som du kan bruge, når du opdaterer dit Portage-træ:

  • SYNC definerer en specifik server, som Portage bruger til at fange Portage-træet fra

GENTOO_MIRRORS- og SYNC-variablerne kan blive indstillet automatisk igennem mirrorselect-programmet. Du skal først emerge mirrorselect før du kan bruge den. For flere informationer, se mirrorselects onlinehjælp:

Kode oversigt 4.1: Flere informationer om mirrorselect

# mirrorselect --help

Hvis dit miljø kræver at du bruger en proxy-server, kan du bruge HTTP_PROXY-, FTP_PROXY- og RSYNC_PROXY-variablerne til at erklære en proxy-server.

Fangst-kommandoer

Når Portage skal fange kildekoder, bruger den wget som standard. Du kan ændre dette igennem FETCHCOMMAND-variablen.

Portage har mulighed for at genoptage hentningen af delvist hentet kildekode. Den bruger wget som standard, men dette kan blive ændret igennem RESUMECOMMAND-variablen.

Vær sikker at dine FETCHCOMMAND og RESUMECOMMAND gemmer kildekoderne i den rigtige placering. Inde i variablerne bør du bruge \${URI} og \${DISTDIR} for at pege til henholdsvis kildekodernes placering og distfiles-placering.

Du kan også definere protokol-specifikke håndteringer med FETCHCOMMAND_HTTP, FETCHCOMMAND_FTP, RESUMECOMMAND_HTTP, RESUMECOMMAND_FTP osv.

Rsync-indstillinger

Du kan ikke ændre rsync-kommandoen, som Portage bruger til at opdatere Portage-træet, men du kan indstille nogle variabler, der er relateret til rsync-kommandoen:

  • RSYNC_EXCLUDEFROM peger på en fil, som har en liste over de pakker og/eller kategorier som rsync bør ignorere igennem opdateringsprocessen.
  • RSYNC_RETRIES definerer hvor mange gange rsync bør prøve at forbinde til mirror peget på igennem SYNC-variablen før den opgiver. Denne variabel er indstillet som standard til 3.
  • RSYNC_TIMEOUT definerer antallet af sekunder en rsync-forbindelse er død før rsync ser en forbindelse som timed-out. Denne variabel er indstillet som standard til 180, men opkaldsbrugere eller folk med langsomme computere bør nok indstille denne til 300 eller højere.

2.e. Gentoo-opsætning

Software gren valg

Du kan ændre din standard-gren med ACCEPT_KEYWORDS-variablen. Den er som standard sat til din arkitekturs stabile gren. Flere informationer omkring Gentoos grene kan blive fundet i næste kapitel.

Portages egenskaber

Du kan aktivere specifikke egenskaber til Portage igennem FEATURES-variablen. Portages egenskaber blev diskuteret i tidligere kapitler, som f.eks. Portages egenskaber.

2.f. Portages adfærd

Ressourcehåndtering

Med PORTAGE_NICENESS-variablen kan du forstørre eller formindske nice-værdien Portage kører med. PORTAGE_NICENESS-værdien er tilføjet til den nuværende nice-værdi.

For flere informationer omkring nice-værdier, se nices man-sider:

Kode oversigt 6.1: Flere informationer om nice

$ man nice

Output-adfærd

NOCOLOR, som standard er sat til "false", definerer om Portage bør deaktivere brugen af farvet output.

3. At blande software grene

3.a. Brug af software-grene

Den stabile gren

ACCEPT_KEYWORDS-variablen definerer hvilken software-gren, som du bruger på dit system. Den er som standard sat til den stabile software-gren til din arkitektur, f.eks. x86.

Vi anbefaler at du kun bruger den stabile gren. Hvis du dog ikke har en stor interesse i stabilitet og du vil hjælpe Gentoo ved at sende fejlrapporter til http://bugs.gentoo.org, så kan du læse videre.

Test-grenen

Hvis du vil bruge nyere software, kan du prøve at bruge test-grenen i stedet for. For at få Portage til at bruge test-grenen, tilføj en ~ foran din arkitektur.

Test-grenen er præcis, som den selv hedder - Test. Hvis en pakker er i test, betyder det at udviklerne mener at den er funktionel, men den er ikke blevet testet nok. Du kan dog være den første der finder en specifik fejl i pakken, hvor du bør indsende en fejlrapport for at udviklerne ved om det.

For f.eks. at vælge test-grenen til x86-arkitekturen, rediger /etc/make.conf og skriv:

Kode oversigt 1.1: Indstilling af ACCEPT_KEYWORDS-variabelen

ACCEPT_KEYWORDS="~x86"

Hvis du opdaterer dit system nu, vil du finde ud af at der er masser af pakker, som skal opdateres. Husk dog: når du har opdateret dit system til at bruge test-grenen, er der normalt ikke nogen let metode at gå tilbage til en stabil, officiel gren (selvfølgelig undtagen ved brug af backup).

3.b. Blanding af stabil og test-gren

package.keywords-filen

Du kan altid få Portage til at tillade test-gren til specifikke pakker og stadig bruge den stabile gren til resten af systemet. For at gøre dette, tilføj pakke-kategori og -navn, som du vil bruge til test-grenen i /etc/portage/package.keywords. F.eks. for at bruge test-grenen til gnumeric:

Kode oversigt 2.1: /etc/portage/package.keywords indstilling til gnumeric, fuldstændig linie

app-office/gnumeric ~x86

Test af specifikke versioner

Hvis du ønsker at bruge en specifik software-version fra test-grenen, men du ikke ønsker at Portage bruger test-grenen til underliggende versioner, kan du tilføje versionen i package.keywords-filen. I dette tilfælde, skal du bruge =. Du kan også skrive en versionsmængde ved brug af <=, <, > eller >=.

I alle tilfælde, hvis du tilføjer versionsinformationer, skal du bruge sådan et tegn. Hvis du ikke bruger versionsinformationer, kan du ikke bruge sådan et tegn.

I det følgende eksempel, spørger vi Portage om at acceptere gnumeric-1.2.13:

Kode oversigt 2.2: Aktivering af en specifik gnumeric-version

=app-office/gnumeric-1.2.13 ~x86

3.c. Brug af maskerede pakker

package.unmask-filen

Gentoo-udviklere har ikke support på brugen af disse filer. Brug venligst forsigtighed, når du prøver at udnytte dette. Supportkrav relateret til package.unmask og/eller package.mask vil ikke blive besvaret. Du er blevet advaret.

Hvis en pakke er markeret som maskeret af Gentoo-udviklere, og du stadigvæk ønsker at bruge denne, selvom du kender meningen med denne, som skrevet i package.mask-filen (placeret i /usr/portage/profiles som standard), tilføj den eksakt samme linie i /etc/portage/package.unmask.

F.eks. hvis =net-mail/hotwayd-0.8 er markeret, kan du afmaskere den ved at tilføje den eksakte samme linie i package.unmask-filen:

Kode oversigt 3.1: /etc/portage/package.unmask

=net-mail/hotwayd-0.8

package.mask-filen

Når du ikke ønsker at Portage tager en specifik pakke eller specifik version af en pakke i brug, kan du maskere den selv, ved at tilføje den tilsvarende linie i /etc/portage/package.mask.

Endnu et eksempel er hvis du ikke vil have at Portage installerer nyere kerne-kildekoder end gentoo-sources-2.6.8.1, kan du tilføje følgende linie til package.mask:

Kode oversigt 3.2: /etc/portage/package.mask eksempel

>sys-kernel/gentoo-sources-2.6.8.1

4. Flere Portage værktøjer

4.a. etc-update

etc-update er et værktøj som hjælper ved opdatering af ._cfg0000_<navn>-filer. Den leverer en interaktivt merge-opsætning og kan også auto-merge trivielle ændringer. ._cfg0000_<navn>-filer bliver generet af Portage når den vil gemme en fil i en folder beskyttet af CONFIG_PROTECT-variablen.

Kørsel af etc-update er pænt ligefrem:

Kode oversigt 1.1: Kørsel af etc-update

# etc-update

Efter en merge stopper det nemme, du vil nu få vist en liste over beskyttede filer, som venter på en opdatering. I bunden er du hilst af følgende muligheder:

Kode oversigt 1.2: etc-update valgmuligheder

Please select a file to edit by entering the corresponding number.
              (-1 to exit) (-3 to auto merge all remaining files)
                           (-5 to auto-merge AND not use 'mv -i'):

Hvis du taster -1, vil etc-update afslutte uden at have udført nogen ændringer. Hvis du taster -3 eller -5, vil alle listede opsætningsfiler blive overskrevet af nyere versioner. Det er derfor meget vigtigt at først vælge de opsætningsfiler, som ikke skal opdateres automatisk. Det er simpelthen et spørgsmål om at taste det nummer placeret til venstre ved opsætningsfilen.

Som et eksempel, vælg opsætningsfilen /etc/pear.conf:

Kode oversigt 1.3: Opdatering af en specifik opsætningsfil

Beginning of differences between /etc/pear.conf and /etc/._cfg0000_pear.conf
[...]
End of differences between /etc/pear.conf and /etc/._cfg0000_pear.conf
1) Replace original with update
2) Delete update, keeping original as is
3) Interactively merge original with update
4) Show differences again

Du kan nu se ændringerne imellem de to filer. Hvis du tror at den opdaterede opsætningsfil kan blive brugt uden problemer, tast 1. Hvis du mener at den opdaterede opsætningsfil ikke er nødvendig, eller ikke leverer noget nyt og brugbart, tast 2. Hvis du interaktivt vil opdatere din opsætningsfil, tast 3.

Der er ikke nogen grund til at fortsætte med at forklare den interaktive merge her. For helhedens skyld, vi vil vise en liste over de mulige kommandoer du kan bruge imens du interaktivt ordner de to filer. Du bliver hilst med to linier (den originale og det nye forslag) og en prompt, hvor du kan taste en af følgende kommandoer:

Kode oversigt 1.4: Kommandoer som er tilgængelige ved interaktiv merge

ed:     Rediger, så brug begge versioner, begge dekoreret med en header.
eb:     Rediger, så brug begge versioner.
el:     Rediger, så brug den venstre version.
er:     Rediger, så brug den højre version.
e:      Rediger den nye version.
l:      Brug den venstre version.
r:      Brug den højre version.
s:      I lille grad inkluder lignende linier.
v:      I stor grad inkluder lignende linier.
q:      Afslut.

Når du afsluttet opdateringen af vigtige opsætningsfiler, kan du nu opdatere resten af opsætningsfilerne automatisk. etc-update vil afslutte, hvis den ikke finder flere opdaterbare opsætningsfiler.

4.b. dispatch-conf

Ved brug af dispatch-conf kan du merge opdateringer til dine opsætningsfiler, imens du holder øje med ændringerne. dispatch-conf gemmer forskellene imellem opsætningsfilerne, som patches eller ved brug af RCS-revisionssystemet.

Ligesom etc-update, kan du spørge om beholde opsætningsfiler som de er, bruge den nye opsætningsfiler, redigere den nuværende og merge ændringer interaktivt. Dog har dispatch-conf også nogle yderligere spændende egenskaber:

  • Automatisk merge opsætningsfilsopdateringer, som kun indeholder opdateringer til kommentarer
  • Automatisk merge opsætningsfiler, som kun er forskelligt pga. 'luft' (whitespace).

Vær sikker på at du redigerer /etc/dispatch-conf.conf først og opretter folderen refereret ved archive-dir-variablen.

For flere informationer, tjek dispatch-conf man-siderne ud:

Kode oversigt 2.1: Læsning af dispatch-conf man-sider

$ man dispatch-conf

4.c. quickpkg

Med quickpkg kan du oprette arkiver af pakker, som allerede er merget på dit system. Disse arkiver kan blive brugt som præbyggede pakker. Kørsel af quickpkg er ligefrem: tilføj bare navnene på de pakker som du vil arkivere.

F.eks. for at arkivere curl, arts og procps:

Kode oversigt 3.1: Eksempel på brug af quickpkg

# quickpkg curl arts procps

De præbyggede pakker vil blive gemt i /usr/portage/packages/All. Symbolske henvisninger peger på disse pakker, som er i /usr/portage/packages/<kategori>.

5. Afvigelse fra det officielle træ

5.a. Brug af Portage-træets undersæt

Udelukkelse af pakker/kategorier

Du kan selektivt opdatere specifikke kategorier/pakker og ignorere de andre kategorier/pakker. Vi opnår dette ved at få rsync til at udelukke kategorier/pakker igennem emerge --sync-trinet.

Som standard vil rsync tjekke indholdet af /etc/portage/rsync_excludes (hvis den eksisterer), som indeholder de kategorier eller pakker, som du ikke ønsker at rsync opdaterer.

Noter dog at dette kan foranlede afhængighedsproblemer, idet nye tilladte pakker, kan afhænge af nye, men udelukkede pakker.

5.b. Tilføjelse af uofficielle Ebuilds

Definering af Portage Overlay Folderen

Du kan få Portage til at bruge ebuilds, som ikke officielt er tilgængelig igennem Portage-træet. Opret en ny folder (f.eks. /usr/local/portage), hvor du gemmer tredje-parts ebuilds. Brug samme folder-struktur, som i det officielle Portage-træ!

Så definer PORTDIR_OVERLAY i /etc/make.conf og få den til at pege på den sidstenævnte folder. Når du nu bruger Portage, vil den også tage disse ebuilds i brug, uden at fjerne/overskrive disse ebuilds næste gang, du kører emerge --sync.

5.c. Ikke-Portage håndteret software

Brug af Portage med selv-håndteret software

I nogle tilfælde vil du ønske at opsætte, installere og håndtere software selv, uden at have Portage til at automatisk lave processen for dig, selv endda når Portage kan levere disse softwaretitler. Kendte tilfælde er kerne-kildekoder og nvidia-drivere. Du kan opsætte Portage, så den ved at en specifik pakke er installeret manuelt på dit system. Denne proces er kaldet injecting og understøttet af Portage igennem /etc/portage/profile/package.provided-filen.

F.eks. hvis du vil infomere Portage om vanilla-sources-2.6.11.6, som du har manuelt installeret, tilføj den følgende linie til /etc/portage/profile/package.provided:

Kode oversigt 3.1: package.provided eksempel-linie

sys-kernel/vanilla-sources-2.6.11.6

6. Ebuild Applikationen

6.a. Emerge og Ebuild

ebuild-programmet er en low-level grænseflade til Portage systemet. Ved brug af dette program, kan du udføre specifikke handlinger til en given ebuild. F.eks. kan du udføre de individuelle merge-trin selv.

Brugen af ebuild er mere til udviklingsopgaver; flere informationer omkring ebuild kan derfor findes i Udviklernes håndbog (på engelsk). Dog, vil vi forklare hvilke instanser af en ebuild, der bliver påkaldt af Portage igennem emerge-processen for en specifik softwaretitel og hvordan man påkalder de føropsætningstrin, som nogle ebuilds tillader dig at udføre.

6.b. Manuel installation af software

At hente kilder samt checksum

Når du påkalder en ebuild til en given ebuild-fil, vil den verificere om checksummen af alle involverede filer er lig med dem der er givet i den medfølgende Manifest eller files/digest-<navn>-<version>-fil. Dette sker efter at kilderne er hentet.

For at hente kilderne ved brug af ebuild, kør da:

Kode oversigt 2.1: At hente kildekode

# ebuild sti/til/ebuild fetch

Hvis ebuildens md5sum ikke passer sammen med den, der er vist i Manifest-filen, eller en af de hentede kildekoder ikke passer med dem vist i files/digest-<pakke>-filen, vil du modtage en fejl lignende til dette:

Kode oversigt 2.2: Ebuild checksum-fejl

!!! File is corrupt or incomplete. (Digests do not match)
>>> our recorded digest: db20421ce35e8e54346e3ef19e60e4ee
>>>  your file's digest: f10392b7c0b2bbc463ad09642606a7d6

Den underliggende linie vil forklare den fejlbare fil.

Hvis du er sikker på, at de kildekoder du har fanget og ebuilden i sig selv er valid, kan du regenerere Manifest og digest-<package>-filen ved brug af ebuilds digest-funktionalitet:

Kode oversigt 2.3: Regenerering af Manifest og digest

# ebuild sti/tíl/ebuild digest

Udpakning af kildekode

For at pakke kildekode ud i /var/tmp/portage (eller en anden placering du har specificeret i /etc/make.conf), kør da ebuilds unpack-funktionalitet:

Kode oversigt 2.4: Udpakning af kildekoder

# ebuild sti/til/ebuild unpack

Dette vil udføre ebuilds src_unpack() funktion (der som standard er en normal udpakning, hvis ingen src_unpack() funktion er defineret). Det er også i dette trin, at alle nødvendig patches er tilføjet.

Samling af kildekoderne

Det næste trin i emerge-processen er at samle kildekoderne. ebuilds kompilerings-funktionalitet tager sig af dette trin ved at udføre src_compile() funktionen i ebuilden. Dette inkluderer også 'configure'-trin, hvis de tilhører titlen.

Kode oversigt 2.5: Samling af kildekoderne

# ebuild sti/til/ebuild compile

Du bør redigere ebuilds src_compile() funktion, hvis du ønsker at ændre samlingsinstruktionerne. Dog kan du også snyde Portage til at tro at ebuild-programmet har udført samlingstrinnet. Kør alle nødvendige kommandoer selv, og opret en tom fil kaldet .compiled i 'working'-folderen:

Kode oversigt 2.6: At informere Portage om de færdiggjorte samlingsjobs

# touch .compiled

Installation af filer i en midlertidig placering

I det næste trin vil Portage installere alle de nødvendige filer til en midlertidig placering. Denne folder vil indeholde alle filer, som skal emerges til det rigtige filsystem. Du kan gøre dette ved at køre ebuilds install-funktionalitet, som udfører ebuilds src_install() funktion:

Kode oversigt 2.7: Installation af filerne

# ebuild sti/til/ebuild install

Emerge af filer til det direkte filsystem

Det sidste trin er at merge alle filerne til det direkte filsystem og registrere disse i Portages backend. ebuild kalder dette trin "qmerge" og involverer disse følgende trin:

  • Udføre pkg_preinst() funktionen, hvis specificeret
  • Kopiere alle filer til det direkte filsystem
  • Registrere filerne i Portages backend
  • Udføre pkg_postinst() funktionen, hvis specificeret

Kør ebuilds qmerge-funktionalitet for at udføre disse trin:

Kode oversigt 2.8: Emerge af filer til det direkte filsystem

# ebuild sti/til/ebuild qmerge

Rensning af den midlertidige folder

Endeligt kan du rense hele den midlertidige folder ved brug af ebuilds clean-funktionalitet:

Kode oversigt 2.9: Rensning af den midlertidige folder

# ebuild sti/til/ebuild clean

6.c. Yderligere Ebuild-egenskaber

Kørsel af alle emerge-relaterede kommandoer

Ved brug af ebuilds merge-funktionalitet, kan du køre fetch, unpack, compile, install og qmerge-kommandoerne på én gang:

Kode oversigt 3.1: Installation af software

# ebuild sti/til/ebuild merge

Udførelse af opsætningsaktiviteter

Nogle programmer har også instruktioner, som opsætter pakken yderligere på dit system. Disse instruktioner kan være interaktive og kan derfor ikke blive udført automatisk. For at køre disse opsætningstrin, som er placeret i ebuilds (valgmulige) config() funktion, brug ebuilds config-funktionalitet:

Kode oversigt 3.2: Opsætning af en package

# ebuild sti/til/ebuild config

Bygning af en (RPM) pakke

Du kan instruere Portage til at oprette en binær pakke af en ebuild eller endda en RPM-fil. Brug ebuilds package- eller rpm-funktionalitet for at oprette disse arkiver. Der er dog nogle få forskelle imellem disse to funktionaliteter:

  • package-funktionaliteten minder meget om merge-funktionaliteten, undtagen alle nødvendige trin (fetch, unpack, compile, install) før oprettelsen af pakken
  • rpm-funktionaliteten bygger en RPM-pakke fra de filer, oprettet efter at have kørt ebuilds install-funktionalitet

Kode oversigt 3.3: Oprettelse af pakker

(Til en Portage-kompatibel binær pakke)
# ebuild sti/til/ebuild package

(Til en RPM-pakke)
# ebuild sti/til/ebuild rpm

Den oprettede RPM-fil indeholder dog ikke ebuilds afhængighedsinformationer.

6.d. Flere informationer

Læs venligst de følgende man-sider for flere informationer omkring Portage, ebuild-programmet og ebuild-filer:

Kode oversigt 4.1: Man-sider

$ man portage    (Portage selv)
$ man emerge     (emerge-kommandoen)
$ man ebuild     (ebuild-kommandoen)
$ man 5 ebuild   (ebuild filsyntaks)

Du kan også finde flere udviklingsrelaterede informationer i Udviklerens håndbog (på engelsk).

Udskriv

Opdateret 21. september 2005

The original version of this document was last updated October 19, 2009

Opsummering: Dette er Gentoo-håndbogen, som er en bestræbelse på at centralisere informationer omkring Gentoo/Linux.

Sven Vermeulen
Forfatter

Roy Marples
Forfatter

Daniel Robbins
Forfatter

Chris Houser
Forfatter

Jerry Alexandratos
Forfatter

Seemant Kulleen
Gentoo x86 udvikler

Tavis Ormandy
Gentoo Alpha udvikler

Jason Huebel
Gentoo AMD64 udvikler

Guy Martin
Gentoo HPPA udvikler

Pieter Van den Abeele
Gentoo PPC udvikler

Joe Kallar
Gentoo SPARC udvikler

John P. Davis
Redaktør

Pierre-Henri Jondot
Redaktør

Eric Stockbridge
Redaktør

Rajiv Manglani
Redaktør

Jungmin Seo
Redaktør

Stoyan Zhekov
Redaktør

Jared Hudson
Redaktør

Colin Morey
Redaktør

Jorge Paulo
Redaktør

Carl Anderson
Redaktør

Jon Portnoy
Redaktør

Zack Gilburd
Redaktør

Jack Morgan
Redaktør

Benny Chuang
Redaktør

Erwin
Redaktør

Joshua Kinard
Redaktør

Tobias Scherbaum
Redaktør

Grant Goodyear
Reviewer

Gerald J. Normandin Jr.
Reviewer

Donnie Berkholz
Reviewer

Ken Nowack
Reviewer

Lars Weiler
Bidrager

Jesper Brodersen
Oversætter, Korrektur

Arne Mejlholm
Oversætter, Korrektur

Frans Sohn Frøkjær-Jensen
Oversætter, Korrektur

Morten Fangel
Oversætter, Korrektur

Esben Bach
Oversætter, Korrektur

Simon Holm Thøgersen
Oversætter, Korrektur

Donate to support our development efforts.

Support OSL
Gentoo Centric Hosting: vr.org
Tek Alchemy
SevenL.net
Global Netoptex Inc.
Bytemark
Online Kredit Index
Copyright 2001-2009 Gentoo Foundation, Inc. Questions, Comments? Contact us.