Comment installer et gérer les ports sur FreeBSD 10.1
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.