Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[TIP] Script de keywordisation de dépendances...
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index French
View previous topic :: View next topic  
Author Message
anigel
Bodhisattva
Bodhisattva


Joined: 14 Apr 2003
Posts: 1888
Location: Un petit bled pas loin de Limoges ;-)

PostPosted: Wed Oct 12, 2005 3:31 pm    Post subject: [TIP] Script de keywordisation de dépendances... Reply with quote

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 :lol:) 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 :D !

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
View user's profile Send private message
ghoti
Advocate
Advocate


Joined: 30 Dec 2002
Posts: 3560
Location: Belgium

PostPosted: Wed Oct 12, 2005 3:45 pm    Post subject: Reply with quote

A la fois simple et génial ! :D
Back to top
View user's profile Send private message
kernelsensei
Bodhisattva
Bodhisattva


Joined: 22 Feb 2004
Posts: 5619
Location: Woustviller/Moselle/FRANCE (49.07°N;7.02°E)

PostPosted: Wed Oct 12, 2005 4:18 pm    Post subject: Reply with quote

ca fait pas la meme chose ça : http://forums.gentoo.org/viewtopic-p-2396487.html#2396487 ?
_________________
$ ruby -e'puts " .:@BFegiklnorst".unpack("x4ax7aaX6ax5aX15ax4aax6aaX7ax2aX5aX8 \
axaX3ax8aX4ax6aX3aX6ax3ax3aX9ax4ax2aX9axaX6ax3aX2ax4ax3aX4aXaX12ax10aaX7a").join'
Back to top
View user's profile Send private message
anigel
Bodhisattva
Bodhisattva


Joined: 14 Apr 2003
Posts: 1888
Location: Un petit bled pas loin de Limoges ;-)

PostPosted: Wed Oct 12, 2005 4:23 pm    Post subject: Reply with quote

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
View user's profile Send private message
shmal
Tux's lil' helper
Tux's lil' helper


Joined: 07 Aug 2004
Posts: 143
Location: France, 91

PostPosted: Wed Oct 12, 2005 6:31 pm    Post subject: Reply with quote

J'ai une question toute bête mais...
comment on execute un script ? :oops:
Back to top
View user's profile Send private message
Enlight
Advocate
Advocate


Joined: 28 Oct 2004
Posts: 3514
Location: Alsace (France)

PostPosted: Wed Oct 12, 2005 6:42 pm    Post subject: Reply with quote

shmal wrote:
J'ai une question toute bête mais...
comment on execute un script ? :oops:


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

_________________
le "lol" est aux boulets ce que le ";" est au programmeurs
Back to top
View user's profile Send private message
kopp
Advocate
Advocate


Joined: 09 Apr 2004
Posts: 2869
Location: Grenoble, France

PostPosted: Wed Oct 12, 2005 6:43 pm    Post subject: Reply with quote

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
View user's profile Send private message
shmal
Tux's lil' helper
Tux's lil' helper


Joined: 07 Aug 2004
Posts: 143
Location: France, 91

PostPosted: Wed Oct 12, 2005 6:47 pm    Post subject: Reply with quote

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
View user's profile Send private message
anigel
Bodhisattva
Bodhisattva


Joined: 14 Apr 2003
Posts: 1888
Location: Un petit bled pas loin de Limoges ;-)

PostPosted: Wed Oct 12, 2005 6:59 pm    Post subject: Reply with quote

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
View user's profile Send private message
shmal
Tux's lil' helper
Tux's lil' helper


Joined: 07 Aug 2004
Posts: 143
Location: France, 91

PostPosted: Wed Oct 12, 2005 7:11 pm    Post subject: Reply with quote

ah ok ! c'etait écrit dans le script... :oops:

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... :roll:
MERCI !


Last edited by shmal on Wed Oct 12, 2005 7:25 pm; edited 2 times in total
Back to top
View user's profile Send private message
Enlight
Advocate
Advocate


Joined: 28 Oct 2004
Posts: 3514
Location: Alsace (France)

PostPosted: Wed Oct 12, 2005 7:12 pm    Post subject: Reply with quote

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?
_________________
le "lol" est aux boulets ce que le ";" est au programmeurs
Back to top
View user's profile Send private message
Ey
l33t
l33t


Joined: 07 Apr 2005
Posts: 863
Location: Paris

PostPosted: Wed Oct 12, 2005 7:57 pm    Post subject: Reply with quote

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
View user's profile Send private message
Enlight
Advocate
Advocate


Joined: 28 Oct 2004
Posts: 3514
Location: Alsace (France)

PostPosted: Wed Oct 12, 2005 8:04 pm    Post subject: Reply with quote

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 :roll:

au fait Ey et anigel, y'a moyen d'avoir vos avis sur ça? http://forums.gentoo.org/viewtopic-t-383730-postdays-0-postorder-asc-start-25.html
_________________
le "lol" est aux boulets ce que le ";" est au programmeurs
Back to top
View user's profile Send private message
spider312
Veteran
Veteran


Joined: 02 Oct 2004
Posts: 1274
Location: France > Savoie > Chambery

PostPosted: Wed Oct 12, 2005 8:45 pm    Post subject: Reply with quote

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
View user's profile Send private message
Ey
l33t
l33t


Joined: 07 Apr 2005
Posts: 863
Location: Paris

PostPosted: Wed Oct 12, 2005 9:04 pm    Post subject: Reply with quote

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
View user's profile Send private message
anigel
Bodhisattva
Bodhisattva


Joined: 14 Apr 2003
Posts: 1888
Location: Un petit bled pas loin de Limoges ;-)

PostPosted: Wed Oct 12, 2005 9:16 pm    Post subject: Reply with quote

Enlight wrote:
au fait Ey et anigel, y'a moyen d'avoir vos avis sur ça? http://forums.gentoo.org/viewtopic-t-383730-postdays-0-postorder-asc-start-25.html


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
View user's profile Send private message
ghoti
Advocate
Advocate


Joined: 30 Dec 2002
Posts: 3560
Location: Belgium

PostPosted: Wed Oct 12, 2005 9:18 pm    Post subject: Reply with quote

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
View user's profile Send private message
anigel
Bodhisattva
Bodhisattva


Joined: 14 Apr 2003
Posts: 1888
Location: Un petit bled pas loin de Limoges ;-)

PostPosted: Wed Oct 12, 2005 9:23 pm    Post subject: Reply with quote

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 :lol: !
_________________
Il y a 10 sortes d'individus en ce bas-monde : ceux qui causent binaire, et les autres.
Back to top
View user's profile Send private message
ghoti
Advocate
Advocate


Joined: 30 Dec 2002
Posts: 3560
Location: Belgium

PostPosted: Wed Oct 12, 2005 9:27 pm    Post subject: Reply with quote

Enlight wrote:
shmal wrote:
J'ai une question toute bête mais...
comment on execute un script ? :oops:


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
View user's profile Send private message
Enlight
Advocate
Advocate


Joined: 28 Oct 2004
Posts: 3514
Location: Alsace (France)

PostPosted: Wed Oct 12, 2005 10:21 pm    Post subject: Reply with quote

ghoti wrote:
Enlight wrote:
shmal wrote:
J'ai une question toute bête mais...
comment on execute un script ? :oops:


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 :oops:

@ anigel, oki merci!
_________________
le "lol" est aux boulets ce que le ";" est au programmeurs
Back to top
View user's profile Send private message
ghoti
Advocate
Advocate


Joined: 30 Dec 2002
Posts: 3560
Location: Belgium

PostPosted: Thu Oct 13, 2005 12:09 am    Post subject: Reply with quote

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 :oops:

C'est bien ce que je disais : t'es un vrai geek ! ;) :lol:
Back to top
View user's profile Send private message
Enlight
Advocate
Advocate


Joined: 28 Oct 2004
Posts: 3514
Location: Alsace (France)

PostPosted: Thu Oct 13, 2005 10:51 am    Post subject: Reply with quote

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 :oops:

C'est bien ce que je disais : t'es un vrai geek ! ;) :lol:


Même pas vrai :? , j'suis comptable et étudiant en droit!!!
_________________
le "lol" est aux boulets ce que le ";" est au programmeurs
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index French All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum