Intervju: Lagde sin egen Linux-distribusjon
Hvordan lage din egen distro?
Vi har snakket med nordmannen bak Draco Linux.
Intervju - Del 2
Du sa innledningsvis at Draco er todelt. Hvordan fungerer dette og hvem bestemmer hva som blir en del av tredjeparts-installasjonen?
Pakkebrønnene i Draco er delt opp i basesystem og tredjepart. Basesystemet får bare patcher, mens tredjepart blir oppdatert ved faste intervaller. Pakkeutvalget for tredjepart er begrenset, vanligvis rundt 1500 binærpakker tilgjengelig. Jeg prøver å legge til de mest brukte programmene og tar gjerne imot ønsker fra brukere.
Tredjeparten styres av NetBSD og miljøet rundt pkgsrc - dvs. utviklerne og brukerne - bestemmer hva som ender i pkgsrc eller ikke.
Du benytter deg med andre ord av pkgsrc som pakkesystem for Draco? Hvorfor bestemte du deg for dette pakkesystemet og ikke Apt eller Yum f.eks.?
Pkgsrc
Pkgsrc er et pakkesystem som enkelt lar deg kompilere programvare fra kildekode samtidig som du kan skape og installere programpakker. Pakkesystemet støtter selvfølgelig også installasjon av avhengigheter, og er tilgjengelig for de fleste Unix- og Linux-systemer.
Jeg ville ha et pakkesystem som var like fleksibelt som Portage (Gentoo), men som også behandler binærpakker like bra som Pacman (Arch). Helst med pakkeutvalg på høyde med de største distribusjoner.
Pkgsrc var det eneste pakkesystem som greide dette. Det er et godt etablert pakkesystem i UNIX-verden, med mange utviklere. Dessverre finnes det også en ulempe ved bruk av pkgsrc.
Pkgsrc har i dag 9021 pakker tilgjengelig, men bare 5000 er mulig å bruke i Draco. Grunnen til dette er at pkgsrc er det offisielle pakkesystemet til NetBSD og Dragonfly BSD, derfor får de mest oppmerksomhet og siden Linux gjør enkelte ting annerledes enn BSD er dømt til å gå galt. NetBSD ligger også bak Linux når det gjelder diverse teknologi, så jeg må modifisere en del pakker i pkgsrc for å tilby samme kvalitet som andre distribusjoner.
Heldigvis har Linux fått mer oppmerksomhet av pkgsrc-utviklerne i løpet av det siste året. Selv prøver jeg å hjelpe til så mye som mulig.
Et godt pakkesystem og store pakkebrønner er uten tvil blant de viktigste ingrediensene i en Linux-distribusjon. Hvordan er pkgsrc integrert i Draco?
Draco inneholder faktisk to pakkesystem, et for basesystemet (pkgtools) og et for tredjepart (pkgsrc). Disse to styres av en wrapper kalt DracoPKG.
DracoPKG ble introdusert i Draco 0.3 (foreløpig i Beta) og hadde som mål å forenkle bruken av pkgsrc, DracoPKG utviklet seg til å bli et viktig verktøy både for basesystemet og tredjepartsprogramvare.
DracoPKG er veldig enkelt å bruke, hvis jeg vil ha KDE skriver jeg 'dp install kde'. Som standard (kan lett forandres) vil DracoPKG få pkgsrc til å lete etter binærpakker, først lokalt, så i pakkebrønner. Hvis ingen binærpakker eksisterer begynner pkgsrc å kompilere (kreves at pkgsrc-treet er installert).
Hvis jeg ikke vil ha KDE lenger kjører jeg 'dp remove kde'. Da vil KDE og alle avhengigheter bli fjernet.
Basesystemet administreres gjennom sysinst, sysrm og sysbuild. Hvis jeg ikke installerte GCC under installasjonen, men trenger den nå. Da kjører jeg 'dp sysinst gcc'. Prinsippet er det samme som for pkgsrc. Først binærpakker, så kompilering.
DracoPKG inneholder for øyeblikket bare en liten del av funksjonene til pkgsrc, flere funksjoner blir lagt til etter behov eller forespørsel. DracoPKG er skrevet i shell-script og er modulær.
Man kan fortsatt bruke pkgtools og pkgsrc direkte hvis det er ønskelig.
Har du noen verktøy som gjør det lettere for brukerne å lage pakker for Draco, eller bistå med utviklingen sånn generelt?, slik som Arch har AUR og makepkg?
AUR og makepkg
AUR står for Arch User Repository og er en pakkebrønn hvor brukerne får 100 prosent frihet til å legge inn hva de ønsker. I AUR legger du derimot ikke pakker, men en såkalt PKGBUILD fil som inneholder nødvendig informasjon for å kompilere pakken på ditt eget system. Hvis en PKGBUILD-fil får nok stemmer, og ikke går imot reglene for Arch Linux' offisielle pakkebrønner, kan et program bli flyttet ut av AUR og plassert i distribusjonens offisielle pakkebrønn.
makepkg er et verktøy som kompilerer programmer utifra informasjonen i en PKGBUILD-fil. Deretter plasserer makepkg programmet i en pakke som kan bli installert av pacman - pakkesystemet til Arch Linux.
Pkgsrc har veldig bra dokumentasjon. De som vil lage nye pakker anbefales å lese denne guiden.
Pkgsrc i seg selv er også delt i to, pkgsrc-wip og pkgsrc. Wip står for work in progress. Her kan (nye) utviklere enkelt legge til pakker, mye på samme måte som AUR i Arch. Pakker med høy kvalitet og som fungerer på mest mulig plattformer blir lagt til i pkgsrc. Pkgsrc-wip blir også brukt til å teste nye versjoner av pakker (f.eks. KDE4).
Når det gjelder basesystemet er ting litt enklere. La oss se for oss at Nano ikke eksisterer i Draco. Da oppretter jeg en mappe som heter 'nano' i /etc/dp/src. Så lager jeg en fil som heter 'Build', som inneholder følgende:
DRACOSRC_PKG_AUTHOR="olear@slackforge.net"
DRACOSRC_PKG_NAME="nano"
DRACOSRC_PKG_DESC="Pico editor clone with enhancements"
DRACOSRC_PKG_CONFIGURE="--prefix=/usr --sysconfdir=/etc --infodir=/usr/info --mandir=/usr/man --program-prefix= --program-suffix= --enable-color --enable-multibuffer --enable-nanorc --enable-all --enable-utf8 --build=$DRACOSRC_ARCH-draco-linux"
DRACOSRC_PKG_SOURCE_EXT=tar.gz
#DRACOSRC_PKG_BINARY_DEP=""
Etter det kjører jeg bare 'dp sysbuild nano'. Ikke alle pakker er så enkle, men Nano er et fint eksempel.
Har du noen restriksjoner for hva som kan bli inkludert av pakker i Draco og hva som ikke kan? Foruten skadelig programvare selvfølgelig.
Basesystemet er den eneste plassen jeg har restriksjoner. Pakker må ha en viktig funksjon for å bli inkludert i basesystemet, generelt sett hvis en pakke eksisterer som tredjepart ser jeg ingen grunn til å legge den til i basesystemet.
Når det gjelder drivere og firmware er jeg veldig åpen, jeg vil at mest mulig maskinvare skal fungere i Draco. Dette gjør at jeg lander i en del gråsoner angående firmware, men velger fremdeles å tilby firmware under installasjonen. Når det gjelder filformater/kodeker har jeg heller ingen restriksjoner, jeg mener brukeren selv skal få velge.