Des de la versió 9.2, FreeBSD ha introduït una nova eina per substituir les antigues ordres pkg_*- pkg, també conegudes com pkgng. És molt semblant al de Debian apto Fedora, yumperò té algunes característiques molt interessants. Un d'ells és la possibilitat d'utilitzar fàcilment el vostre propi dipòsit privat de paquets.
Per què voldríeu fer això? Els dipòsits pkg oficials es construeixen a partir de l'arbre de ports de FreeBSD amb un conjunt molt limitat d'opcions. Per exemple, el paquet oficial de PHP no té suport per a MySQL. Un altre motiu pot ser que voleu tenir dos dipòsits, un amb X11 habilitat (per al vostre escriptori) i un altre amb X11 desactivat per als vostres servidors. Hi ha moltes opcions i possibilitats, i aquest tutorial us mostrarà com crear el vostre propi dipòsit amb Poudriere , una eina per a la creació de paquets massius.
Suposo que teniu un VPS nou amb FreeBSD 10 x64 instal·lat. En primer lloc, necessiteu l'arbre de ports del vostre sistema:
cd /usr
portsnap fetch extract
Aleshores, heu d'instal·lar Poudriere des de la font (les opcions predeterminades estan bé!):
cd /usr/ports/ports-mgmt/poudriere
make install clean
A continuació, creeu un fitxer de configuració bàsica:
cp /usr/local/etc/poudriere.conf.sample /usr/local/etc/poudriere.conf
... i editeu-lo segons les vostres necessitats. El següent és un bon començament:
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
En lloc d'utilitzar el portstree normal del vostre sistema, Poudriere utilitza la seva pròpia còpia. L'heu d'obtenir amb l'ordre següent:
poudriere ports -c
Ara, creeu una presó perquè el constructor s'executi:
poudriere jail -c -j testjail -v 10.0-RELEASE -a amd64
Abans de començar a crear paquets, haureu de dir-li a Poudriere què ha de construir. Obriu el vostre editor de text preferit i afegiu alguns paquets:
www/firefox
im/pidgin
sysutils/tmux
editors/vim
... i deseu el fitxer a /usr/local/etc/buildlist. Si no voleu les opcions predeterminades, podeu configurar les opcions per a cada paquet d'aquest fitxer. Això es fa emetent l'ordre següent:
poudriere options -cf /usr/local/etc/buildlist
En cas contrari, podeu començar a construir:
poudriere bulk -f /usr/local/etc/buildlist -j testjail
La quantitat de temps que triga aquesta operació variarà en funció de la velocitat de la CPU del vostre VPS. Un cop finalitzat el procés, es poden trobar els vostres paquets nous, ordenats per build-jail, a /usr/local/poudriere/data/packages/.
Ara, necessiteu un servidor web per servir aquests paquets a les vostres altres màquines. Vaig triar Nginx perquè és eficient i lleuger. Instal·leu-lo mitjançant ports (les opcions predeterminades estan bé!):
cd /usr/ports/www/nginx
make install clean
Un cop finalitzat el procés d'instal·lació, heu de configurar Nginx per servir el directori de paquets. Per fer-ho, editeu /usr/local/etc/nginx/nginx.confamb el vostre editor de text preferit:
server {
listen 80;
server_name localhost;
root /usr/local/poudriere/data/packages/testjail-default;
location / {
autoindex on;
}
}
Finalment, assegureu-vos que el servidor web s'iniciï a l'arrencada:
echo "nginx_enable=YES" >> /etc/rc.conf
... i inicieu el servidor:
/usr/local/etc/rc.d/nginx start
Les possibilitats amb Poudriere són enormes. Podeu obtenir més informació sobre Poudriere llegint l'entrada de la pàgina de manual. Si teniu previst utilitzar una configuració com aquesta en un entorn de producció, seria del vostre interès llegir també sobre la signatura de paquets i considerar la possibilitat de garantir la connexió al vostre servidor web amb TLS. Però de moment, ja esteu preparats per rockear!
Per activar el repositori al client, executeu aquestes ordres a la màquina client:
mkdir -p /usr/local/etc/repos
vi /usr/local/etc/repos/myrepo.conf
Omple myrepo.confamb el contingut següent. Podeu utilitzar qualsevol nom per a aquest fitxer, sempre que tingui el .confsufix.
poudriere: {
url: "http://yoururl"
mirror_type: "http",
enabled: yes
}
A continuació, actualitzeu la base de dades del paquet amb l'ordre:
pkg update
Ara podeu instal·lar paquets des del vostre nou dipòsit!