Comment installer et gérer les ports sur FreeBSD 10.1

introduction

FreeBSD est un système d’exploitation puissant capable de jouer divers rôles. Une partie de ce qui fait de ce système d’exploitation un choix idéal dans de nombreux scénarios est sa réputation de flexibilité. Une grande contribution à cette réputation provient de la méthode prise en charge par FreeBSD pour installer un logiciel à partir de la source, connue sous le nom de * système de ports *.

Dans ce guide, nous aborderons certains des avantages du système de ports et montrerons comment l’utiliser pour acquérir et gérer des logiciels supplémentaires. Nous verrons comment installer à l’aide de la commande `` + make + ’, comment personnaliser vos applications et comment tirer parti des outils courants pour faciliter la maintenance des ports.

Conditions préalables

Pour suivre ce guide, vous devez avoir accès à un serveur FreeBSD 10.1 et à un compte utilisateur non root avec les privilèges + sudo +. Ce guide peut vous aider à vous connecter à votre serveur FreeBSD et à mettre en place un environnement de travail raisonnable.

Gérer différents types de logiciels FreeBSD

L’équipe FreeBSD maintient le système d’exploitation de base de FreeBSD en tant qu’unité cohérente. Ses composants sont mis à jour à l’aide d’un outil appelé + freebsd-update + et leur comportement est principalement contrôlé par des fichiers de configuration situés dans le répertoire + / etc +. Bien que vous puissiez installer et utiliser des alternatives au logiciel fourni, vous ne pouvez pas supprimer facilement et en toute sécurité ceux qui sont inclus dans le système de base car ils sont considérés comme des composants fonctionnels essentiels du système d’exploitation.

En revanche, les logiciels en option sont gérés à l’aide de différents processus, outils et emplacements dans le système de fichiers. Contrairement aux logiciels du système de base, les logiciels en option sont configurés dans le répertoire + / usr / local / etc +. FreeBSD fournit deux méthodes approuvées pour télécharger et installer des logiciels supplémentaires sur le système.

Le système de ports, que nous allons décrire dans ce guide, est géré via une hiérarchie de système de fichiers située dans + / usr / ports + qui catégorise chaque logiciel disponible que FreeBSD sait construire. Dans ce répertoire, le sous-répertoire de premier niveau classe les logiciels principalement en fonction de la fonction ou de la langue. Dans ces répertoires, des dossiers existent pour chaque logiciel. Les logiciels peuvent être téléchargés, configurés, compilés et installés au moyen de simples commandes + make + ou via des utilitaires auxiliaires disponibles. Le logiciel de la collection de ports comprend tous les correctifs nécessaires à la création et à l’exécution de l’application sur un système FreeBSD.

L’autre type d’installation pris en charge par le système est * packages *, qui sont des binaires logiciels compilés à partir de la collection de ports en utilisant des valeurs par défaut raisonnables. C’est une bonne méthode pour acquérir rapidement un logiciel, mais elle perd le niveau de personnalisation fourni par le système de ports. Pour en savoir plus sur la gestion des packages logiciels, consultez la page his guide.

Préparer l’arborescence des ports

L’arborescence des ports est le nom de la hiérarchie qui se trouve sous le répertoire + / usr / ports +. Cette hiérarchie contient des répertoires correspondant aux catégories de ports, parmi lesquels se trouvent d’autres répertoires correspondant à des ports individuels.

Avant de commencer à manipuler des ports, nous devons nous assurer que cette hiérarchie est à jour. L’oubli de l’actualisation de la hiérarchie des ports peut entraîner des échecs de construction car les ports tentent d’extraire et de générer des fichiers qui risquent de ne plus être valides.

Nous pouvons mettre à jour l’arborescence des ports à l’aide d’un utilitaire appelé + portsnap +. Cet outil interroge les serveurs de ports FreeBSD pour connaître les modifications.

Prendre note de notre dernière mise à jour

Avant d’exécuter la commande de mise à jour proprement dite, nous devons prendre note de l’horodatage sur un fichier spécifique de notre arborescence de ports appelé + / usr / ports / UPDATING +. Nous pouvons utiliser l’outil + stat + pour voir les différents timestamps associés au fichier:

stat -x /usr/ports/UPDATING

Vous devriez voir une sortie qui ressemble à ceci:

 File: "UPDATING"
 Size: 375337       FileType: Regular File
 Mode: (0644/-rw-r--r--)         Uid: (    0/    root)  Gid: (    0/   wheel)
Device: 0,81   Inode: 2011338    Links: 1
Access: Thu Dec 11 22:24:59 2014
Modify:
Change:

Il est possible que vous receviez à la place une erreur comme celle-ci:

stat: /usr/ports/UPDATING: stat: No such file or directory

Si vous voyez cela, cela signifie que vous n’avez pas d’arborescence de ports initialisée sur votre système. Si tel est le cas, passez à la section suivante pour savoir comment extraire une arborescence de ports initiale sur votre système à l’aide de + portsnap +.

Les valeurs sur lesquelles nous voulons prêter attention sont les temps «Modifier» et «Changer», qui sont mis en évidence dans le résultat ci-dessus. Dans ce cas, l’horodatage «Modifier» sera la dernière fois qu’un responsable de ports a modifié le fichier avec des informations importantes. L’horodatage «Change» sera la dernière fois que le fichier a été synchronisé sur votre serveur.

Nous devons nous rappeler l’horodatage afin de savoir à quelles notes de mise à jour nous devons faire attention après l’actualisation de notre arborescence de ports. Nous pouvons les sauvegarder dans un fichier de notre répertoire personnel en tapant:

stat -x /usr/ports/UPDATING > ~/last_update

Maintenant que nous avons cette information enregistrée, nous pouvons aller de l’avant et mettre à jour notre arborescence de ports.

Mise à jour de l’arborescence des ports avec Portsnap

Une fois que vous avez une idée précise de la dernière mise à jour de l’arbre des ports, vous pouvez le synchroniser avec les informations les plus récentes du site du projet FreeBSD. Pour ce faire, nous allons utiliser un outil appelé + portsnap +.

Si vous n’avez aucune information dans le répertoire + / usr / ports + (si vous avez rencontré l’erreur mentionnée dans la dernière section), vous pouvez télécharger et extraire toute l’arborescence des ports dans ce répertoire avec + portsnap +. Ce processus peut prendre un certain temps, mais il n’est nécessaire que si votre répertoire + / usr / ports + est vide, ce qui ne devrait se produire qu’une fois. Si votre serveur FreeBSD est sur DigitalOcean, votre arborescence de ports devrait déjà être initialisée:

sudo portsnap fetch extract

Cela téléchargera et extraira l’ensemble de l’arborescence des ports dans le répertoire + / usr / ports +.

Si vous avez déjà une arborescence de ports construite dans le répertoire + / usr / ports + (si vous avez pu enregistrer les horodatages dans la dernière section), vous pouvez mettre à jour les fichiers à leurs versions les plus récentes avec cette commande:

sudo portsnap fetch update

Cette commande extraira uniquement les fichiers qui diffèrent de ceux de la structure + / usr / ports +, elle prendra donc beaucoup moins de temps que la variante + extract + de la commande. C’est le format à utiliser dans les mises à jour quotidiennes de l’arborescence des ports.

Une fois que votre arborescence de ports est créée ou mise à jour, vous pouvez commencer à gérer et utiliser les ports de votre système.

Rechercher des applications dans l’arborescence des ports

Maintenant que vous avez une hiérarchie d’arborescence des ports mise à jour sur votre système, vous pouvez commencer à regarder le logiciel disponible. Il y a plusieurs façons de le faire, chacune ayant ses avantages.

Recherche avec + whereis +

Le moyen le plus simple de rechercher une application consiste à utiliser son nom avec la commande + whereis +. Ceci recherchera la commande sur votre système et dans l’arborescence des ports. S’il trouve une correspondance, il renverra les informations de chemin pertinentes pour l’application sur votre système.

En règle générale, si l’application n’est pas installée mais que la recherche visait un port valide, elle renverra le chemin d’accès au port dans l’arborescence des ports. Si l’application is est installée, elle renverra généralement le chemin d’accès à l’exécutable, au port et souvent à la page + man +:

Par exemple, nous pouvons rechercher l’utilitaire + wget + en tapant ceci:

whereis wget

Si le port n’est pas installé, nous verrions quelque chose comme ceci:

wget: /usr/ports/ftp/wget

Comme le chemin commence par + / usr / ports +, nous savons qu’il s’agit d’un port installable. Nous pouvons utiliser le chemin renvoyé si nous souhaitons installer ce port.

Si la commande + wget + est déjà installée, il est possible que la sortie ressemble à ceci:

wget: /usr/local/bin/wget /usr/local/man/man1/wget.1.gz /usr/ports/ftp/wget

Cela inclut le chemin d’accès à l’exécutable réellement installé, le fichier de page + man + de l’application et l’emplacement du port dans l’arborescence des ports.

Recherche à l’aide de la commande + echo + dans la hiérarchie du système de fichiers

Dans le FreeBSD Handbook, les auteurs suggèrent également une manière assez nouvelle de rechercher en utilisant uniquement le ` commande + echo + `et la structure intégrée de l’arbre des ports.

L’arborescence des ports est configurée avec tous les fichiers et répertoires pertinents dans le répertoire + / usr / ports +. Dans le système de fichiers, chaque port est représenté par un répertoire distinct contenant toutes les informations nécessaires pour construire et installer le logiciel sur le système FreeBSD.

Pour faciliter l’organisation, ces ports sont regroupés par fonction dans les répertoires de catégories de + / usr / ports +. Ainsi, dans l’exemple + wget + ci-dessus, nous voyons que la commande + wget + a été classée dans le groupe + ftp +. Le répertoire + / usr / ports + contient donc des répertoires de catégories qui, à leur tour, contiennent des répertoires pour les ports.

Nous pouvons exploiter cette structure cohérente en utilisant la commande + echo + et les caractères génériques. Comme nous ne connaissons probablement pas la catégorie dans laquelle le port existera, nous remplacerons ce niveau de répertoire par un astérisque. Nous pouvons également les mettre avant et après notre terme de recherche si nous voulons être plus flexibles dans notre correspondance. Nous pouvons donc rechercher des programmes connexes + wget + en tapant:

echo /usr/ports/*/*wget*

Cela retournera quelque chose de similaire à ceci:

/usr/ports/ftp/gwget /usr/ports/ftp/wget /usr/ports/www/ruby-wgettsv /usr/ports/www/wgetpaste

Cela peut être un peu plus flexible que la commande + whereis + car elle ne nécessite pas de correspondance exacte.

Recherche à l’aide des cibles + make + disponibles

Le moyen le plus efficace de rechercher des ports consiste à utiliser la commande + make +.

C’est également la commande utilisée pour créer et installer des ports sur le système, mais il s’agit plus généralement d’un outil flexible pouvant être utilisé pour exécuter facilement des tâches complexes définies dans un fichier de configuration. Les développeurs FreeBSD ont créé + make + “cibles” (définitions de tâches) qui effectueront une recherche dans l’arbre des ports pour différents critères.

Pour utiliser cette fonctionnalité, vous devez d’abord vous déplacer à la base de l’arborescence des ports. C’est ici que les cibles + make + sont définies:

cd /usr/ports

La syntaxe générale pour exécuter une recherche est la suivante:

make [search|quicksearch] [searchtype]=[searchquery] [modifiers]

Les deux cibles + make conçues pour rechercher dans l’arborescence des ports sont` + search` et + quicksearch. Ceux-ci ont exactement les mêmes fonctionnalités, ne différant que par leur affichage par défaut.

La cible + search + renverra des informations sur le nom du port, le chemin dans l’arborescence du port, une description générale, puis des détails sur la construction, notamment le courrier électronique du responsable, les dépendances de construction, les dépendances d’exécution et l’URL en amont. La cible + quicksearch + renvoie uniquement le nom du port, le chemin d’accès et la description.

Les types de recherche peuvent être l’un des suivants:

  • * name *: recherche uniquement dans le champ du nom du port.

  • * clé *: recherche dans les champs nom, commentaire et dépendances du port.

  • * path *: recherche un chemin spécifique dans la hiérarchie des ports.

  • * info *: recherche dans le champ info (description) du port.

  • * maint *: Recherches par l’adresse électronique du responsable.

  • * cat *: Recherches en fonction de la catégorie du port.

  • * bdeps *: Recherche les dépendances de construction de chaque port.

  • * rdeps *: Recherche les dépendances d’exécution de chaque port.

  • * www *: Recherche sur le site Web des ports.

Vous pouvez également ajouter un «x» avant l’une des catégories ci-dessus pour supprimer les résultats correspondant à une correspondance. Par exemple, si votre recherche inclut + xname = apache +, aucun port contenant la chaîne «apache» dans son champ de nom ne sera retourné.

Examinons quelques exemples rapides. Ci-dessous, vous pouvez voir la différence dans la sortie des cibles + search + et + quicksearch +. La cible + search + inclut des informations complètes sur les correspondances:

make search name=htop
Port:   htop-1.0.3
Path:   /usr/ports/sysutils/htop
Info:   Better top(1) - interactive process viewer
Maint:  [email protected]
B-deps: autoconf-2.69 autoconf-wrapper-20131203 automake-1.14_1 automake-wrapper-20131203 gettext-runtime-0.19.3 indexinfo-0.2.2 libexecinfo-1.1_3 libffi-3.0.13_3 libiconv-1.14_6 m4-1.4.17_1,1 ncurses-5.9.20141213 perl5-5.18.4_11 python2-2_3 python27-2.7.9 readline-6.3.8
R-deps: libexecinfo-1.1_3 lsof-4.89.b,8 ncurses-5.9.20141213
WWW:    http://htop.sourceforge.net/

D’autre part, la cible + quicksearch + affiche uniquement les informations essentielles sur les correspondances trouvées:

make quicksearch name=htop
Port:   htop-1.0.3
Path:   /usr/ports/sysutils/htop
Info:   Better top(1) - interactive process viewer

Il est possible de combiner différents types de recherche pour affiner les résultats. Par exemple, si nous recherchions le moniteur réseau + ntop +, nous pourrions voir des résultats ressemblant à ceci:

make quicksearch name=ntop
Port:   ntopng-zmq-3.2.3_1
Path:   /usr/ports/devel/ntopng-zmq
Info:   NTOPNG specific ZMQ library

Port:   diveintopython-5.4_1
Path:   /usr/ports/lang/diveintopython
Info:   Free Python tutorial book that is "not For Dummies(tm)"

Port:   ntop-5.0.1_8
Path:   /usr/ports/net/ntop
Info:   Network monitoring tool with command line and web interfaces

Port:   ntopng-1.2.1_1
Path:   /usr/ports/net/ntopng
Info:   Network monitoring tool with command line and web interfaces

Port:   sntop-1.4.3_1
Path:   /usr/ports/net/sntop
Info:   Monitor status of network nodes using fping

Ici, nous pouvons voir que la plupart des résultats sont liés à + ​​ntop +, mais nous avons également un livre sur l’apprentissage de Python. Nous pouvons filtrer davantage en ajoutant une spécification de chemin:

make quicksearch name=ntop path=/net
Port:   ntop-5.0.1_8
Path:   /usr/ports/net/ntop
Info:   Network monitoring tool with command line and web interfaces

Port:   ntopng-1.2.1_1
Path:   /usr/ports/net/ntopng
Info:   Network monitoring tool with command line and web interfaces

Port:   sntop-1.4.3_1
Path:   /usr/ports/net/sntop
Info:   Monitor status of network nodes using fping

Nous pouvons également modifier le comportement de la recherche de différentes manières. Certains modificateurs valides sont:

  • * icase *: réglez-le sur «1» pour activer l’insensibilité à la casse. C’est la valeur par défaut. Pour effectuer des recherches sensibles à la casse, définissez la valeur sur “0”.

  • * display *: Ceci contient une liste de champs, séparés par des virgules, à afficher dans la sortie.

  • * keylim *: Limitez la recherche (en utilisant le type de recherche «clé») uniquement aux champs affichés. Activez-le en le réglant sur “1”.

Par exemple, nous pourrions rechercher des descriptions ou des chemins contenant la chaîne «Coller» en majuscule en tapant:

make search key=Paste display=path,info keylim=1 icase=0
Path:   /usr/ports/devel/pear-SebastianBergmann_PHPCPD
Info:   Copy/Paste Detector (CPD) for PHP code

Path:   /usr/ports/devel/py-zope.copypastemove
Info:   Copy, Paste, and Move support for content components

Path:   /usr/ports/german/bsdpaste
Info:   Pastebin web application to upload and read text on a webserver

Path:   /usr/ports/www/p5-WWW-Pastebin-PastebinCom-Create
Info:   Paste to http://pastebin.com from Perl

Path:   /usr/ports/www/p5-WebService-NoPaste
Info:   Pastebin web application to upload snippets of text

Path:   /usr/ports/www/py-django-dpaste
Info:   Pastebin Django application that powers dpaste.de

Path:   /usr/ports/www/wgetpaste
Info:   Paste to several pastebin services via bash script

Une autre situation que vous pouvez rencontrer lors de vos recherches est un port qui a été déplacé ou supprimé. Ces résultats ressemblent à ceci:

make quicksearch name=wget
. . .

Port:   ftp/emacs-wget
Moved:
Date:   2011-05-02
Reason: Has expired: Upstream disappeared and distfile is no longer available

Port:   ftp/wgetpro
Moved:
Date:   2011-10-14
Reason: Vulnerable since 2004-12-14

Port:   www/wget4web
Moved:
Date:   2012-01-01
Reason: Has expired: Depends on expired www/apache13

Si un port a été déplacé vers un nouvel emplacement, le champ «Déplacé» contient le nouvel emplacement où le port peut être trouvé. Si ce champ est présent mais vide, le port a été supprimé.

Même s’ils sont supprimés, ils apparaîtront toujours dans les résultats de votre recherche. Si vous souhaitez empêcher les ports déplacés ou supprimés d’apparaître, vous pouvez définir la variable d’environnement + PORTSEARCH_MOVED + sur «0».

Par exemple, pour définir cette variable sur «0» uniquement pour la commande suivante, en utilisant la valeur par défaut + tcsh +, nous pouvons taper:

env PORTSEARCH_MOVED=0 make quicksearch name=wget
Port:   gwget-1.0.4_9
Path:   /usr/ports/ftp/gwget
Info:   GNOME wget front-end

Port:   wget-1.16
Path:   /usr/ports/ftp/wget
Info:   Retrieve files from the Net via HTTP(S) and FTP

Port:   ruby20-ruby-wgettsv-0.95
Path:   /usr/ports/www/ruby-wgettsv
Info:   Collect WWW resources and generate TSV data

Port:   wgetpaste-2.25
Path:   /usr/ports/www/wgetpaste
Info:   Paste to several pastebin services via bash script

Comme vous pouvez le constater, toutes les entrées déplacées ou supprimées sont désormais filtrées de nos résultats. Si vous souhaitez en faire le comportement par défaut, vous pouvez définir + PORTSEARCH_MOVED = 0 + dans votre fichier + make.conf +:

sudo sh -c 'echo "PORTSEARCH_MOVED=0" >> /etc/make.conf'

Installation de ports avec Make

Une fois que vous avez trouvé le port que vous souhaitez installer, vous pouvez facilement télécharger les fichiers requis, créer le binaire et l’installer à l’aide de la commande + make +.

Pour installer un port, accédez au répertoire du port dans l’arborescence des ports. Vous pouvez trouver cet emplacement par l’une des méthodes de recherche indiquées ci-dessus. Pour démontrer cela, nous allons installer un port appelé + portmaster +, dont nous aurons besoin plus tard dans ce guide.

Tout d’abord, changez l’emplacement du port. Le port + portmaster + est conservé dans la catégorie + ports-mgmt +:

cd /usr/ports/ports-mgmt/portmaster

Maintenant, nous pouvons facilement télécharger, configurer, compiler et installer le port en utilisant les cibles ` make + ’. Comme ces opérations affectent notre système, nous devrons utiliser `+ sudo +. Le long chemin à parcourir consiste à appeler individuellement «+ make +», comme ceci. Ne tapez pas encore ces commandes, nous vous montrerons une version beaucoup plus courte dans un instant:

sudo make config
sudo make fetch
sudo make checksum
sudo make depends
sudo make extract
sudo make patch
sudo make configure
sudo make build
sudo make install

Nous pourrions peut-être le raccourcir un peu en listant chaque cible après une seule commande + make + comme ceci:

sudo make config fetch checksum depends extract patch configure build install

Cependant, cela est presque toujours inutile. Chacune des cibles énumérées ci-dessus appellera toutes les cibles précédentes nécessaires pour mener à bien la tâche. Donc, ce qui précède pourrait simplement être condensé dans:

sudo make install

En règle générale, nous souhaitons légèrement développer cette chaîne de commandes pour nous assurer de tout configurer correctement. Nous voulons généralement spécifier + config-récursive +, une option qui ne figure pas dans le pipeline ci-dessus, avant la cible + install + afin de prendre en charge la configuration de ce port et des éventuelles dépendances au début de l’installation. Sinon, le processus de génération risque de s’arrêter et d’attendre la saisie de l’utilisateur en partie pour créer les dépendances nécessaires.

Nous voulons aussi généralement nettoyer un peu après l’installation pour récupérer de l’espace disque et garder un système propre. Nous pouvons le faire avec les cibles + clean + ou + distclean +. La cible + clean + supprime le code source extrait utilisé pour construire ce port et tous les ports de dépendance. La cible + distclean + le fait également, mais supprime également l’archive source compressée de ce paquet du répertoire + / usr / ports / distfiles +.

Donc, une commande d’installation typique peut ressembler à ceci:

sudo make config-recursive install distclean

Cela vous invitera à configurer le port et toutes les dépendances au début du processus. Ensuite, il téléchargera et vérifiera l’intégrité de l’archive source. Il va ensuite changer de contexte pour répondre aux dépendances manquantes. Une fois ce processus terminé, le système retourne au port en question, extrait l’archive, applique les correctifs nécessaires et le configure en fonction des options que vous avez sélectionnées. Il va ensuite compiler l’application et l’installer sur votre système. Ensuite, il supprimera le code source développé pour ce port et toutes les dépendances. Il supprimera ensuite l’archive source de ce port.

Exécutez la commande ci-dessus dans le répertoire + / usr / ports / ports-mgmt / portmaster +:

sudo make config-recursive install distclean

Vous serez présenté avec une seule boîte de dialogue pour l’application. Si vous utilisez l’un des shells répertoriés, vous pouvez choisir de configurer la complétion du shell pour l’outil ici:

image: https: //assets.digitalocean.com/articles/freebsd_ports_intro/dialog.png [Configuration du port FreeBSD]

Le port + portmaster + n’a pas de dépendances, mais s’il en existait, les options de configuration pour les dépendances seraient présentées directement après la configuration du port cible ci-dessus. Le port sera téléchargé, configuré et installé.

Si vous utilisez la valeur par défaut + tcsh +, vous souhaiterez réanalyser votre PATH après chaque installation afin que votre environnement shell connaisse toutes les applications installées:

rehash

Si le processus ci-dessus a abouti, vous avez correctement installé votre premier port.

Alors que le système d’exploitation principal et la configuration sont effectués dans les emplacements classiques, les logiciels facultatifs installés via le système de ports sont installés dans la hiérarchie + / usr / local +.

Cela signifie que pour configurer un logiciel optionnel, vous devrez regarder dans le répertoire + / usr / local / etc +. Les exécutables eux-mêmes sont principalement conservés dans les répertoires + / usr / local / bin et` + / usr / local / sbin`. Gardez cela à l’esprit lorsque vous configurez ou démarrez des applications.

Remarques concernant les applications qui s’exécutent en tant que services

Une chose à garder à l’esprit est que si vous installez un port qui sera exécuté en tant que service, la procédure d’installation ne démarrera pas automatiquement le service. En fait, vous devez suivre quelques étapes pour pouvoir démarrer les services dans FreeBSD.

Si vous souhaitez démarrer un service une seule fois, vous pouvez le faire en tapant:

sudo service  onestart

Par exemple, pour démarrer MySQL, vous pouvez taper:

sudo service mysql-server onestart

En supposant que toute configuration nécessaire soit terminée, le service sera démarré une seule fois. Si vous souhaitez arrêter le service ultérieurement, vous pouvez taper:

sudo service mysql-server onestop

Bien que cela fonctionne pour des tests rapides, ce n’est pas le moyen idéal de gérer des services dans FreeBSD. Pour configurer votre service afin qu’il démarre à chaque démarrage, vous devez l’activer. Pour ce faire, vous devez ajouter une ligne au fichier + / etc / rc.conf.

Les fichiers init qui spécifient comment les services facultatifs sont démarrés sont conservés dans le répertoire + / usr / local / etc / rc.d +. Dans chacun de ces fichiers init, une variable appelée + rcvar + indique au système init quelle variable du fichier + / etc / rc.conf + à rechercher pour déterminer si le service doit être démarré. Pour chaque service optionnel, vous pouvez trouver la ligne appropriée à ajouter au fichier + / etc / rc.conf + en tapant:

grep rcvar /usr/local/etc/rc.d/*

Vous recevrez une liste qui ressemble à ceci:

/usr/local/etc/rc.d/avahi-daemon:
/usr/local/etc/rc.d/avahi-dnsconfd:
/usr/local/etc/rc.d/dbus:
/usr/local/etc/rc.d/rsyncd:

La partie en surbrillance de la sortie montre la variable que nous devons définir sur «OUI» pour activer chacun de ces services.

Par exemple, pour activer le service démon + rsync +, nous pouvons ajouter cette ligne à + ​​/ etc / rc.conf +:

rsyncd_enable="YES"

La ligne appropriée doit figurer dans le fichier + / etc / rc.conf + avant d’utiliser les commandes de gestion de service normales. Par exemple, vous pouvez ajouter la ligne ci-dessus au bas du fichier + / etc / rc.conf + avec votre éditeur de texte ou en tapant:

sudo sh -c "echo 'rsyncd_enable="YES"' >> /etc/rc.conf"

Cela provoquera le démarrage du démon rsync à chaque démarrage. Vous pouvez maintenant contrôler le service à l’aide de la commande + service + sans le préfixe "un". Par exemple, vous pouvez démarrer le service en tapant:

sudo service rsyncd start

Vous pouvez à nouveau arrêter le service en tapant:

sudo service rsyncd stop

Retrait d’un port installé

Si vous avez installé un port dont vous n’avez plus besoin, vous pouvez supprimer l’application de votre système en utilisant un processus similaire mais plus simple.

Nous pouvons utiliser la cible + deinstall + pour supprimer une application de notre système. Encore une fois, accédez au répertoire situé dans l’arborescence des ports associée à l’application que vous souhaitez supprimer:

cd /usr/ports/ports-mgmt/portmaster

Vous pouvez supprimer l’application de votre système en tapant:

sudo make deinstall

Si vous souhaitez également supprimer les options que vous avez configurées pour ce port, vous pouvez le faire en tapant:

sudo make rmconfig

Pour supprimer les options de configuration de ce port et de toutes ses dépendances, tapez:

sudo make rmconfig-recursive

Si vous avez supprimé + portmaster + en utilisant les commandes ci-dessus, réinstallez-le en tapant:

sudo make reinstall distclean

Mise à jour des applications

Maintenant que vous savez installer ou supprimer des programmes, nous devons montrer comment maintenir vos applications à jour.

Vérification du fichier UPDATING pour les notes de mise à jour importantes

Au début de ce guide, nous avons enregistré les horodatages du fichier + / usr / ports / UPDATING + avant d’utiliser + portsnap + pour actualiser notre arborescence de ports.

Le fichier + / usr / ports / UPDATING + contient des remarques importantes des responsables de la maintenance des ports sur les mises à jour et les modifications pouvant nécessiter des étapes manuelles supplémentaires de la part de l’administrateur. Ne pas lire ce fichier et appliquer ses conseils avant de mettre à jour des applications peut laisser votre système inutilisable ou affecter les fonctionnalités de vos applications.

Tout d’abord, vérifiez l’horodatage que nous avons sauvegardé dans le fichier de notre répertoire personnel:

cat ~/last_update
 File: "/usr/ports/UPDATING"
 Size: 375337       FileType: Regular File
 Mode: (0644/-rw-r--r--)         Uid: (    0/    root)  Gid: (    0/   wheel)
Device: 0,81   Inode: 2011338    Links: 1
Access: Thu Dec 11 22:24:59 2014
Modify:
Change:

N’oubliez pas que l’horodatage «Modify» indique la dernière fois que le fichier UPDATING de notre système a été modifié par un mainteneur de port et que l’horodatage «Change» indique l’heure de notre dernière synchronisation. Les informations ci-dessus sont les anciens timestamps. D’après ces informations, nous pouvons indiquer que nous devons prêter attention à toutes les entrées du 11 décembre à la date actuelle.

Ouvrez le fichier UPDATING actualisé maintenant:

less /usr/ports/UPDATING

Le fichier ressemblera à ceci:

This file documents some of the problems you may encounter when upgrading
your ports.  We try our best to minimize these disruptions, but sometimes
they are unavoidable.

You should get into the habit of checking this file for changes each time
you update your ports collection, before attempting any port upgrades.

20150101:
 AFFECTS: users of net/unison and net/unison-nox11
 AUTHOR: [email protected]

 Unison has been upgraded to version 2.48, which uses a different wire
 protocol than 2.40 did.  In order to support synchronization with
 other computers where Unison is still at version 2.40, a new port
 net/unison240 has been created.  It provides unison240 and if that is
 GTK2-enabled, also unison240-text.  This unison240 port can be
 installed in parallel with the existing net/unison port.

20141230:
 AFFECTS: users of deskutils/xpad
 AUTHOR: [email protected]

 deskutils/xpad has been moved to deskutils/xpad3, since 4.x has been around
 for a while.

 Should you wish to stick with legacy branch at this time;

 # portmaster -o deskutils/xpad deskutils/xpad3

. . .

Ce fichier contient chaque modification potentiellement décisive pour chaque port disponible depuis 2008. Vous devez seulement faire attention aux avis qui:

  • Ont été ajoutés depuis la dernière mise à jour de vos ports

  • Impliquez les ports que vous avez installés sur votre système

Donc, pour cet exemple, nous n’aurions besoin que de prêter attention aux avis qui ont été ajoutés depuis le 11 décembre et qui concernent nos ports installés. Si vous ne savez pas quels ports sont installés sur votre système, vous pouvez utiliser + portmaster + pour créer une liste complète:

portmaster -l
===>>> Root ports (No dependencies, not depended on)
===>>> dialog4ports-0.1.5_2
===>>> pkg-1.4.0
===>>> pkgconf-0.9.7
===>>> portmaster-3.17.7
===>>> rsync-3.1.1_3
===>>> 5 root ports

===>>> Trunk ports (No dependencies, are depended on)
===>>> ca_root_nss-3.17.3_1
===>>> expat-2.1.0_2

. . .

La sortie sera divisée en sections en fonction de leurs relations de dépendance. Utilisez ces informations pour vérifier les notes UPDATING.

Si des étapes manuelles sont nécessaires, terminez-les avant de continuer avec le reste de la mise à jour.

Vérification des vulnérabilités connues

Une autre considération à prendre en compte lors de la mise à jour est de savoir si le logiciel installé sur votre système présente des vulnérabilités de sécurité connues.

FreeBSD maintient une base de données de vulnérabilités que vous pouvez vérifier pour vérifier si l’un de vos ports ou packages présente des problèmes de sécurité. Cette fonctionnalité est incluse dans l’outil + pkg +. Exécutez un audit de sécurité en tapant:

sudo pkg audit -F

Ceci téléchargera la dernière version de la base de données de vulnérabilités depuis les serveurs du projet FreeBSD. Il vérifiera ensuite les versions de tous vos packages ou ports installés et les comparera aux entrées de la base de données de sécurité.

Si des ports ou des packages installés sur votre système comportent des vulnérabilités connues dans la base de données, vous serez averti. En règle générale, ceux-ci auront au moins un port à jour disponible corrigeant le problème.

Ci-dessous, nous verrons comment mettre à jour tous les ports de votre système ou juste un sous-ensemble. Quelle que soit votre stratégie de mise à jour, il est essentiel que vous mettiez au moins à jour les ports présentant des vulnérabilités de sécurité connues.

Mise à jour des ports installés

Une fois que vous avez pris en charge les étapes manuelles décrites dans les fichiers UPDATING, vous pouvez mettre à jour votre logiciel.

Pour voir quels ports ont des mises à jour disponibles, vous pouvez utiliser la commande + portmaster + avec l’indicateur + -L +:

portmaster -L
===>>> Root ports (No dependencies, not depended on)
===>>> dialog4ports-0.1.5_2
===>>> pkg-1.4.0
       ===>>> New version available: pkg-1.4.3
===>>> pkgconf-0.9.7
===>>> portmaster-3.17.7
===>>> rsync-3.1.1_3
===>>> 5 root ports

===>>> Trunk ports (No dependencies, are depended on)
===>>> ca_root_nss-3.17.3_1
===>>> expat-2.1.0_2

. . .

===>>> 44 total installed ports
       ===>>> 4 have new versions available

Cela produit une sortie similaire à la variante minuscule de l’option utilisée précédemment, mais vérifie également les mises à jour disponibles. Ici, nous pouvons voir que le port + pkg + a une nouvelle version disponible. Nous pouvons voir qu’il y a un total de 4 ports qui ont de nouvelles versions disponibles.

Pour mettre à niveau un seul port, vous pouvez aller à l’emplacement du répertoire du port dans l’arborescence des ports et réinstaller la nouvelle version du logiciel:

sudo make deinstall reinstall

Vous pouvez également accomplir la même chose avec la commande + portmaster +. Vous devez fournir la catégorie et le nom du port. Par exemple, pour mettre à niveau la commande + wget +, nous pourrions taper:

sudo portmaster ftp/wget

La commande ci-dessus peut également être utilisée pour installer des ports. De nombreux utilisateurs provenant d’autres horizons trouvent que + portmaster + est une expérience de gestion de logiciel plus familière que d’utiliser les objectifs + make + décrits ci-dessus.

Bien qu’il soit possible de mettre à niveau les ports indépendamment, il est généralement préférable de mettre à jour tous les logiciels en même temps. Vous pouvez le faire avec + portmaster + en utilisant le drapeau + -a +:

sudo portmaster -a

Cela mettra à jour tous les ports du système vers leur version la plus récente. Toute nouvelle option de configuration vous sera présentée au début du processus. Si vous avez des paquets installés avec + pkg + avec des versions plus récentes disponibles via le système de ports, ceux-ci seront mis à jour et transférés également aux ports.

Conclusion

A présent, vous devriez avoir une assez bonne compréhension de la façon de travailler avec les ports sur un système FreeBSD. Les ports sont extrêmement flexibles, vous permettant de personnaliser facilement la plupart des applications sur votre serveur sans effort.

De nombreux administrateurs se félicitent du compromis entre la compilation et un contrôle accru, mais vos besoins peuvent varier. Cependant, connaître le système des ports est un bon investissement, quelle que soit votre stratégie logicielle sous FreeBSD. Il arrive parfois qu’un package ne soit pas encore disponible dans les mises à jour critiques et que certains logiciels ne puissent pas être distribués dans un format empaqueté en raison de restrictions de licence. Ces cas nécessitent l’utilisation de ports indépendamment de vos préférences.