View previous topic :: View next topic |
Author |
Message |
fedeliallalinea Administrator
Joined: 08 Mar 2003 Posts: 31344 Location: here
|
Posted: Tue Feb 22, 2005 7:46 am Post subject: |
|
|
Dovrei rivederlo questo programmama ora non ho tempo. Appena finisco gli esami mi ci metto _________________ Questions are guaranteed in life; Answers aren't. |
|
Back to top |
|
|
f0llia l33t
Joined: 22 Apr 2003 Posts: 873
|
Posted: Tue Feb 22, 2005 8:36 am Post subject: |
|
|
fedeliallalinea wrote: | Dovrei rivederlo questo programmama ora non ho tempo. Appena finisco gli esami mi ci metto |
Non ti preoccupare, niente fretta. |
|
Back to top |
|
|
Onip Advocate
Joined: 02 Sep 2004 Posts: 2912 Location: Parma (Italy)
|
Posted: Tue Feb 22, 2005 12:11 pm Post subject: |
|
|
Nessun problema, era solo una segnalazione.....
p.s. Io gli esami gli ho finiti oggi pappappero...... _________________ Linux Registered User n. 373835
Titus Lucretius Carus, De Rerum Natura - Tantum religio potuit suadere malorum |
|
Back to top |
|
|
Dhaki Guru
Joined: 16 Jun 2004 Posts: 325 Location: Ticino - CH
|
Posted: Tue Feb 22, 2005 2:39 pm Post subject: |
|
|
Secondo me bisognorebbe andare verso un package.* manager con piu funzioni. Certo, forcekeymask fa il suo lavoro, ma senza nulla togliere al lavoro che é stato fatto per farlo e senza voler offendere nessuno, secondo me una cosa fatta in python, che possa servire a smascherare (~ e M), mascherare, iniettare, cambiare le use per certi pacchetti, vedere i contenuti dei file, poterli pulire (cosa che fa gia forcekeymask), eccetera, potrebbe essere interessante. È vero, alla fin fine basterebbe fare un "nano /etc/portage/package.*" e si potrebbero fare le stesse cose... ma dato che l'importante é la scelta secondo me c'é chi potrebbe, per comodità o altro, voler poter usare un tool. Io sinceramente non potrei aiutare molto temo... bash scripting me la cavo (un pochino...), sto cominciando con il C, quindi non ho ancora le capacità. Dite che é una cosa inutile del tutto o che ci si può fare un pensierino? |
|
Back to top |
|
|
mrfree Veteran
Joined: 15 Mar 2003 Posts: 1303 Location: Europe.Italy.Sulmona
|
Posted: Sat Mar 12, 2005 6:11 pm Post subject: |
|
|
In attesa che venga rilasciata una nuova versione con i vari miglioramenti e considerando che non posso più resistere all'emersione di gnome 2.10, ho realizzato questo VBH (Very Bad Hack) al forcekeymask
Code: | --- forcekeymask 2004-12-05 22:24:40.000000000 +0100
+++ forcekeymask.mrfree 2005-03-12 19:02:08.672850288 +0100
@@ -1,6 +1,7 @@
#!/bin/bash
# ARCH -> x86 ppc sparc alpha hppa mips ia64 amd64
-ARCH=`cat /etc/make.profile/make.defaults | grep "ACCEPT_KEYWORDS" | awk -F\" '{ print $2 }'`
+#ARCH=`cat /etc/make.profile/make.defaults | grep "ACCEPT_KEYWORDS" | awk -F\" '{ print $2 }'`
+ARCH="x86"
#####################
HILITE="\033[1m"
NORMAL="\033[0m"
@@ -111,6 +112,7 @@
HARD_MASKED=`echo $RESULT | cut -d":" -f2 | grep "package.mask"`
MISSING_MASKED=`echo $RESULT | cut -d":" -f2 | grep "missing"`
CLEAN_NAME=`echo $RESULT | cut -d" " -f2 | sed -e 's/-[0-9]/*/g' | cut -d"*" -f1`
+ CLEAN_EXACT_NAME=`echo $RESULT | cut -d" " -f2`
if [ "$HARD_MASKED" = "$RESULT_FILTERED" ]
then
echo "$CLEAN_NAME" >> /etc/portage/package.unmask
@@ -118,7 +120,7 @@
fi
if [ "$KEYWORD_MASKED" = "$RESULT_FILTERED" ]
then
- echo "$CLEAN_NAME ~$ARCH" >> /etc/portage/package.keywords
+ echo "=$CLEAN_EXACT_NAME ~$ARCH" >> /etc/portage/package.keywords
ACTION_STRING=$ACTION_STRING$YELLOW"[KEYWORD]"$NORMAL
fi
if [ "$MISSING_MASKED" = "$RESULT_FILTERED" ] |
-) Specifica nel file /etc/portage/package.keywords la versione esatta del pacchetto da smascherare
Code: | [...]
=app-arch/file-roller-2.10.0 ~x86
=media-video/totem-1.0 ~x86
=media-plugins/gst-plugins-flac-0.8.8 ~x86
=media-libs/flac-1.1.1 ~x86
[...] |
-) Forza x86 come architettura hardware
Spero sia utile a qualche altro utente impaziente come me
Edit: per applicare la patch è sufficiente salvare il codice in un file (ad es.: mrforce.patch) ed eseguire Code: | cat mrforce.patch | patch forcekeymask |
_________________ Please EU, pimp my country!
ICE: /etc/init.d/iptables panic |
|
Back to top |
|
|
Dhaki Guru
Joined: 16 Jun 2004 Posts: 325 Location: Ticino - CH
|
Posted: Wed Jul 13, 2005 9:51 am Post subject: |
|
|
Error 404.
C'é qualcuno che potrebbe uploadare forcekeymask? Grazie |
|
Back to top |
|
|
xchris Advocate
Joined: 10 Jul 2003 Posts: 2824
|
|
Back to top |
|
|
Dhaki Guru
Joined: 16 Jun 2004 Posts: 325 Location: Ticino - CH
|
Posted: Wed Jul 13, 2005 5:43 pm Post subject: |
|
|
xchris wrote: | http://fedeliallalinea.tilug.ch/projects/forcekeymask
ora vedo di fare upload anche sul mio sitino
ciao |
Ok grazie! |
|
Back to top |
|
|
teknux Guru
Joined: 19 Feb 2003 Posts: 517 Location: Rome, IT
|
Posted: Wed Aug 10, 2005 2:04 pm Post subject: |
|
|
scusate ma lo script risulta irrepereibile presso i link postati nel thread. non è che potreste ri-renderlo disponibile?
grazie,
tek |
|
Back to top |
|
|
neon l33t
Joined: 04 Aug 2003 Posts: 759 Location: Catania, Italy, Europe
|
|
Back to top |
|
|
Pancu l33t
Joined: 16 Feb 2005 Posts: 612 Location: Cesena
|
Posted: Fri Jan 06, 2006 1:13 pm Post subject: |
|
|
Ragazzi ho un problema con forcekeymask.
Devo installare gnome-2.12.
Faccio un Code: | forcekeymask -fm gnome-base/gnome-2.12
Please Wait ...
Your ebuild is emergeable!
|
Ma quando vado a controllare nei file package.keywords, package.unmask e package mask non mi è stato scritto niente |
|
Back to top |
|
|
lavish Bodhisattva
Joined: 13 Sep 2004 Posts: 4296
|
|
Back to top |
|
|
Pancu l33t
Joined: 16 Feb 2005 Posts: 612 Location: Cesena
|
Posted: Fri Jan 06, 2006 2:03 pm Post subject: |
|
|
Pancu wrote: | Ragazzi ho un problema con forcekeymask.
Devo installare gnome-2.12.
Faccio un Code: | forcekeymask -fm gnome-base/gnome-2.12
Please Wait ...
Your ebuild is emergeable!
|
Ma quando vado a controllare nei file package.keywords, package.unmask e package mask non mi è stato scritto niente |
Ragazzi nessuno può aiutarmi??
Vorrei installare gnome entro domani |
|
Back to top |
|
|
lavish Bodhisattva
Joined: 13 Sep 2004 Posts: 4296
|
Posted: Fri Jan 06, 2006 2:10 pm Post subject: |
|
|
Pancu wrote: | Ragazzi nessuno può aiutarmi??
Vorrei installare gnome entro domani |
Ma per favore! Non è passata nemmeno un'ora dal tuo precedente post! Questo non è un help desk!
Se qualcuno ha tempo/sa/vuole aiutarti lo farà comunque, senza solleciti orari! Ad ogni modo la netiquette prevede un'attesa di minimo 24h prima di fare un "up" _________________ minimalblue.com | secgroup.github.io/ |
|
Back to top |
|
|
Onip Advocate
Joined: 02 Sep 2004 Posts: 2912 Location: Parma (Italy)
|
Posted: Fri Jan 06, 2006 2:55 pm Post subject: |
|
|
prova con
Code: | forcekeymask -fm =gnome-base/gnome-2.12 |
_________________ Linux Registered User n. 373835
Titus Lucretius Carus, De Rerum Natura - Tantum religio potuit suadere malorum |
|
Back to top |
|
|
codadilupo Advocate
Joined: 05 Aug 2003 Posts: 3135
|
Posted: Sun Feb 05, 2006 4:01 am Post subject: |
|
|
Ok, nessuno me ne voglia, ma ho tentato di rimaneggiare il forcekeymask. Avevo bisogno di gestire anche i missing keywords perché m'ero rotto le balle di gestirli a mano per i 2600 pacchetti 'missing' dei ppc64
Ovviamente non l'ho fatto da solo, mica ero capace
Questo ottimo software, trasformato in un paciugo dal sottoscritto é opera di:
xchris: il primo alchimista
fedeliallalinea: quello che mette ordine
mouser: il codice piu' veloce di tutta l'IM
codadilupo: la colla
ecco a voi: zorro64
Code: | #!/bin/bash
# ARCH -> x86 ppc sparc alpha hppa mips ia64 amd64 ppc64
ARCH="ppc64"
OVERLAY=`cat /etc/make.conf | grep "PORTDIR_OVERLAY" | awk -F\" '{ print $2 }'`
#####################
HILITE="\033[1m"
NORMAL="\033[0m"
RED='\E[31;01m'
GREEN='\E[32;01m'
YELLOW='\E[33;01m'
#####################
function usage {
echo -e "\nUsage: forcekeymask [OPTION] [FILE]\n"
echo -e ""
echo -e "\nOption:"
echo -e " -fm, --force-merge"
echo -e " -p, --purge\n"
echo -e "\nExample:"
echo -e " # forcekeymask -fm =xfce-base/xfce4-4.1.90"
echo -e " # forcekeymask -p"
echo -e ""
exit 1
}
function purge {
source /sbin/functions.sh
FILE=$1
[ ! -s "${FILE}" ] && echo "Your ${FILE} needs no change!" && return 0
END=`wc -l ${FILE} | awk '{print $1}'`
[ -s ${FILE}.new ] && rm ${FILE}.new
for i in `seq 1 ${END}`;
do
LINE=`cat ${FILE} | head -n ${i} | tail -n 1`
#echo ${LINE}
COMMENT=`echo ${LINE} | head -c 1`
# Riporta le newline e i commenti
if [ -z "${LINE}" ] || [ "${COMMENT}" = "#" ]
then
echo ${LINE} >> ${FILE}.new
else
# elimina versione e simboli del pacchetto
CLEAN=`echo "${LINE}" | awk '{print $1}' | sed -e 's/-[0-9]/*/g' | cut -d* -f1 | sed -e 's/[<|>|=]/*/g' | tr -d "*"`
# se esiste rimettilo nella lista se no rimuovi
if [ -s /var/db/pkg/${CLEAN}* ]
then
echo ${LINE} >> ${FILE}.new
else
einfo "${LINE} ${RED}removed${NORMAL} from new list"
fi
fi
done
DIFFERENCES=`diff ${FILE} ${FILE}.new`
if [ -s "${DIFFERENCES}" ]
then
rm ${FILE}.new
echo "Your ${FILE} needs no change!"
else
echo ""
echo ${DIFFERENCES}
echo ""
echo "1) Update ${FILE}"
echo "2) Discard changes"
echo "3) Don't update,save changes in ${FILE}.new"
echo -n "Select: "
read ANSWER
echo ""
case $ANSWER in
"1")
mv ${FILE}.new ${FILE}
echo "${FILE} Updated!" ;;
"2")
rm ${FILE}.new
echo "Changes dirscarded!" ;;
"3")
echo "Changes saved in ${FILE}.new" ;;
*)
echo "Option not valid!" ;;
esac
echo ""
fi
}
function force_merge {
source /sbin/functions.sh
DONE=1
PACKAGES=$1
[ -s $ARCH ] && echo "Problem with your profile. No ARCH variable present!" && exit
echo && einfo "Please Wait...\n"
[ ! `/usr/bin/whoami` = 'root' ] && echo && einfo "Program require root access!" && echo && exit
PRELIMINARY_CHECK=`emerge -p ${PACKAGES} 2>&1 | grep "no ebuilds to satisfy"`
PRELIMINARY_CHECK1=`emerge -p ${PACKAGES} 2>&1 | grep "(try adding an '=')"`
PRELIMINARY_CHECK2=`echo "$1" | head -c 1 --`
[ "$PRELIMINARY_CHECK" ] && echo && einfo "No ebuild found!" && echo && exit
[ "$PRELIMINARY_CHECK1" ] && echo && einfo "Specific key requires an operator (xfce-base/xfce4-4.1.90) (try adding an '=')" && echo && exit
[ "$PRELIMINARY_CHECK2" = "-" ] && echo && einfo "No ebuild found!" && echo && exit
[ ! -e "/etc/portage" ] && einfo "Creating /etc/portage directory\n" && { mkdir /etc/portage || { einfo "ERROR...Quiting" && exit ;} }
while [ $DONE ]
do
RESULT=`emerge -p ${PACKAGES} 2>&1 | grep "(masked" | head -n 1`
if [ "$RESULT" ]
then
ACTION_STRING=
RESULT_FILTERED=`echo $RESULT | cut -d":" -f2`
KEYWORD_MASKED=`echo $RESULT | cut -d":" -f2 | grep "~"`
HARD_MASKED=`echo $RESULT | cut -d":" -f2 | grep "package.mask"`
MISSING_MASKED=`echo $RESULT | cut -d":" -f2 | grep "missing"`
CLEAN_NAME=`echo $RESULT | cut -d" " -f2 | sed -e 's/-[0-9]/*/g' | cut -d"*" -f1`
if [ "$MISSING_MASKED" = "$RESULT_FILTERED" ]
then
echo && einfo "Package masked by missing keyword.. adding right keyword.. " && echo
mkdir -p $OVERLAY/$CLEAN_NAME/ && echo && einfo "creating PORTDIR_OVERLAY Tree.." && echo
cp -r /usr/portage/$CLEAN_NAME/ $OVERLAY/$CLEAN_NAME/../
cd $OVERLAY/$CLEAN_NAME/ echo && einfo "overlaying ebuild.." && echo
for EBUILD in `find $OVERLAY/$CLEAN_NAME -iname *.ebuild`; do
cat $EBUILD | nl -b a > /tmp/temp.ebuild
RIGA=`cat /tmp/temp.ebuild | grep KEYWORDS | awk '{print $1}'`
PREV=`expr $RIGA - 1`
NEXT=`expr $RIGA + 1`
cat /tmp/temp.ebuild | head -n $PREV | cut -b8- > $EBUILD
cat /tmp/temp.ebuild | grep KEYWORDS | cut -b8- | sed -e 's/\"\ *$/\ ~ppc64\"/g' >> $EBUILD
cat /tmp/temp.ebuild | tail -n $NEXT | cut -b8- >> $EBUILD && echo && einfo "updating ebuild.." && echo
rm -f /tmp/temp.ebuild
done
for EBUILD in `find $OVERLAY/$CLEAN_NAME -iname *.ebuild`; do
echo && einfo "creating digest up to date.." && echo && ebuild ${PACKAGES}*.ebuild digest
done
RESULT=`emerge -p ${PACKAGES} 2>&1 | grep "(masked" | head -n 1`
fi
fi
if [ "$RESULT" ]
then
ACTION_STRING=
RESULT_FILTERED=`echo $RESULT | cut -d":" -f2`
KEYWORD_MASKED=`echo $RESULT | cut -d":" -f2 | grep "~"`
HARD_MASKED=`echo $RESULT | cut -d":" -f2 | grep "package.mask"`
MISSING_MASKED=`echo $RESULT | cut -d":" -f2 | grep "missing"`
CLEAN_NAME=`echo $RESULT | cut -d" " -f2 | sed -e 's/-[0-9]/*/g' | cut -d"*" -f1`
if [ "$HARD_MASKED" = "$RESULT_FILTERED" ]
then
echo "$CLEAN_NAME" >> /etc/portage/package.unmask
ACTION_STRING=$RED"[HARD]"$NORMAL
fi
if [ "$KEYWORD_MASKED" = "$RESULT_FILTERED" ]
then
echo "$CLEAN_NAME ~$ARCH" >> /etc/portage/package.keywords
ACTION_STRING=$ACTION_STRING$YELLOW"[KEYWORD]"$NORMAL
fi
if [ ! "$ACTION_STRING" ]
then
echo && einfo "Don't know how to handle.. sorry!" && echo
exit
else
echo -e $GREEN"*$NORMAL $CLEAN_NAME "$ACTION_STRING
fi
else
echo && einfo "Your ebuild is emergeable!" && echo
DONE=
fi
done
}
case $1 in
-fm|--force-merge)
[ $# -eq 1 ] && echo -e "\nSpecify one or more packages\n" && exit
PACKAGES=`echo $* | cut -d " " -f2-`
force_merge ${PACKAGES}
;;
-p|--purge)
purge "/etc/portage/package.keywords"
purge "/etc/portage/package.unmask"
;;
-h|--help)
usage
;;
*)
echo "No valid option specified. Discarding changes..."
#usage
;;
esac |
ovviamente laddove il codice risulta un pugno in un occhio é tutta colpa mia (e puo' essere rifutato in luogo di qualcosa di serio )
Coda
Last edited by codadilupo on Mon Feb 06, 2006 3:33 pm; edited 1 time in total |
|
Back to top |
|
|
xchris Advocate
Joined: 10 Jul 2003 Posts: 2824
|
Posted: Mon Feb 06, 2006 1:58 pm Post subject: |
|
|
a dire il vero il primo alchimista e' stato xchris
poi fedeli l'ha sistemato un po'...
ciao e complimenti per l'idea
ciao _________________ while True:Gentoo() |
|
Back to top |
|
|
codadilupo Advocate
Joined: 05 Aug 2003 Posts: 3135
|
Posted: Mon Feb 06, 2006 2:52 pm Post subject: |
|
|
xchris wrote: | a dire il vero il primo alchimista e' stato xchris
poi fedeli l'ha sistemato un po'...
ciao e complimenti per l'idea
ciao |
azz! Convinto del contrario, da come era cominciato il topic
Coda |
|
Back to top |
|
|
xchris Advocate
Joined: 10 Jul 2003 Posts: 2824
|
Posted: Mon Feb 06, 2006 3:02 pm Post subject: |
|
|
questo non era il post originale...
prima si chiamava zorro
ciao _________________ while True:Gentoo() |
|
Back to top |
|
|
codadilupo Advocate
Joined: 05 Aug 2003 Posts: 3135
|
Posted: Mon Feb 06, 2006 3:29 pm Post subject: |
|
|
xchris wrote: | questo non era il post originale...
prima si chiamava zorro
ciao |
ehehe, capito
Ad ogni modo, lo sto già modificando. Per qualche strana ragione sono presente due bachi:
1) i due find funzionano se il programma gira su x86. Se lo faccio girare su ppc64 (il motivo per cui nasce il tentativo) mi riportano:
"path must preceed expression"... che non ha senso, visto che il path precede effettivamente l'espressione. Ma qui ho risolto non usando il find
2) pare che se gl'ebuild sono piu' di uno, alcuni vengano ricostruiti troncati, con conseguende fallimento del digest. Ci sto ancora lavorando
Coda |
|
Back to top |
|
|
xchris Advocate
Joined: 10 Jul 2003 Posts: 2824
|
Posted: Mon Feb 06, 2006 3:37 pm Post subject: |
|
|
in bocca al lupo codadilupo
buon lavoro...
gia' che ci sei metti anche le features che erano state richieste tempo fa.. (scorri il thread)
ciao _________________ while True:Gentoo() |
|
Back to top |
|
|
codadilupo Advocate
Joined: 05 Aug 2003 Posts: 3135
|
Posted: Mon Feb 06, 2006 5:05 pm Post subject: |
|
|
per aggiungere il pacchetto richiedente penso basti sostituire:
Code: | CLEAN_NAME=`echo $RESULT | cut -d" " -f2 | sed -e 's/-[0-9]/*/g' | cut -d"*" -f1` |
con
Code: | CLEAN_NAME=`echo $RESULT | cut -d" " -f2 | sed -e 's/-[0-9]/*/g' | cut -d"*" -f1`
CLEAN_EXACT_NAME=`echo $RESULT | cut -d" " -f2` |
e
Code: | echo "$CLEAN_NAME ~$ARCH" >> /etc/portage/package.keywords |
con
Code: | echo "$CLEAN_NAME ~$ARCH" >> /etc/portage/package.keywords "# required by $CLEAN_EXACT_NAME" |
Per il primo problema, smascherare la versione esatta oppure l'intero pacchetto, é piu' complicato, perché uno potrebbe scrivere:
Code: | forcekeymask -fm autorun |
come
Code: | forcekeymask -fm sys-fs/autorun |
come
Code: | forcekeymask -fm =autorun-3.15 |
come
Code: | forcekeymask -fm =sys-fs/autorun-3.15 |
ed é un casino
Cioe', se si decide di mettere solo e soltanto la versione precisa, ok. Ma alternativamente, dobbiamo prima verificare cosa viene richiesto, ovvero prendere $PACKAGES, tagliare via l'uguale, tagliare la categoria (se esiste!) e verificare se corrisponde alla variabile CLEAN_EXACT_NAME moncata della categoria. Nel caso corrisponda scriviamo il pacchetto conpreso di versione, altrimenti senza... é oltre le mie possibilità al momento
Coda |
|
Back to top |
|
|
codadilupo Advocate
Joined: 05 Aug 2003 Posts: 3135
|
Posted: Mon Feb 06, 2006 9:56 pm Post subject: |
|
|
nuova versione: 0.4
- aggiunto il commento 'required` per ogni pacchetto
- migliorato l'output dei messaggi (un pochino piu' chiaro, spero)
- aggiunti un paio di controlli (se non hai PORTDIR_OVERLAY come faccio a lavorare ?)
- rimosso il find in luogo di ls (vai a capire perché i ppc64 non lo capiscono... bah!)
- corretto un baco che eseguiva ripetutamente gli stessi digest (ma quanto so' pirla )
- le variabili di sistema ora vengono tutte recuperate automagicamente
- corretto il baco che troncava alcuni ebuild durante l'aggiunta della missing keywords
- codice ottimizzato
TODO: rendere disponibile la scelta tra singola versione o tutte le versioni masked... chi si offre ?
esempio:
Code: | #!/bin/bash
# Grazie a:
# xchris, che l'ha scritto
# fedeliallalinea, che l'ha curato
# mouser, che ha scritto il cuore della modifica
# andrea, che aveva bisogno della modifica
# lorenzo, che ha riassunto la modifica
emerge --info | grep '="' > /etc/portinfo
source /etc/portinfo
HILITE="\033[1m"
NORMAL="\033[0m"
RED='\E[31;01m'
GREEN='\E[32;01m'
YELLOW='\E[33;01m'
function usage {
echo -e "\nUsage: forcekeymask [OPTION] [FILE]\n"
echo -e ""
echo -e "\nOption:"
echo -e " -fm, --force-merge"
echo -e " -p, --purge\n"
echo -e "\nExample:"
echo -e " # forcekeymask -fm =xfce-base/xfce4-4.1.90"
echo -e " # forcekeymask -p"
echo -e ""
exit 1
}
function purge {
source /sbin/functions.sh
FILE=$1
[ ! -s "${FILE}" ] && echo "Your ${FILE} needs no change!" && return 0
END=`wc -l ${FILE} | awk '{print $1}'`
[ -s ${FILE}.new ] && rm ${FILE}.new
for i in `seq 1 ${END}`;
do
LINE=`cat ${FILE} | head -n ${i} | tail -n 1`
#echo ${LINE}
COMMENT=`echo ${LINE} | head -c 1`
# Riporta le newline e i commenti
if [ -z "${LINE}" ] || [ "${COMMENT}" = "#" ]
then
echo ${LINE} >> ${FILE}.new
else
# elimina versione e simboli del pacchetto
CLEAN=`echo "${LINE}" | awk '{print $1}' | sed -e 's/-[0-9]/*/g' | cut -d* -f1 | sed -e 's/[<|>|=]/*/g' | tr -d "*"`
# se esiste rimettilo nella lista se no rimuovi
if [ -s /var/db/pkg/${CLEAN}* ]
then
echo ${LINE} >> ${FILE}.new
else
einfo "${LINE} ${RED}removed${NORMAL} from new list"
fi
fi
done
DIFFERENCES=`diff ${FILE} ${FILE}.new`
if [ -s "${DIFFERENCES}" ]
then
rm ${FILE}.new
echo "Your ${FILE} needs no change!"
else
echo ""
echo ${DIFFERENCES}
echo ""
echo "1) Update ${FILE}"
echo "2) Discard changes"
echo "3) Don't update,save changes in ${FILE}.new"
echo -n "Select: "
read ANSWER
echo ""
case $ANSWER in
"1")
mv ${FILE}.new ${FILE}
echo "${FILE} Updated!" ;;
"2")
rm ${FILE}.new
echo "Changes dirscarded!" ;;
"3")
echo "Changes saved in ${FILE}.new" ;;
*)
echo "Option not valid!" ;;
esac
echo ""
fi
}
function force_merge {
source /sbin/functions.sh
DONE=1
PACKAGES=$1
[ -s $ACCEPT_KEYWORDS ] && echo "Problem with your profile. No ARCH variable present!" && exit
echo && einfo "Please Wait...\n"
[ ! `/usr/bin/whoami` = 'root' ] && echo && einfo "Program require root access!" && echo && exit
PRELIMINARY_CHECK=`emerge -p ${PACKAGES} 2>&1 | grep "no ebuilds to satisfy"`
PRELIMINARY_CHECK1=`emerge -p ${PACKAGES} 2>&1 | grep "(try adding an '=')"`
PRELIMINARY_CHECK2=`echo "$1" | head -c 1 --`
[ "$PRELIMINARY_CHECK" ] && echo && einfo "No ebuild found!" && echo && exit
[ "$PRELIMINARY_CHECK1" ] && echo && einfo "Specific key requires an operator (xfce-base/xfce4-4.1.90) (try adding an '=')" && echo && exit
[ "$PRELIMINARY_CHECK2" = "-" ] && echo && einfo "No ebuild found!" && echo && exit
[ ! -e "/etc/portage" ] && einfo "Creating /etc/portage directory\n" && { mkdir /etc/portage || { einfo "ERROR...Quiting" && exit ;} }
while [ $DONE ]
do
RESULT=`emerge -p ${PACKAGES} 2>&1 | grep "(masked" | head -n 1`
if [ "$RESULT" ]
then
ACTION_STRING=
RESULT_FILTERED=`echo $RESULT | cut -d":" -f2`
KEYWORD_MASKED=`echo $RESULT | cut -d":" -f2 | grep "~"`
HARD_MASKED=`echo $RESULT | cut -d":" -f2 | grep "package.mask"`
MISSING_MASKED=`echo $RESULT | cut -d":" -f2 | grep "missing"`
CLEAN_NAME=`echo $RESULT | cut -d" " -f2 | sed -e 's/-[0-9]/*/g' | cut -d"*" -f1`
if [ "$MISSING_MASKED" = "$RESULT_FILTERED" ]
then
echo && einfo "Package masked by missing keyword.. adding right keyword.. " && echo &&
[ ! -e "$PORTDIR_OVERLAY" ] && einfo "creating PORTDIR_OVERLAY Tree.." && { mkdir -p $PORTDIR_OVERLAY || { einfo echo "ERROR...(no portage overlay defined ?) Quitting" && exit ;} }
[ ! -e "$PORTDIR_OVERLAY/$CLEAN_NAME" ] && { mkdir -p $PORTDIR_OVERLAY/$CLEAN_NAME ||{ einfo echo "ERROR...(no write permissions ?) Quitting";} }
[ -e "$PORTDIR" ] && einfo "overlaying ebuild.." && { cp -r /usr/portage/$CLEAN_NAME/ $PORTDIR_OVERLAY/$CLEAN_NAME/../ && echo || { einfo echo "ERROR...(no portage tree ?) Quitting" && echo && exit ;} }
for EBUILD in `ls -R1 $PORTDIR_OVERLAY/$CLEAN_NAME | grep ebuild`; do
cd $PORTDIR_OVERLAY/$CLEAN_NAME/
cat $EBUILD | sed 's/\(KEYWORDS=\".*\)\(\"\)/\1 ~'$ACCEPT_KEYWORDS'\2/' > $EBUILD
echo && einfo "creating digest up to date..for ${EBUILD}" && echo && /usr/sbin/ebuild ${EBUILD} digest
done
RESULT=`emerge -p ${PACKAGES} 2>&1 | grep "(masked" | head -n 1`
fi
fi
if [ "$RESULT" ]
then
ACTION_STRING=
RESULT_FILTERED=`echo $RESULT | cut -d":" -f2`
KEYWORD_MASKED=`echo $RESULT | cut -d":" -f2 | grep "~"`
HARD_MASKED=`echo $RESULT | cut -d":" -f2 | grep "package.mask"`
MISSING_MASKED=`echo $RESULT | cut -d":" -f2 | grep "missing"`
CLEAN_NAME=`echo $RESULT | cut -d" " -f2 | sed -e 's/-[0-9]/*/g' | cut -d"*" -f1`
REQUIRED_BY=`echo $RESULT | cut -d" " -f2`
if [ "$HARD_MASKED" = "$RESULT_FILTERED" ]
then
echo "$CLEAN_NAME" >> /etc/portage/package.unmask
ACTION_STRING=$RED"[HARD]"$NORMAL
fi
if [ "$KEYWORD_MASKED" = "$RESULT_FILTERED" ]
then
echo "$CLEAN_NAME ~$ACCEPT_KEYWORDS" >> /etc/portage/package.keywords "# required by $REQUIRED_BY"
ACTION_STRING=$ACTION_STRING$YELLOW"[KEYWORD]"$NORMAL
fi
if [ ! "$ACTION_STRING" ]
then
echo && einfo "Don't know how to handle.. sorry!" && echo
exit
else
echo -e $GREEN"*$NORMAL $CLEAN_NAME "$ACTION_STRING
fi
else
echo && einfo "Your ebuild is emergeable!" && echo
DONE=
fi
done
}
case $1 in
-fm|--force-merge)
[ $# -eq 1 ] && echo -e "\nSpecify one or more packages\n" && exit
PACKAGES=`echo $* | cut -d " " -f2-`
force_merge ${PACKAGES}
;;
-p|--purge)
purge "/etc/portage/package.keywords"
purge "/etc/portage/package.unmask"
;;
-h|--help)
usage
;;
*)
echo "No valid option specified. Discarding changes..."
#usage
;;
esac |
Coda
Last edited by codadilupo on Wed Mar 08, 2006 6:18 pm; edited 5 times in total |
|
Back to top |
|
|
fedeliallalinea Administrator
Joined: 08 Mar 2003 Posts: 31344 Location: here
|
Posted: Tue Feb 07, 2006 8:09 am Post subject: |
|
|
Ti amo coda metto subito in /bin _________________ Questions are guaranteed in life; Answers aren't. |
|
Back to top |
|
|
codadilupo Advocate
Joined: 05 Aug 2003 Posts: 3135
|
Posted: Tue Feb 07, 2006 10:23 am Post subject: |
|
|
fedeliallalinea wrote: | Ti amo coda metto subito in /bin |
eh, esagerato
Prima provalo, che é notoriamente bacato
Coda |
|
Back to top |
|
|
|