URL: https://linuxfr.org/news/l-heure-du-test-fork-1-void-linux Title: L’heure du test — fork 1 — Void (Linux) Authors: nokomprendo Davy Defaud, ZeroHeure, Nils Ratusznik, Benoît Sibaud, Florent Zara et palm123 Date: 2017年04月29日T17:32:01+02:00 License: CC By-SA Tags: debian, hexchat, voidlinux, test et heartbleed Score: 41 Voici un tour d’horizon d’une distribution peu connue mais néanmoins intéressante : [_Void (Linux)_](http://www.voidlinux.eu/) !  Void est une distribution indépendante, créée de zéro (_from scratch_, pas une divergence de Debian ou autres). Elle est développée par une communauté de volontaires et vous pouvez facilement y contribuer via ses dépôts sur GitHub. C’est une distribution avec mise à jour en continu (_rolling‐release_), tournée vers les ordinateurs de bureau et qui se veut légère et performante. --- NdM. : _Cette dépêche est inspirée par_ [L’heure du test — épisode 1 — NixOS](https://linuxfr.org/news/l-heure-du-test-episode-1-nixos) _postée par_ [gusterhack](https://linuxfr.org/users/gusterhack). _Si vous aussi vous voulez parler de votre distribution ou logiciel libre préféré, [n’hésitez pas](https://linuxfr.org/redaction)._ ---- [The Void (Linux) distribution](http://www.voidlinux.eu/) [L’étiquette « test » sur LinuxFr.org](https://linuxfr.org/tags/test/public) [La catégorie « Distribution » sur LinuxFr.org](https://linuxfr.org/sections/distribution) [L’heure du test — épisode 1 — NixOS](https://linuxfr.org/news/l-heure-du-test-episode-1-nixos) [Wikipédia : Void Linux](https://en.wikipedia.org/wiki/Void_Linux) ---- # La distribution Void # L’aventure _Void Linux_ a commencé en 2008 lorsque Juan Romero Pardines, un ancien mainteneur de NetBSD voulait tester son gestionnaire de paquets _xbps_. Depuis, elle a grandi pour avoir tout ce qu’il faut. Le système de base est totalement libre, dépourvu de _blobs_ binaires venus des constructeurs. Les utilisateurs disposent cependant du dépôt _non‐free_ pour installer des bouts de code propriétaires. ## D’un point de vue utilisateur ## _Void_ est une distribution avec mise à jour en continu (_rolling‐release_), orientée bureau et qui se veut légère et performante. Elle se destine principalement à des utilisateurs de niveau intermédiaire ou avancé et peut être conseillée si vous voulez : - avoir des logiciels toujours à jour ; - ressusciter une vieille machine ; - développer en utilisant plein de bibliothèques récentes ; - utiliser une distribution avec une approche moderne (gestion des paquets, système d’initialisation...). En revanche, _Void_ n’est pas à conseiller si vous cherchez : - une distribution ultra simple à installer et à configurer ; - une logithèque ultra fournie ; - une distribution ultra stable qui doit tourner sans redémarrage pendant dix ans. ## D’un point de vue technique ## _Void_ est une distribution indépendante, créée « _from scratch_ » (pas une divergence de _Debian_ ou autres). Elle est développée par une communauté de volontaires et vous pouvez facilement y contribuer via ses dépôts sur GitHub. _Void_ est disponible pour les architectures x86 et ARM, ainsi que compilé avec _glibc_ (la bibliothèque C de GNU) ou avec [_musl-libc_](https://www.musl-libc.org/) (une alternative plus légère à _glibc_). _Void_ est une _rolling‐release_, c’est‐à‐dire que le système et les paquets sont mis à jour en continu ; il n’y a pas de « version » de la distribution. _Void_ utilise son propre gestionnaire de paquets, _xbps_, qui est très similaire aux classiques _apt_, _dnf_, _pacman_ et autres. Il y a un dépôt officiel ainsi qu’un dépôt « _non‐free_ » et il est relativement facile de faire ses propres paquets. Enfin, _Void_ utilise par défaut LibreSSL (l’alternative à OpenSSL développée suite à la faille de sécurité _Heartbleed_) ainsi que le système d’initialisation _runit_ (alternative à _systemd_). # Installation et configuration #  L’installation de _Void_ est très classique et bien décrite dans la [page Installation du Wiki](https://wiki.voidlinux.eu/Installation) : - on [télécharge une image](https://repo.voidlinux.eu/live/current/) ; - on amorce le système sur l’image et l’on arrive sur un _shell_ ; - on se connecte en _root_ (mot de passe : « voidlinux ») ; - on peut passer le clavier en français avec `loadkeys fr` et voir la doc avec `Alt` + `F8` ; - on lance l’installeur avec `void-installer` ; - on règle les classiques configurations et partitionnement, puis on lance l’installation ; - on redémarre sur le système installé et l’on termine la configuration comme décrit dans la page [_Post‐installation_](https://wiki.voidlinux.eu/Post_Installation) du Wiki. # Le système d’initialisation runit # _Void_ utilise _runit_ pour initialiser le système et gérer les services, ce qui en fait l’une des rares distributions actuelles à ne pas utiliser _systemd_ (sans entrer dans le débat pro ou anti _systemd_). À l’usage basique de tous les jours, _runit_ se révèle vraiment facile et rapide ; voir [la doc _runit_] (http://www.voidlinux.eu/usage/runit/) dans le Wiki. ## Activer ou désactiver des services ## Les services disponibles sont dans `/etc/sv/`. Pour activer un service, il suffit d’ajouter un lien symbolique dans `/var/service/`. Par exemple, pour activer _sshd_ : ``` # ln -s /etc/sv/sshd /var/service/ ``` Pour désactiver un service, il suffit de supprimer le lien symbolique correspondant, dans `/var/service/`. Par exemple, pour désactiver _sshd_ : ``` # rm -r /var/service/sshd ``` ## Gérer des services ## L’utilitaire `sv` permet de démarrer (_start_), d’arrêter (_stop_) ou d’interroger (_status_) un service. Par exemple, pour interroger _sshd_ : ``` # sv status sshd run: sshd: (pid 775) 17011s ``` # Le gestionnaire de paquets xbps # La gestion des paquets est expliquée en détails dans [la page _xbps_ du Wiki](http://www.voidlinux.eu/usage/xbps). À l’usage, _xbps_ est vraiment rapide (en même temps, ça vaut mieux car le système est en _rolling‐release_ et il y a des mises à jour tous les jours). ## Fonctionnalités de base ## Installer un paquet (par exemple le client IRC _hexchat_) : ``` # xbps-install hexchat ``` Chercher un paquet parmi les paquets disponibles dans les dépôts : ```bash $ xbps-query -Rs hexchat [*] hexchat-2.12.4_2 A GTK+ based IRC client successor of Xchat [-] hexchat-lua-2.12.4_2 A GTK+ based IRC client successor of Xchat - lua plugin [-] hexchat-perl-2.12.4_2 A GTK+ based IRC client successor of Xchat - perl plugin [-] hexchat-python-2.12.4_2 A GTK+ based IRC client successor of Xchat - python plugin ``` Afficher les informations d’un paquet installé : ``` $ xbps-query hexchat architecture: x86_64 build-date: 2017年04月12日 08:50 CEST ... short_desc: A GTK+ based IRC client successor of Xchat source-revisions: hexchat:66e4fa9536 state: installed ``` Mettre à jour le système : ``` # xbps-install -Su ``` Supprimer un paquet : ``` # xbps-remove hexchat ``` Supprimer tous les paquets obsolètes : ``` # xbps-remove -Oo ``` Afficher les autres noyaux disponibles sur la machine : ``` $ vkpurge list 4.10.10_1 4.9.11_1 ``` Supprimer un noyau : ``` # vkpurge rm 4.9.11_1 ``` ## La politique de paquets de Void ## Malgré quelques manques (notamment KDE 5), la logithèque de _Void_ est assez fournie, au moins 8 000 paquets. Ce nombre peut paraître faible en comparaison des 43 000 paquets proposés par Debian, mais ce n’est pas tout à fait le cas, car _Void_ réutilise les gestionnaires de paquets proposés par les différents langages et outils. Ainsi, là où Debian propose de nombreux paquets pour les bibliothèques Haskell, les packages LaTex et les greffons Vim, _Void_ préfère généralement passer par les gestionnaires respectifs (_cabal_ / _stack_, _tlmgr_, _vundle_), ce qui n’est pas comptabilisé dans les paquets de la distribution. # Écrire et soumettre des paquets # _Void_ permet bien entendu de compiler et d’installer des logiciels « à la main ». Cependant, si vous voulez faire une installation propre, vous pouvez créer un paquet et l’installer via le gestionnaire _xbps_ (voir [la page _xbps-src_ dans le Wiki](https://wiki.voidlinux.eu/Xbps-src)). Et si votre paquet fonctionne bien, vous pourrez même facilement le proposer aux mainteneurs de _Void_ pour qu’il soit intégré dans le dépôt officiel. ## Initialisation d’un dépôt de paquets ## Pour créer des paquets _Void_, le plus simple est de cloner [le dépôt officiel de _Void_](https://github.com/voidlinux/void-packages), puis d’en diverger en y créant ses paquets. Le dépôt de paquets contient un programme `xbps-src` pour compiler des paquets. Pour pouvoir l’utiliser, il faut d’abord initialiser un environnement de compilation : ```bash $ ./xbps-src binary-bootstrap ``` ## Créer un paquet ## Imaginons, par exemple, que vous voulez empaqueter le programme [GNU-hello](https://www.gnu.org/software/hello/). Commencez par créer une branche « hello » dans le dépôt de paquets : ```bash $ git checkout -b hello ``` Initialisez un nouveau paquet _hello_ : ```bash $ xnew hello ``` Ceci crée un fichier `srcpkgs/hello/template` qui contiendra la description du paquet et les instructions de compilation. Éditez ce fichier pour votre paquet : ```bash # Template file for 'hello' pkgname="hello" version="2.10" revision=1 build_style=gnu-configure distfiles="https://ftp.gnu.org/gnu/hello/${pkgname}-${version}.tar.gz" checksum="31e066137a962676e89f69d1b65382de95a7ef7d914b8cb956f41ea72e0f516b" short_desc="Produces a familiar, friendly greeting" homepage="https://www.gnu.org/software/hello/" license="GPL" ``` Vous pouvez déterminer la somme de contrôle avec la commande : ```bash $ xgensum -f srcpkgs/hello/template ``` Une fois le fichier de configuration écrit, lancez la compilation et la création du paquet : ```bash $ ./xbps-src pkg hello ``` Si tout s’est bien passé, vous pouvez alors installer votre paquet sur votre machine : ``` # xbps-install --repository=hostdir/binpkgs/hello/ hello ``` ## Soumettre un paquet ## Si votre paquet fonctionne correctement, vous pouvez le proposer à la communauté pour qu’il soit intégré dans les paquets _Void_ officiels. Tout d’abord, comme _Void_ est disponible pour plusieurs architectures et _libc_, il faut commencer par tester si le paquet peut se compiler correctement sur d’autres architectures, par exemple pour ARM7, avec _musl-libc_ : ```bash $ ./xbps-src -a armv7l-musl pkg hello ``` Créez ensuite un _commit_ décrivant votre contribution et envoyez‐le dans une branche spécifique sur le serveur : ```bash $ git add srcpkgs/hello/template $ git commit -am "New package: hello-2.10" $ git push -u origin hello ``` Il ne vous reste plus qu’à vous connecter sur _GitHub et à créer une demande d’intégration _— pull request —_ de votre _commit_ dans le dépôt officiel. Si des modifications vous sont demandées, pensez à travailler toujours sur le même _commit_ et la même branche distante : ```git $ git commit -a --amend $ git push -f ``` # Conclusion # _Void (Linux)_ est une distribution peu connue mais dont les choix techniques originaux sont plutôt appréciables à l’usage. Elle est légère, rapide, très à jour et facile à configurer « dans l’esprit UNIX ». En revanche, elle n’est pas destinée à des débutants et n’a pas la logithèque la plus complète qui soit. Personnellement, j’utilise _Void_ tous les jours pour des usages classiques de bureautique, Web, multimédia, ainsi que pour développer en C++ et en Python avec toutes sortes de bibliothèques. En un an d’utilisation, je n’ai pas réussi à la casser ni à avoir de conflits majeurs. En deux occasions, la mise à jour du système ne fonctionnait pas, mais à chaque fois il a suffit d’attendre un jour ou deux pour que les mainteneurs corrigent le problème et que les mises à jour fonctionnent à nouveau.