0

Premiers pas avec FreeBSD

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.

 

Supras

Supras

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *