Dernière modification : September 22 2007 00:08:20.
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!!!
J'ai donc créé ce patch :
--- a/bin/emerge 2007-01-27 21:46:58.000000000 +0100
+++ b/bin/emerge 2007-01-27 22:37:40.000000000 +0100
@@ -32,7 +32,7 @@
del os.environ["PORTAGE_LEGACY_GLOBALS"]
from portage import digraph
-import emergehelp, xpak, commands, errno, re, socket, time, types
+import emergehelp, xpak, commands, errno, re, socket, time, types, string
import output
from output import blue, bold, colorize, darkblue, darkgreen, darkred, green, \
havecolor, nc_len, nocolor, red, teal, turquoise, white, xtermTitle, \
@@ -1951,19 +1951,59 @@
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 = ""
+ last_packet=""
+ packageMask="0"
+ packageMissing="0"
for p in alleb:
mreasons = portage.getmaskingstatus(p,
settings=pkgsettings, portdb=portdb)
print "- "+p+" (masked by: "+", ".join(mreasons)+")"
- comment, filename = portage.getmaskingreason(p,
- settings=pkgsettings, portdb=portdb, return_location=True)
+ #hack
+ result=str(mreasons)
+ if result.find("~")!= -1:
+ last_packet=p
+ if result.find(".mask")!= -1:
+ last_packet=p
+ packageMask="1"
+ if result.find("missing")!= -1:
+ last_packet=p
+ packageMissing="1"
+ comment = portage.getmaskingreason(p,
+ settings=pkgsettings, portdb=portdb)
if comment and comment != oldcomment:
- print filename+":"
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."
+ if last_packet !="":
+ #on peux demasquer un paquet
+ 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":
+ #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)
+ if packageMissing=="1":
+ packet = "="+last_packet+" ** \n"
+ fichero.write(packet)
+ fichero.flush()
+ fichero.close()
+ if packageMask=="1": #modification package.keywords
+ 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()
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."
Pour installer ce patch :
# cd /tmp
# wget http://www.frogdev.info/emerge/last_emerge.diff
# cd /usr/
(Faire une sauvegarde)
# cp /usr/bin/emerge /usr/bin/emerge.sauve
(mise en place du patch)
# patch -p1 < /tmp/last_emerge.diff
Voir les commentairesAjouter un commentaire