Le système de Packages OpenBSD

From Deimos.fr / Bloc Notes Informatique
Jump to: navigation, search

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