[sh ou bash] Comment enchainer des commandes ?
[sh ou bash] Comment enchainer des commandes ?
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.
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 ?
Code : Tout sélectionner
arch-chroot /mnt commande
- 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 ?
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 "
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.
Re: [sh ou bash] Comment enchainer des commandes ?
Salut tuxce
Merci de cette info.tuxce a écrit :te permet de lancer une commande dans le système installé et te rend la main à la fin.Code : Tout sélectionner
arch-chroot /mnt commande
Re: [sh ou bash] Comment enchainer des commandes ?
Salut karhu,
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.
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.
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".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 ?
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.
Désolé mais je ne connais pas expect.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.
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 ?
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 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".
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.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).
- 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 ?
C'est l'effet débarquement parce que ce n'est pas tel que tu le décris.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.
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.
(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 --bon, moi, je préfère les légos et j'aime pas les infos redondantes, c'est pénible à maintenir, mais bon - )
«The following statement is not true. The previous statement is true.»
- 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 ?
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
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.
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.
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.
pacman -S <paquets>
ainsi que la recopie de certain fichiers de configuration. Si tu as énormément de machine à installer, peut-être , 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.
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.
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.
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
Re: [sh ou bash] Comment enchainer des commandes ?
Salut karhu,
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.
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.
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.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 commandepacman -S <paquets>
ainsi que la recopie de certain fichiers de configuration. Si tu as énormément de machine à installer, peut-être , mais pour quelques unes je ne vois pas le gain de temps, surtout avec une distribution comme Archlinux.
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"
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.
- benjarobin
- Maître du Kyudo
- Messages : 17237
- Inscription : sam. 30 mai 2009, 15:48
- Localisation : Lyon
Re: [sh ou bash] Comment enchainer des commandes ?
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
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum