Page 1 sur 1

[sh ou bash] Comment enchainer des commandes ?

Publié : lun. 03 juin 2013, 04:26
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.

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

Publié : lun. 03 juin 2013, 08:18
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.

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

Publié : lun. 03 juin 2013, 10:55
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.

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

Publié : mar. 04 juin 2013, 05:29
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.

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

Publié : mar. 04 juin 2013, 05:48
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.

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

Publié : mar. 04 juin 2013, 08:30
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.

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

Publié : mar. 04 juin 2013, 10:11
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 - )

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

Publié : mar. 04 juin 2013, 21:44
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

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

Publié : sam. 08 juin 2013, 07:39
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.

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

Publié : sam. 08 juin 2013, 11:41
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...