Le système de Packages OpenBSD
Contents
1 Introduction
Le passage à OpenBSD n'est pas très évident quand on vient du monde Linux (PS : depuis Windows, il vaut mieux oublier et rester dessus :-p, ou passer à Linux).
Bref, sous OpenBSD il y a 2 systèmes de packages :
- Le premier est celui fourni par OpenBSD de base (pkg), c'est celui qui ne contient pas ou quasiment pas de failles de sécurité (pour rappel, 2 failles découvertes en 10 ans). Ces packages sont précompilés
- Le second contient beaucoup plus de logiciels (port), mais d'après OpenBSD, ils peuvent compromettrent la stabilité et sécurité du système. Celà dit il est préférable d'utiliser ceci plutot que de recompiler sois meme d'après des sources diverses puisqu'ici, ces packages ont tout de même étés validés par OpenBSD. Ces packages sont compilés à la volée.
2 PGK
2.1 Préparation
Dans un premier temps, il faut choisir un serveur FTP afin de lui indiquer le repository. Moi j'ai choisis un français :
export PKG_PATH=ftp://ftp.arcane-networks.fr/pub/OpenBSD/`uname -r`/packages/`machine -a`/
Ensuite pour être tranquile à chaque fois, il suffit de rajouter cette ligne dans son .profil.
2.2 Installer un package
Pour installer les packages, il existe plusieurs arguments. J'utilise -i pour avoir un mode interractif (depuis OpenBSD 3.9) ainsi que l'otopn -v qui va me donner du verbose. Pour installer postfix, je vais alors faire :
$ pkg_add -iv postfix Ambiguous: postfix could be postfix-2.3.2 postfix-2.3.2-ldap postfix-2.3.2-mysql postfix-2.3.2-sasl2 postfix-2.4.20060727 postfix-2.4.20060727-ldap postfix-2.4.20060727-mysql postfix-2.4.20060727-sasl2 Choose one package 0: <None> 1: postfix-2.3.2 2: postfix-2.3.2-ldap 3: postfix-2.3.2-mysql 4: postfix-2.3.2-sasl2 5: postfix-2.4.20060727 6: postfix-2.4.20060727-ldap 7: postfix-2.4.20060727-mysql 8: postfix-2.4.20060727-sasl2 Your choice:
Je n'ai plus qu'a choisir le numéro de la version que je souhaite installer. Sinon, j'indique directement ce que je souhaite :
pkg_add -v postfix-2.4.20060727
2.3 Obtenir des infos
Pour obtenir des infos sur mes packages installés, je n'ai qu'à faire :
$ pkg_info screen-4.0.3 multi-screen window manager tcl-8.4.7p1 Tool Command Language vim-7.0.42-no_x11 vi clone, many additional features zsh-4.2.6p0 Z shell, Bourne shell-compatible
2.4 Mise à jour des packages
Pour mettre à jour des packages il suffit d'utiliser la commande pkg_add suivit d'un arguement et le nom du package à updater :
pkg_add -u screen
Si vous rajoutez l'option -c, celà écrasera les fichiers de configuration actuels par ceux par défaut.
2.5 Suppression d'un package
Encore une fois ce n'est pas très compliqué, il faut utiliser la commande pkg_delete suivit du package à supprimer :
pkg_delete screen
2.6 Upgrade
Lorsqu'il y a une upgrade de version, pensez à modifier votre ligne de repository, puis faites ceci pour mettre tous les packages à jour :
pkg_add -ui -F update -F updatedepends
3 Port
3.1 Récupération de l'arbre des ports
Récupérons le tar.gz et décompressons le :
cd /tmp ftp ftp://ftp.openbsd.org/pub/OpenBSD/`uname -r`/ports.tar.gz cd /usr tar xzf /tmp/ports.tar.gz
3.2 Configuration du système de ports
Si vous avez créer un nouvel utilisateur, passez le dans la liste des sudoers, et rajoutez lui les droits :
chgrp -R wsrc /usr/ports find /usr/ports -type d -exec chmod g+w {} \;
Ensuite nous allons rajouter quelques lignes dans le fichier mk.conf :
echo "USE_SYSTRACE=Yes" >> /etc/mk.conf echo "WRKOBJDIR=/usr/obj/ports" >> /etc/mk.conf echo "DISTDIR=/usr/distfiles" >> /etc/mk.conf echo "PACKAGE_REPOSITORY=/usr/packages" >> /etc/mk.conf
3.3 Recherches de package
Pour efectuer une recherche :
cd /usr/ports make search key=nmap
Port: nmap-4.11 Path: net/nmap Info: scan ports and fingerprint stack of network hosts Maint: Okan Demirmen <okan@demirmen.com> Index: net security L-deps: dnet::net/libdnet gdk_pixbuf-2.0.0.0,gdk-x11-2.0.0.0,gtk-x11-2.0.0.0::x11/gtk+2 iconv.>=4::converters/libiconv intl.>=3:gettext->=0.10.38:devel/gettext pcre::devel/pcre B-deps: :devel/gmake gettext->=0.14.5:devel/gettext pkgconfig-*:devel/pkgconfig R-deps: gettext->=0.10.38:devel/gettext Archs: any Port: nmap-4.11-no_x11 Path: net/nmap,no_x11 Info: scan ports and fingerprint stack of network hosts Maint: Okan Demirmen <okan@demirmen.com> Index: net security L-deps: dnet::net/libdnet pcre::devel/pcre B-deps: :devel/gmake R-deps: Archs: any
Ici je n'ai pas d'interface graphique, donc pas besoin de x11, l'option no_x11 m'intéresse.
3.4 Installer un package
Pour installer un package il suffit de se mettre dans la bonne section, puis lancer la compilation :
cd /usr/ports/net/nmap/
Maintenant voyons les options disponibles :
$ make show=FLAVORS no_x11
Là encore une fois, on voit bien que je peux compiler nmap sans le graphique. Je passe donc mon arguement avant de compiler, puis le make install :
env FLAVOR="no_x11" make install
3.5 Nettoyer aprés une compilation
Vous voulez probablement nettoyer le répertoire de travail par défaut du port aprés avoir construit et installé le paquetage.
$ make clean ===> Cleaning for rsnapshot-1.2.9
En outre, vous pouvez aussi nettoyer les répertoires de travail de toutes les dépendances du port avec cette cible de make :
$ make clean=depends ===> Cleaning for rsync-2.6.8 ===> Cleaning for rsnapshot-1.2.9
Si vous désirez supprimer l'ensemble des sources de la distribution du port, vous pouvez utiliser
$ make clean=dist ===> Cleaning for rsnapshot-1.2.9 ===> Dist cleaning for rsnapshot-1.2.9
Dans le cas ou vous avez compilé de multiples saveurs du même port, vous pouvez nettoyer les répertoires de travail de toutes ces saveurs en une fois en utilisant
$ make clean=flavors