St4nd3l blog

Podivné zápisky

Jak na vlastní repo ve FreeBSD

2017-11-12

U FreeBSD používám většinou binární balíčky a instaluji je pomocí pkgng. Ale u pár balíků jsem potřeboval změnit výchozí hodnoty. Nakonec jsem se rozhodl jít cestou vlastního repozitáře kde budu mít jen mé upravené balíky a zbytek budu používat z kasické FreeBSD distribuce. Zde bych tedy jen lehce popsat jak takový repozitář vytvořit pomocí nástroje poudriere.

Nainstalujeme poudriere na stroji kde budeme balíčky kompilovat. Pro kompilaci využívám svou stanici. Repozitář pak mám na serveru kde balíky syncuji pomocí rsync.

pkg install poudriere
Dále si zde vytvoříme klíč k podepisování balíčků.
mkdir -p /usr/local/etc/ssl/{keys,certs}
chmod 0600 /usr/local/etc/ssl/keys
openssl genrsa -out /usr/local/etc/ssl/keys/poudriere.key 4096
openssl rsa -in /usr/local/etc/ssl/keys/poudriere.key -pubout -out /usr/local/etc/ssl/certs/poudriere.cert
Dále upravíme konfiguraci poudriere /usr/local/etc/poudriere.conf. Zde nastavíme zda ma poudriere využívat ZFS či nikoliv. Nastavíme náš vygenerovaný klíč pro podpisy balíků. A nastavíme CHECK_CHANGED_OPTIONS a CHECK_CHANGED_CHECKS.
# NO_ZFS=yes
ZPOOL=tank
ZROOTFS=/poudriere

POUDRIERE_DATA=${BASEFS}/data

PKG_REPO_SIGNING_KEY=/usr/local/etc/ssl/keys/poudriere.key

CHECK_CHANGED_OPTIONS=verbose
CHECK_CHANGED_DEPS=yes
Konečne můžeme přejít k vytvoření jail pro poudriere a stahnutí ports tree.
#create jail
poudriere jail -c -j 111amd64 -v 11.1-RELEASE -a amd64
#list jails
poudriere jail -l
#create ports
poudriere ports -c
#upgrade ports tree
poudriere ports -u
#list ports tree
poudriere ports -l
Jestli máme oboje v pořádku vytvořeno. Můžeme si vytvořit seznam balíku které chceme překládat. Je to normální textový soubor kde na každém řádku je vypsán balík. Já mám tento seznam uložen u uživatele root: /root/111amd64-packages
editors/vim
dns/opendnssec
net-mgmt/collectd5
net/asterisk13
Dále je možné přednastavit si pro jednotlivé jail jejích make.conf. /usr/local/etc/poudriere.d/111amd64-make.conf
OPTIONS_UNSET+= X11
Pokud si chceme upravit volby pro jednotlivé balíky stačí zavolat.
poudriere options -n  -j 111amd64 net-mgmt/collectd5
Nakonec už můžeme pustit samotný překlad.
poudriere bulk -f /root/111amd64-packages  -j 111amd64
Repozitář s balíky pak naleznete /usr/local/poudriere/data/packages/111amd64-default/. Stačí tedy obsah adresáře dát někam kde na něj uvidí ostatní stroje pro které balíky chystáme a přidat na nich daný repozitář. Duležité je taky na tyto stroje překopírovat veřejný klíč aby mohly ověřit podpisy balíků.