Special freebsd:Utilisation des ports

Un article de Free-4ever.

Sommaire

Introduction

Ce document va décrire quelques étapes pour utiliser et garder à jour ces ports sur FreeBSD.


Préliminaires

Il faudra s'assurer d'avoir installer l'arborescence de base au moment de l'installation de FreeBSD en utilisant sysinstall. Sinon, il faut le relancer et installer les ports de base depuis le CD ou une source Internet.


Installer un port

Pour cela, il n'y a pas 14 étapes:

  • Se placer dans le répertoire: /usr/ports. Il y a pas mal de répertoires qui représente les catégories.
  • Pour trouver le port que l'on cherche, la commande make search va nous aider:
# make search key=samba

Pour chercher toutes les occurrences de "samba" dans les descriptions des ports.

# make search name=samba

Pour chercher toutes les occurrences de "samba" dans les noms de ports. Cela retourne quelque chose de la forme suivante:

Port:   samba-3.0.23c_2,1
Path:   /usr/ports/net/samba3
Info:   A free SMB and CIFS client and server for UNIX
Maint:  timur@gnu.org
B-deps: autoconf-2.59_2 cups-base-1.2.2 gettext-0.14.5_2 gnutls-1.4.5 jpeg-6b_4 libgcrypt-1.2.3_1 libgpg-error-1.4 libiconv-1.9.2_2 m4-1.4.4 openldap-client-2.3.30 perl-5.8.8 pkg-config-0.21 png-1.2.12_1 popt-1.7_1 tiff-3.8.2_1 
R-deps: cups-base-1.2.2 gettext-0.14.5_2 gnutls-1.4.5 jpeg-6b_4 libgcrypt-1.2.3_1 libgpg-error-1.4 libiconv-1.9.2_2 openldap-client-2.3.30 perl-5.8.8 pkg-config-0.21 png-1.2.12_1 popt-1.7_1 tiff-3.8.2_1
WWW:    http://www.samba.org/

Port:   samba4wins-1.0.4.r1
Path:   /usr/ports/net/samba4wins
Info:   A full featured replicating WINS server for UNIX
Maint:  timur@gnu.org
B-deps: autoconf-2.59_2 libiconv-1.9.2_2 m4-1.4.4 perl-5.8.8
R-deps: libiconv-1.9.2_2 perl-5.8.8
WWW:    http://enterprisesamba.org/index.php?id=88

On peut donc voir que Samba 3.0.23c se trouve dans le répertoire /usr/ports/net/samba3

  • Se placer dans le répertoire /usr/ports/net/samba3
  • Configurer les options de compilation de Samba:
# make config

Cela lance une interface texte pour éditer les options de compilation de Samba. Tous les ports ne disposent pas d'un make config.

  • Lancer l'installation de Samba:
# make install
  • Une fois que l'installation est terminé, les différents fichiers de configuration sont placés à leur endroit. Pour les ports qui sont des services, aller voir dans le répertoire: /usr/local/etc/rc.d/, trouver le fichier correspondant. Dans les premières lignes, il y aura une explication des paramètres à mettre dans le /etc/rc.conf pour que le service démarre.
  • Nettoyer le répertoire de travail de la compilation des ports:
# make clean

Voila pour l'installation d'un port sur un FreeBSD.


Mise à jour du /usr/ports

Il existe plusieurs méthodes pour garder à jour l'arborescence /usr/ports.

CVSUP

CVSUP permet de synchroniser ces sources avec des serveurs sur Internet. Le principal problème avec cvsup est qu'il nécessite un port spécifique (TCP/5999) pour fonctionner. Cela veut dire que si un firewall filtre en sortie, cela pourrait ne pas fonctionner.

Il faudra commencer par l'installer car CVSUP n'est pas installé par défaut !

Pour cela, voir le chapitre précédent sur l'installation d'un port.

Une fois installé, il faudra lui créer un fichier de configuration que l'on placera dans /usr/local/etc/ et on l'appelera ports-supfile par exemple. Il sera de la forme suivante:

# Choisir un serveur cvsup
*default host=<CHOISISSEZ UN SERVEUR>.FreeBSD.org
*default base=/var/db
*default prefix=/usr
# Pour les ports, on prend les dernières versions
*default release=cvs tag=.
# On autorise à effacer les anciens fichiers et on ajoute un suffix en fonction de la release
*default delete use-rel-suffix
# On compresse pour économiser de la bande passante. A tester selon la vitesse de la connexion Internet
*default compress

# On synchronise tous les ports 
ports-all

Pour finir, on lance la commande suivante:

# cvsup -g -L 2 /usr/local/etc/ports-supfile

le -g sert à désactiver l'interface graphique... mais de toutes facons, si on est sur un serveur sans interface graphique, on aura choisit la version without-gui de cvsup. Le -L 2 sert à régler la verbosité.

Après un bon café, voir deux... selon le temps écoulé depuis la dernière synchro, on aura une belle arborescence à jour.

Portsnap

Je n'utilise pas portsnap mais il semblerait qu'il utilise une connexion http normale pour récuperer les ports donc cela corrige le petit soucis dont je parlais avec cvsup un peu plus haut.

Les différentes étapes sont quelque chose comme ca:

# portsnap fetch
# portsnap extract

Pour mettre à jour le répertoire /usr/ports.


Mettre à jour son index

Pour cela plusieurs méthodes encore une fois... Il faudra toujours se placer dans le répertoire /usr/ports.

Certaines prennent beaucoup de temps selon la machine:

# make index

Cela va reconstruire l'index à partir des sources présentes sur la machine.

D'autres beaucoup plus rapide:

# make fetchindex

Cela va récuperer l'index sur Internet. Il est donc bien d'avoir synchroniser ses sources avec cvsup avant !


Mise à jour des ports

Maintenant que les sources sont à jour, il va falloir recompiler les ports qui ne sont plus à jour. Et là, vous allez rire, il y a plusieurs méthodes !

portupgrade

portupgrade est un outil sympa pour upgrader ses ports... mais il est fait en Ruby il semblerait... ou alors a des dépendances fortes envers Ruby !

Il va falloir commencer par l'installer. Il se trouve dans les ports !

Ensuite pour voir les paquets que l'on doit mettre à jour, la commande suivante est assez bien:

# portupgrade -arn

Le -a signifie all pour mettre à jour tous les paquets, le -r est récursif pour les dépendances et -n est le non-execute pour juste retourner sur la console les paquets à upgrader.

Cela est de la forme suivante:

--->  Session started at: Tue, 21 Nov 2006 10:34:26 +0100
[...]
** No need to upgrade 'db43-4.3.29_1' (>= db43-4.3.29_1). (specify -f to force)
--->  ** Upgrade tasks 40: 0 done, 14 ignored, 0 skipped and 0 failed
--->  Upgrade of graphics/tiff started at: Tue, 21 Nov 2006 10:34:45 +0100
--->  Upgrading 'tiff-3.8.2' to 'tiff-3.8.2_1' (graphics/tiff)
OK? [no]
--->  Upgrade of graphics/tiff ended at: Tue, 21 Nov 2006 10:34:45 +0100 (consumed 00:00:00)
--->  ** Upgrade tasks 40: 1 done, 14 ignored, 0 skipped and 0 failed
** No need to upgrade 'db41-4.1.25_4' (>= db41-4.1.25_4). (specify -f to force)
--->  ** Upgrade tasks 40: 1 done, 15 ignored, 0 skipped and 0 failed
** No need to upgrade 'openldap-server-2.3.30' (>= openldap-server-2.3.30). (specify -f to force)
[...]
--->  Listing the results (+:done / -:ignored / *:skipped / !:failed)
[...]
        - databases/db43 (db43-4.3.29_1)
        + graphics/tiff (tiff-3.8.2)
        - databases/db41 (db41-4.1.25_4)
        - net/openldap23-server (openldap-server-2.3.30)
[...]
--->  Packages processed: 1 done, 39 ignored, 0 skipped and 0 failed
--->  Session ended at: Tue, 21 Nov 2006 10:35:06 +0100 (consumed 00:00:40)

Cela montre que je dois upgrader le port tiff qui est dans la section graphics.

Pour mettre à jour réellement les ports, il suffit de retirer le n:

# portupgrade -ar

Attention cela mettra à jour TOUS les ports qui ne le sont pas !!!


portmanager

portmanager est un autre système pour mettre à jour ces ports... Il n'utilise pas le Ruby...

Pour voir les ports que l'on doit mettre à jour, il suffit de taper la commande suivante:

portmanager -s -l

Le -l est facultatif... il indique juste qu'il va écrire le fichier de logs: /var/log/portmanager.log.

Ce que nous renvoie portmanager est de la forme suivante:

[...]
 Port Status Report
------------------------------------------------------------------------
00001 have:libtool-1.5.22_3                    /devel/libtool15                    CURRENT
00002 have:libiconv-1.9.2_2                    /converters/libiconv                CURRENT
00003 have:gettext-0.14.5_2                    /devel/gettext                      CURRENT
00004 have:gmake-3.81_1                        /devel/gmake                        CURRENT
00005 have:ezm3-1.2_1                          /lang/ezm3                          CURRENT
00006 have:cvsup-without-gui-16.1h_2           /net/cvsup-without-gui              CURRENT
00007 have:bash-3.1.17                         /shells/bash                        CURRENT
[...]

je n'ai rien à mettre à jour sur mon système.

Pour lancer réellement l'upgrade des paquets, il suffit de taper la commande suivante:

portmanager -u -l

Le -l est toujours facultatif.

Attention cela mettra à jour TOUS les ports qui ne le sont pas !!! Et il recompilera les paquets dont des dépendances ont été mises à jour.


Nettoyage des fichiers de compilation

Si on ne fait pas un make clean après chaque installation de port, il y a la commande portsclean qui dépend du port portupgrade.

Pour un grand nettoyage des fichiers dists et des répertoires work de chaque port:

# portsclean -CD


Mot de la fin

Voilà quelques notions de base pour gérer ses ports tranquillement...

Il faudra aussi penser à ajuster un peu le fichier /etc/make.conf en suivant ce document: make.conf.



Par: Silencer 6 février 2007 à 16:15 (CET)

Outils personnels