11 KiB
11 KiB
<html lang="en">
<head>
</head>
</html>
GNU Guix
Clément Lassieur & Mathieu Othacehe
Created: 2019-03-19 mar. 17:32
1 Gestion de paquets sous GNU/Linux
1.1 Un écosystème complexe
- Les distributions historiques sont en perte de vitesse
- Chaque language implémente son propre "package manager" : pip, Cargo, Cabal, npm
- D'autres types d'outils apparaissent
- Pour les développeurs : VirtualEnv, Spack, EasyBuild
- Pour les administrateurs : Ansible, Puppet, Propellor
- Pour tous : Flatpak, snap, Docker, Vagrant
1.2 Qui ne répond pas à tous les problèmes
Tout conteneuriser ?
“Debian and other distributions are going to be that thing you run docker on, little more.” Jos Poortvliet, développeur ownCloud
- Qualité des paquets
- Opacité, manque de flexibilité
- Manque d'outils de développement
1.3 Sommes-nous fichus ?
1.4 Non !
2 Guix
- Peut être vu comme un package manager
- Ensemble d'outils pour faire du déploiement de logiciels et de systèmes
2.1 Paquets
Pas besoin d'être root
guix package -i gcc-toolchain openmpi hwloc
Transactionnel
guix package --roll-back
Permet d'expérimenter
guix package --profile=./experiment -i gcc-toolchain@5.5 hwloc@1
Gestion des paquets (version control)
guix package --manifest=my-packages.scm
(specifications->manifest '("gcc-toolchain" "emacs" "guile" "emacs-geiser"))
2.2 Environnement
2.2.1 Reproduction
Je me fais mon environnement de travail
bob@laptop$ guix package --manifest=my-packages.scm
Quelle version de Guix j'utilise ?
bob@laptop$ guix describe guix cabba9e repository URL: https://git.sv.gnu.org/git/guix.git commit: cabba9e15900d20927c1f69c6c87d7d2a62040fe
Alice peut le reproduire exactement
alice@laptop$ guix pull --commit=cabba9e alice@laptop$ guix package --manifest=my-packages.scm
2.2.2 Facile de hacker GNU hello
On le télécharge
guix build -S hello /gnu/store/...-hello-2.10.tar.gz
'guix environment' donne tous les outils nécessaires pour le compiler (gcc, make…)
~/hello-2.10$ guix environment hello
On compile
~/hello-2.10$ ./configure && make
2.2.3 Tester un paquet Python sans rien installer
On se met dans le bon environnement
~$ guix environment --ad-hoc python python-numpy
Et on fait notre test
~$ python3 >>> import numpy
2.3 Système
On déclare tout ce qu'on veut avoir dans notre système
(operating-system (host-name "schememachine") (timezone "Europe/Paris") (locale "fr_FR.utf8") (bootloader (\alert{bootloader-configuration} (bootloader grub-efi-bootloader) (target "/boot/efi"))) (file-systems (cons (\alert{file-system} (device (file-system-label "my-root")) (mount-point "/") (type "ext4")) %base-file-systems)) (users (cons (\alert{user-account} (name "charlie") (group "users") (home-directory "/home/charlie")) %base-user-accounts)) (services (cons* (\alert{service} dhcp-client-service-type) (\alert{service} openssh-service-type) %base-services)))
Et on instancie, un peu à la Ansible
guix system build config.scm guix system vm config.scm guix system container config.scm guix system reconfigure config.scm
- On peut déployer ça n'importe où
2.4 Liberté, Sécurité
- Builds reproductibles
- On veut que le binaire corresponde à sa source
- On veut pouvoir recompiler le logiciel
- Guix fournit des outils comme 'guix challenge'
- Bootstrappable builds
- On évite de dépendre de gros binaires opaques
3 L'avenir de GNU Guix
- Version 1.0
- De nouveaux paquets, importeurs, updaters
- Un installateur graphique
- Un installateur vraiment graphique
- Une interface utilisateur améliorée
- La modification de paquets depuis l'interface en ligne de commande
- Une ferme de compilation plus robuste
- Un meilleur support d'ARM et d'autres architectures
4 Facilité de contribuer
5 Le financement de GNU Guix
- Dons via la FSF
- Hébergement, maintenance et amélioration de la ferme de compilation