Tenir à jour l’arbre de ports sous FreeBSD

Comme vous le savez peut-être déjà, sous FreeBSD, on ne parle pas de paquets mais de ports !
La première chose, après avoir installé votre système est de construire l’arbre des ports.
Pour se faire, utilisez la commande suivante :

# portsnap fetch

Cela va aller télécharger la dernière image connue sur les serveurs de FreeBSD (fetch) et va vous construire automatiquement votre arborescence dans le répertoire /usr/ports. La dernière image en date fait près de 55Mb donc peut mettre plus de 5 min a se télécharger. Une fois l’arbre des ports récupéré, il est logé dans /var/db/portsnap. Pour l’extraire dans /usr/ports, il faut entrer la ligne suivante :

# portsnap extract

Note : Si le répertoire /usr/ports n’est pas créé lors de l’installation, FreeBSD le fait automatiquement lors de la première exécution de Portsnap. Compter un bon quart d’heure pour l’extraction.

Très bien, voilà maintenant notre arbre installé. Oui, mais pour le mettre à jour ? Deux utilitaires existent : Portsnap et CVSup

• CVSUP

CVSup est réputé comme étant l’utilitaire le plus simple et le plus rapide.

- INSTALLATION

# cd /usr/ports/net/cvsup-without-gui
# make install clean

ou

# portupgrade -N cvsup-without-gui

- CONFIGURATION

Créer un nouveau fichier :

# vi /root/cvs-supfile

Et écrire la configuration suivante à l’intérieur :

# Pour obtenir les ports de FreeBSD-CURRENT (le « . » correspond au tag RELENG_7, tag CVS pour la version FreeBSD 7-STABLE)
*default tag=.
# Serveur de téléchargement
*default host=cvsup.fr.freebsd.org
# Emplacement des fichiers obtenus sur le serveur (ici /usr/src). « src » est implicitement contenu dans le préfixe
*default prefix=/usr
#Répertoire où se trouvent les fichiers d’état de CVSup qui garde la trace des modifications
*default base=/var/db
# Obtient les informations par rapport au référentiel principal | Autorise CVSup à supprimer des fichiers | Ajoute un suffixe propre à CVSup | Compresse les fichier avec gzip
*default release=cvs delete use-rel-suffix compress
# Recevoir toute l’arborescence principale du système FreeBSD
src-all

- UTILISATION

Pour exécuter CVSup, tapez la commande suivante :

# cvsup -g -L 2 /root/cvs-supfile

-g permet de désactiver l’interface graphique (inutile)
-L permet de déterminer le niveau de détail que CVSup affichera dans la console lors de son exécution (2 est le niveau le plus fin)

http://www.cvsup.org

• PORTSNAP

Une autre méthode pour mettre à jour l’arbre des ports de FreeBSD est d’utiliser Portsnap.

- INSTALLATION

# cd /usr/ports/ports-mgmt/portsnap
# make install clean

ou

# portupgrade -N portsnap

- CONFIGURATION

Normalement, à la première installation, Portsnap copie le fichier portsnap.conf dans le répertoire /etc. Si jamais ce n’était pas le cas, tapez la commande suivante :

# cd /usr/local/etc/ && cp portsnap.conf.sample portsnap.conf && cp portsnap.conf /etc

- UTILISATION

Pour mettre votre arbre des ports à jour, il faut taper la commande qui suit :

# portsnap fetch update

Elle efface les ports qui ne sont plus d’actualité et ajoute ceux qui manquent par rapport à la base de données de FreeBSD. Elle extrait automatiquement les ports et reconstruit l’index.

Personnellement, j’utilise Portsnap qui, en plus d’une utilisation simplifiée, est davantage à jour que CVSup.

Bonne et Heureuse Année 2010 !

Une nouvelle année commence, je vous la souhaite très belle, pleine de réussite avec beaucoup de joie. J’espère qu’elle sera bonne très bonne pour vous ainsi que tous vos proches…

Bonne et Heureuse Année 2010 !

Categories: Nouvelles Tags: , ,

Les outils des ports

Terminons cette série en jetant un coup d’oeil sur la section tools de l’arbre des ports. Si vous ne l’avez pas encore découverte:

% more /usr/ports/Tools/scripts/README

Geee, au moment même où vous avez pensiez tout savoir des ports, vous découvrez une nouvelle cachette pleine d’utilitaires. Puisque ce sont tous des scripts, n’oubliez pas de mettre un ./ devant le nom, quand vous en essayez un:

% cd /usr/ports/Tools/scripts
% ./consistency-check

Je suggérerais d’essayer chaque script qui suscite votre intérêt en lisant sa description dans son fichier README. Si vous en trouvez d’intéressants, copiez les dans ~/bin, ou créez un lien symbolique, ainsi ils seront dans votre path.

Personnaliser différentes options de construction de ports

Une des configurations les plus maniables dans ce fichier est la section MAKE_ARGS. Quelques ports permettent de personnaliser leur construction en indiquant certains arguments. Ces arguments sont trouvés dans le fichier makefile du port, et sont habituellement appelés comme ceci:

% cd /usr/ports/multimedia/mplayer
% make WITH_GUI=yes WITH_FREETYPE=yes install clean

Cette commande make est identique à cette invocation:

% make -DWITH_GUI -DWITH_FREETYPE install clean

Si jamais vous prévoyez d’employer portupgrade pour mettre à jour mplayer, en utilisant les mêmes arguments, vous avez un choix à faire. L’un ou l’autre compte sur votre capacité de vous souvenir d’utiliser l’option -m pour indiquer à make vos arguments avec portupgrade:

% portupgrade -rRm ‘-DWITH_GUI’ ‘-DWITH_FREETYPE’ mplayer

ou rajoutez ces switches dans /usr/local/etc/pkgtools.conf :

MAKE_ARGS = {
‘multimedia/mplayer-*’ => ‘WITH_GUI=1 WITH_FREETYPE=1′,
}

Ceci mis à part, cela parait un peu compliqué, avec une syntaxe plutôt barbare. Notez que la section entière de MAKE_ARGS est incluse dans les parenthèses fermées ( { et } ). Entre ces parenthèses, sont les ports particuliers et leurs arguments. Ceci signifie que vous pouvez continuer à ajouter des ports dans cette section, chacun sur sa ligne, en s’assurant que tous ces ports sont inclus entre les parenthèses.

Le nom du port lui-même doit être cité dans des guillemets simples (’) et inclut le nom de son sous-répertoire dans la collection de ports. Le nom est suivi du wildcard * .

Les arguments de make eux-mêmes sont également joints entre des guillemet simples situés après le => . Notez que le numéro 1 est utilisé au lieu du mot yes et que les arguments sont séparés par un espace.

Il vaut la peine de passer quelques minutes à ajouter vos arguments à cette section, à chaque fois que vous construisez un port qui en utilise. Quand par la suite vous mettrez à niveau ce port, il est très peu probable que vous vous souveniez qu’il a utilisé tels arguments, ainsi, ils se trouvent conservés.

Categories: Administration, FreeBSD, Tutoriaux Tags:

Personnaliser les ports disponibles

Voyons comment personnaliser interactivement avec la collection de ports. Quand vous avez installé portupgrade, les fichiers /usr/local/etc./pkgtools.conf et /usr/local/etc./pkgtools.conf.sample ont été installés pour vous. Par défaut, les deux fichiers sont les mêmes. Faites toutes les modifications dans /usr/local/etc./pkgtools.conf et gardez /usr/local/etc./pkgtools.conf.sample tel quel, pour vous rappeler les configurations initiales.

Si vous prenez le temps de lire ce fichier, vous constaterez qu’il est bien commenté, ordonné et utilement conçu pour vous aider à obtenir le meilleur de vos ports. Je mettrais en valeur certaines des options les plus utiles, mais prenez le temps de vérifier tout le fichier vous-même. Pour des débutants, ce fichier permet de positionner les variables d’environnement employées par les utilitaires de portupgrade. Par exemple, le répertoire par défaut est /var/tmp . Ce répertoire peut poser des problèmes sur de petits disques durs, où l’espace disque est limité sur /var . Pour le changer, rechercher cette ligne dans /usr/local/etc./pkgtools.conf :

# ENV['PKG_TMPDIR'] ||= ‘/var/tmp’

Et changez le en quelque chose comme:

ENV['PKG_TMPDIR'] ||= ‘/usr/tmp’

Rappelez-vous de retirer le commentaire (#), et de vous assurer que le nouveau répertoire provisoire existe.

Une autre configuration utile est la sélection de catégories à ignorer:

# IGNORE_CATEGORIES: array
#
# This is a list of port categories you want the pkgtools to ignore.
# Typically you want to list language specific categories of the
# languages you don’t use.
#
# After configuring this list, you need to rebuild the ports
# database to reflect the changes. (run ‘portsdb -Ufu’)
#
# e.g.:
# IGNORE_CATEGORIES = [
# 'chinese',
# 'french',
# 'german',
# 'hebrew',
# 'japanese',
# 'korean',
# 'russian',
# 'ukrainian',
# 'vietnamese',
# ]
IGNORE_CATEGORIES = [
]

Ici, les commentaires sont tout à fait clairs. Si vous décidez de tirer profit de cette option, retirez le # des catégories que vous souhaitez ignorer. Tandis que les catégories de langage sont suggérées, vous pouvez ignorer n’importe quelle catégorie. Par exemple, si vous ne projetez jamais d’installer des applications de la catégorie astro ou des catégories irc, vous pouvez les inclure. Voici un exemple édité:

IGNORE_CATEGORIES = [
'chinese',
'german',
'hebrew',
'japanese',
'korean',
'russian',
'ukrainian',
'vietnamese',
'astro',
]

# IGNORE_CATEGORIES = [
# ]

Notez que j’ai remarqué la section vide par défaut IGNORE_CATEGORIES. J’ai alors retiré les remarques de la section énumérant les catégories que je voulais ignorées. J’avais l’habitude d’employer également le même format pour ajouter la catégorie astro. N’oubliez pas de suivre les directions des commentaires et:

# portsdb -Ufu

une fois que vous avez sauvegardé l’édition de cette section.

PfSense 1.2.3 est sortie

Une nouvelle version du Firewall PfSense est disponible. Pour rappel PfSense est une distribution FreeBSD proposant un firewall complet.
La version 1.2.3 est une mise à jour mineure amenant quelques corrections de bugs ainsi que certaines améliorations, en attendant la version 2.0 actuellement en ALPHA.
Citons tout d’abord le passage à FreeBSB 7.2, l’amélioration du bridging d’interfaces dynamique, le support des noms de domaine dynamique en IPSec, la possibilité de supprimer des baux DHCP …
Je vous renvoie à la release notes pour la liste exhaustive des changements.
Pour mettre à jour votre Firewall, rendez-vous dans votre interface d’admin, onglet « System » puis « Firmware ». Cliquez alors sur « Enable Firmware Upload » et sélectionnez le fichier à transférer (télécharger le ici). Cliquez ensuite sur « Upgrade Firmware ». Une fois le fichier uploadé le firewall redémarrera

Garder vos ports bien propres

Nous avons vu dans les derniers articles comment employer les utilitaires intégrés et portupgrade, pour maintenir à jour et Utiliser les ports. Aujourd’hui, je voudrais commencer une série d’article montrant comment maintenir votre système au propre après la désinstallation d’applicatifs, et comment personnaliser votre arbre de ports avec pkgtools.conf. N’importe qui ayant déjà installé ou désinstallé un logiciel, réalisera bientôt que l’on peut obtenir du malpropre. Encombrer le disque dur avec des fichiers temporaires, de README non lus, et de répertoires inaperçus. Parfois, une désinstallation de programme laissera des souvenirs : Des fichiers qui ne sont plus exigés, mais encombrent toujours l’espace disque. Plus désagréable, une installation pourrait effacer, ou une désinstallation pourrait retirer des bibliothèques employées par d’autres applications. Ces anéantissements dépassent les bornes, et perturbent souvent le système d’exploitation, conduisant l’utilisateur à le réinstaller à partir de zéro, juste pour pouvoir recommencer de manière propre.

Garder vos ports bien propres

Heureusement, il y a des outils disponibles pour vous aider à contrôler intelligemment l’installation de logiciels, et permettre à votre système FreeBSD de ronronner tranquillement pendant des années. Par exemple, quand vous installez un port, souvenez vous d’ajouter le target (mot) clean à la commande make:

# make install clean

Ceci lui indiquera de nettoyer son répertoire d’installation, une fois le port installé avec succès. Si vous oubliez de nettoyer, vous constaterez bientôt que ces répertoires peuvent consommer beaucoup d’espace disque. Selon vos besoins et la quantité d’espace dont vous disposez, vous pourriez utiliser cette commande à la place :

# make install distclean

Quand vous installez un port, les fichiers sources exigés sont téléchargés depuis l’Internet, et copiés dans /usr/ports/distfiles . Si vous avez à réinstaller un port, les fichiers sources nécessaires seront déjà sur le disque; distclean dit à make d’effacer ces fichiers une fois que le port est installé avec succès. En décidant d’utiliser distclean, vous équilibrez votre espace disque disponible, avec la vitesse et la fiabilité de votre connexion Internet. En outre, pour des raisons de licences, certains ports exigent de chercher la source manuellement, et de la sauvegarder dans /usr/ports/distfiles . Je trouve plus commode de sauvegarder ces fichiers sur le disque, ainsi je n’utilise pas distclean en construisant ces ports. Ces deux options peuvent permettre l’économie d’espace disque. Cependant, si vous avez installé portupgrade, regardez l’utilitaire portsclean qui est fourni avec. Comme son nom le suggère, cet utilitaire est conçu pour nettoyer ce qui peut avoir été oublié dans la collection de ports.

J’ai un système que j’utilise pour tester des applications, employé pour installer et désinstaller des centaines de ports. J’aime habituellement utiliser mes applicatifs proprement, et de me rappeler d’utiliser distclean. jetons un coup d’oeil à son état actuel, et voyons si portsclean fera une différence. D’abord, je contrôlerais l’occupation disque sur /usr :

# df /usr
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/ad0s1f 13360662 6189648 6102162 50% /usr

Ensuite, je rechercherais dans /usr/ports . Cette commande montrera l’occupation du disque, triée pour les plus grosses utilisations, en sélectionnant les dix principaux mangeurs d’espace:

# du /usr/ports |sort -rn|head
3110862 /usr/ports
1848846 /usr/ports/distfiles
822278 /usr/ports/editors
816710 /usr/ports/editors/openoffice-devel
816592 /usr/ports/editors/openoffice-devel/work
604784 /usr/ports/editors/openoffice-devel/work/oo_644_src
362536 /usr/ports/distfiles/KDE
295404 /usr/ports/distfiles/openoffice
211718 /usr/ports/editors/openoffice-devel/work/mozilla
211654 /usr/ports/editors/openoffice-devel/work/mozilla/work

Hmmm. Regardez comme je n’ai pas utilisé distclean autant que je l’aurais du, j’ai toujours des fichiers résiduels après la construction d’OpenOffice. Je commencerais par nettoyer tous ces répertoires de fonctionnement oubliés:

# portsclean -C

Y a t’il maintenant une différence dans l’occupation de l’espace disque ?:

# df /usr
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/ad0s1f 13360662 5160664 7131146 42% /usr

Oh ouais. J’ai juste augmenté ma capacité disque de 8%. Rappelez-vous, nettoyer ces répertoires de fonctionnement est une bonne chose, comme ils sont seulement utilisés pendant le processus de construction. Ils ne sont plus nécessaires une fois le port installé avec succès.

L’option suivante de portsclean est intéressante. Disons que vous avez décidé de garder /usr/ports/distfiles intact pendant les années passées. Et, depuis, vous avez désinstallé quelques applications, et en avez mis à jour d’autres, aux dernières versions. Il y a de très fortes chances que quelques fichiers sources périmés et inutiles dorment sous la poussière dans /usr/ports/distfiles . Pour trouver et retirer ces reliques :

# portsclean -DD
Detecting unreferenced distfiles…

et pour en vérifier l’impact :

# df /usr
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/ad0s1f 13360662 4092490 8199320 33% /usr

Whoa. Encore 9% de moins en occupation disque. Je devrais également voir une différence importante avec la commande du:

# du /usr/ports | sort -rn | head
1011998 /usr/ports
780760 /usr/ports/distfiles
161724 /usr/ports/distfiles/openoffice
137010 /usr/ports/distfiles/staroffice52
122648 /usr/ports/distfiles/KDE
55478 /usr/ports/distfiles/xc
24936 /usr/ports/distfiles/rpm
20536 /usr/ports/devel
18194 /usr/ports/distfiles/AbiWord
17704 /usr/ports/distfiles/ghostscript

Remarquez que si l’occupation disque a diminuée considérablement, mon système maintient toujours les distfiles référencés par mes applications installées.

Un environnement souple et convivial : le shell BASH

Comme tout administrateur système, pour travailler il est indispensable d’avoir un environnement souple et convivial ; le shell BASH (Bourne-Again-Shell) est certainement le plus approprié pour son confort d’utilisation.

• Passons sans plus attendre à l’installation de BASH ; une compilation est nécessaire car il n’est pas installé d’origine.

# cd /usr/ports/shells/bash
# make install clean

Si vous êtes un flemmard comme moi vous taperez plutôt

portupgrade -N bash

• BASH se trouve donc installé dans /usr/local/bin ; il va falloir changer le SHELL par défaut.

# pw usermod root -c «  » -s /usr/local/bin/bash

• Une fois la commande executée, il suffit de se déloguer puis de se reloguer. Le prompt suivant apparaît :

[root@sam /home/frodon]#

Créer un utilisateur d’usage en accès privilégié

Ajouter un utilisateur d’usage pour un accès au serveur. Il est fortement déconseillé d’utiliser le super-utilisateur root en direct sur le système. En effet, il est recommandé de disposer d’un utilisateur standard qui permettra un accès restreint puis d’autoriser le passage en mode SU à cet utilisateur (norme de sécurité).

Remarque – l’utilisateur root est interdit en accès telnet ou ssh.

• Créez l’utilisateur (usrwin dans notre exemple) avec le mot de passe de votre choix et en forcant la création au groupe wheel (le groupe wheel pour « conduisant » la machine est supérieur en droit par rapport au groupe admin ; groupe d’administrateur expérimenté) ; ceci autorisant un passage en mode SU le cas échéant.

# adduser
Username: usrwin
Full name: USRWIN
Uid (Leave empty for default):
Login group [usrwin]: wheel
Login group is wheel. Invite usrwin into other groups? []:
Login class [default]:
Shell (sh csh tcsh nologin) [sh]:
Home directory [/home/usrwin]:
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]:
Use a random password? (yes/no) [no]:
Enter password: xxxxxxx
Enter password again: xxxxxxx
Lock out the account after creation? [no]:
Username : usrwin
Password : *****
Full Name : USRWIN
Uid : 1001
Class :
Groups : wheel
Home : /home/usrwin
Shell : /bin/sh
Locked : no
OK? (yes/no): yes
Add another user? (yes/no): no
Goodbye!

Categories: Administration, FreeBSD Tags:

Les options supplémentaires de Portupgrade

Nous avons déja vu que portupgrade -arR mettra à jour correctement toutes les applications en ayant besoin. Toutefois, portupgrade possède quelques options permettant de choisir quelles applications mettre à jour et comment le faire.

Une option utile si vous n’avez pas une connexion permanente à Internet est -F. Habituellement, lors d’une mise à jour, portupgrade ira chercher un fichier dont il a besoin puis passera un certain temps à construire ce qu’il faut. Si vous faites une grosse mise à jour comme celle de KDE, il aura sans doute besoin d’aller sur Internet quelques fois sur une période de plusieurs heures.

Cette commande ira chercher sur Internet tous les fichiers indispensables à la mise à jour de vos ports, sans rien installer:

$ portupgrade -aFrR

Une fois téléchargés tous ces fichiers, vous pouvez vous déconnecter d’Internet et exécuter portupgrade -arR comme d’habitude.

Une autre option disponible est -n. Cela vous dit simmplement ce que ferait portupgrade sans vraiment qu’il ne le fasse. C’est particulièrement utile si vous êtes inquiet ou un peu parano, et voulez savoir par avance ce qui arrivera à votre installation. En voici une sortie à titre d’exemple:

$ portupgrade -anrR
—> Session started at: Sun, 17 Aug 2003 22:06:00 -0400
—> Reporting the results (+:done / -:ignored / *:skipped / !:failed)
- lang/ruby16 (ruby-1.6.8.2003.04.19)
- net/cvsup-without-gui (cvsup-without-gui-16.1h)
+ lang/ruby16-shim-ruby18 (ruby-shim-ruby18-1.8.0.p2.2003.04.19)
+ databases/ruby-bdb1 (ruby-bdb1-0.1.9)
+ ports-mgmt/portupgrade (portupgrade-2.4.3_2,2)
- www/lynx (lynx-2.8.4.1d)
—> Session ended at: Sun, 17 Aug 2003 22:06:02 -0400 (consumed 00:00:02)

Regardons de près cette sortie. portupgrade a fait le tour des ports installés et compilé ses résultats dans un rapport. Chaque ligne de ce rapport montre l’origine du port, la version installée actuellement et un symbole indiquant si une mise à jour est nécessaire ou non. Le présent rapport montre que deux ports ont besoin d’une mise à jour. Ce sont ceux dont la ligne débute par +. Si je compare ce résultat avec celui de portversion, je verrais bien sûr les mêmes résultats, présentés différemment:

$ portversion -l « < »
ruby-bdb1
ruby-shim-ruby18

Si vous êtes prudent quant à ce qui doit être mis à jour sur votre système, employez l’option -i, ou ‘interactive’. Ajoutez-la à vos autres options et portupgrade marquera une pause avant de mettre à jour toute application ou dépendance, comme ceci:

—> Upgrading ‘ruby-bdb1-0.1.9′ to ‘ruby-bdb1-0.2.1′
(databases/ruby/bdb1)
OK? [yes]

Notez la réponse par défaut à « Oui » entre crochets. Cela signifie qu’en appuyant sur ENTREE, vous acquiescez. Si vous préférez ne pas mettre à jour ce port, saisissez le mot « no » à la place.

La dernière option que je voudrais aborder est -l, ou ‘log’. Cette option n’a pas de prix, lorsqu’un port refuse de s’installer et que vous avez besoin d’envoyer la sortie à quelqu’un d’autre. Ci-après, je vais mettre à jour un port déterminé et envoyé la sortie du processus dans un fichier nommé logfile:

$ portupgrade -rR ruby-shim-ruby18 -l logfile

Il vaut mieux éviter l’emploi de -l avec -a, surtout si vous avez un grand nombre de ports réclamant une mise à jour. Personne ne voudrait patauger dans un fichier de log aussi gros.