View previous topic :: View next topic |
Author |
Message |
anigel Bodhisattva
Joined: 14 Apr 2003 Posts: 1894 Location: Un petit bled pas loin de Limoges ;-)
|
Posted: Wed Oct 12, 2005 3:31 pm Post subject: [TIP] Script de keywordisation de dépendances... |
|
|
Bosozoku m'a fait me sentir coupable, alors je m'y suis collé...
Voici donc une petite astuce permettant de ~archer automatiquement toutes les dépendances d'un paquet masqué. Exemple pour gnome, puisque c'est pour lui précisémment que j'ai "programmé" ça...
Tout d'abord, le script : copiez-coller cet immonde code (oui, c'est sale, mais je m'en fous ) dans un fichier x86deps.sh, par exemple, puis rendez-le exécutable (avec un chmod u+x x86deps.sh).
Code: | #!/bin/bash
#script de ~archage de dependances de paquets, par anigel (forum gentoo fr)
cp /etc/portage/package.keywords /etc/portage/package.keywords.backup
[ "$1" = "" ] && echo "syntaxe : x86deps.sh category/package" && exit 1
while [ $? != 0 ] ; do
PKGNAME=`emerge $1 -pv | grep "masked by" | awk -F " " '{ print $2 }' | sed s/-[0-9].*//`
echo "$PKGNAME ~x86" | tee -a /etc/portage/package.keywords
emerge $1 -pv &>/dev/null
done
emerge $1 -av |
Ensuite, vous devez indiquer dans votre /etc/portage/package.keywords quel paquet vous souhaitez ~archer. Dans notre exemple, cela donne, pour gnome :
Code: | echo "gnome-base/gnome ~x86" >> /etc/portage/package.keywords |
Ensuite, il suffit de lancer le script, qui s'occupe du reste. Ca peut être assez long, en fonction du nombre de paquets à démasquer. A la fin il vous propose de lancer la compilation. Prenez soin quand même de bien vérifier les flags de compilation !
Comme d'hab : tous commentaires / ajouts / corrections bienvenues.
NB : Vous remarquerez que le script prend soin de faire un backup de votre fichier /etc/portage/package.keywords. Toutefois, attention : si vous lancez ce script plusieurs fois de suite, à chaque fois votre fichier est sauvegardé... par-dessus l'ancienne sauvegarde. Mais bon, en principe ça ne doit pas poser de problèmes : je ne fais qu'ajouter des données, jamais je n'en retire. _________________ Il y a 10 sortes d'individus en ce bas-monde : ceux qui causent binaire, et les autres. |
|
Back to top |
|
|
ghoti Advocate
Joined: 30 Dec 2002 Posts: 3634 Location: Belgium
|
Posted: Wed Oct 12, 2005 3:45 pm Post subject: |
|
|
A la fois simple et génial ! |
|
Back to top |
|
|
kernelsensei Bodhisattva
Joined: 22 Feb 2004 Posts: 5619 Location: Woustviller/Moselle/FRANCE (49.07°N;7.02°E)
|
Posted: Wed Oct 12, 2005 4:18 pm Post subject: |
|
|
ca fait pas la meme chose ça : https://forums.gentoo.org/viewtopic-p-2396487.html#2396487 ? _________________ $ ruby -e'puts " .:@BFegiklnorst".unpack("x4ax7aaX6ax5aX15ax4aax6aaX7ax2aX5aX8 \
axaX3ax8aX4ax6aX3aX6ax3ax3aX9ax4ax2aX9axaX6ax3aX2ax4ax3aX4aXaX12ax10aaX7a").join' |
|
Back to top |
|
|
anigel Bodhisattva
Joined: 14 Apr 2003 Posts: 1894 Location: Un petit bled pas loin de Limoges ;-)
|
Posted: Wed Oct 12, 2005 4:23 pm Post subject: |
|
|
On dirait, oui, je ne l'avais pas vu passer celui-là ! _________________ Il y a 10 sortes d'individus en ce bas-monde : ceux qui causent binaire, et les autres. |
|
Back to top |
|
|
shmal Tux's lil' helper
Joined: 07 Aug 2004 Posts: 143 Location: France, 91
|
Posted: Wed Oct 12, 2005 6:31 pm Post subject: |
|
|
J'ai une question toute bête mais...
comment on execute un script ? |
|
Back to top |
|
|
Enlight Advocate
Joined: 28 Oct 2004 Posts: 3519 Location: Alsace (France)
|
Posted: Wed Oct 12, 2005 6:42 pm Post subject: |
|
|
shmal wrote: | J'ai une question toute bête mais...
comment on execute un script ? |
Code: | # on présume que tu est dans le répertoire où se trouve le script
chmod 777 nom_du_script # à adapter si tu veux pas que tout le monde puisse lire écrire et executer
./nom_du_script |
|
|
Back to top |
|
|
kopp Advocate
Joined: 09 Apr 2004 Posts: 2885 Location: Grenoble, France
|
Posted: Wed Oct 12, 2005 6:43 pm Post subject: |
|
|
Code: | chmod +x nomduscript
./nomduscript |
là en l'occurence il faudra que tu sois en root pour celui ci
le chmod le rend exécutable, et ensuite tu l'éxécute , et ./ spécifies que c'est pour le fichier qui se trouve dans le repertoire courrant, car si tu tapes juste le nom du scripte, il va chercher ce script dans les repertoires listé par la variable path, et si il ne s'y trouve pas (c'est souvent le cas), ben il te dira : command not found ou un truc du genre
Sinon merci anigel, meme si c'était déjà fait, là ça le met dans un seul post
edit : grilled.... |
|
Back to top |
|
|
shmal Tux's lil' helper
Joined: 07 Aug 2004 Posts: 143 Location: France, 91
|
Posted: Wed Oct 12, 2005 6:47 pm Post subject: |
|
|
Merci c'est ce que je pensais (tout de même...) mais : Code: | localhost ~ # ls -l x86deps.sh
-rwxrwxrwx 1 root root 461 oct 12 21:42 x86deps.sh
localhost ~ # ./x86deps.sh
syntaxe : x86deps.sh category/package |
Est-ce normal ? |
|
Back to top |
|
|
anigel Bodhisattva
Joined: 14 Apr 2003 Posts: 1894 Location: Un petit bled pas loin de Limoges ;-)
|
Posted: Wed Oct 12, 2005 6:59 pm Post subject: |
|
|
C'est tout à fait normal : il faut que tu le lances avec en argument le nom du package "à la gentoo". exemple :
Code: | ./x86deps.sh gnome-base/gnome |
Et hop, ça marche _________________ Il y a 10 sortes d'individus en ce bas-monde : ceux qui causent binaire, et les autres. |
|
Back to top |
|
|
shmal Tux's lil' helper
Joined: 07 Aug 2004 Posts: 143 Location: France, 91
|
Posted: Wed Oct 12, 2005 7:11 pm Post subject: |
|
|
ah ok ! c'etait écrit dans le script...
maintenant : Code: | localhost ~ # ./x86deps.sh gnome-base/gnome
~x86
--- Invalid atom in /etc/portage/package.keywords: ~x86
These are the packages that I would merge, in order:
Calculating dependencies ...done!
[ebuild R ] gnome-base/gnome-2.10.2 -accessibility -cdr -dvdr +hal 0 kB
Total size of downloads: 0 kB
Do you want me to merge these packages? [Yes/No] n
Quitting.
localhost ~ # | Le script m'ajoute un ~x86 tout seul dans le /etc/portage/package.keywords...
EDIT : il faut emerge sync avant...
MERCI !
Last edited by shmal on Wed Oct 12, 2005 7:25 pm; edited 2 times in total |
|
Back to top |
|
|
Enlight Advocate
Joined: 28 Oct 2004 Posts: 3519 Location: Alsace (France)
|
Posted: Wed Oct 12, 2005 7:12 pm Post subject: |
|
|
anigel wrote: | C'est tout à fait normal : il faut que tu le lances avec en argument le nom du package "à la gentoo". exemple :
Code: | ./x86deps.sh gnome-base/gnome |
Et hop, ça marche |
Question bête, mais pourquoi $? alors qu'aucune tache n'a été lancée en background? |
|
Back to top |
|
|
Ey l33t
Joined: 07 Apr 2005 Posts: 863 Location: Paris
|
Posted: Wed Oct 12, 2005 7:57 pm Post subject: |
|
|
Enlight wrote: | Question bête, mais pourquoi $? alors qu'aucune tache n'a été lancée en background? |
$? ça n'a rien à voir avec des apps en background, c'est le return de la dernière application (0 = ok, !=0 ça c'est mal passé)
Après c'est vrai que le premier test correspond au cp...
EDIT : en fait non il correspond au test d'au dessus... (qui est en fait un appel à bash...) |
|
Back to top |
|
|
Enlight Advocate
Joined: 28 Oct 2004 Posts: 3519 Location: Alsace (France)
|
Posted: Wed Oct 12, 2005 8:04 pm Post subject: |
|
|
Ey wrote: | Enlight wrote: | Question bête, mais pourquoi $? alors qu'aucune tache n'a été lancée en background? |
$? ça n'a rien à voir avec des apps en background, c'est le return de la dernière application (0 = ok, !=0 ça c'est mal passé)
Après c'est vrai que le premier test correspond au cp...
EDIT : en fait non il correspond au test d'au dessus... (qui est en fait un appel à bash...) |
ouch! j'ai vraiment une mémoire défaillante j'ai fait un mix entre $? et $! qui donne le pid du dernier process qui a été lancé ou vient de se terminer en background
au fait Ey et anigel, y'a moyen d'avoir vos avis sur ça? https://forums.gentoo.org/viewtopic-t-383730-postdays-0-postorder-asc-start-25.html |
|
Back to top |
|
|
spider312 Veteran
Joined: 02 Oct 2004 Posts: 1274 Location: France > Savoie > Chambery
|
Posted: Wed Oct 12, 2005 8:45 pm Post subject: |
|
|
Ey wrote: | EDIT : en fait non il correspond au test d'au dessus... (qui est en fait un appel à bash...) | Un apel à bash ??? moi pas comprendre
Le 1er test il sert à verifier que le 1er argument n'est pas nul pour afficher un message d'aide (d'ailleurs, je crois que $# retourne le nombre d'arguments, un peu plus propre je pense [ $# -eq 0 ]) puis on entre dans la boucle (puisqu'il n'y a pas eu d'erreurs) et ensuite chaque emerge défini si la boucle doit continuer ou pas (enfin à ce que j'ai compris) |
|
Back to top |
|
|
Ey l33t
Joined: 07 Apr 2005 Posts: 863 Location: Paris
|
Posted: Wed Oct 12, 2005 9:04 pm Post subject: |
|
|
spider312 wrote: | Un apel à bash ??? moi pas comprendre |
Bin en fait dans un script bash il y a pas mal de chose qui sont en fait traduite en pratique par un fork du bash... par contre là je me suis un peu trop précipité donc c'est pas le cas... |
|
Back to top |
|
|
anigel Bodhisattva
Joined: 14 Apr 2003 Posts: 1894 Location: Un petit bled pas loin de Limoges ;-)
|
Posted: Wed Oct 12, 2005 9:16 pm Post subject: |
|
|
J'ai suivi ce post avec attention, même si je n'y ai pas participé. Je me suis abstenu pour une raison simple : je ne connais vraiment "bien" que bash. Donc le conseiller, sur la seule base que c'est le seul que je maitrise à peu près, ça ne fait pas très sérieux. Disons simplement que ça convient à mes besoins.
Mais à l'heure actuelle, je m'intéresse de près aux possibilités d'autres langages. En effet, j'ai eu une proposition de publication (dans un vrai journal papier) pour mon appli de gestion de parc centralisée, actuellement écrite en script bash + quelques progs en C. Mais pour cela, il faut que la doc soit de qualité, et donc le code, un peu plus propre qu'il n'est actuellement. Bref, pour le moment, c'est... python qui semble se profiler ! Mais, encore une fois, ne sachant pas vraiment de quoi il retourne, mon avis ne vaut pas tripète ! _________________ Il y a 10 sortes d'individus en ce bas-monde : ceux qui causent binaire, et les autres. |
|
Back to top |
|
|
ghoti Advocate
Joined: 30 Dec 2002 Posts: 3634 Location: Belgium
|
Posted: Wed Oct 12, 2005 9:18 pm Post subject: |
|
|
Ey wrote: | spider312 wrote: | Un apel à bash ??? moi pas comprendre |
Bin en fait dans un script bash il y a pas mal de chose qui sont en fait traduite en pratique par un fork du bash... par contre là je me suis un peu trop précipité donc c'est pas le cas... |
On peut vérifier s'il y a fork ainsi que son niveau au moyen de la variable $SHLVL : voir ce post |
|
Back to top |
|
|
anigel Bodhisattva
Joined: 14 Apr 2003 Posts: 1894 Location: Un petit bled pas loin de Limoges ;-)
|
Posted: Wed Oct 12, 2005 9:23 pm Post subject: |
|
|
Enlight wrote: | Question bête, mais pourquoi $? alors qu'aucune tache n'a été lancée en background? |
J'avais prévenu : c'est du code "spécial porc" !
Code: | [ "$1" = "" ] && echo "syntaxe : x86deps.sh category/package" && exit 1 |
Si le script a été lancé sans argument : alors le message s'affiche, et on sort du script. Si par contre la syntaxe est bonne, alors le test échoue ([ "$1" = "" ]), et dans ce cas, renvoie un code retour erroné (1). La condition && n'est pas remplie, on passe donc à la suite.
C'est ce même code "d'erreur" qui permet de rentrer dans la boucle while, dont on ne ressort que si toutes les dépendances ont été satisfaites.
En fait, je crois que je vais renommer mon post... [HOWTO] Ce qu'il ne faudrait jamais faire, en programmation ! _________________ Il y a 10 sortes d'individus en ce bas-monde : ceux qui causent binaire, et les autres. |
|
Back to top |
|
|
ghoti Advocate
Joined: 30 Dec 2002 Posts: 3634 Location: Belgium
|
Posted: Wed Oct 12, 2005 9:27 pm Post subject: |
|
|
Enlight wrote: | shmal wrote: | J'ai une question toute bête mais...
comment on execute un script ? |
Code: | # on présume que tu est dans le répertoire où se trouve le script
chmod 777 nom_du_script # à adapter si tu veux pas que tout le monde puisse lire écrire et executer
./nom_du_script |
|
Une autre méthode plus rapide est d'utiliser un "point" initial, puis un espace, puis le nom du script, comme ceci :
Quote: | . chemin/nom_du_script |
Cette méthode tente d'exécuter le contenu d'un fichier texte sans que celui-ci soit déclaré exécutable.
A propos, perso, je préfère utiliser chmod +x nom_du_script plutôt que la notation en octal : c'est plus intuitif mais , bon d'accord, c'est moins geek |
|
Back to top |
|
|
Enlight Advocate
Joined: 28 Oct 2004 Posts: 3519 Location: Alsace (France)
|
Posted: Wed Oct 12, 2005 10:21 pm Post subject: |
|
|
ghoti wrote: | Enlight wrote: | shmal wrote: | J'ai une question toute bête mais...
comment on execute un script ? |
Code: | # on présume que tu est dans le répertoire où se trouve le script
chmod 777 nom_du_script # à adapter si tu veux pas que tout le monde puisse lire écrire et executer
./nom_du_script |
|
Une autre méthode plus rapide est d'utiliser un "point" initial, puis un espace, puis le nom du script, comme ceci :
Quote: | . chemin/nom_du_script |
Cette méthode tente d'exécuter le contenu d'un fichier texte sans que celui-ci soit déclaré exécutable.
A propos, perso, je préfère utiliser chmod +x nom_du_script plutôt que la notation en octal : c'est plus intuitif mais , bon d'accord, c'est moins geek |
Aaaah en le sourçant, bien vu! Sinon pour les droits y'a qu'en octal que j'arrive à retenir la syntaxe
@ anigel, oki merci! |
|
Back to top |
|
|
ghoti Advocate
Joined: 30 Dec 2002 Posts: 3634 Location: Belgium
|
Posted: Thu Oct 13, 2005 12:09 am Post subject: |
|
|
Enlight wrote: | Aaaah en le sourçant, bien vu! |
Le défaut, c'est que cela n'est valable que pour les scripts bash. Pour les autres langages (perl, python, ruby ...), il faut explicitement invoquer l'interpréteur ad-hoc.
Quote: | Sinon pour les droits y'a qu'en octal que j'arrive à retenir la syntaxe |
C'est bien ce que je disais : t'es un vrai geek ! |
|
Back to top |
|
|
Enlight Advocate
Joined: 28 Oct 2004 Posts: 3519 Location: Alsace (France)
|
Posted: Thu Oct 13, 2005 10:51 am Post subject: |
|
|
ghoti wrote: | Enlight wrote: | Aaaah en le sourçant, bien vu! |
Le défaut, c'est que cela n'est valable que pour les scripts bash. Pour les autres langages (perl, python, ruby ...), il faut explicitement invoquer l'interpréteur ad-hoc.
Quote: | Sinon pour les droits y'a qu'en octal que j'arrive à retenir la syntaxe |
C'est bien ce que je disais : t'es un vrai geek ! |
Même pas vrai , j'suis comptable et étudiant en droit!!! |
|
Back to top |
|
|
|