Dans cet article, nous allons voir comment mettre en place un dépôt de paquets.
Le but étant de compiler une fois pour toute un binaire pour le redistribuer sur d’autre serveur.
La première chose à faire quand on souhaite mettre en place un serveur de dépôt de paquets compilés,
est de récupérer l’arborescence des ports.
Les ports sont présents sur le CD d’installation de FreeBSD.
Télécharger l’arborescence complète, environ 450 Mo, depuis l’un des serveurs de FreeBSD n’est pas chose correcte.
Le comportement à adopter est de récupérer l’arborescence des ports depuis un CD d’installation de FreeBSD,
et de la mettre à jour avec csup, par exemple.
De ce fait, la charge et la bande passante utilisées en seront soulagés pour les deux parties.
$ mount -t cd9660 /dev/acd0 /mnt $ cd /mnt/8.0-RELEASE/ports $ ./install.sh Extracting ports tarball into /usr
$ mkdir /usr/ports/packages
$ cd /usr/ports $ make search name=lsof-4 Port: lsof-4.83B,4 Path: /usr/ports/sysutils/lsof Info: Lists information about open files (similar to fstat(1)) Maint: ler@lerctr.org B-deps: R-deps: WWW: http://people.freebsd.org/~abe/
On remarque qu’aucune dépendance n’est requise pour installer ce port.
C’est ce que l’on appelle un logiciel racine car il ne dépend de personne et personne ne dépend de lui
pour fonctionner.
$ cd /usr/ports/sysutils/lsof $ make package [...] ===> Building package for lsof-4.83,5 Creating package /usr/ports/packages/All/lsof-4.83,5.tbz Registering depends:. Creating bzip'd tar ball in '/usr/ports/packages/All/lsof-4.83,5.tbz'
Le paquet a été créé sur le serveur.
Nous verrons plus tard comment installer ce paquet depuis un serveur distant.
Avant cela, prenons le cas d’un binaire devant satisfaire des dépendances pour fonctionner.
$ cd /usr/ports $ make search name=wget-1 Port: wget-1.11.4_1 Path: /usr/ports/ftp/wget Info: Retrieve files from the Net via HTTP(S) and FTP Maint: vd@FreeBSD.org B-deps: gettext-0.17_1 gmake-3.81_3 libiconv-1.13.1 perl-5.8.9_3 R-deps: gettext-0.17_1 libiconv-1.13.1 WWW: http://www.gnu.org/software/wget/wget.html
On peut constater cette fois-ci, que des dépendances sont requises pour le binaire wget.
On peut les installer et créer les paquets comme précédement.
Mais dans le cas d’un logiciel lourd comme la suite Open Office le travail peut être fastidieux.
La commande make possède une option pour ça.
$ cd /usr/ports/ftp/wget $ make package-recursive $ ls -l /usr/ports/packages/All/ total 17326 -rw-r--r-- 1 root wheel 2681372 Feb 22 18:38 gettext-0.17_1.tbz -rw-r--r-- 1 root wheel 362264 Feb 22 18:37 gmake-3.81_3.tbz -rw-r--r-- 1 root wheel 1500142 Feb 22 18:38 libiconv-1.13.1_1.tbz -rw-r--r-- 1 root wheel 388047 Feb 22 18:38 libtool-2.2.6b.tbz -rw-r--r-- 1 root wheel 127348 Feb 22 18:15 lsof-4.83,5.tbz -rw-r--r-- 1 root wheel 12014727 Feb 22 18:37 perl-5.8.9_3.tbz -rw-r--r-- 1 root wheel 510270 Feb 22 18:37 wget-1.12.tbz
Les binaires compilés seront partagés sur le réseau par le biais d’un serveur NFS.
Permettre l’activation du serveur NFS :
$ cat /etc/rc.conf [...] nfs_server_enable=YES rpcbind_enable=YES mountd_flags="-r" [...]
Liste des exports NFS :
$ cat /etc/exports /usr/ports/packages -ro -mapall=nobody -network=192.168.150.0/24
Démarrage du serveur NFS :
$ /etc/rc.d/rpcbind start Starting rpcbind. $ /etc/rc.d/nfsd start Starting mountd. Starting nfsd.
Pas grand chose à faire de ce côté là, étant donné que le client est intégré dans FreeBSD.
Monter l’export :
$ mkdir -p /usr/ports/packages $ mount -t nfs 192.168.150.18:/usr/ports/packages /usr/ports/packages
Maintenant que tout est en place, nous allons installer les deux binaires compilés précédement sur notre nouveau serveur.
Binaire lsof :
$ cd /usr/ports/packages/sysutils $ pkg_add lsof-4.83,5.tbz $ pkg_info lsof-4.83,5 Lists information about open files (similar to fstat(1))
Binaire wget :
$ cd /usr/ports/packages/www $ pkg_add wget-1.12.tbz $ pkg_info gettext-0.17_1 GNU gettext package libiconv-1.13.1_1 A character set conversion library lsof-4.83,5 Lists information about open files (similar to fstat(1)) wget-1.12 Retrieve files from the Net via HTTP(S) and FTP
On peut constater que les dépendances nécessaires au fonctionnement de wget sont présentes.
Il est à noter que lors de la création d’un paquet sur le serveur de dépot, l’installation du binaire et des ses dépendances est obligatoire.
Si vous avez des remarques ou juste pour dire un petit « merci », laissez un commentaire.