L’heure du test — fork 1 — Void (Linux)

41
6
mai
2017
Distribution

Voici un tour d’horizon d’une distribution peu connue mais néanmoins intéressante : Void (Linux) !


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 postée par gusterhack. Si vous aussi vous voulez parler de votre distribution ou logiciel libre préféré, n’hésitez pas.

Sommaire

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 (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 :

  • on télécharge une image ;
  • 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 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 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. À 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 :

$ 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). 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, 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 :

$ ./xbps-src binary-bootstrap

Créer un paquet

Imaginons, par exemple, que vous voulez empaqueter le programme GNU-hello. Commencez par créer une branche « hello » dans le dépôt de paquets :

$ git checkout -b hello

Initialisez un nouveau paquet hello :

$ 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 :

# 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 :

$ xgensum -f srcpkgs/hello/template

Une fois le fichier de configuration écrit, lancez la compilation et la création du paquet :

$ ./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 :

$ ./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 :

$ 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 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.

Aller plus loin

  • # par rapport à Archlinux ?

    Posté par  . Évalué à 7. Dernière modification le 06 mai 2017 à 13:12.

    Sympa la présentation ! L'esprit du bousin ressemble grandement à Archlinux, le gestionnaire de paquet lui-même semble reprendre la syntaxe de pacman. Quelles sont ses atouts par rapport à Archlinux ? (en espérant que ce ne soit pas qu'une histoire de systemd :D)

    • [^] # Re: par rapport à Archlinux ?

      Posté par  (site web personnel) . Évalué à 4.

      Par exemple :

      musl-libc à la place de glibc (enfin il semblait qu'une version glibc existe maintenant)
      libressl à la place d'openssl

      Des choix que n'ont pas fait les distributions existantes car cela casserait sûrement un trop grand nombre de choses.

    • [^] # Re: par rapport à Archlinux ?

      Posté par  . Évalué à 5.

      L'installation aussi, beaucoup plus aisée et plus rapide !

      Après la grande différence, ça reste systemd ;) mais les 2 systèmes font la même chose au final… Pas de préférence. Alors, un truc particulier aussi à ce niveau… Chez moi, le système démarre légèrement plus vite avec void par rapport à archlinux.

      Même chose pour la gestion des paquets, deux systèmes sympas, mais qui fonctionnent au final. Donc pas vraiment de préférence.

      Et la communauté, moins dense mais (et donc) plus accessible à mon goût. Archlinux, c'est parfois un peu agressif, mais ca reste souvent bien savant quand même. Je ne parle pas de la documentation… Parce qu'à ce niveau, qui égale Arch ?

      • [^] # Re: par rapport à Archlinux ?

        Posté par  (site web personnel) . Évalué à 4.

        Oui, hormis quelques choix techniques différents (systemd/runit, pacman/xbps, openssl/libressl…), les 2 distribs sont assez proches.

        Ce que j'aime bien dans Void, c'est que la distrib contient à peu près tout ce dont j'ai besoin, tout en restant "à taille humaine" (il me manque juste un logiciel difficile à empaqueter car lié à KDE5 mais c'est en train d'arriver) : l'admin spécifique à Void est bien expliquée dans les quelques pages du wiki et tout le côté "développement" est sur le dépôt github. Du coup, on arrive vite à comprendre comment fonctionne la distrib (en fait, ce court article contient tout ce qu'il faut pour un usage déjà assez avancé). Maintenant, c'est peut-être aussi le cas pour Arch mais comme je la connais moins je ne peux pas vraiment comparer.

      • [^] # Re: par rapport à Archlinux ?

        Posté par  . Évalué à 8.

        Parce qu'à ce niveau, qui égale Arch ?

        Gentoo, OpenBSD, FreeBSD ! ;)

        • [^] # Re: par rapport à Archlinux ?

          Posté par  . Évalué à 3.

          :) C'est vrai… J'aurais dû préciser… Niveau wiki (documentation collaborative et plus spécifique peut-être, avec souvent des liens vers le forum).

  • # Merci d'avoir forker :)

    Posté par  . Évalué à 5. Dernière modification le 06 mai 2017 à 14:15.

    Je suis comptent que quelqu'un à repris la structure de mon travail pour parler d'une autre distribution que je ne connaissait pas. Je ne pensait pas que ça serait aller dans cette direction. Mais du fait que la licence Creative Common BY SA est libre on peu. Donc si quelqu'un à une autre idée de présentation d'une distribution n'hésiter pas. De même je propose L'heure du test - fork 2 - [Nom de la distribution] pour la prochain personne qui voudrait forker.

    • [^] # Re: Merci d'avoir forker :)

      Posté par  (site web personnel) . Évalué à 5.

      On t'a écris à ce sujet (les modérateurs qui hésitaient) mais tu n'as pas du ouvrir ton courriel…

      "La liberté est à l'homme ce que les ailes sont à l'oiseau" Jean-Pierre Rosnay

  • # "Légère"

    Posté par  (site web personnel) . Évalué à 3.

    Petite question technique, sous quels aspects "The Void" est elle plus "légère" qu'une autre distribution?
    Le noyau est-il "amputé"?
    Les applications sont-elle "allégées"?

    • [^] # Re: "Légère"

      Posté par  (site web personnel) . Évalué à 4.

      Elle est légère de par certains choix techniques (runit, xbps, musl…) et le soin apporté à la création des paquets. Tous les paquets sont compilés avec des options d'optimisation et de hardening et les mainteneurs assez exigeants sur les paquets (choix des bonnes options, pas de dépendances inutiles, logs d'intégration continue…).
      Maintenant, ce n'est pas la seule distribution "légère" et une gentoo compilée avec des options spécifiques à ton besoin le sera certainement plus.

  • # xbps

    Posté par  . Évalué à 3.

    Bonjour,

    Merci pour nous faire découvrir cette nouvelle distribution.

    Il semble que cette distribution existe essentiellement parce qu'il y a un nouveau gestionnaire de paquets.
    Je suis allé voir sur le wiki, mais n'étant pas trop versé dans les gestionnaires de paquets, je n'ai pas bien compris ses spécificités par rapport aux autres gestionnaires.
    Saurais-tu expliquer cela?

    Cordialement.

    • [^] # Re: xbps

      Posté par  (site web personnel) . Évalué à 2.

      Je ne suis pas un expert non plus mais je crois que xbps est assez proche de pacman, tant au niveau des fonctionnalités (installation/suppression de paquets, résolution des dépendances, rolling release, checksum…) que de la description des paquets (patchs éventuels + fichiers de description contenant quelques variables et fonctions bash). Pour moi, la principale différence est le mode d'intégration dans les dépôts officiels (dépôt AUR + retour des utilisateurs pour arch, pull request directement sur github pour void).

      Ceci dit, je ne sais pas si xbps est à l'origine de la création de void mais maintenant void a pas mal d'originalités qui justifient son existence (runit, musl, libressl, architectures i686/x86_64/arm6-7-8…).

      • [^] # Re: xbps

        Posté par  . Évalué à 2.

        Merci de ta réponse.

  • # musl-libc

    Posté par  . Évalué à 3.

    bonjour, j'avais déjà vu cette distrib qui viens avec musl-libc aussi
    je n'y connais pas grand chose en compil,
    quelle est la diff entre les deux.

    ayant cherché un peu sur notre amis G & compères ainsi que sur leur forum, la seul réponse que j'y ai trouvé etait un truc comme" si tu ne sais pas, ne prend pas, reste sur la version 'normal'"

    mise à part la diff de paquets dispo, je pense qu'il y en a une autre mais la quelle.

    Merci

    • [^] # Re: musl-libc

      Posté par  (site web personnel) . Évalué à 5.

      C'est une autre implémentation de la bibliothèque C (c'est-à-dire du code différent de glibc pour implémenter les sockets, threads, math…). Normalement, il y a un standard qui définit les fonctions et structures que doit fournir une libc mais les différentes implémentations ne les respectent pas toujours complètement ou ajoutent parfois des fonctionnalités supplémentaires. Glibc est très répandu et les logiciels sont souvent développés pour cette libc mais du coup si un logiciel utilise une fonctionnalité de glibc qui n'est pas dans le standard alors le logiciel risque de ne pas compiler avec une autre libc.

      Musl est supposée être plus moderne, légère et rapide (http://www.etalabs.net/compare_libcs.html) mais je n'ai pas encore testé la version musl de void donc je ne sais pas ce que ça donne au quotidien.

  • # Merci

    Posté par  . Évalué à 1.

    Merci pour cette jolie présentation qui contribue à faire connaître Void aux francophones ! :)
    Je me suis permis de créer un topic avec un lien vers votre article sur le forum de Void.
    Cette distribution est phénoménale.

  • # Merci

    Posté par  . Évalué à 1.

    Ah j'avais oublié le lien vers le forum !
    https://forum.voidlinux.eu/t/void-a-french-presentation-fr/2569

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.