Dalla versione 9.2, FreeBSD ha introdotto un nuovo strumento per sostituire i vecchi comandi pkg _ * - pkg
, noti anche come pkgng
. È molto simile a quello di Debian apt
o Fedora yum
ma ha alcune caratteristiche molto interessanti. Uno di questi è la possibilità di utilizzare facilmente il proprio repository privato di pacchetti.
Perché vorresti farlo? I repository pkg ufficiali sono costruiti dall'albero delle porte di FreeBSD con un set molto limitato di opzioni. Ad esempio, il pacchetto ufficiale per PHP manca del supporto per MySQL. Un altro motivo potrebbe essere che si desidera avere due repository, uno con X11 abilitato - per il desktop - e uno con X11 disabilitato - per i server. Ci sono molte opzioni e possibilità e questo tutorial ti mostrerà come costruire il tuo repository con Poudriere , uno strumento per pacchetti di costruzione di massa.
Presumo che tu abbia un nuovo VPS con FreeBSD 10 x64 installato. Prima di tutto, hai bisogno dell'albero delle porte sul tuo sistema:
cd /usr
portsnap fetch extract
Quindi, è necessario installare Poudriere dalla fonte (le opzioni predefinite vanno bene!):
cd /usr/ports/ports-mgmt/poudriere
make install clean
Quindi, crea un file di configurazione di base:
cp /usr/local/etc/poudriere.conf.sample /usr/local/etc/poudriere.conf
... e modificalo in base alle tue esigenze. Quello che segue è un buon inizio:
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
Invece di usare il normale porttree del tuo sistema, Poudriere usa una sua copia. È necessario ottenerlo con il seguente comando:
poudriere ports -c
Ora, crea una jail per l'esecuzione del builder all'interno di:
poudriere jail -c -j testjail -v 10.0-RELEASE -a amd64
Prima di poter iniziare a creare pacchetti, dovrai effettivamente dire a Poudriere cosa dovrebbe costruire. Apri il tuo editor di testo preferito e aggiungi alcuni pacchetti:
www/firefox
im/pidgin
sysutils/tmux
editors/vim
... e salva il file in /usr/local/etc/buildlist
. Se non si desidera le opzioni predefinite, è possibile configurare le opzioni per ciascun pacchetto in quel file. Questo viene fatto emettendo il seguente comando:
poudriere options -cf /usr/local/etc/buildlist
Altrimenti, puoi iniziare a costruire:
poudriere bulk -f /usr/local/etc/buildlist -j testjail
Il tempo necessario per questa operazione varia in base alla velocità della CPU del VPS. Al termine del processo, è possibile trovare i nuovi pacchetti, ordinati per build-jail, in /usr/local/poudriere/data/packages/
.
Ora, hai bisogno di un server web per servire effettivamente quei pacchetti su altre tue macchine. Ho scelto Nginx poiché è efficiente e leggero. Installalo tramite le porte (le opzioni predefinite vanno bene!):
cd /usr/ports/www/nginx
make install clean
Al termine del processo di installazione, è necessario configurare Nginx per servire la directory dei pacchetti. Per farlo, modifica /usr/local/etc/nginx/nginx.conf
con il tuo editor di testo preferito:
server {
listen 80;
server_name localhost;
root /usr/local/poudriere/data/packages/testjail-default;
location / {
autoindex on;
}
}
Infine, assicurati che il server web si avvii all'avvio:
echo "nginx_enable=YES" >> /etc/rc.conf
... e avvia il server:
/usr/local/etc/rc.d/nginx start
Le possibilità con Poudriere sono enormi. Puoi saperne di più su Poudriere leggendo la voce della manpage. Se si prevede di utilizzare un'impostazione come questa in un ambiente di produzione, sarebbe nel vostro interesse leggere anche la firma del pacchetto e considerare la protezione della connessione al server Web con TLS. Ma per ora, sei pronto per il rock!
Per attivare il repository sul client, eseguire questi comandi sul computer client:
mkdir -p /usr/local/etc/repos
vi /usr/local/etc/repos/myrepo.conf
Popolare myrepo.conf
con il seguente contenuto. È possibile utilizzare qualsiasi nome per questo file, a condizione che abbia il .conf
suffisso.
poudriere: {
url: "http://yoururl"
mirror_type: "http",
enabled: yes
}
Successivamente, aggiorna il database del pacchetto con il comando:
pkg update
Ora puoi installare i pacchetti dal tuo nuovo repository!