Page 2 of 3

Posted: Wed Oct 27, 2004 2:16 pm
by fedeliallalinea
Raffo wrote:@fedeli: mah, per quello che volevo fare io lo script di xchris nn va proprio bene, diciamo che punta ad un diverso obiettivo.
Scusa pensavo facesse la stessa cosa, avevo capito questo io

Posted: Wed Oct 27, 2004 2:24 pm
by Raffo
@xchris: meglio il tuo per il gechit fidati :lol: ora lo provo per bene e vedo cosa c'è che nn mi piace, che nn va o dovrebbe essere cambiato...

@fedeli: sostanzialmente è molto simile, ma lo scopo è diverso :D

Posted: Wed Oct 27, 2004 3:33 pm
by Raffo
credo di aver finito lo script 8O
lo controllo ancora, lo testo un po', mi do per un po' alla chimica e se tutto va bene per stasera lo posto....avviso che FA schifo ed è sicuramente lontano da quello che immaginate :D

Posted: Wed Oct 27, 2004 4:50 pm
by xchris
posta che siamo curiosi :)

Posted: Wed Oct 27, 2004 6:02 pm
by Raffo
eccolo che arriva....permettetemi di fare una piccola introduzione in modo che nn mi insultiate troppo....lo script è nato come una cavolata. doveva funzionare solo con i pacchetti masked, mentre poi m'è venuto in mente di ampliare le funzionalità....l'ho creato semplicemente per avere in mente un solo comando, senza doverlo alternare ad emerge. per ora è molto rozzo, nn è stato testato sufficientemente e spero sia la versione funzionante (nel pulire la mia vers dai vari commenti avevo perso qualcosa per strada :lol: )...mi aspetto commenti solo negativi, ma ricordate che me l'avete chiesto voi di postarlo!! io lo sto usando, ma voi cercate di leggerlo modificarlo e comprenderlo (tanto è facile :) ) prima di un utilizzo...l'opzione "--help" arriverà per ora l'ho messa solo per ricordarmi di farla....

N.B. è il primo script che faccio e di programmazione ne so molto poco, quindi ci potrebbero essere dei grossolani errori che un programmatore nn farebbe mai...grazie cmq per avermi letto ;)

Code: Select all

#!/bin/sh
#Distributed under the terms of the GNU General Public License v2

source /sbin/functions.sh


if [ "$1" = --inject ]; then
        emerge -s $2
        echo "Quali di questi file desideri iniettare?"
        read inject
        echo $inject >> /etc/portage/profile/package.provided
        echo "$2 injected. Exiting..."
        exit 0
fi


if [ "$1" = --help ]; then
        echo -e '\E[33;m'"\033[1m .::Opzioni di xmerge::.\033[0m"
        echo
        echo -e '\E[32;m'"\033[1m Opzioni.........ancora da inserire.....\033[0m"
        echo
        echo
        echo -e '\E[37;m'"\033[1m Versione 0.1.\033[0m"
        echo
        exit 0
fi

if [ "$1" = --update ]; then
        emerge sync && emerge -uDav world
        exit 0
fi

ewarn "Questo script è ancora work in. Ogni uso potrebbe nn essere appropiato e/o causare errori al sistema. Usalo con cura! ^_^ "
sleep 1



if [ "$1" = --see ]; then

cat /etc/portage/package.keywords
exit 0

fi



done=1
ARCH="x86"

HILITE="\033[1m"
NORMAL="\033[0m"
RED='\E[31;01m'
GREEN='\E[32;01m'
YELLOW='\E[33;01m'

while [ $done ]
do

        RESULT=`emerge -p $* 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 [ "$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


fi

if [[ "$1" = "$( find /usr/portage -mindepth 2 -maxdepth 2 -type d -iname "$1" | cut -d"/" -f5,5 | sed -e 's/-[0-9]/*/g' | cut -d"*" -f1 | sort )" ]]; then


ewarn "Vuoi installare $1 masked o stabile? [m/s]"
read rispostone
if [ "$rispostone" = s ]; then
        emerge $1
        exit 0
fi


        ACCEPT_KEYWORDS="~x86" emerge -s $1
        echo "Quale di questi pacchetti desideri emergere??"
        read risposta
if  [ "$(grep "$risposta ~x86$" /etc/portage/package.keywords)" ]; then
                emerge $risposta
                exit 0

fi



        einfo "Inserisco $risposta in package.keywords ed inizio l'emerge."
        sleep 2
        echo $risposta ~x86 >> /etc/portage/package.keywords
        ACCEPT_KEYWORDS="~x86" emerge -av $risposta
        sleep 2
        echo $risposta ~x86 >> /etc/portage/package.keywords
        ACCEPT_KEYWORDS="~x86" emerge -av $risposta
        exit 0
else

   emerge $*
        exit 0
fi


done

exit
spero di averlo incollato bene :D

Posted: Thu Oct 28, 2004 6:43 am
by xchris
a prima vista ci sono un po' di cose da sistemare (ma l'avevi gia' preannunciato)
Io non sono un mago in bash (qui in giro c'e' gente sicuramente + esperta) pero' qualche consiglio (se vuoi) posso dartelo :)

Premetto che non ho ancora avuto modo di provarlo.
In mattinata ci faccio un giro ;)
ciao

Posted: Thu Oct 28, 2004 11:08 am
by Raffo
purtroppo ho postato una versione con sicuramente due bug. me ne sono accorto stamattina pensando "ma poi le ho corrette quelle cose" ho acceso il pc (senza potermi connettere, ho la condivisa e il pc "server" è in camera di mio fratello che dormiva...), controllato e fatto un mini bug report che posto

Code: Select all

primi bug che ho trovato: 

1)manca "exit 0" dopo l'opzione --see.
2)c'è un'errore nella parte di xchris. più che un errore ho solo 
dimenticato di modificare il suo script. nel momento in cui scrivo nn 
posso ma lo farò appena possibile (ovvero oggi pomeriggio).
3)speriamo nn ce ne siano altri :D

--------scritto il 28/10/2004 alle 07.44....ora vado a scuola :D--------

oggi ci do un'occhiata......

Posted: Thu Oct 28, 2004 5:19 pm
by Raffo
ho corretto i bug principali, spero solo che ora tutto funzioni. senza che ripeto le premesse fatte la volta precedente tenetele bene a mente ;)

Code: Select all

#!/bin/sh
#Distributed under the terms of the GNU General Public License v2


source /sbin/functions.sh

HILITE="\033[1m"
NORMAL="\033[0m"
RED='\E[31;01m'
GREEN='\E[32;01m'
YELLOW='\E[33;01m'
PURPLE='\E[35;01m'
WHITE='\E[37;01m'


if [ "$1" = --inject ]; then
        
	emerge -s $2
        echo "Quali di questi file desideri iniettare?"
        read inject
        echo $inject >> /etc/portage/profile/package.provided
        echo "$2 Injected. Exiting..."
        exit 0
fi


if [ "$1" = --help ]; then
        
	echo -e $WHITE".::Opzioni di xmerge::."
        echo
        echo -e $GREEN" --inject"$NORMAL": fa l'inject del pacchetto inserendolo in package.provided" && echo
	echo -e $GREEN" --update"$NORMAL": opzione per l'aggiornamento del sistema. esegue un sync verso il mirror selezionato e un 'emerge -uDav world' (consultare l'help di emerge per maggiori info)" && echo
	echo -e $GREEN" --see"$NORMAL": mostra tutti i pacchetti inseriti in package.keywords" && echo
	echo
        echo
        echo -e $PURPLE"xmerge"$WHITE": script per la gestione e l'installazione di programmi masked e stable. Versione 0.3."
        echo
        exit 0
fi

if [ "$1" = --update ]; then
        
	emerge sync && emerge -uDav world
        exit 0
fi

ewarn "Questo script è ancora work in. Ogni uso potrebbe nn essere appropiato e/o causare errori al sistema. Usalo con cura! ^_^ "
sleep 1



if [ "$1" = --see ]; then

cat /etc/portage/package.keywords
exit 0 
fi



done=1

ARCH="x86"



while [ $done ]
do

        RESULT=`emerge -p $* 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 [ "$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
		fi
        else
                        echo -e $GREEN"*$NORMAL $CLEAN_NAME "$ACTION_STRING
			done=                
	fi

done


if [[ "$1" = "$( find /usr/portage -mindepth 2 -maxdepth 2 -type d -iname "$1" | cut -d"/" -f5,5 | sed -e 's/-[0-9]/*/g' | cut -d"*" -f1 | sort )" ]]; then


ewarn "Vuoi installare $1 masked o stabile? [m/s]" 
read rispostone
if [ "$rispostone" = s ]; then
        emerge $1
        exit 0
fi


        ACCEPT_KEYWORDS="~x86" emerge -s $1
        echo "Quale di questi pacchetti desideri emergere??"
        read risposta
if  [ "$(grep "$risposta ~x86$" /etc/portage/package.keywords)" ]; then
                emerge $risposta
                exit 0

fi


 
        einfo "Inserisco $risposta in package.keywords ed inizio l'emerge."
        sleep 2
        echo $risposta ~x86 >> /etc/portage/package.keywords
        emerge -av $risposta
        exit 0
else

   emerge $*
        exit 0
fi


exit
occhio che in un paio di punti va a capo, ma voi dovete riportare la riga per intero....speriamo che funzioni :D

Posted: Sat Oct 30, 2004 7:12 pm
by fra
ho provato zorro per gnome 2.8, ha funzionato tutto alla grande, grazie xchris :D

Posted: Tue Nov 02, 2004 9:29 am
by xchris
bene :)
e' un po' lento ma funzica :)
ciao

Posted: Tue Nov 02, 2004 4:55 pm
by fedeliallalinea
Ok come da richiesta ho messo un po' di controlli sullo script di xchris. Le aggiunte sono
  • Controllo se utente root
  • Controllo se si mette = davanti a categoria/pacchetto
  • Controllo che il pacchetto immesso non inizi con un '-' (se no portage la prende come opzione)
  • aggiunta del help
Ecco il codice completo

Code: Select all

#!/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 }'`
#####################
HILITE="\033[1m"
NORMAL="\033[0m"
RED='\E[31;01m'
GREEN='\E[32;01m'
YELLOW='\E[33;01m'
#####################

function usage {
    echo -e "\nUsage: addkeywords =CATEGORY/PACKAGE-VERSION\n"
    echo -e ""
    echo -e "Example:"
    echo -e "   # addkeywords =xfce-base/xfce4-4.1.90"
    echo -e ""
    exit 1
}

[ "$1" = "-h" ] && usage
[ "$1" = "--help" ] && usage 
[ -z $1 ] && usage 

[ $# -eq 0 ] && echo -e "\nSpecify one or more packages\n" && exit
source /sbin/functions.sh
DONE=1
echo && einfo "Please Wait...\n"
[ ! `/usr/bin/whoami` = 'root' ] && echo && einfo "Program require root access!" && echo && exit
PRELIMINARY_CHECK=`emerge -p $* 2>&1 | grep "no ebuilds to satisfy"`
PRELIMINARY_CHECK1=`emerge -p $* 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 $* 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 [ "$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 [ "$MISSING_MASKED" = "$RESULT_FILTERED" ]
                then
                        echo && einfo "Package masked by missing keyword..Aborting" && echo
                        exit
                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 

Posted: Tue Nov 02, 2004 5:00 pm
by xchris
ottimo!
appena riesco la provo.

mi era venuta in mente un altra opzione (non mandarmi a quel paese please :))

capita spesso che rimangano dei cadaveri in .keywords e .unmask..
sarebbe carino poter scannare e mostrare/rimuovere vecchie entry. (anche perche' ben sappiamo che rallentano portage)

ciao

Posted: Tue Nov 02, 2004 5:01 pm
by fedeliallalinea
xchris wrote:mi era venuta in mente un altra opzione (non mandarmi a quel paese please :))
Nessun problema, ma come si fa a vedere se sono vecchi? Nel senso in keywords io non metto mai la versione cosi' che quel programma e' sempre all'ultima versione.

Posted: Tue Nov 02, 2004 5:37 pm
by xchris
vecchi nel senso che non sono + utilizzati :) (magari ci si dimentica di toglierlo)

una nota sul usage..
la sintassi accettata e' la stessa identica di emerge..quindi

./tool atom1 atom2 ...atomN

dove atom e':

app
cat/app
[>|<][=]cat/app-ver

ciao

Posted: Tue Nov 02, 2004 5:41 pm
by fedeliallalinea
Quindi se non capisco male solo un opzione che rimuove quello che gli dico?

Posted: Tue Nov 02, 2004 5:49 pm
by xchris
no :)

ad es oggi smachero skype...
poi domani lo "sommergo" e non lo tolgo dai file keywords,unmask

moltiplica questo x N volte....
rimane un po' di sporcizia.

Se invece io lancio ./tool --purge lui mi lascia solo le entry per i pacchetti installati.

a me sarebbe utile....poi magari non interessa a molti..
ciao

Posted: Tue Nov 02, 2004 5:50 pm
by fedeliallalinea
Quindi togliere da keywords umask i pacchetti che non sono piu' installati?

Posted: Tue Nov 02, 2004 5:52 pm
by xchris
si :)

e' solo una mia necessita'?
se cosi' fosse lascia pure perdere... non vale la pena.
ciao

Posted: Wed Nov 03, 2004 2:29 pm
by fedeliallalinea
xchris wrote:e' solo una mia necessita'?
No va benissimo provero' a farlo.

Posted: Sun Nov 14, 2004 8:57 pm
by fedeliallalinea

Posted: Mon Nov 15, 2004 7:39 am
by xchris
Autore wrote: to install entrance you'll still have to fire up portage 8 times as there are 8 packages masked, but i can't do nothing about that as portage notifies you about masked packages step by step

decisamente meglio il nostro sistema...
permette di smascherare in automatico la versione che si vuole in poco tempo e senza sbattimenti ;)
ciao

Posted: Mon Nov 15, 2004 8:33 am
by fedeliallalinea
Sto provando ad implementare la funzione che dicevi ma volevo fare una domanda: io uso emerge -p nome per vedere se il pacchetto e' installato, pensi sia meglio usare un'altro tool (tipo qpkg)?

Posted: Sat Dec 11, 2004 12:06 pm
by Dhaki
Mi é venuta anche in mente un altra feature che potrebbe essere interessante. In genere per vedere che versioni di un pacchetto che voglio installare vado a vedere a mano nella dir in /usr/portage. Dato che però sono un pigro, ho pensato: non si potrebbe fare un tool che listi tutti i pacchetti installabili? Magari si potrebbe includere in questo, o se caso si puo farne uno autonomo, o anche piu probabile questa opzione magari esiste già... :oops:

:D Illuminatemi. Nel frattempo mi cimento un po a farne uno io, anche solo come esercizio.

Posted: Sat Dec 11, 2004 12:13 pm
by xchris
:)

Code: Select all

etcat -v mplayer
ciao

Posted: Sat Dec 11, 2004 12:27 pm
by Dhaki
xchris wrote::)

Code: Select all

etcat -v mplayer
ciao
Ecco, lo sapevo... :D

Grazie