Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format
PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
utilisateurs:gonzoleri:tutos:guixsd-0.16-en-dual-boot-avec-debian-testing-sid [27/03/2019 19:28] gonzoleri [Introduction] |
utilisateurs:gonzoleri:tutos:guixsd-0.16-en-dual-boot-avec-debian-testing-sid [26/07/2019 18:47] gonzoleri [Utilisation] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Installer GuixSD 0.16 à Côté de Debian Testing/Sid====== | + | ====== Installer GuixSD 0.16 à côté de Debian Testing/Sid====== |
* Objet : Installation en Dual Boot | * Objet : Installation en Dual Boot | ||
- | * Niveau requis :{{tag>avisé}} | + | * Niveau requis :{{tag>avisé}} L'installation de **Guix System 1.0.1** ne devrait pas être très différente à effectuer (non testé). |
* Commentaires : [[https://www.gnu.org/software/guix/manual/html_node/GNU-Free-Documentation-License.html]] | * Commentaires : [[https://www.gnu.org/software/guix/manual/html_node/GNU-Free-Documentation-License.html]] | ||
- | * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) | + | * Débutant, à savoir : [[https://www.gnu.org/software/guix/manual/fr/guix.fr.html]] :-) |
===== Introduction ===== | ===== Introduction ===== | ||
- | Le 9 janvier 2019 j'ai installé GuixSD 0.16 en Dual Boot avec Debian Testing(/Sid). | + | (Chez moi, l'ordinateur utilisé est un portable "**Packard Bell EasyNote TE** "Intel Celeron B830. Intel Graphics Media Accelerator (GMA) HD Graphics) |
- | + | ||
- | L'ordinateur est un portable "**Packard Bell EasyNote TE**". | + | |
- | + | ||
- | Télécharger et graver **Supergrub2disk** (ou bien le copier sur une clé USB) est hautement recommandé, spécialement dans ces circonstances d'une installation en dual-boot avec Debian Testing/Sid. | + | |
- | + | ||
- | Cela peut réellement vous aider... | + | |
- | + | ||
- | **[[https://www.supergrubdisk.org/category/download/supergrub2diskdownload/]]** | + | |
- | + | ||
- | Télécharger GNU Guix Software Distribution: | + | |
- | **[[https://www.gnu.org/software/guix/download/]]** | + | {{ https://www.hubert-lombard.website/vignettes/guix-logo-redimensionne.png |}} |
+ | <note tip>** Téléchargement de GNU Guix Software Distribution :** | ||
+ | **[[https://www.gnu.org/software/guix/download/]]**</note> | ||
**Copie de l'image sur une clé USB** | **Copie de l'image sur une clé USB** | ||
Ligne 41: | Ligne 34: | ||
<code user>$ xz -d guixsd-install-0.16.0.x86_64-linux.iso.xz</code> | <code user>$ xz -d guixsd-install-0.16.0.x86_64-linux.iso.xz</code> | ||
- | 2. Insérer un DVD vierge dans votre machine et déterminer son nom de péripérique. Si le nom du périphérique DVD est connu comme /dev/srX, copier l'image avec: | + | 2. Insérer un DVD vierge et déterminer son nom de périphérique. Si le nom du périphérique DVD est connu comme /dev/srX, copier l'image avec: |
<code root># growisofs -dvd-compat -Z /dev/srX=guixsd-install-0.16.0.x86_64-linux.iso</code> | <code root># growisofs -dvd-compat -Z /dev/srX=guixsd-install-0.16.0.x86_64-linux.iso</code> | ||
Sources : | Sources : | ||
**[[https://www.gnu.org/software/guix/manual/html_node/Preparing-for-Installation.html#Preparing-for-Installation]]** | **[[https://www.gnu.org/software/guix/manual/html_node/Preparing-for-Installation.html#Preparing-for-Installation]]** | ||
+ | <note tip>Il est **hautement recommandé** de télécharger et graver **Supergrub2disk** (ou bien de le copier sur une clé USB), spécialement dans ces circonstances d'une installation en dual-boot avec Debian Testing/Sid. | ||
+ | Cela peut réellement vous aider... Moi, les 2 fois où j'en ai eu besoin, il m'a servi avec succès. | ||
+ | **[[https://www.supergrubdisk.org/category/download/supergrub2diskdownload/]]**</note> | ||
===== Installation ===== | ===== Installation ===== | ||
L'image d'installation utilise la disposition du clavier qwerty. | L'image d'installation utilise la disposition du clavier qwerty. | ||
Ligne 53: | Ligne 49: | ||
clavier fr, donc allons-y : | clavier fr, donc allons-y : | ||
<code root># loadkeys fr</code> | <code root># loadkeys fr</code> | ||
- | Je ne vais pas aborder la question du Wi-Fi ici, car ma connexion est très lente. | + | Je ne vais pas aborder la question du **Wi-Fi** ici, car ma connexion est très lente (Zone non dégroupée). |
- | Cependant, le matériel est correct, ce qui n’est pas une restriction dans mon cas (adaptateur réseau sans fil Qualcomm Atheros AR9485 (rév. 01). | + | Cependant, le matériel ne m'impose aucune restriction (adaptateur réseau sans fil **Qualcomm Atheros AR9485 (rév. 01)**. |
- | Pour plus d’informations sur le Wi-Fi, voir ci-dessous: | + | Pour plus d’informations sur le Wi-Fi, voir ci-dessous : |
**[[https://www.gnu.org/software/guix/manual/html_node/Preparing-for-Installation.html#Networking]]** | **[[https://www.gnu.org/software/guix/manual/html_node/Preparing-for-Installation.html#Networking]]** | ||
- | Certaines cartes wifi nécessitent l'utilisation d'un firmware non libre. | + | <note important>Certaines cartes wifi nécessitent l'utilisation d'un firmware non libre : pour un **[[utilisateurs:gonzoleri:tutos:installation-configuration-de-guixsd|autre ordinateur portable]]**, j'avais dû commander un adaptateur USB sans fil **Technoethical N150 Mini** pour GNU/Linux-libre à l'adresse : |
- | Pour un autre ordinateur portable, j'ai dû commander un Adaptateur USB sans fil Technoethical N150 Mini pour GNU / Linux-libre à l'adresse: | + | **[[https://tehnoetic.com/adapters/tehnoetic-wireless-adapter-gnu-linux-libre-tet-n150]]**</note> |
- | + | ||
- | **[[https://tehnoetic.com/adapters/tehnoetic-wireless-adapter-gnu-linux-libre-tet-n150]]** | + | |
Pour cette installation, j'ai donc utilisé la connexion d'un joli câble RJ45. | Pour cette installation, j'ai donc utilisé la connexion d'un joli câble RJ45. | ||
Ligne 84: | Ligne 78: | ||
3 packets transmitted, 3 packets received, 0% packet loss | 3 packets transmitted, 3 packets received, 0% packet loss | ||
round-trip min/avg/max/stddev = 138.917/139.101/139.388/0.206 ms</code> | round-trip min/avg/max/stddev = 138.917/139.101/139.388/0.206 ms</code> | ||
+ | ====Partitions==== | ||
Partitionnement **GPT ou EFI** : Les tests que j'ai effectués dans les machines virtuelles n'ayant pas été très concluants, je n'en sais pas trop sur le sujet. | Partitionnement **GPT ou EFI** : Les tests que j'ai effectués dans les machines virtuelles n'ayant pas été très concluants, je n'en sais pas trop sur le sujet. | ||
Si vous souhaitez utiliser GPT ou EFI, veuillez vous reporter à la documentation : | Si vous souhaitez utiliser GPT ou EFI, veuillez vous reporter à la documentation : | ||
Ligne 90: | Ligne 85: | ||
Dans mon cas, sachant que je n'aurai pas à m'inquiéter de cette question pour cause d'ordinateur datant de 2012, c'est parti : | Dans mon cas, sachant que je n'aurai pas à m'inquiéter de cette question pour cause d'ordinateur datant de 2012, c'est parti : | ||
- | <code root># cfdisk | + | <code root># cfdisk</code> |
- | Device Boot Start End Sectors Size Id Type | + | <code>Device Boot Start End Sectors Size Id Type |
/dev/sda1 2048 532542415 532540368 254G 83 Linux | /dev/sda1 2048 532542415 532540368 254G 83 Linux | ||
/dev/sda2 532543486 976771071 444227586 211.8G 5 Extended | /dev/sda2 532543486 976771071 444227586 211.8G 5 Extended | ||
Ligne 99: | Ligne 94: | ||
GuixSD sera installé sur /dev/sda6. | GuixSD sera installé sur /dev/sda6. | ||
- | Concernant votre propre installation, il est préférable d'activer l'option de démarrage sur votre /dev/sdX * maintenant ... | + | Concernant votre propre installation, il est préférable d'activer l'option de démarrage * sur votre /dev/sdX maintenant... |
- | De préférence, attribuez une étiquette aux systèmes de fichiers afin de pouvoir les consulter facilement et de manière fiable dans les déclarations de système de fichiers (voir Systèmes de fichiers). | + | Attribuez une étiquette aux systèmes de fichiers afin de pouvoir les consulter facilement et de manière fiable dans les déclarations de système de fichiers. |
Cela se fait généralement à l'aide de l'option **-L** de **mkfs.ext4** et des commandes associées. | Cela se fait généralement à l'aide de l'option **-L** de **mkfs.ext4** et des commandes associées. | ||
- | En supposant que la partition racine cible se trouve dans /dev/sda6, vous pouvez créer un système de fichiers portant le libellé | + | En supposant que la partition racine cible se trouve dans /dev/sda6, vous pouvez créer un système de fichiers portant le libellé **my-root** avec la commande suivante. Personnellement, j'ai fait : |
- | + | ||
- | **my-root** avec la commande suivante, personnellement, j'ai fait : | + | |
<code root># mkfs.ext4 -L my-root /dev/sda6</code> | <code root># mkfs.ext4 -L my-root /dev/sda6</code> | ||
- | Monter le système de fichiers cible sous /mnt avec cette commande (encore une fois, en supposant que my-root est l’étiquette du | + | Monter le système de fichiers cible sous /mnt avec cette commande (encore une fois, en supposant que **my-root** est l’étiquette du système de fichiers racine) : |
- | + | ||
- | système de fichiers racine) : | + | |
<code root># mount LABEL=my-root /mnt</code> | <code root># mount LABEL=my-root /mnt</code> | ||
J'ai une partition de swap à disposition sur /dev/sda5 pour Debian, pourquoi ne pas l'utiliser ? J'ai lancé : | J'ai une partition de swap à disposition sur /dev/sda5 pour Debian, pourquoi ne pas l'utiliser ? J'ai lancé : | ||
<code root># mkswap /dev/sda5</code> | <code root># mkswap /dev/sda5</code> | ||
<code root># swapon /dev/sda5</code> | <code root># swapon /dev/sda5</code> | ||
- | **Procédons à l'installation** | + | ====C'est parti !==== |
Avec les partitions cibles prêtes et la racine cible montée sur /mnt, on est bon. Premièrement : | Avec les partitions cibles prêtes et la racine cible montée sur /mnt, on est bon. Premièrement : | ||
<code root># herd start cow-store /mnt</code> | <code root># herd start cow-store /mnt</code> | ||
- | Cela crée une copie en écriture de /gnu/store, de telle sorte que les packages qui lui sont ajoutés au cours de la phase d’installation soient écrits sur le disque cible sur /mnt plutôt que conservés en mémoire. | + | Cela crée une copie en écriture de **/gnu/store**, de telle sorte que les packages qui lui sont ajoutés au cours de la phase d’installation soient écrits sur le disque cible sur **/mnt** plutôt que conservés en mémoire. |
- | Cela est nécessaire car la première phase de la commande guix system init implique le téléchargement ou la compilation dans /gnu/store, qui est initialement un système de fichiers en mémoire. | + | Cela est nécessaire car la première phase de la commande **guix system init** implique le téléchargement ou la compilation dans /gnu/store, qui est initialement un système de fichiers en mémoire. |
Création du répertoire cible de configuration du système : | Création du répertoire cible de configuration du système : | ||
<code root># mkdir /mnt/etc</code> | <code root># mkdir /mnt/etc</code> | ||
- | Création du prochain fichier de configuration (vide pour l'instant) : | + | Création du prochain fichier de configuration système (vide pour l'instant) : |
<code root># touch /etc/configuration/perso.scm</code> | <code root># touch /etc/configuration/perso.scm</code> | ||
- | Remarque : vous pouvez également éditer un fichier existant déjà dans /etc/configuration (par exemple, “**desktop.scm**” ou “**bare-bones.scm**” et le modifier à votre guise). | + | <note tip>Sinon vous pouvez éditer un fichier existant déjà dans **///etc/configuration//** (par exemple, “**desktop.scm**” ou “**bare-bones.scm**” et le modifier à votre guise).</note> |
+ | ====Configuration en cours d'installation==== | ||
Pour adapter la configuration de l'ordinateur à mes besoins, j'ai utilisé **vi** , ne connaissant que celui-ci. | Pour adapter la configuration de l'ordinateur à mes besoins, j'ai utilisé **vi** , ne connaissant que celui-ci. | ||
- | Nano et Zile sont toutefois disponibles. | + | Nano et Zile sont toutefois disponibles. |
<code root># vi /etc/configuration/perso.scm</code> | <code root># vi /etc/configuration/perso.scm</code> | ||
- | <file scheme nom.scm> | + | <file scheme /etc/configuration/perso.scm> |
- | ;; Operating system configuration for a full | + | ;; Operating system configuration for a full |
- | ;; "desktop" environment with gnome and | + | ;; "desktop" environment with gnome and |
- | ;; gnome-shell | + | ;; gnome-shell |
- | (use-modules (gnu) (gnu system nss)) | + | (use-modules (gnu) (gnu system nss)) ; Le fichier est en langage scheme. Après quelque temps |
- | (use-service-modules desktop networking ssh) | + | (use-service-modules desktop networking ssh) ; d'utilisation, sa pratique est plus aisée. |
- | (use-package-modules bootloaders certs gnome screen ssh) | + | (use-package-modules bootloaders certs gnome screen ssh) ; Module 'bootloaders' indispensable pour le Dual-boot. |
(operating-system | (operating-system | ||
(host-name "gnu") | (host-name "gnu") | ||
(timezone "Europe/Paris") | (timezone "Europe/Paris") | ||
- | (locale "en_US.utf8") | + | (locale "fr_FR.utf8") |
- | ;; Assuming /dev/sda is the target hard disk, and "my-root" is | + | ;; Assuming /dev/sda is the target hard disk, and "my-root" is the label of the target root file system, |
- | ;; the label of the target root file system, and /dev/sda6 the | + | ;; and /dev/sda6 the target partition for the GuixSD installation. |
- | ;; target partition for the GuixSD installation. | + | ;; La partition /dev/sda6 sera détectée par le système, pour cela, elle ne doit pas figurer ici. |
- | (bootloader (grub-configuration (target "/dev/sda") (menu-entries | + | (bootloader (grub-configuration (target "/dev/sda") (menu-entries ;C'est bien "/dev/sda". Puis ajout de 'menu-entries' |
- | (list | + | (list ;Déclaration de la liste d'entrées |
- | (menu-entry | + | (menu-entry ;Entrons dans le menu |
- | (label "Debian GNU/Linux") | + | (label "Debian GNU/Linux") ;Titre de la distribution |
- | (linux "/boot/vmlinuz-4.19.0-1-amd64") | + | (linux "/boot/vmlinuz-4.19.0-1-amd64") ;Noyau à démarrer |
- | (linux-arguments '("root=/dev/sda1")) | + | (linux-arguments '("root=/dev/sda1")) ;Debian se trouve sur /dev/sda1 |
- | (initrd "/boot/initrd.img-4.19.0-1-amd64")))))) | + | (initrd "/boot/initrd.img-4.19.0-1-amd64")))))) ;C'est parti pour le démarrage ! |
| | ||
(file-systems (cons (file-system | (file-systems (cons (file-system | ||
Ligne 181: | Ligne 172: | ||
%base-packages)) | %base-packages)) | ||
- | ;; Add GNOME and/or Xfce---we can choose at the log-in | + | ;; **Edit** 19-04-2019 : 'gnome-desktop-service est déprécié depuis quelques jours. |
- | ;; screen with F1. | + | ;; Cela devrait marcher si vous remplacez (gnome-desktop-service) par (service gnome-desktop-service-type) |
- | (services (cons* (gnome-desktop-service) | + | (services (cons* (service gnome-desktop-service-type) ;; Testé, c'est bon. |
- | (console-keymap-service "fr") | + | %desktop-services)) |
- | %desktop-services)) | + | |
;; Allow resolution of '.local' host names with mDNS. | ;; Allow resolution of '.local' host names with mDNS. | ||
(name-service-switch %mdns-host-lookup-nss)) | (name-service-switch %mdns-host-lookup-nss)) | ||
</file> | </file> | ||
- | Faisons maintenant une copie de ce fichier renommé '**config.scm**' sur '**/mnt/etc**' | + | Faisons maintenant une copie de ce fichier __renommé__ '**config.scm**' sur '**/mnt/etc**' |
<code root># cp /etc/configuration/perso.scm /mnt/etc/config.scm</code> | <code root># cp /etc/configuration/perso.scm /mnt/etc/config.scm</code> | ||
Une fois la préparation du fichier de configuration terminée, le nouveau système doit être initialisé (rappelez-vous que le système de fichiers racine cible est monté sur **/mnt**) : | Une fois la préparation du fichier de configuration terminée, le nouveau système doit être initialisé (rappelez-vous que le système de fichiers racine cible est monté sur **/mnt**) : | ||
<code root># guix system init /mnt/etc/config.scm /mnt</code> | <code root># guix system init /mnt/etc/config.scm /mnt</code> | ||
- | Ceci copie tous les fichiers nécessaires et installe GRUB sur /dev/sda, à moins que vous ne passiez l’option –no-bootloader . | + | Ceci copie tous les fichiers nécessaires et installe GRUB sur /dev/sda (à moins que vous ne passiez l’option //–no-bootloader// m( . |
Cette commande peut déclencher des téléchargements ou des versions des packages manquants, ce qui peut prendre un certain temps. | Cette commande peut déclencher des téléchargements ou des versions des packages manquants, ce qui peut prendre un certain temps. | ||
La copie sur /mnt va se terminer... | La copie sur /mnt va se terminer... | ||
+ | |||
[##########################] | [##########################] | ||
+ | |||
L'installation est terminée, on peut redémarrer : | L'installation est terminée, on peut redémarrer : | ||
<code root># reboot</code> | <code root># reboot</code> | ||
- | Et voilà :) | + | Et voilà ;-) |
+ | {{ https://www.hubert-lombard.website/vignettes/ecran-Choix-Linux-Libre-ou-debian.jpg |}} | ||
===== Utilisation ===== | ===== Utilisation ===== | ||
- | **Choix du mot de passe root :** | + | **Ctrl-Alt-F2** pour basculer en console. |
- | **Ctrl-Alt-F2** pour basculer en console. root n'a pas encore de mot de passe mais il est déjà actif. | + | |
- | Au login, taper **root** et appuyer sur Entrée. | + | <note tip>root n'a pas encore de mot de passe mais il est déjà actif.</note> |
+ | |||
+ | Au prompt (à l'invite de commande), taper **root** et appuyer sur Entrée. | ||
+ | |||
Un mot de passe pour l'utilisatrice ou l'utilisateur : | Un mot de passe pour l'utilisatrice ou l'utilisateur : | ||
- | # passwd hubert | + | <code root># passwd hubert |
New password: | New password: | ||
Retype new password: | Retype new password: | ||
- | passwd: password updated successfully | + | passwd: password updated successfully</code> |
+ | |||
+ | Le mot de passe root peut être créé plus tard... | ||
+ | |||
+ | <code root># passwd root</code> | ||
**Consoles TTY** | **Consoles TTY** | ||
- | Lors de la première session d’accès utilisateur, j’ai constaté que je n’avais pas l’opportunité d’aller en pleine console avec les touches Ctrl-Alt-F1, Ctrl-Alt-F2, etc ... C’était à cause du bios, il a été nécessaire d’activer les consoles TTY dans l'onglet "Principal" 'Comportement des touches de fonction' [Touches de fonction] Maintenant, Ctrl-Alt-F1 me connecte en pleine console, Ctrl-Alt-F2 aussi, et Ctrl-Alt-F3, Ctrl-Alt-F4 ... etc. Alt-F7 fonctionne également. | + | |
+ | Lors de la première session d’accès utilisateur, j’ai constaté que je ne pouvais pas aller en pleine console. C’était à cause du bios, il a été nécessaire d’activer les consoles TTY dans l'onglet "Principal" 'Comportement des touches de fonction' [Touches de fonction] Maintenant, Ctrl-Alt-F1 me connecte en pleine console, Ctrl-Alt-F2 aussi, et Ctrl-Alt-F3, Ctrl-Alt-F4 ... etc. **Alt-F7** fonctionne également. | ||
**Clavier AZERTY** | **Clavier AZERTY** | ||
- | En console, le compte root dispose du clavier azerty. Quant à ma session GNOME, elle était toujours en QWERTY, j'ai dû configurer (graphiquement) "Tous les paramètres" / "Région et langue", où j'ai ajouté Langue "Français" et dans "Sources d'entrée": "Français (alt.)". | + | |
+ | En console, le compte root dispose du clavier azerty. Quant-à ma session GNOME, elle était encore en QWERTY, j'ai dû configurer (graphiquement) "Tous les paramètres" / "Région et langue", où j'ai ajouté Langue "Français" et dans "Sources d'entrée": "Français (alt.)". | ||
Il ne me restait plus qu'à choisir "fr" dans la barre Gnome-Shell du bureau et le clavier est devenu AZERTY. | Il ne me restait plus qu'à choisir "fr" dans la barre Gnome-Shell du bureau et le clavier est devenu AZERTY. | ||
- | **Mises à jour** | ||
- | <code root>root@gnu ~# guix pull | + | ====Mises-à-jour==== |
- | root@gnu ~# guix system reconfigure /etc/config.scm | + | |
- | root@gnu ~# guix package -u</code> | + | |
- | <code user>hubert@gnu ~$ guix pull | + | |
- | hubert@gnu ~$ guix package -u</code> | + | |
- | <code root>root@gnu ~# reboot</code> | + | |
- | Après le redémarrage, j'obtiens le noyau Linux-Libre 4.20.0 | + | |
- | **Maintenance** | + | (A faire 3 ou 4 fois par mois) |
- | I have launched the 2 following commands: | + | Equivalent à **//apt update ://** |
- | <code user>$ export PATH="$HOME/.config/guix/current/bin:$PATH" | + | <code root># guix pull</code> |
- | $ export INFOPATH="$HOME/.config/guix/current/share/info:$INFOPATH"</code> | + | |
+ | |||
+ | Equivalent à **//apt upgrade ://** | ||
+ | |||
+ | <code root># guix package -u</code> | ||
+ | |||
+ | |||
+ | Les mêmes commandes à taper depuis le compte user : | ||
+ | |||
+ | <code user>$ guix pull</code> | ||
+ | <code user>$ guix package -u</code> | ||
+ | |||
+ | |||
+ | Et enfin : | ||
+ | <code root># guix system reconfigure /etc/config.scm</code> | ||
+ | <code root># reboot</code> | ||
+ | |||
+ | <note tip>**Remarque :** Lors d'une mise-à-jour, la commande **guix package -u** effectue l'opération intégralement. Par exemple, chez moi le paquetage //webkitgtk// met très longtemps à se construire sous forme de dérivation. Idem pour //ungoogled-chromium//. Pour gagner du temps, j'ai employé la commande suivante : | ||
+ | |||
+ | <code user>$ guix package --upgrade . --do-not-upgrade webkitgtk ungoogled-chromium</code> | ||
+ | |||
+ | La mise-à-jour s'est effectuée beaucoup plus rapidement et, un redémarrage plus tard, Epiphany et Chromium se lancent et fonctionnent parfaitement bien. <note important>Bien entendu, il arrivera un moment où la mise-à-jour intégrale redeviendra nécessaire. Il faudra à nouveau faire preuve de patience...</note> À moins que... l'écriture d'un fichier 'manifest' me permette de confiner mon profil logiciels de manière satisfaisante. En effet les mises-à-jour depuis un fichier manifest sont beaucoup plus rapides. Reste à mettre en place cette pratique... **Infos :** [[https://www.gnu.org/software/guix/manual/fr/html_node/Invoquer-guix-package.html#profile_002dmanifest]]</note> | ||
+ | |||
+ | |||
+ | ====Installation de logiciels==== | ||
+ | |||
+ | Avec GuixSD, les installations de logiciels peuvent se faire depuis le compte user. | ||
+ | |||
+ | <code user>$ guix package -i markdown</code> | ||
+ | **markdown** convertit un ficher texte en fichier html en une seule ligne de commande. | ||
+ | |||
+ | <code user>$ guix package -i ungoogled-chromium</code> | ||
+ | |||
+ | **ungoogled-chromium** me semble plus rapide et plus abouti que Icecat. | ||
+ | |||
+ | <code user>$ guix package -i mpv</code> | ||
+ | |||
+ | **mpv** est un fork de mplayer. Légereté et fluidité à l'utilisation. | ||
+ | |||
+ | |||
+ | Pour ce qui est de **//vim//**, j'ai préféré l'installer depuis le compte root. | ||
+ | |||
+ | <code root># guix package -i vim</code> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | Suite à ces installations, le système conseille de lancer : | ||
+ | |||
+ | <code user>$ export PATH="$HOME/.config/guix/current/bin:$PATH"</code> | ||
+ | |||
+ | <code user>$ export INFOPATH="$HOME/.config/guix/current/share/info:$INFOPATH"</code> | ||
Source : | Source : | ||
**[[https://www.gnu.org/software/guix/manual/en/html_node/Invoking-guix-pull.html#Invoking-guix-pull]]** | **[[https://www.gnu.org/software/guix/manual/en/html_node/Invoking-guix-pull.html#Invoking-guix-pull]]** | ||
- | nstallation of softwares | ||
- | <code root>root@gnu ~# guix package -i vim</code> | + | ====Utilisation de manifest==== |
- | <code user>hubert@gnu ~$ guix package -i markdown</code> | + | |
- | (markdown convertit un ficher texte en un fichier html en une seule ligne de commande). | + | <note tip>"Pour gérer le profil de l'utilisat(ric(e)ur, de manière **déclarative**, comme des packages" (iyzsong) :-D</note> |
+ | |||
+ | Il s'agit de confiner l'environnement logiciel dans le profil personnel. | ||
+ | Les mises-à-jour se feront beaucoup plus rapidement, car elles seront relayées depuis un fichier **manifest.scm** qui sera créé dans mon ordinateur, plus exactement dans **~/.config/guix/** | ||
+ | |||
+ | En voici les différentes étapes : | ||
+ | |||
+ | **1 -** Récupérer le script Guile suivant et l'enregistrer à la racine du dossier personnel sous le nom de **'manifest-to-manifest.scm'**. | ||
+ | |||
+ | <file scheme manifest-to-manifest.scm> | ||
+ | ;; Run with: | ||
+ | ;; guile -s FILE ~/.guix-profile | ||
+ | |||
+ | (use-modules (guix profiles) | ||
+ | (ice-9 match) | ||
+ | (ice-9 pretty-print)) | ||
+ | |||
+ | (define (guix-manifest where) | ||
+ | (sort (map (lambda (entry) | ||
+ | (let ((out (manifest-entry-output entry))) | ||
+ | (if (string= out "out") | ||
+ | (manifest-entry-name entry) | ||
+ | (format #f "~a:~a" | ||
+ | (manifest-entry-name entry) | ||
+ | (manifest-entry-output entry))))) | ||
+ | (manifest-entries (profile-manifest where))) | ||
+ | string<?)) | ||
+ | |||
+ | ;; Thanks to Ivan Vilata-i-Balaguer for this: | ||
+ | (define (guix-commit) | ||
+ | (let ((guix-manifest (profile-manifest (string-append (getenv "HOME") "/.config/guix/current")))) | ||
+ | (match (assq 'source (manifest-entry-properties (car (manifest-entries guix-manifest)))) | ||
+ | (('source ('repository ('version 0) _ _ | ||
+ | ('commit commit) _ ...)) | ||
+ | commit) | ||
+ | (_ #f)))) | ||
+ | |||
+ | (match (command-line) | ||
+ | ((_ where) | ||
+ | (format #t ";; commit: ~a\n" (guix-commit)) | ||
+ | (pretty-print | ||
+ | `(specifications->manifest | ||
+ | ',(guix-manifest where)))) | ||
+ | (_ (error "Please provide the path to a Guix profile."))) | ||
+ | </file> | ||
+ | |||
+ | **2 -** Appeler le script : | ||
+ | |||
+ | <code user>$ guile -s manifest-to-manifest.scm ~/.guix-profile</code> | ||
+ | <file bash Sortie de la commande> | ||
+ | ;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0 | ||
+ | ;;; or pass the --no-auto-compile argument to disable. | ||
+ | ;;; compiling /home/hubert/manifest-to-manifest.scm | ||
+ | ;;; compiled /home/hubert/.cache/guile/ccache/2.2-LE-8-3.A/home/hubert/manifest-to-manifest.scm.go | ||
+ | ;; commit: 6c.....................................a | ||
+ | (specifications->manifest | ||
+ | '("brasero" | ||
+ | "ffmpeg" | ||
+ | "gimp" | ||
+ | "gnumeric" | ||
+ | "inkscape" | ||
+ | "lynx" | ||
+ | "markdown" | ||
+ | "mpv" | ||
+ | "obs" | ||
+ | "qemu" | ||
+ | "quassel" | ||
+ | "racket" | ||
+ | "sbcl-next" | ||
+ | "ungoogled-chromium" | ||
+ | "wget" | ||
+ | "youtube-dl" | ||
+ | "youtube-viewer")) | ||
+ | </file> | ||
+ | |||
+ | **3 -** Création de ce nouveau fichier scheme (personnellement avec gedit) : | ||
+ | |||
+ | <code user>$ gedit</code> | ||
+ | |||
+ | <file scheme ~/.config/guix/manifest.scm> | ||
+ | (specifications->manifest | ||
+ | '("brasero" | ||
+ | "ffmpeg" | ||
+ | "gimp" | ||
+ | "gnumeric" | ||
+ | "inkscape" | ||
+ | "lynx" | ||
+ | "markdown" | ||
+ | "mpv" | ||
+ | "obs" | ||
+ | "qemu" | ||
+ | "quassel" | ||
+ | "racket" | ||
+ | "sbcl-next" | ||
+ | "ungoogled-chromium" | ||
+ | "wget" | ||
+ | "youtube-dl" | ||
+ | "youtube-viewer")) | ||
+ | </file> | ||
+ | |||
+ | Je le nomme **manifest.scm** et l'enregistre dans **~/.config/guix/** | ||
+ | |||
+ | **4 -** Arrive l'étape d'installation, de mise-à-jour, de compilation et de construction : | ||
+ | |||
+ | <code user>$ guix package -m ~/.config/guix/manifest.scm</code> | ||
+ | |||
+ | Ensuite j'ai appliqué les habituelles commandes de [[utilisateurs:gonzoleri:tutos:guixsd-0.16-en-dual-boot-avec-debian-testing-sid#mises-a-jour|mises-à-jour]], reconfiguré //'/etc/config.scm'// et redémarré le système. | ||
+ | |||
+ | Maintenant les mises-à-jour sont nettement plus rapides, le fichier ayant bien été pris en compte. | ||
+ | |||
+ | Cette nouvelle situation est d'autant plus apréciable que j'habite dans une zone non dégroupée. | ||
+ | |||
+ | |||
+ | **Désinstallation de logiciels** | ||
+ | |||
+ | Exemples : | ||
+ | |||
+ | <code root># guix package -r vim</code> | ||
+ | |||
+ | <code user>$ guix package -r vlc</code> | ||
+ | |||
+ | **SSH** | ||
+ | |||
+ | J'ai mis mon accès ssh pour ovh dans un signet **Fichiers** (Nautilus) et ça fonctionne. | ||
+ | |||
+ | ====Multimédia==== | ||
+ | |||
+ | Téléchargement d'une vidéo : | ||
+ | |||
+ | <code user>$ youtube-dl https://www.youtube.com/watch?v=j7sTHoeH0eA</code> | ||
+ | |||
+ | Lecture d'une vidéo en streaming : | ||
+ | |||
+ | <code user>$ youtube-viewer https://www.youtube.com/watch?v=OSWKw15rCoI</code> | ||
+ | |||
+ | <code user>$ mpv https://www.youtube.com/watch?v=-mfladpK0AA</code> | ||
+ | |||
+ | Redéfinir le timing de début et de fin d'une vidéo : | ||
+ | |||
+ | <code user>$ ffmpeg -i test.mp4 -c copy -ss 00:01:23 -to 00:04:56 cut.mp4</code> | ||
+ | |||
+ | |||
+ | Redéfinir le timing de début et de fin d'un morceau audio : | ||
+ | |||
+ | <code user>$ ffmpeg -i test.mp3 -c copy -ss 00:01:23 -to 00:04:56 cut.mp3</code> | ||
+ | |||
+ | Conversion d'un fichier .mkv (ou .webm... etc.) en **.mp4** : | ||
+ | |||
+ | <code user>$ ffmpeg -i film-a-convertir.mkv -ab 128k -ac 2 -vcodec libx264 notre-produit-final.mp4</code> | ||
+ | |||
+ | Lecture avec : | ||
+ | |||
+ | <code user>$ mpv notre-produit-final.mp4</code> | ||
+ | |||
+ | **MACHINE ViRTUELLE** | ||
+ | |||
+ | L'exemple ci-dessous crée une machine virtuelle dans laquelle le répertoire de base de l'utilisateur est accessible en lecture seule et où le répertoire /exchange est un mappage en lecture écriture de $HOME/tmp sur l'hôte : | ||
+ | |||
+ | <code user>guix system vm my-config.scm \ | ||
+ | --expose=$HOME --share=$HOME/tmp=/exchange</code> | ||
+ | |||
+ | **IMAGE DISQUE** | ||
+ | |||
+ | Lors de l'utilisation d'une image disque, une image disque brute est produite. Elle peut être copiée telle quelle sur une clé USB, par exemple. En supposant que /dev/sdc soit le périphérique correspondant a une clé USB, vous pouvez y copier l image à l aide de la commande suivante : | ||
+ | |||
+ | <code root># dd if=$(guix system disk-image my-os.scm) of=/dev/sdc</code> | ||
+ | |||
+ | |||
+ | ====Maintenance==== | ||
+ | |||
+ | Les 2 commandes suivantes ont déjà été évoquées plus haut, mais je pense qu'elles ont également leur place ici. | ||
+ | Elles sont à lancer peu après l'installation du système, celui-ci nous en informant en temps voulu : | ||
+ | |||
+ | <code user>$ export PATH="$HOME/.config/guix/current/bin:$PATH"</code> | ||
+ | |||
+ | <code user>$ export INFOPATH="$HOME/.config/guix/current/share/info:$INFOPATH"</code> | ||
+ | |||
+ | Avoir la garantie que 5 Go vont rester disponibles. Cette commande peut être lancée régulièrement : | ||
+ | |||
+ | <code user>guix gc -F 5G</code> | ||
+ | |||
+ | Suppression des générations vieilles de plus d'un mois : | ||
+ | |||
+ | <code user>$ guix package --delete-generations=1m</code> | ||
+ | |||
+ | Une fois que ceci a été fait, une manière radicale de gagner davantage de place consiste à supprimer les fichiers inutiles en lançant le garbage collector (ramasse-miettes) sans arguments. | ||
+ | |||
+ | <code user>$ guix gc --collect-garbage | ||
+ | .................................................................... | ||
+ | deleting `/gnu/store/trash' | ||
+ | deleting unused links... | ||
+ | note: currently hard linking saves 8874.56 MiB | ||
+ | guix gc: 5043,55469 Mo libérés*</code> | ||
- | <code user>hubert@gnu ~$ guix package -i vlc</code> | + | <note important>Des reconstructions et téléchargements ultérieurs pourront parfois être nécessaires (**//guix pull//** suivi de **//guix package -u//** seront toujours capables de s'en occuper en cas de besoin). <note tip>Il existe d'autres manières de faire plus pratiques, mais je ne les maîtrise pas pour l'instant... |
+ | <code user>$ man guix gc</code></note></note> | ||
+ | Ce système me donne toujours autant satisfaction malgré sa jeune existence, les quelques trucs manquants étant amplement comblés par une pratique quotidienne des plus enrichissantes. J'espère avoir le temps de donner ici d'autres exemples d'utilisation et de maintenance. | ||
+ | {{ https://www.hubert-lombard.website/vignettes/GnuLinuxHurd-250x199.png |}} |