[sh ou bash] Comment enchainer des commandes ?

Questions et astuces concernant l'installation et la configuration d'archlinux
Répondre
Fnux
Hankyu
Messages : 29
Inscription : ven. 31 mai 2013, 02:30
Localisation : Palm Beach (Fl, USA)

[sh ou bash] Comment enchainer des commandes ?

Message par Fnux »

Bonjour tout le monde.

J'essaye désespérément d'installer ArchLinux depuis 3 jours avec le but d'avoir une installation de base, avec grub (car j'ai déjà 2 autres distros installées sur mon HD) et une interface graphique Gnome.

Vu mes échecs successifs, j'essaye aussi de me faire un script pour ne pas avoir à retaper manuellement toute la longue série de commandes.

Mon problème est par exemple que pour une installation de base, je passe du "root" de l'iso au "root" de /mnt via la commande "arch-chroot /mnt" et que j'en sort par "exit".

Et dans ce cas, si le lance un sript "install.sh" depuis le "root" de l'iso, il s'arrête dès que la commande "arch-chroot /mnt" est exécutée, ou aussi lorsque je suis en "root" de /mnt la commande "exit" est exécutée.

J'ai essayé de couper mon script en plusieurs morceaux que je place soit dans "/root" créé par l'iso, soit dans /mnt/root créé au début de l'installation mais ça ne fonctionne pas beaucoup mieux, et surtout cela m'oblige à recopier ces différents morceaux de script aux bons endroits chaque fois que je relance l'iso d'installation (ce qui n'est pas très pratique).

Ma question est donc : comment enchainer automatiquement les commandes d'un script qui doit changer de contexte ?

Merci d'avance de toute suggestion à ce sujet.
Avatar de l’utilisateur
tuxce
Maître du Kyudo
Messages : 6677
Inscription : mer. 12 sept. 2007, 16:03

Re: [sh ou bash] Comment enchainer des commandes ?

Message par tuxce »

Code : Tout sélectionner

arch-chroot /mnt commande
te permet de lancer une commande dans le système installé et te rend la main à la fin.
Avatar de l’utilisateur
karhu
Maître du Kyudo
Messages : 1198
Inscription : lun. 27 sept. 2010, 14:32
Localisation : Ile de France

Re: [sh ou bash] Comment enchainer des commandes ?

Message par karhu »

Je n'ai pas bien compris ton problème ?
Tu n'arrives même pas à installer les trois paquets de base (base, base-devel et grub), et donc à booter sur Archlinux, ou tu n'arrives pas à installer ton environnement ?
Si tu es dans le premier cas, je crains qu'un script en bash ne soit pas suffisant, car tu as des choix à faire lors de l'installation. Oriente toi plutôt vers un langage "conversationnel" du genre expect.
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
Fnux
Hankyu
Messages : 29
Inscription : ven. 31 mai 2013, 02:30
Localisation : Palm Beach (Fl, USA)

Re: [sh ou bash] Comment enchainer des commandes ?

Message par Fnux »

Salut tuxce
tuxce a écrit :

Code : Tout sélectionner

arch-chroot /mnt commande
te permet de lancer une commande dans le système installé et te rend la main à la fin.
Merci de cette info.
Fnux
Hankyu
Messages : 29
Inscription : ven. 31 mai 2013, 02:30
Localisation : Palm Beach (Fl, USA)

Re: [sh ou bash] Comment enchainer des commandes ?

Message par Fnux »

Salut karhu,
karhu a écrit :Je n'ai pas bien compris ton problème ?
Tu n'arrives même pas à installer les trois paquets de base (base, base-devel et grub), et donc à booter sur Archlinux, ou tu n'arrives pas à installer ton environnement ?
Je suis dans le second cas : je n'arrive pas à installer Gnome et ça commence à me fatiguer car le moins que je puisse dire est que les explications des pages wiki sont pour le moins "mal foutues".

Pourquoi faire simple quand on peut faire compliqué !

Une seule page correctement écrite, décrivant clairement les différentes étapes les unes après les autres, sans faire de dizaines de liens vers d'autres pages qui elles même te renvoient vers d'autres pages serait quand même un strict minimum.

On m'avait bien prévenu que cette installation était une galère, et ça se confirme.
karhu a écrit :Si tu es dans le premier cas, je crains qu'un script en bash ne soit pas suffisant, car tu as des choix à faire lors de l'installation. Oriente toi plutôt vers un langage "conversationnel" du genre expect.
Désolé mais je ne connais pas expect.

Par contre, que ce soit avec CentOS, Debian, Fedora, Mint, Red Hat ou Ubuntu et ses multiples dérivés, sh (et aussi bash) fait parfaitement l'affaire pour écrire des scripts conversationnels et interactifs.

Je suis d'ailleurs en train d'en terminer un de près de 2.500 lignes, multi-lingues et qui s'adapte automatiquement aux différents OS mentionnés ci-dessus, et même à leur différentes versions (par exemple de Ubuntu 10.04 LTS à la dernière 13.04 sans en oublier une seule).

Et c'est ma raison de vouloir découvrir ArchLinux pour adapter ce script à cet OS.

Avec un peu d'obstination, je devrais quand même y arriver, mais... si ça me prend trop de temps pour réussir une installation aussi basique que celle-la, alors je crois que je passerai mon chemin.

Merci quand même de ton intérêt à mon problème.
Avatar de l’utilisateur
tuxce
Maître du Kyudo
Messages : 6677
Inscription : mer. 12 sept. 2007, 16:03

Re: [sh ou bash] Comment enchainer des commandes ?

Message par tuxce »

Fnux a écrit : Je suis dans le second cas : je n'arrive pas à installer Gnome et ça commence à me fatiguer car le moins que je puisse dire est que les explications des pages wiki sont pour le moins "mal foutues".
C'est vrai qu'écrire "exec gnome-session" dans le .xinitrc et lancer startx, plus obscur que ça tu meurs...
Fnux a écrit : Je suis d'ailleurs en train d'en terminer un de près de 2.500 lignes, multi-lingues et qui s'adapte automatiquement aux différents OS mentionnés ci-dessus, et même à leur différentes versions (par exemple de Ubuntu 10.04 LTS à la dernière 13.04 sans en oublier une seule).
Par curiosité, y a t il un but à ça ? Parce que les distributions que tu cites fournissent des programmes d'installation complets... Et même des moyens pour automatiser tel que kickstart par exemple.
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10707
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [sh ou bash] Comment enchainer des commandes ?

Message par FoolEcho »

Fnux a écrit :Une seule page correctement écrite, décrivant clairement les différentes étapes les unes après les autres, sans faire de dizaines de liens vers d'autres pages qui elles même te renvoient vers d'autres pages serait quand même un strict minimum.
C'est l'effet débarquement parce que ce n'est pas tel que tu le décris. :lol:
A t'entendre, il te faudrait lire tout le wiki. Hors, si tu suis le guide, en résumé tu as: Installation, réseau (Connexions_reseau/wifi), services (sans se cogner forcément tout systemd hein, juste apprendre à lancer un service), pacman, Xorg, environnement graphique (avec choix).

Pour aimer Arch (et son wiki), je pense qu'il faut aimer les légos. :D

(sinon, tu peux contribuer au wiki, hein... Si tu te sens de faire le pendant du guide du débutant, https://wiki.archlinux.org/index.php/Beginners%27_Guide, personne ne devrait cracher dessus :wink: --bon, moi, je préfère les légos et j'aime pas les infos redondantes, c'est pénible à maintenir, mais bon :P - )
«The following statement is not true. The previous statement is true.» :nage:
Avatar de l’utilisateur
karhu
Maître du Kyudo
Messages : 1198
Inscription : lun. 27 sept. 2010, 14:32
Localisation : Ile de France

Re: [sh ou bash] Comment enchainer des commandes ?

Message par karhu »

Je te proposais un langage conversationnel pour automatiser à fond ton script, car c'est ce que j'avais cru comprendre. Si tu a déjà installé la base du système, (que tu arrive à te connecter sur un TTY) là un script bash peu à la rigueur faire l'affaire. Il t'évitera seulement de taper quelque lignes de commande pacman -S <paquets> ainsi que la recopie de certain fichiers de configuration. Si tu as énormément de machine à installer, peut-être :mrgreen: , mais pour quelques unes je ne vois pas le gain de temps, surtout avec une distribution comme Archlinux.
Je rejoins donc sans hésitation le clan de ceux qui estime que Archlinux doit être installé à la main pour bien comprendre sa philosiphie. La liberté de choisir ce que l'on veut pour son système est à ce prix. :wink:
Pour information, le module expect de TCL/TK permet de rediriger la sortie standard (généralement l'écran) vers ton programme afin qu'il l'analyse et réponde en conséquence. Puis la sortie du programme (la réponse à une question par exemple langage = fr) est envoyée vers l'entrée standard (généralement le clavier). Voilà c'est tout, mais tu peux oublier mon intervention elle était malvenue car j'avais mal interprété ton problème. :oops:
Pour finir un bon truc, pendant ton installation manuelle prend des notes elle te resserviront pour tes prochaines machines et pourront même servir de squelette à ton script voire à un nouveau lien sur le wiki d'installation. :P
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
Fnux
Hankyu
Messages : 29
Inscription : ven. 31 mai 2013, 02:30
Localisation : Palm Beach (Fl, USA)

Re: [sh ou bash] Comment enchainer des commandes ?

Message par Fnux »

Salut karhu,
karhu a écrit :Je te proposais un langage conversationnel pour automatiser à fond ton script, car c'est ce que j'avais cru comprendre. Si tu a déjà installé la base du système, (que tu arrive à te connecter sur un TTY) là un script bash peu à la rigueur faire l'affaire. Il t'évitera seulement de taper quelque lignes de commande pacman -S <paquets> ainsi que la recopie de certain fichiers de configuration. Si tu as énormément de machine à installer, peut-être :mrgreen: , mais pour quelques unes je ne vois pas le gain de temps, surtout avec une distribution comme Archlinux.
Merci de toutes tes précisions et désolé de n'avoir pas répondu plus tôt car je ne suis dispo en ce moment pour mes tentatives d'installation que le week-end ou tard la nuit.

C'est juste une question de principe, pas pour un énorme gain de temps (quoi que une fois fait, ça évite les fautes de frappe ou les oublis). J'aimerai juste savoir si c'est possible ou non, et si c'est possible, comment je dois m'y prendre.

Pour ce qui est de ton judicieux conseil de prendre des notes, c'est déjà ce que je fais en recopiant ligne à ligne dans un fichier .sh les commandes que je passe pour passer les différentes phases de cette installation.

Et c'est justement là que je butte car si les commandes passées avant un arch-chroot sont bien exécutées, celles qui le suivent ne le sont pas car le script s'arrête dès le changement de contexte (par exemple passage du contexte du compte root de l'iso à celui du compte root installé dans /mnt).

D'où ma question : y a t-il un moyen d'enchaîner ces commandes.

Pour info, voici le début de la liste des commandes que je passe pour installer ArchLinux limité (pour l'instant) au mode tty.

Code : Tout sélectionner

#!/bin/sh
setterm -blank 0
export LANG=fr_FR.UTF-8
loadkeys fr-pc
swapon /dev/sda1
mkfs.ext4 /dev/sda5
mount /dev/sda5 /mnt
mkdir /mnt/{boot,home}
pacstrap /mnt base base-devel
arch-chroot /mnt pacman -S grub-bios os-prober libisoburn mtools libx11 libsm net-tools wget
genfstab -U -p /mnt >> /mnt/etc/fstab
arch-chroot /mnt
echo "p1 OK"
Et dans ce cas précis, le script s'arrête à la commande "arch-chroot /mnt" et la suite "echo "p1 OK" ne s'affiche pas.

Donc, pas possible non plus de passer les autres commandes pour continuer l'installation.

Bon, j'ai toujours la possibilité de séparer mon script d'installation en différents morceaux (les commandes à exécuter avant un "arch-chroot" ou juste après un "exit" et celles qui s'exécutent dans le contexte de "arch-chroot /mnt"), mais ça n'est ni très pratique, ni très joli.

Si tu as une idée ?

Merci d'avance.
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17235
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [sh ou bash] Comment enchainer des commandes ?

Message par benjarobin »

arch-chroot permet justement de lancer des commandes dans le chroot... Donc il n'est pas nécessaire de rentrer dedans... Sinon Tuxce avait déjà expliqué ceci dès le premier message...
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Répondre