Siden versjon 9.2 har FreeBSD introdusert et nytt verktøy for å erstatte de gamle pkg_*-kommandoene - pkg, også kjent som pkgng. Det er veldig likt Debians apteller Fedoras, yummen har noen veldig kule funksjoner. En av disse er muligheten for enkelt å bruke ditt eget private arkiv med pakker.
Hvorfor vil du gjøre det? De offisielle pkg-repositoriene er bygget ut av FreeBSDs port-tre med et svært begrenset sett med alternativer. For eksempel mangler den offisielle pakken for PHP støtte for MySQL. En annen grunn kan være at du vil ha to arkiver, ett med X11 aktivert - for skrivebordet ditt - og ett med X11 deaktivert - for serverne dine. Det er mange alternativer og muligheter, og denne opplæringen vil vise deg hvordan du bygger ditt eget depot med Poudriere , et verktøy for massebygging av pakker.
Jeg antar at du har en fersk VPS med FreeBSD 10 x64 installert. Først av alt trenger du port-treet på systemet ditt:
cd /usr
portsnap fetch extract
Deretter må du installere Poudriere fra kilden (Standardalternativene er fine!):
cd /usr/ports/ports-mgmt/poudriere
make install clean
Deretter oppretter du en grunnleggende konfigurasjonsfil:
cp /usr/local/etc/poudriere.conf.sample /usr/local/etc/poudriere.conf
... og rediger den i henhold til dine behov. Følgende er en god start:
FREEBSD_HOST=http://ftp.freebsd.org
RESOLV_CONF=/etc/resolv.conf
BASEFS=/usr/local/poudriere
POUDRIERE_DATA=$/data
USE_PORTLINT=no
USE_TMPFS=yes
DISTFILES_CACHE=/usr/ports/distfiles
CHECK_CHANGED_DEPS=yes
# Edit this according to your VPS' CPU.
PARALLEL_JOBS=1
NOLINUX=yes
I stedet for å bruke den vanlige portstreen til systemet ditt, bruker Poudriere sin egen kopi. Du må få den med følgende kommando:
poudriere ports -c
Opprett nå et fengsel for byggherren å kjøre innenfor:
poudriere jail -c -j testjail -v 10.0-RELEASE -a amd64
Før du kan begynne å bygge pakker, må du faktisk fortelle Poudriere hva den skal bygge. Åpne favoritttekstredigeringsprogrammet ditt og legg til noen pakker:
www/firefox
im/pidgin
sysutils/tmux
editors/vim
... og lagre filen under /usr/local/etc/buildlist. Hvis du ikke vil ha standardalternativene, kan du konfigurere alternativene for hver pakke i den filen. Dette gjøres ved å gi følgende kommando:
poudriere options -cf /usr/local/etc/buildlist
Ellers kan du begynne å bygge:
poudriere bulk -f /usr/local/etc/buildlist -j testjail
Hvor lang tid denne operasjonen tar vil variere basert på CPU-hastigheten til VPS-en din. Etter at prosessen er fullført, kan de ferske pakkene dine bli funnet, sortert etter build-jail, i /usr/local/poudriere/data/packages/.
Nå trenger du en webserver for å faktisk betjene disse pakkene til de andre maskinene dine. Jeg valgte Nginx siden den er effektiv og lett. Installer den via porter (Standardalternativene er fine!):
cd /usr/ports/www/nginx
make install clean
Etter at installasjonsprosessen er fullført, må du konfigurere Nginx til å betjene pakkekatalogen. For å gjøre det, rediger /usr/local/etc/nginx/nginx.confmed din favoritt tekstredigerer:
server {
listen 80;
server_name localhost;
root /usr/local/poudriere/data/packages/testjail-default;
location / {
autoindex on;
}
}
Til slutt, sørg for at webserveren starter ved oppstart:
echo "nginx_enable=YES" >> /etc/rc.conf
... og start serveren:
/usr/local/etc/rc.d/nginx start
Mulighetene med Poudriere er enorme. Du kan lære mer om Poudriere ved å lese manpage-oppføringen. Hvis du planlegger å bruke et slikt oppsett i et produksjonsmiljø, vil det være i din interesse å også lese om pakkesignering, og vurdere å sikre tilkoblingen til webserveren din med TLS. Men foreløpig er du klar til å rocke!
For å aktivere depotet på klienten, kjør disse kommandoene på klientmaskinen:
mkdir -p /usr/local/etc/repos
vi /usr/local/etc/repos/myrepo.conf
Fyll myrepo.confmed følgende innhold. Du kan bruke hvilket som helst navn for denne filen, forutsatt at den har .confsuffikset.
poudriere: {
url: "http://yoururl"
mirror_type: "http",
enabled: yes
}
Deretter oppdaterer du pakkedatabasen med kommandoen:
pkg update
Du kan nå installere pakker fra ditt nye depot!