Debian GNU/Hurd
Sviluppo della distribuzione
Dischi di avvio
In questo momento non si sta lavorando su dischi per l'avvio nativo, comunque si stanno posando le loro fondamenta il che, qualche volta, comporta il port di singoli pacchetti. Se si vuole contribuire, si aiuti il progetto debian-installer e assicurarsi che i suoi componenti funzionino con Hurd.
Port dei pacchetti Debian
Se si desidera contribuire al port Debian GNU/Hurd è necessario aver confidenza con il sistema di pacchettizzazione Debian. Una volta fatto questo leggendo la documentazione disponibile e visitando l'angolo degli sviluppatori si dovrebbe essere in grado estrarre i pacchetti sorgente Debian e creare un pacchetto binario Debian. Per le persone più pigre è disponibile un corso rapido:
Recuperare i sorgenti e creare i pacchetti
L'estrazione di un pacchetto sorgente Debian richiede il file
pacchetto_versione.dsc e i file che sono elncati al suo
interno. La directory di compilazione Debian viene creata con il comando
dpkg-source -x pacchetto_versione.dsc.
La costruzione del pacchetto avviene nella directory di compilazione
Debian pacchetto-versione appena creata con tramite il comando
dpkg-buildpackage -B -rsudo "-mMyName <MyEmail>". Al
posto di -B si può usare -b per compilare le
parti indipendenti dall'architettura del pacchetto. È possibile
usare -rfakeroot al posto di -rsudo per usare
il pacchetto fakeroot. Si può tralasciare -r se si compila
da utente root. Infine è possibile aggiungere -uc per evitare di
firmare il pacchetto con la chiave GPG.
Scegliere un pacchetto
Quale pacchetto richiede del lavoro? Ogni pacchetto che ancora non è stato portato e che deve essere portato. Questi cambiano continuamente quindi si concentra il lavoro prima sui pacchetti con molte dipendenze inverse, che possono essere trovati nel grafico (aggiornato quotidianamente) delle dipendenze tra pacchetti http://people.debian.org/~sthibault/graph-radial.pdf o nell'elenco dei più ricercati http://people.debian.org/~sthibault/graph-total-top.txt (ordinato a partire dai pacchetti ricercati da più tempo, lo stesso elenco ordinato a partire dai pacchetti ricercati da meno tempo http://people.debian.org/~sthibault/graph-top.txt). Solitamente è una buona idea prendere un pacchetto tra quelli non aggiornati http://people.debian.org/~sthibault/out_of_date.txt perché tali pacchetti erano funzionanti ma adesso non funzionano più probabilmente solo per causa di piccoli problemi. È possibile prendere un pacchetto a caso oppure prenderne uno dopo aver controllato attentamente i log del processo autobuilder sulla lista di messaggi debian-hurd-build-logs oppure da http://people.debian.org/~sthibault/failed_packages.txt.gz.
Inoltre, controllare su http://alioth.debian.org/tracker/?atid=410472&group_id=30628&func=browse, http://alioth.debian.org/tracker/?atid=411594&group_id=30628&func=browse e BTS che il lavoro non sia già stato fatto (http://bugs.debian.org/cgi-bin/pkgreport.cgi?users=debian-hurd@lists.debian.org;tag=hurd), http://wiki.debian.org/Debian_GNU/Hurd e lo stato attuale dei pacchetti su buildd.debian.org, per esempio https://buildd.debian.org/util-linux.
Pacchetti che non devono essere portati
Alcuni di questi pacchetti, o delle loro parti, potrebbero essere portabili in futuro ma almeno per ora sono considerati non-portabili.
-
base/update, perché Hurd non necessita di un demone di aggiornamento (i filesystem si sincronizzano da soli). Per modificare l'intervallo di sincronizzazione si può usarefsysoptse regolare l'opzione--sync. Si possono impostare valori diversi dell'intervallo di sincronizzazione per ogni filesystem! Per farlo manualmente si usi l'utilitàsyncfs. -
base/makedev, perché Hurd dispone della propria versione di questo script. Il pacchetto sorgente Debian contiene solo la versione specifica per Linux. -
base/ld.so, perché Hurd non usa il linker fornito insieme alla libreria C GNU. -
base/modconfebase/modutils, perché i moduli sono un concetto specifico di Linux. -
base/netbase, perché le parti fornite da questo pacchetto non disponibili sono altamente specifiche del kernel Linux. Al suo posto Hurd usainetutils. -
base/pcmcia-cs, perché Hurd non ha nessun tipo supporto per PCMCIA (e se lo avrà probabilmente questo pacchetto risulterà specifico di Linux). -
base/procps, perché il codice è specifico per il filesystem proc di Linux. -
base/pppebase/pppconfig, perché Hurd non ha nussun supporto per PPP (e se lo avrà probabilmente questo pacchetto risulterà specifico di Linux). -
base/setserial, perché è specifico per il kernel Linux. Comunque con il port dei driver a caratteri di Linux su GNU Mach saremo in grado di usarlo.
Problemi generali del port
Un elenco dei problemi più comuni è disponibile sul sito web originale. Le seguenti problematiche sono specifiche di Debian.
Prima di tentare di correggere qualcosa, controllare se il port kfreebsd* ha già la correzione, che ha solo bisogno di essere estesa a hurd-i386.
Dipendenze di libc6 non funzionantiAlcuni pacchetti usano erroneamente una dipendeza da
libc6-dev. Questo è sbagliato perchélibc6è specifica di alcune delle architetture di GNU/Linux. Il pacchetto corrispondente per GNU èlibc0.3-devma su altri Sistemi Operativi potrebbe essere diverso. È possibile trovare questo errore nel filedebian/controldel sorgente del pacchetto. Le soluzioni tipiche sono includere il riconoscimento del SO tramitedpkg-architecturee specificare il soname, o meglio usare un OR logico. Per esempio:libc6-dev | libc6.1-dev | libc0.3-dev | libc0.1-dev | libc-dev. Il pacchetto virtualelibc-devfunziona con qualsiasi soname ma deve essere usato solo come ultima risorsa.-
undefined reference to snd_*, SND_* undeclaredAlcuni pacchetti utilizzano ALSA anche sulle diverse da Linux. Il pacchetto oss-libsalsa fornisce l'emulazione via OSS ma è limitato alla versione 1.0.5 e alcune funzionalità non sono disponibili, per esempio tutte le operazioni del sequencer.
Se il pacchetto lo permette, si dovrebbe disabilitare il supporto ALSA sulle architetture
!linux-any(per esempio tramite un'opzioneconfigure), aggiungendo un qualificatore[linux-any]inBuild-Dependsdi alse e aggiungendo il contrario inBuild-Conflicts, per esempioBuild-Conflicts: libasound2-dev [!linux-any].
