Comment installer et gérer les ports sur FreeBSD 10.1

De Get Docs
Aller à :navigation, rechercher

Introduction

FreeBSD est un système d'exploitation puissant capable de fonctionner dans une variété de 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 vient de la méthode prise en charge par FreeBSD pour l'installation de logiciels à partir de la source, connue sous le nom de système de ports '.

Dans ce guide, nous discuterons de 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 en utilisant le make commande, comment personnaliser vos applications et comment tirer parti de certains outils courants pour faciliter la maintenance des ports.

Note: As of July 1, 2022, DigitalOcean no longer supports the creation of new FreeBSD Droplets through the Control Panel or API. However, you can still spin up FreeBSD Droplets using a custom image. Learn how to import a custom image to DigitalOcean by following our product documentation.


Conditions préalables

Afin de suivre ce guide, vous devez avoir accès à un serveur FreeBSD 10.1 et à un compte utilisateur non root avec sudo privilèges. 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 FreeBSD de base comme une unité cohérente. Ses composants sont mis à jour à l'aide d'un outil appelé freebsd-update et leur comportement est contrôlé principalement par des fichiers de configuration situés dans le /etc annuaire. Bien que vous puissiez installer et utiliser des alternatives aux logiciels fournis, vous ne pouvez pas supprimer facilement ou en toute sécurité ceux qui sont inclus dans le système de base, car ils sont considérés comme des éléments fonctionnels essentiels du système d'exploitation.

En revanche, les logiciels facultatifs sont gérés à l'aide de différents processus, outils et emplacements dans le système de fichiers. Contrairement au logiciel du système de base, le logiciel en option est configuré dans le /usr/local/etc annuaire. 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 décrirons dans ce guide, est géré via une hiérarchie de système de fichiers située à /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 selon leur fonction ou leur langue. Dans ces répertoires, des dossiers existent pour chaque logiciel individuel. Le logiciel peut être téléchargé, configuré, compilé et installé soit par simple make commandes ou via les utilitaires d'assistance disponibles. Le logiciel de la collection de ports comprend tous les correctifs nécessaires pour créer et exécuter 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 cela annule le niveau de personnalisation fourni par le système de ports. Vous pouvez en savoir plus sur la gestion des packages logiciels dans ce guide.

Préparation de l'arborescence des ports

L'arborescence des ports est le nom de la hiérarchie qui existe sous le /usr/ports annuaire. Cette hiérarchie contient des répertoires qui correspondent à des catégories de ports, dans lesquels se trouvent d'autres répertoires qui correspondent à des ports individuels.

Avant de commencer à manipuler des ports, nous devons nous assurer que cette hiérarchie est à jour. Oublier d'actualiser la hiérarchie des ports peut entraîner des échecs de construction car les ports tentent de récupérer et de construire des fichiers qui peuvent 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 les changements.

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 d'un fichier spécifique dans notre arborescence de ports appelé /usr/ports/UPDATING. Nous pouvons utiliser le stat outil pour voir les différents horodatages 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: Thu Dec 11 15:40:12 2014
Change: Thu Dec 11 22:24:59 2014

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 ceci, 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 auxquelles nous voulons prêter attention sont les temps "Modifier" et "Changer", qui sont mis en évidence dans la sortie ci-dessus. Dans ce cas, l'horodatage "Modifier" sera la dernière fois qu'un mainteneur de ports a modifié le fichier avec des informations importantes. L'horodatage "Modifier" sera la dernière fois que le fichier a été synchronisé avec votre serveur.

Nous devons nous souvenir de l'horodatage afin de savoir à quelles notes de mise à jour nous devons prêter attention après avoir actualisé notre arborescence de ports. Nous pouvons les enregistrer dans un fichier de notre répertoire personnel en tapant :

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

Maintenant que nous avons enregistré ces informations, nous pouvons continuer et mettre à jour notre arborescence de ports.

Mise à jour de l'arborescence des ports avec Portsnap

Une fois que vous avez une bonne idée de la date de la dernière mise à jour de l'arborescence des ports, vous pouvez synchroniser votre arborescence des ports 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 /usr/ports répertoire (si vous avez rencontré l'erreur que nous avons mentionnée dans la dernière section), vous pouvez télécharger et extraire l'intégralité de l'arborescence des ports dans ce répertoire avec portsnap. Ce processus peut prendre beaucoup de temps, mais il n'est nécessaire que si votre /usr/ports directory is empty, a situation that should only happen once.

sudo portsnap fetch extract

Cela téléchargera et extraira l'intégralité de l'arborescence des ports vers le /usr/ports annuaire.

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

sudo portsnap fetch update

Cette commande extraira uniquement les fichiers qui diffèrent de ceux contenus dans le /usr/ports structure, il faudra donc beaucoup moins de temps que le extract variante de la commande. C'est le format qui doit être utilisé dans les mises à jour quotidiennes de l'arborescence des ports.

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

Recherche d'applications dans l'arborescence des ports

Maintenant que vous disposez d'une arborescence de ports mise à jour sur votre système, vous pouvez commencer à examiner les logiciels à votre disposition. Il existe plusieurs façons de procéder, chacune ayant ses avantages.

Recherche avec whereis

La manière la plus simple de rechercher une application est par son nom à l'aide de la whereis commande. Cela 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.

Généralement, si l'application n'est pas installée mais que la recherche portait sur un port valide, elle renverra le chemin d'accès au port dans l'arborescence des ports. Si l'application est installée, elle renverra généralement le chemin vers l'exécutable, le port et souvent le man page:

Par exemple, nous pouvons rechercher le wget utilitaire en tapant ceci :

whereis wget

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

wget: /usr/ports/ftp/wget

Puisque 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 wget commande est déjà installée, nous pouvons voir une sortie qui ressemble à ceci :

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

Cela inclut le chemin vers l'exécutable réellement installé, le man fichier d'échange de l'application et l'emplacement du port dans l'arborescence des ports.

Recherche à l'aide du echo Commande sur la hiérarchie du système de fichiers

Dans le FreeBSD Handbook, les auteurs suggèrent également une méthode de recherche plutôt nouvelle en utilisant uniquement le echo commande et la structure intégrée de l'arborescence des ports.

L'arborescence des ports est configurée avec tous les fichiers et répertoires pertinents sous le /usr/ports annuaire. Dans le système de fichiers, chaque port est représenté par un répertoire distinct qui contient 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 des répertoires de catégories au sein de /usr/ports. Ainsi dans le wget exemple ci-dessus, on voit que wget commande a été classée dans la ftp groupe. Alors le /usr/ports répertoire contient des répertoires de catégories qui, à leur tour, contiennent des répertoires pour les ports.

Nous pouvons exploiter cette structure cohérente grâce à l'utilisation de la echo commande et 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 placer avant et après notre terme de recherche si nous voulons être plus flexibles dans notre correspondance. Nous pouvons donc rechercher wget programmes associés en tapant :

echo /usr/ports/*/*wget*

Cela renverra 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 le whereis commande car elle ne nécessite pas de correspondance exacte.

Recherche à l'aide des make Cibles

Le moyen le plus puissant de rechercher des ports est d'utiliser le make commande.

C'est aussi la commande qui est utilisée pour créer et installer des ports sur le système, mais c'est plus généralement un outil flexible qui peut être utilisé pour exécuter facilement des tâches complexes qui ont été définies dans un fichier de configuration. Les développeurs FreeBSD ont créé make des « cibles » (définitions de tâches) qui effectueront une recherche dans l'arborescence 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 là que le make les cibles sont définies :

cd /usr/ports

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

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

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

La search target renverra des informations sur le nom du port, le chemin dans l'arborescence des ports, une description générale, puis des détails sur la construction, y compris l'e-mail du responsable, les dépendances de construction, les dépendances d'exécution et l'URL en amont. La quicksearch target ne renvoie que le nom du port, le chemin et la description.

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

  • name : recherche uniquement dans le champ de nom du port.
  • key : recherchez dans les champs de nom, de commentaire et de dépendances du port.
  • path : recherchez un chemin spécifique dans la hiérarchie des ports.
  • info : recherche dans le champ d'informations (description) du port.
  • maint : recherche par l'adresse e-mail du responsable.
  • cat : Recherches basées sur la catégorie du port.
  • bdeps : recherche les dépendances au moment de la construction de chaque port.
  • rdeps : recherche les dépendances d'exécution de chaque port.
  • www : recherche le site Web des ports.

Vous pouvez également ajouter un "x" avant l'une des catégories ci-dessus pour supprimer les résultats qui correspondent à une correspondance. Par exemple, si votre recherche comprend xname=apache, tout port contenant la chaîne "apache" dans son champ de nom ne sera pas renvoyé.

Passons en revue quelques exemples rapides. Ci-dessous, vous pouvez voir la différence dans la sortie du search et quicksearch cibles. La search target inclut des informations complètes sur les matchs :

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, le quicksearch target 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 devions rechercher le ntop moniteur réseau, nous pourrions voir des résultats qui ressemblent à 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 aussi un livre sur l'apprentissage de Python. Nous pouvons encore filtrer 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 rendre les recherches sensibles à la casse, réglez-le sur "0".
  • display : contient une liste de champs, séparés par des virgules, à afficher dans la sortie.
  • keylim : Limite 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 en majuscule "Coller" 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 dans 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 "Moved" contiendra le nouvel endroit 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 vos résultats de recherche. Si vous souhaitez empêcher l'affichage des ports déplacés ou supprimés, vous pouvez définir le PORTSEARCH_MOVED variable d'environnement à "0".

Par exemple, pour définir cette variable sur "0" uniquement pour la commande qui suit, en utilisant la valeur par défaut tcsh, on peut 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 voir, toutes les entrées qui avaient été 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 ton make.conf dossier:

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

Installation de ports à l'aide de Make

Une fois que vous avez trouvé un port que vous souhaitez installer, vous pouvez facilement télécharger les fichiers requis, compiler le binaire et l'installer à l'aide du make commande.

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 le démontrer, nous allons installer un port appelé portmaster, dont nous aurons besoin plus tard dans ce guide.

Tout d'abord, modifiez l'emplacement du port. La portmaster le port est conservé dans le ports-mgmt Catégorie:

cd /usr/ports/ports-mgmt/portmaster

Maintenant, nous pouvons facilement télécharger, configurer, compiler et installer le port en utilisant make cibles. Étant donné que ces opérations affectent notre système, nous devrons utiliser sudo. Pour ce faire, le plus long chemin consiste à passer des appels individuels à make, comme ça. Ne tapez pas encore ces commandes, nous vous montrerons une version beaucoup plus courte momentanément :

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 raccourcir un peu cela en répertoriant chaque cible après un seul make commande comme celle-ci :

sudo make config fetch checksum depends extract patch configure build install

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

sudo make install

En règle générale, nous voudrions étendre légèrement cette chaîne de commandes pour nous assurer que nous avons tout configuré correctement. Nous voulons généralement spécifier config-recursive, une option qui n'est pas dans le pipeline ci-dessus, avant le install target afin de s'occuper de la configuration de ce port et de toutes les dépendances au début de l'installation. Sinon, le processus de construction peut s'arrêter et attendre l'entrée de l'utilisateur à mi-chemin de la construction des 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 le clean ou distclean cibles. La clean target supprime le code source extrait utilisé pour construire ce port et tous les ports de dépendance. La distclean target le fait également, mais supprime également l'archive source compressée pour ce paquet de la /usr/ports/distfiles annuaire.

Ainsi, 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 modifiera ensuite les contextes pour répondre aux dépendances manquantes. Une fois ce processus terminé, il reviendra au port en question, extraira l'archive, appliquera les correctifs nécessaires et le configurera en fonction des options que vous avez sélectionnées. Il compilera ensuite l'application et l'installera sur votre système. Ensuite, il supprimera le code source étendu pour ce port et toutes les dépendances. Il supprimera alors l'archive source de ce port.

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

sudo make config-recursive install distclean

Une seule boîte de dialogue pour l'application s'affichera. Si vous utilisez l'un des shells répertoriés, vous pouvez choisir de configurer l'achèvement du shell pour l'outil ici :

La portmaster port n'a pas de dépendances, mais s'il y en avait, 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 soit au courant de toutes les applications installées :

rehash

Si le processus ci-dessus a réussi, vous avez installé avec succès votre premier port.

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

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

Remarques concernant les applications exécutées 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 le service automatiquement. En fait, vous devez suivre quelques étapes pour démarrer les services dans FreeBSD.

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

sudo service servicename onestart

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

sudo service mysql-server onestart

En supposant que toute configuration nécessaire est terminée, cela démarrera le service 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 les tests rapides, ce n'est pas le moyen idéal pour gérer les 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 à la /etc/rc.conf dossier.

Les fichiers d'initialisation qui spécifient comment les services facultatifs sont démarrés sont conservés dans le /usr/local/etc/rc.d annuaire. Dans chacun de ces fichiers d'initialisation, une variable appelée rcvar indique au système d'initialisation quelle variable dans le /etc/rc.conf fichier à rechercher pour déterminer s'il faut démarrer le service. Pour chaque service optionnel, vous pouvez trouver la ligne appropriée à ajouter au /etc/rc.conf fichier en tapant :

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

Vous recevrez une liste qui ressemble à ceci :

/usr/local/etc/rc.d/avahi-daemon:rcvar=avahi_daemon_enable
/usr/local/etc/rc.d/avahi-dnsconfd:rcvar=avahi_dnsconfd_enable
/usr/local/etc/rc.d/dbus:rcvar=dbus_enable
/usr/local/etc/rc.d/rsyncd:rcvar=rsyncd_enable

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 rsync service démon, nous pouvons ajouter cette ligne à /etc/rc.conf:

rsyncd_enable="YES"

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

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

Cela entraînera le démarrage du démon rsync à chaque démarrage. Vous pouvez maintenant contrôler le service en utilisant le service commande 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

Suppression 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 le deinstall target pour supprimer une application de notre système. Encore une fois, accédez au répertoire 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, saisissez :

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 comment installer ou supprimer des programmes, nous devons vous montrer comment maintenir vos applications à jour.

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

Au début de ce guide, nous avons enregistré les horodatages des /usr/ports/UPDATING fichier avant que nous utilisions portsnap pour rafraîchir notre arborescence de ports.

La /usr/ports/UPDATING Le fichier contient des notes importantes des mainteneurs des ports sur les mises à jour et les modifications qui peuvent nécessiter des étapes manuelles supplémentaires de la part de l'administrateur. Le fait de ne pas lire ce fichier et d'appliquer ses conseils avant de mettre à jour les applications peut rendre votre système inutilisable ou affecter la fonctionnalité de vos applications.

Tout d'abord, vérifiez l'horodatage que nous avons enregistré 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: Thu Dec 11 15:40:12 2014
Change: Thu Dec 11 22:24:59 2014

N'oubliez pas que l'horodatage "Modifier" indique la dernière fois que le fichier UPDATING sur notre système a été modifié par un mainteneur de port, et l'horodatage "Modifier" indique l'heure de notre dernière synchronisation. Les informations ci-dessus sont les anciens horodatages. Nous pouvons dire à partir de ces informations que nous devons prêter attention à toutes les entrées du 11 décembre jusqu'à la date actuelle.

Ouvrez maintenant le fichier UPDATING actualisé :

less /usr/ports/UPDATING

Le fichier ressemblera un peu à 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 toutes les modifications potentiellement importantes pour chaque port disponible depuis 2008. Il vous suffit de prêter attention aux avis qui :

  • Ont été ajoutés depuis la dernière fois que vous avez mis à jour vos ports
  • Impliquez les ports que vous avez installés sur votre système

Ainsi, pour cet exemple, nous n'aurions qu'à prêter attention aux avis qui ont été ajoutés depuis le 11 décembre concernant 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 de MISE À JOUR.

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

Vérification des vulnérabilités connues

Une autre considération à garder à l'esprit 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 voir si l'un de vos ports ou packages a des problèmes de sécurité. Cette fonctionnalité est incluse dans le pkg outil. Exécutez un audit de sécurité en tapant :

sudo pkg audit -F

Cela téléchargera la dernière version de la base de données de vulnérabilités à partir des serveurs du projet FreeBSD. Il vérifiera ensuite les versions de tous vos ports ou packages 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 présentent des vulnérabilités connues dans la base de données, vous serez alerté. En règle générale, ceux-ci auront au moins un port à jour disponible qui corrige 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 qui présentent des vulnérabilités de sécurité connues.

Mise à jour des ports installés

Après avoir effectué toutes les étapes manuelles décrites dans les fichiers de MISE À JOUR, vous pouvez mettre à jour votre logiciel.

Pour voir quels ports ont des mises à jour disponibles, vous pouvez utiliser le portmaster commande avec le -L drapeau:

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 fournit une sortie similaire à la variante en minuscules de l'option que nous avons utilisée précédemment, mais elle vérifie également les mises à jour disponibles. Ici, on peut voir que le pkg port 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 accéder à 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 le portmaster commande. Vous devez fournir la catégorie et le nom du port. Par exemple, pour mettre à niveau le wget commande, nous pourrions taper :

sudo portmaster ftp/wget

La commande ci-dessus peut également être utilisée pour installer des ports. De nombreux utilisateurs venant d'autres horizons trouvent portmaster être une expérience de gestion logicielle plus familière que l'utilisation de make cibles que nous avons décrites 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 -a drapeau:

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 packages installés avec pkg avec les nouvelles versions disponibles via le système de ports, celles-ci seront également mises à jour et transférées vers les ports.

Conclusion

À 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 majorité des applications sur votre serveur avec peu d'effort.

De nombreux administrateurs apprécient le compromis entre temps de compilation et contrôle accru, mais vos besoins peuvent varier. Cependant, apprendre le système des ports est un bon investissement quelle que soit votre stratégie logicielle sur FreeBSD. Il arrive parfois que des mises à jour critiques n'aient pas encore de package disponible, et certains logiciels ne peuvent pas être distribués dans un format packagé en raison de restrictions de licence. Ces cas nécessitent l'utilisation de ports quelles que soient vos préférences.