View previous topic :: View next topic |
Author |
Message |
bouleetbil Guru
Joined: 06 Jul 2004 Posts: 456 Location: Montpellier
|
Posted: Sat Oct 14, 2006 7:56 pm Post subject: [SCRIPT] Démasquer les paquets via emerge |
|
|
Depuis quelques temps j'en avais marre de modifier mes fichiers package.keywords et package.unmask, j'ai donc modifier emerge pour qu'il modifie ces fichiers à ma place et qu'il démasque les ebuilds nécessaires lorsque je veux démasquer un paquet qui a beaucoup de dépendances ou lors des mises à jour. (Je suis en x86 avec des paquets ~x86 et à chaque fois je dois modifier ces fichiers)
Attention l'indentation est importante!!!
Faite une sauvegarde avant de ce fichier
Editer le fichier /usr/bin/emerge :
Le code d'origine
Code: |
for p in alleb:
mreasons = portage.getmaskingstatus(p,
settings=pkgsettings, portdb=portdb)
print "- "+p+" (masked by: "+string.join(mreasons, ", ")+")"
comment = portage.getmaskingreason(p,
settings=pkgsettings, portdb=portdb)
if comment and comment != oldcomment:
print comment
oldcomment = comment
print
print "For more information, see MASKED PACKAGES section in the emerge man page or "
print "refer to the Gentoo Handbook."
else:
print "\n!!! "+red("There are no packages available to satisfy: ")+green(xinfo)
print "!!! Either add a suitable binary package or compile from an ebuild."
else:
|
Mes modifications :
Code: |
last_packet=""
for p in alleb:
mreasons = portage.getmaskingstatus(p,
settings=pkgsettings, portdb=portdb)
print "- "+p+" (masked by: "+string.join(mreasons, ", ")+")"
#hack
last_packet=p
comment = portage.getmaskingreason(p,
settings=pkgsettings, portdb=portdb)
if comment and comment != oldcomment:
print comment
oldcomment = comment
print
print "For more information, see MASKED PACKAGES section in the emerge man page or "
print "refer to the Gentoo Handbook."
print "Demasquer le paquet "+last_packet+" ? "
Reponse=raw_input('(Oui/Non)')
if string.upper(Reponse) == "OUI":
#modification package.keywords
print "Mise a jour package.keywords"
fichero = open("/etc/portage/package.keywords", 'a')
packet = "="+last_packet+" ~x86\n"
fichero.write("#Ajout par hack emerge\n")
fichero.write(packet)
fichero.flush()
fichero.close()
#Modification package.unmask
print "Mise a jour package.unmask"
fichero = open("/etc/portage/package.unmask", 'a')
packet = "="+last_packet+"\n"
fichero.write("#Ajout par hack emerge\n")
fichero.write(packet)
fichero.flush()
fichero.close()
emerge_main()
#relance emerge pour dépendance du fichier démasqué
else:
print "\n!!! "+red("There are no packages available to satisfy: ")+green(xinfo)
print "!!! Either add a suitable binary package or compile from an ebuild."
else:
|
Il suffit de modifier "~x86" à la ligne Code: | packet = "="+last_packet+" ~x86\n" | par votre plateforme _________________ L'homme n'est pas fait pour travailler ça le fatigue.
LiveCD Gentoo : http://www.frogdev.info
Gentoo/Freebsd : http://www.frogdev.info/gentoo_freebsd.php |
|
Back to top |
|
|
man in the hill Veteran
Joined: 15 Dec 2005 Posts: 1552 Location: Madinina
|
Posted: Sun Oct 15, 2006 6:12 pm Post subject: |
|
|
Salut,
Vraiment sympa ton hack mais est-ce que ce fichier n'est pas écraser à chaque emerge de portage ?
Pour une fois j'arrive à capter python , moi c'est clair que c'est la 2ème section (ajout ds unmask) qui m'intéresse en ~amd64 et il faudrait pour les amd64 une section pour le missing keyword ...
Sinon, super idée ! As-tu proposé aux dev ?
Merci,
@ + _________________ Get Up and Go ! |
|
Back to top |
|
|
bouleetbil Guru
Joined: 06 Jul 2004 Posts: 456 Location: Montpellier
|
Posted: Sun Oct 15, 2006 8:08 pm Post subject: |
|
|
bonsoir,
si à chaque emerge de portage il faut refaire la modification. J'ai pas proposé aux dev car il faudrait un peu plus l'améliorer comme recupérer le ACCEPT_KEYWORDS au lieu de le renseigner dans le script. Je vais voire cela apres je leur posterais au pire je ferrais la modif a chaque mise à jour de portage _________________ L'homme n'est pas fait pour travailler ça le fatigue.
LiveCD Gentoo : http://www.frogdev.info
Gentoo/Freebsd : http://www.frogdev.info/gentoo_freebsd.php |
|
Back to top |
|
|
bivittatus l33t
Joined: 31 Jan 2006 Posts: 687 Location: Roissy-en-Brie (France)
|
Posted: Sat Nov 04, 2006 3:10 pm Post subject: |
|
|
Salut!
Avant de tester ce script (superbe!!!), j'aimerais un ou deux petits renseignements, sachant que la réponse doit se trouver dans ton code, mais je n'y connais pas grand chose!!!
- Si tu as plusieurs paquets à démasquer (par exemple pour une install de gnome en ~x86, tu dois avoir une vingtane de paquets à te taper!!! ), à partir du moment où tu lui réponds "oui", il les démasque tous?
- Est-ce que la ligne insérée dans le fichier cible est du type:
Code: | =nom_du_paquet-version ~x86" |
ou bien:
?
Merci _________________ Linus TORVALDS: "Je ne suis pas là pour détruire Microsoft. Ce sera juste un effet secondaire tout à fait involontaire." |
|
Back to top |
|
|
bouleetbil Guru
Joined: 06 Jul 2004 Posts: 456 Location: Montpellier
|
Posted: Sat Nov 04, 2006 11:08 pm Post subject: |
|
|
Bonjour,
Il faut répondre "oui" pour chaque paquet.
Et dans les fichiers cibles c'est inséré de la forme
Code: |
=nom_du_paquet-version ~x86"
|
_________________ L'homme n'est pas fait pour travailler ça le fatigue.
LiveCD Gentoo : http://www.frogdev.info
Gentoo/Freebsd : http://www.frogdev.info/gentoo_freebsd.php |
|
Back to top |
|
|
bivittatus l33t
Joined: 31 Jan 2006 Posts: 687 Location: Roissy-en-Brie (France)
|
Posted: Sat Nov 04, 2006 11:13 pm Post subject: |
|
|
Merci pour ta réponse rapide!!!
Ce n'est peut-être pas faisable, mais comme je n'y connais rien...
Il n'y a pas la possibilité d'écrire sous la forme:
?
C'est une simple question de flemme de ma part...une fois que le nom du paquet est dans le package.keywords, il y est une bonne fois pour toutes!!! Mais...je suppose que l'extraction du nom seul est quelque chose de difficilement réalisable?
M'enfin, en tout cas, le principe est génial, et je pense que je vais l'adopter!!! _________________ Linus TORVALDS: "Je ne suis pas là pour détruire Microsoft. Ce sera juste un effet secondaire tout à fait involontaire." |
|
Back to top |
|
|
titoucha Advocate
Joined: 21 Jul 2005 Posts: 2374 Location: Genève
|
Posted: Sun Nov 05, 2006 4:22 am Post subject: |
|
|
J'aurais une suggestion, se serait bien que ton script n'écrive pas obligatoirement dans le fichier unmask mais seulement quand il y en a besoin ou mieux sur demande explicite, car il va vite devenir très gros inutilement et en plus je trouve dangereux de démasqué automatiquement, passer en testing oui, mais démasqué non. |
|
Back to top |
|
|
bouleetbil Guru
Joined: 06 Jul 2004 Posts: 456 Location: Montpellier
|
Posted: Sun Nov 05, 2006 10:45 am Post subject: |
|
|
@bivittatus : En faite si on ecrit on a vite fait de passer en full testing tant dit qu'indiquer la version permet de démasquer le strict minimum.
Et oui avec un booleen on pourrait garder en mémoire le fait que l'on a répondu "oui" mais on peux démasquer beaucoup de paquets. Mais c'est faisable je vais voir pour l'ajouter.
@titoucha pour le moment je sais pas si le paquet est hardmask donc c'est vrai que j'écris pour rien dans package.unmask je savais que j'aurrais la remarque (je vais voir si je peux savoir si le paquet est hardmak) _________________ L'homme n'est pas fait pour travailler ça le fatigue.
LiveCD Gentoo : http://www.frogdev.info
Gentoo/Freebsd : http://www.frogdev.info/gentoo_freebsd.php |
|
Back to top |
|
|
bivittatus l33t
Joined: 31 Jan 2006 Posts: 687 Location: Roissy-en-Brie (France)
|
Posted: Sun Nov 05, 2006 10:47 am Post subject: |
|
|
bouleetbil wrote: | @bivittatus : En faite si on ecrit on a vite fait de passer en full testing tant dit qu'indiquer la version permet de démasquer le strict minimum.
Et oui avec un booleen on pourrait garder en mémoire le fait que l'on a répondu "oui" mais on peux démasquer beaucoup de paquets. Mais c'est faisable je vais voir pour l'ajouter.
|
Je sais oui;..mais c'est la méthode que j'utilise...
En tout cas, c'est franchement super sympa de ta part... _________________ Linus TORVALDS: "Je ne suis pas là pour détruire Microsoft. Ce sera juste un effet secondaire tout à fait involontaire." |
|
Back to top |
|
|
titoucha Advocate
Joined: 21 Jul 2005 Posts: 2374 Location: Genève
|
Posted: Sun Nov 05, 2006 10:53 am Post subject: |
|
|
Ce qui me dérange le plus avec lhardmasked, c'est que ces derniers temps j'ai eu plusieurs paquets qui ont été downgradés, car la dernière version avait un bogue et les développeurs l'avaient masquée le temps de trouver celui-ci.
Avec ta méthode, vu que le paquet est aussi démasqué il n'aurait pas été mis à jour et le bogue serait resté.
Je pense que le fait de démasquer n'est pas une bonne idée et qu'il faudrait simplement écrire dans le fichier keyword. |
|
Back to top |
|
|
bouleetbil Guru
Joined: 06 Jul 2004 Posts: 456 Location: Montpellier
|
Posted: Sun Nov 05, 2006 11:35 am Post subject: |
|
|
Cela n'aurrait rien changé à ton problème car en faite cela demasque les dépendances peux importe qu'elles soient testing ou hardmask mais si une version stable est disponible la version stable est prise en compte de plus la version est précisée, donc le downgrade fonctionne. Maintenant le problème est d'écrire dans portage.unmask alors que c'est pas utile. _________________ L'homme n'est pas fait pour travailler ça le fatigue.
LiveCD Gentoo : http://www.frogdev.info
Gentoo/Freebsd : http://www.frogdev.info/gentoo_freebsd.php |
|
Back to top |
|
|
titoucha Advocate
Joined: 21 Jul 2005 Posts: 2374 Location: Genève
|
Posted: Sun Nov 05, 2006 11:54 am Post subject: |
|
|
Heu tu es sur, car si ton paquet est en testing non masqué et que toi tu écris dans keyword et unmask, quand le paquet vient en testing et masqué rien ne change pour emerge vu que tu la démasqué précédemment et donc emerge ne va rien faire.
Le fait de mettre la version ne change rien, vu que le paquet ne disparait pas de l'arbre, mais est seulement masqué.
Enfin bon c'est comme ça que je comprends la chose. |
|
Back to top |
|
|
bouleetbil Guru
Joined: 06 Jul 2004 Posts: 456 Location: Montpellier
|
|
Back to top |
|
|
titoucha Advocate
Joined: 21 Jul 2005 Posts: 2374 Location: Genève
|
Posted: Sun Nov 05, 2006 5:29 pm Post subject: |
|
|
Je suis rassuré, j'ai quand même compris un petit peu emerge |
|
Back to top |
|
|
bouleetbil Guru
Joined: 06 Jul 2004 Posts: 456 Location: Montpellier
|
Posted: Mon Nov 06, 2006 9:24 pm Post subject: |
|
|
Voici la derniere version qui ne demasque que les versions testing :
Code: |
if "--usepkgonly" not in self.myopts:
print "\n!!! "+red("All ebuilds that could satisfy ")+green(xinfo)+red(" have been masked.")
print "!!! One of the following masked packages is required to complete your request:"
oldcomment = ""
#hack
last_packet=""
for p in alleb:
mreasons = portage.getmaskingstatus(p,
settings=pkgsettings, portdb=portdb)
print "- "+p+" (masked by: "+string.join(mreasons, ", ")+")"
#hack
result=str(mreasons)
if result.find("~")!= -1:
last_packet=p
comment = portage.getmaskingreason(p,
settings=pkgsettings, portdb=portdb)
if comment and comment != oldcomment:
print comment
oldcomment = comment
print
print "For more information, see MASKED PACKAGES section in the emerge man page or "
print "refer to the Gentoo Handbook."
#hack
if last_packet !="":
#on peux demasquer un packet
bo_demasque="0"
print "Demasquer le paquet "+last_packet+" ? "
Reponse=raw_input('(Oui/Non)')
if string.upper(Reponse) == "OUI":
bo_demasque="1"
if bo_demasque=="1":
print "Mise a jour package.keywords"
fichero = open("/etc/portage/package.keywords", 'a')
packet = "="+last_packet+" ~x86\n"
fichero.write("#Ajout par hack emerge\n")
fichero.write(packet)
fichero.flush()
fichero.close()
emerge_main()
else:
print "Un packet hardmask n'est pas demasque automatiquement"
|
@ bivittatus: J'ai pas ajouté le démasquage auto car en fait je trouve que c'est bien de savoir ce qui est démasqué. De plus c'est pas forcément lié au paquet qui vient d'etre demasqué.
Si vous voyez des modifs à faire ou des erreurs je suis preneur _________________ L'homme n'est pas fait pour travailler ça le fatigue.
LiveCD Gentoo : http://www.frogdev.info
Gentoo/Freebsd : http://www.frogdev.info/gentoo_freebsd.php |
|
Back to top |
|
|
titoucha Advocate
Joined: 21 Jul 2005 Posts: 2374 Location: Genève
|
Posted: Tue Nov 07, 2006 4:12 am Post subject: |
|
|
J'ai modifié une petite partie du programme parce que je suis une grosse flemme, j'aime pas taper oui en entier
Ancien code
Code: | if string.upper(Reponse) == "OUI":
bo_demasque="1" |
Nouveau code
Code: | Reponse=string.upper(Reponse)
if (Reponse == "OUI") or (Reponse == "O"):
bo_demasque="1" |
|
|
Back to top |
|
|
bivittatus l33t
Joined: 31 Jan 2006 Posts: 687 Location: Roissy-en-Brie (France)
|
Posted: Wed Nov 08, 2006 5:00 pm Post subject: |
|
|
bouleetbil wrote: |
@ bivittatus: J'ai pas ajouté le démasquage auto car en fait je trouve que c'est bien de savoir ce qui est démasqué. De plus c'est pas forcément lié au paquet qui vient d'etre demasqué.
Si vous voyez des modifs à faire ou des erreurs je suis preneur |
Pas de problème...c'est déjà super...merci!!! _________________ Linus TORVALDS: "Je ne suis pas là pour détruire Microsoft. Ce sera juste un effet secondaire tout à fait involontaire." |
|
Back to top |
|
|
|