Débuter avec FreeBSD
Désireux de découvrir l’univers UNIX et des *BSD, il est temps pour moi de faire mes premiers pas avec FreeBSD !
Système de paquets
Introduction
Deux possibilités sous FreeBSD pour installer un paquet (ou ports) :
– Compilation manuelle avec portmaster. Par rapport à make, portmaster va me permettre de compiler en une seule commande toutes les dépendances nécessaires. L’avantage de la compilation dans mon cas est que je peux récupérer les toutes dernières versions des logiciels (ce qui n’est pas forcément le cas avec les paquets pré-compilés) et je peux choisir mes propres options lors de la compilation.
– Les paquets pré-compilés et téléchargeables avec l’outil PKG, semblable à APT sous la plupart des distri GNU/Linux par exemple.
Avant d’installer notre premier paquet, il est nécessaire de mettre à jour l’arborescence et de récupérer les fichiers nécessaires pour la compilation des “ports”.
La description des ports sous FreeBSD, extrait du manuel officiel :
The FreeBSD Ports Collection offers a simple way to compile and install third party applications. It is also used to build packages, to be in- stalled using pkg(8). It can be installed and updated using portsnap(8).
Portsnap
Portsnap est un catalogue de l’ensemble des logiciels portés sur FreeBSD. Lorsqu’on l’utilise pour la première fois, il conviens de télécharger l’intégralité de l’arborescence des logiciels portés :
$ portsnap fetch extract
Le répertoire /usr /ports est maintenant disponible à la suite de cette commande.
$ ls /usr/ports .arcconfig LEGAL astro dns japanese news vietnamese .gitattributes MOVED audio editors java polish www .gitauthors Makefile base emulators korean ports-mgmt x11 .gitignore Mk benchmarks finance lang portuguese x11-clocks .gitmessage README biology french mail print x11-drivers .portsnap.INDEX Templates cad ftp math russian x11-fm CHANGES Tools chinese games misc science x11-fonts CONTRIBUTING.md UIDs comms german multimedia security x11-servers COPYRIGHT UPDATING converters graphics net shells x11-themes GIDs accessibility databases hebrew net-im sysutils x11-toolkits INDEX-11 arabic deskutils hungarian net-mgmt textproc x11-wm Keywords archivers devel irc net-p2p ukrainian
N’étant pas inclus de base, il convient d’installer portmaster en le compilant manuellement.
$ cd /usr/ports/ports-mgmt/portmaster $ make configure $ make install clean
Portmaster est maintenant installé !
$ portmaster --version ===>>> Version 3.19_18
Installation de quelques utilitaires via portmaster
htop
$ cd /usr/ports && make search name=htop Port: htop-2.2.0_1 Path: /usr/ports/sysutils/htop Info: Better top(1) - interactive process viewer Maint: gaod@hychen.org B-deps: autoconf-2.69_3 autoconf-wrapper-20131203 automake-1.16.1_2 gettext-runtime-0.20.1 indexinfo-0.3.1 libffi-3.2.1_3 libiconv-1.14_11 libtool-2.4.6_1 m4-1.4.18_1,1 ncurses-6.1.20190525 perl5-5.30.1 pkgconf-1.6.3,1 python27-2.7.17_1 readline-8.0.0 R-deps: lsof-4.93.2_5,8 ncurses-6.1.20190525 WWW: https://hisham.hm/htop/$ portmaster sysutils/htop
tmux
$ cd /usr/ports && portmaster sysutil/tmux
pstree
$ cd /usr/ports && portmaster sysutils/pstree
Serveur web Apache2 avec pkg
Cette fois-ci, utilisons l’utilitaire pkg ! La encore, la documentation est très claire.
$ pkg help [...] Commands supported: add Compatibility interface to install a package alias List the command line aliases annotate Add, modify or delete tag-value style annotations on packages audit Reports vulnerable packages autoremove Removes orphan packages backup Backs-up and restores the local package database check Checks for missing dependencies and database consistency clean Cleans old packages from the cache config Display the value of the configuration options create Creates software package distributions delete Deletes packages from the database and the system fetch Fetches packages from a remote repository help Displays help information info Displays information about installed packages install Installs packages from remote package repositories and local archives lock Locks package against modifications or deletion plugins Manages plugins and displays information about plugins query Queries information about installed packages register Registers a package into the local database remove Deletes packages from the database and the system repo Creates a package repository catalogue rquery Queries information in repository catalogues search Performs a search of package repository catalogues set Modifies information about packages in the local database ssh Package server (to be used via ssh) shell Opens a debug shell shlib Displays which packages link against a specific shared library stats Displays package database statde la virtualisation en sommeistics unlock Unlocks a package, allowing modification or deletion update Updates package repository catalogues updating Displays UPDATING information for a package upgrade Performs upgrades of packaged software distributions version Displays the versions of installed packages which Displays which package installed a specific file […]
Dans mon cas :
$ pkg search apache2 apache24-2.4.41 Version 2.4.x of Apache web server p5-Apache2-SOAP-0.73_4 Apache2 mod_perl2 SOAP Server p5-Apache2-SiteControl-1.05_3 Perl web site authentication/authorization system
On choisi ensuite le paquet souhaité :
$ pkg install apache24
Système d’unit
FreeBSD utilisant init comme système d’initialisation (voir l’état d’un service et le manager), cela se passe dans le /usr/local/etc/rc.d/ pour toutes les applications installées par l’utilisateur, des applications qui sont non-inclues de base dans le système. Au contraire, tout ce qui est présent de base par le système sera dans le /etc/rc.d/
Exemple ici avec Apache2.4 :
$ /usr/local/etc/rc.d/apache24 status Cannot 'status' apache24. Set apache24_enable to YES in /etc/rc.conf or use 'onestatus' instead of 'status'
Nécessaire donc de rajouter la directive apache24_enable= »YES » à la fin du /etc/rc.conf
$ echo 'apache24_enable="YES"' >> /etc/rc.conf
Une fois fait :
$ /usr/local/etc/rc.d/apache24 Usage: /usr/local/etc/rc.d/apache24 [fast|force|one|quiet](start|stop|restart|rcvar|enabled|describe|extracommands|reload|graceful|gracefulstop|configtest|status|poll)
Avoir un système à jour
Mise à jour majeur – passage sous FreeBSD 12.0
Possédant la version 11.3 de FreeBSD, il est nécessaire mettre à jour notre système vers la dernière version stable FreeBSD 12.0.
$ uname -mrs FreeBSD 11.3-RELEASE-p5 amd64
L’utilitaire freebsd-update nous permet de faire cela !
Il permet d’installer les correctifs de sécurités pour le coeur de FreeBSD (hors paquets installeés manuellement et non inclus de base) et permet également de faire la mise à jour de FreeBSD.
$ freebsd-update -r 12.0-RELEASE upgrade $ freebsd-update install
On redémarre ensuite le serveur
$ reboot
Une dernière fois :
$ freebsd-update install
Je peux donc mettre à jour mon système FreeBSD (kernel + OS) sans toucher aux applications qui le composent, et inversement.
FreeBSD étant maintenant à jour, il faut maintenant le faire pour toutes les applications composants le systèmes.
$ portsnap fetch update $ portsnap fetch install $ portmaster -a
Tout est maintenant à jour ! Que cela soit côté système, ou applicatifs (Vim, Apache2.4 …)
$ uname -mrs FreeBSD 12.0-RELEASE-p12 amd64
Mise à jour mineurs – correctifs de sécurité
De la même manière, freebsd-update permet d’appliquer les correctifs de sécurité sans mettre à jour la version de son système.
$ freebsd-update fetch $ freebsd-update install
Si cela se passe mal pour raison X, il est possible de revenir en arrière :
$ freebsd-update rollback
Il suffit ensuite de redémarrer le serveur !
Fin
C’est tout pour ce billet. J’espère prochainement sortir un poste sur les jails BSD, une technologie propre à FreeBSD permettant de compartimenter des processus, de la virtualisation en somme ! Un peu à la LXC sous Linux mais différent de Docker.