Debian GNU/Hurd
Udvikling af distributionen
Startdisketter
Pt. arbejder vi ikke på "native" startdisketter. Vi er dog i gang med de foretage de indledende forberedelser, og tilpasser nogle gange nødvendige individuelle pakker. Hvis du vil hjælpe til, så arbejd på projektet debian-installer og forvis dig om at dets komponenter kører under Hurd.
Tilpasning af Debian-pakker
Hvis du vil hjælpe til med tilpasningen af Debian GNU/Hurd, skal du gøre dig bekendt med Debians pakningssystem. Når det er gjort, ved at læse tilgængelig dokumentation og besøge udviklerhjørnet skulle du vide hvordan man udpakker Debians-kildekodepakker og opbygger en Debian-pakke. Her er et lynkursus til glæde for de meget dovne:
Anskaffelse af kildekode og opbygning af pakker
Udpakning af Debian-kildekodepakker kræver filen
package_version.dsc og filerne anført i den. Man oprette Debians
opbygningsmappe med kommandoen dpkg-source -x package_version.dsc
Opbygning af en pakke foretages i det nu oprettede Debian-opbygningsmappe
package-version med kommandoen
dpkg-buildpackage -B -rsudo "-mMitNavn <MinEmail>".
I stedet for -B kan man bruge
-b, hvis man også ønsker at opbygge de arkitekturuafhængige dele
af pakken. Man kan bruge -rfakeroot i stedet for
-rsudo hvis man bruger pakken fakeroot. -r er ikke
nødvendig hvis man bygger pakker som brugeren root. Man kan tilføje
-uc for at undgå signering af pakken med ens pgp-nøgle.
Vælg en pakke
Hvilken pakke skal der arbejdes på? Enhver pakke som endnu ikke er tilpasset, men skal tilpasses. Dette ændrer sig hele tiden, hvorfor vi foretrækker at man først koncenterer sig om pakker, med mange baglæns afhængigheder, der kan ses på pakkeafhængighedsgraften http://people.debian.org/~sthibault/graph-radial.pdf, der opdateres dagligt, eller på listen over de mest efterspurgte http://people.debian.org/~sthibault/graph-total-top.txt (det er langtidslisten, korttidslisten er http://people.debian.org/~sthibault/graph-top.txt). Normalt er det også en god ide, at vælge fra listen over forældede, http://people.debian.org/~sthibault/out_of_date.txt, da disse tidligere har fungeret og der nok kun er et par årsager til at de ikke fungerer. Du kan også vælge en tilfældig af de manglende pakker ellere være på udkig efter autobuilding-logfiler på postlisten debian-hurd-build-logs eller anvende wanna-build-listen fra http://people.debian.org/~sthibault/failed_packages.txt.gz .
Undersøg også om der allerede har været arbejdet på http://alioth.debian.org/tracker/?atid=410472&group_id=30628&func=browse, http://alioth.debian.org/tracker/?atid=411594&group_id=30628&func=browse og BTS (http://bugs.debian.org/cgi-bin/pkgreport.cgi?users=debian-hurd@lists.debian.org;tag=hurd) og http://wiki.debian.org/Debian_GNU/Hurd, samt den aktuelle pakketilstand på buildd.debian.org, fx https://buildd.debian.org/util-linux.
Pakker der ikke vil blive tilpasset
Nogle af disse pakker, eller dele af dem, kan måske tilpasses senere, men pt. anses de, om ikke andet, for at være umulige at tilpasse.
base/update, fordi Hurd ikke har brug for en update-dæmon (filsystemerne synkroniserer sig selv). For at ældre synkroniseringsintervallet kan man brugefsysoptsfor at justere på parameteret--sync. Man kan opsætte forskellige synkroniseringsintervaller for hvert enkelt filsystem! For at gøre det manuelt anvendes etsyncfs-værktøj.base/makedev, fordi Hurd har sin egen version af dette scipt. Debians kildekodepakke indeholder kun en Linux-specifik version.base/ld.so, fordi Hurd bruger den linker som leveres med GNU C-biblioteket.base/modconfogbase/modutils, fordi moduler er et Linux-specifikt koncept.base/netbase, fordi de resterende ting er meget specifikt rettet med Linux-kernen. Hurd bruger i stedetinetutils.base/pcmcia-cs, fordi Hurd ikke understøtter PCMCIA (og hvis den gjorde, ville denne pakke formentlig være Linux-specifik).base/procps, fordi denne kode er specifikt rettet mod Linux' proc-filsystem.base/pppogbase/pppconfig, fordi Hurd ikke understøtter PPP (og hvis den gjorde, ville denne pakke formentlig være Linux-specifik).base/setserial, fordi den er specifikt rettet mod Linux-kernen. Dog vil vi måske kunne bruge den da Linux' char-drivere er tilpasset til GNU Mach.
Generelle tilpasningsproblemstillinger
En liste over almindelige problemerstillinger er tilgængelig på opstrøms websted. Det følgende er specifikt for Debian.
Før man forsøger at rette noget, så kontrollér om kfreebsd*-tilpasningen måske allerede har en rettelse, som blot også skal udvides til at omfatte hurd-i386.
-
Defekt libc6-afhængighedNogle pakker anvender en fejlagtig afhængighed af
libc6-dev. Det er forkert, dalibc6er specifik for nogle GNU/Linux-arkitekturer. Den tilsvarende GNU-pakke erlibc0.3-dev, men andre styresystemer vil have andre pakker. Problemet findes i filendebian/controli kildekodetræet. Typiske løsninger er at detektere styresystemet ved hjælp afdpkg-architectureog hårdkode soname, eller bedre, at anvende logisk OR. Eksempelvis:libc6-dev | libc6.1-dev | libc0.3-dev | libc0.1-dev | libc-dev.libc-dever en virtuel pakke, der fungerer for ethvert soname, men det skal kun anvendes som en sidste udvej. -
undefined reference to snd_*, SND_* undeclaredNogle pakker anvender ALSA, selv på ikke-Linux-arkitekturer. Pakken oss-libsalsa leverer nogen emulering gennem OSS, men det er begrænset til 1.0.5, og noget af funktionaliteten stilles ikke til rådighed, så som alle sequencer-handlinger.
Hvis pakken tillader det, bør alsa-understøttelse slås fra på
!linux-any-arkitekturer (eksempelvis gennem enconfigure-valgmulighed, og en[linux-any]-qualifier føjet til alsasBuild-Depends, desuden skal det modsatte føjes tilBuild-Conflicts, så somBuild-Conflicts: libasound2-dev [!linux-any].
