Archlinux vs Voidlinux
Voir aussi : vidéo peertube - vidéo youtube - dépôt git
Introduction
Archlinux et Voidlinux sont des distributions linux rolling-release pour utilisateurs “intermédiaires” (non-allergiques à la ligne de commande). Leurs objectifs sont proches mais leurs choix techniques assez différents.
Objectifs de cette présentation :
- comparer quelques caractéristiques techniques de Arch et de Void
- installer un système de base : xfce + lightdm + clavier bépo
- gérer les paquets (logiciels + noyaux)
- gérer les services
- créer ses propres paquets
Caractéristiques techniques
Points communs
- distributions indépendantes
- rolling release
- utilisation de la ligne de commande
- fichiers de description de paquet “à la script bash”
Différences
Caractéristiques | Archlinux | Voidlinux |
---|---|---|
installeur | ligne de commande | interface texte |
date de naissance | 2002 | 2008 |
popularité | plutôt grande | plutôt petite |
documentation | gros wiki, réputé | wiki petit mais pertinent |
nombre de paquets | > 10k (+ AUR) | > 5k (+ “langages”) |
contributions | git perso + AUR | dépot github |
système d’init | systemd | runit |
système de paquet | pacman | xbps |
architectures | x86_64 | x86_64, i686, ARM |
libc | glibc | glibc, musl |
ssl | openssl | libressl |
Attention au “nombre de paquets” :
- Certaines distributions peuvent découper un logiciel en plusieurs paquets (lib/dev/doc/dbg/…) alors que d’autres distributions fournissent tout le logiciel dans un seul paquet.
- Certaines distributions fournissent des paquets pour les bibliothèques de langages (par exemple tensorflow
) alors que d’autres réutilisent les gestionnaires des langages (par exemple pip install tensorflow
).
Installer un système de base (xfce + lightdm + clavier bépo)
(VM virtualbox avec disque virtuel de 14 Go)
Arch
Installation manuelle en ligne de commande : pas compliqué mais pénible.
https://wiki.archlinux.fr/Installation
Installer le système de base
booter sur l’iso
passer en clavier bépo :
loadkeys fr-bepo
régler l’heure (au format MMDDhhmmYYYY) par exemple pour le 21/04/18 14:11 :
date 042114112018
partitionnner le disk avec
cfdisk /dev/sda
: dos, 13 Go linux + 1 Go swapformater la partiton racine :
mkfs.ext4 -L arch /dev/sda1
formater la partiton swap :
mkswap -L swap /dev/sda2
activer le swap :
swapon /dev/sda2
monter la partition racine :
mount /dev/sda1 /mnt
installer les paquets de base :
pacstrap /mnt base
configurer le fstab :
genfstab -U /mnt >> /mnt/etc/fstab
lancer un chroot dans le montage :
arch-chroot /mnt
timezone :
ln -sf /usr/share/zoneinfo/Europe/Paris /etc/localtime
réglage de l’heure :
hwclock --systohc
générer les locales :
locale-gen
régler la locale dans
/etc/locale.conf
:
LANG=fr_FR.UTF-8
- régler le clavier console dans
/etc/vconsole.conf
:
KEYMAP=fr-bepo
- régler le nom de machine dans
/etc/hostname
:
myhostname
- régler routes réseaux dans
/etc/hosts
:
127.0.0.1 localhost
::1 localhost
127.0.1.1 myhostname.localdomain myhostname
régler le mot de passe du root :
passwd
installer le bootloader :
pacman -S grub
grub-install /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg
- quitter le chroot :
exit
- démonter la partition racine :
umount -R /mnt
- éteindre la machine (
poweroff
), enlever l’iso et rebooter
Configurer le nouveau système
- se connecter en root
- activer le réseau :
systemctl enable dhcpcd.service
- tester le réseau avec un
ping archlinux.org
(rebooter si pas de réseau) - installer sudo :
pacman -S sudo
- activer le sudo en lançant
visudo
et en décommentant la ligne :%wheel ALL=(ALL) ALL
- créer un utilisateur (par exemple “toto”) :
useradd -m -G wheel toto
- régler le mot de passe de l’utilisateur :
passwd toto
Installer xfce + lightdm
- se connecter en root
- installer les paquets :
pacman -S xfce4 xorg lightdm-gtk-greeter ttf-dejavu
- régler le clavier (xorg) :
localectl set-x11-keymap fr pc105 bepo
- régler le clavier (console) :
localectl set-keymap fr-bepo
- activer lightdm :
systemctl enable lightdm
- lancer lightdm :
systemctl start lightdm
- l’interface graphique se lance, fin de l’installation
Void
Installation via une interface texte : plutôt simple et rapide.
https://wiki.voidlinux.eu/Installation
Installer le système de base
- booter sur l’iso
- se connecter en
root
avec le mot de passevoidlinux
- passer en clavier bépo :
loadkeys fr-bepo
- lancer l’installeur :
void-installer
- clavier
fr-bepo
- configuration réseau dhcp
- source
Network
- indiquer un nom de machine
- locale
fr_FR.UTF-8
- timezone
Europe/Paris
- mot de passe du root
- nom et mot de passe de l’utilisateur
- bootloader :
/dev/sda
- partitions : dos, 13 Go linux + 1 Go swap
- filesystems : sda1 en ext4 sur “/”, sda2 en swap
- install
- éteindre la machine (
poweroff
), enlever l’iso et rebooter
Installer xfce + lightdm
se connecter en root
installer les paquets :
xbps-install xfce4 xorg lightdm-gtk3-greeter adwaita-icon-theme
- configurer le clavier xorg en ajoutant un fichier
/etc/X11/xorg.conf.d/10-keyboard.conf
:
Section "InputClass"
Identifier "MyKeyboard"
MatchIsKeyboard "on"
Option "XkbLayout" "fr"
Option "XkbVariant" "bepo"
EndSection
- lancer les services :
ln -s /etc/sv/dbus /var/service/
ln -s /etc/sv/lightdm /var/service/
- l’interface graphique se lance, fin de l’installation
Gérer les paquets (logiciels + noyaux)
Arch
- chercher le paquet “apache” :
pacman -Ss apache
- installer un paquet :
pacman -S apache
- supprimer un paquet :
pacman -Rsn apache
- mettre à jour le système :
pacman -Syu
- nettoyer le système :
pacman -Sc
- quelques références :
Void
- chercher le paquet “apache” :
xbps-query -Rs apache
- installer un paquet :
xbps-install apache
- supprimer un paquet :
xbps-remove apache
- mettre à jour le système :
xbps-install -Su
- nettoyer le système :
xbps-remove -Oo
- lister les noyaux disponibles :
vkpurge list
- supprimer les anciens noyaux :
vkpurge rm all
Gérer les services
Arch
- gestion des services via systemd
- commande
systemctl
(+ action (status/enable/disable/start/stop/…) + service) - exemple pour activer/démarrer le service apache puis pour arrêter/désactiver :
systemctl enable httpd.service
systemctl start httpd.service
systemctl stop httpd.service
systemctl disable httpd.service
Void
- gestion des services via runit
- liens symboliques + commande
sv
(+ action status/start/stop/… + service) - exemple pour activer/démarrer le service apache puis pour arrêter/désactiver :
ln -s /etc/sv/apache /var/service/
sv start apache
sv stop apache
rm /var/service/apache
Créer ses propres paquets
En général, il vaut mieux éviter le
sudo make install
(pas propre, échappe au gestionnaire de paquets).Exemple : créer un paquet pour le projet hello-eigen.
Arch
Pour créer un package avec Arch, il faut principalement écrire un fichier PKGBUILD
. Ce fichier peut être ensuite soumis à la communauté Arch via le dépôt AUR.
installer les paquets de développement :
sudo pacman -S base-devel
créer un répertoire pour le paquet :
mkdir hello-eigen
cd hello-eigen
- écrire un fichier
PKGBUILD
:
#Maintainer: nokomprendo <nokomprendo@gmail.com>
pkgname=hello-eigen
pkgver=0.1
pkgrel=1
pkgdesc="Hello world using eigen"
arch=(i686 x86_64)
url='https://gitlab.com/nokomprendo/hello-eigen'
makedepends=('cmake' 'pkg-config' 'eigen')
source=('https://gitlab.com/nokomprendo/hello-eigen/-/archive/v0.1/hello-eigen-v0.1.tar.gz')
md5sums=('...')
build(){
cd "$pkgname-$pkgver"
mkdir -p build
cd build
cmake DCMAKE_INSTALL_PREFIX="$pkgdir" ..
make
}
package(){
cd "$pkgname-$pkgver/build"
make DESTDIR="$pkgdir" install
}
créer le paquet (et installer les dépendances) :
makepkg -s
installer le paquet créé :
sudo pacman -U hello-eigen-0.1-1-x86_64.pkg.tar.xz
tester :
$ hello-eigen
0.680375 0.566198 0.823295
-0.211234 0.59688 -0.604897
- quelques références :
Void
Pour créer un paquet avec Void, il faut récupérer le dépôt de paquets de Void et y écrire un fichier template
. En fait, c’est également la méthode utilisée par les contributeurs. Il est alors possible de soumettre ensuite son paquet à la communauté Void.
installer le paquet de développement :
sudo xbps-install xtools
récupérer le dépôt de paquets :
git clone https://github.com/voidlinux/void-packages
cd void-packages
initialiser l’environnement de développement de paquets :
./xbps-src binary-bootstrap
créer un nouveau paquet :
xnew hello-eigen
écrire un fichier
srcpkgs/hello-eigen/template
:
# Template file for 'hello-eigen'
pkgname=hello-eigen
version=0.1
revision=1
build_style=cmake
makedepends="cmake pkg-config eigen"
short_desc="hello world using eigen"
maintainer="nokomprenod <nokomprendo@gmail.com>"
license="MIT"
homepage="https://gitlab.com/nokomprendo/hello-eigen"
distfiles="https://gitlab.com/nokomprendo/hello-eigen/-/archive/v${version}/hello-eigen-v${version}.tar.gz"
checksum=...
si besoin, calculer la somme de contrôle :
xgensum -f srcpkgs/hello-eigen/template
construire le paquet :
./xbps-src pkg hello-eigen
installer le paquet créé :
sudo xbps-install --repository=hostdir/binpkgs/ hello-eigen
tester :
$ hello-eigen
0.680375 0.566198 0.823295
-0.211234 0.59688 -0.604897
Conclusion
- Archlinux et Voidlinux sont des distributions avec des objectifs proches mais avec une mise en oeuvre différente.
- Archlinux utilise des techno classiques (x86_64, systemd, glibc, openssl…). Elle est populaire et bien documentée.
- Voidlinux propose des techno plus variées et plus originales (x86/ARM, runit, glibc/musl, libressl…). Elle est très utilisable au quotidien et mérite d’être plus connue.
- Création de paquets relativement abordable. Mais Nixos, c’est quand même bien…