# [TOOL] addkeywords

## fedeliallalinea

Questo tools permette di mettere tutti i file necessari per compilare un pacchetto ~x86 in /etc/portage/package.keywords cosi da evitare di usare ACCEPT_KEYWORDS= .

mrfree ecco qua

```
#!/bin/sh

function usage {

    echo -e "\nUsage: addkeywords ~ARCH PACKAGE\n"

    echo -e ""

    exit 1

}

[ -z $1 ] && usage

[ -z $2 ] && usage

[ ! -s /etc/portage/package.keywords ] && echo "File /etc/portage/package.keywords not found!" && exit 1

LIST=`ACCEPT_KEYWORDS="$1" emerge --columns -p $2 | awk '/\// {print $4}'`

echo "" >> /etc/portage/package.keywords

echo "#Package for $2" >> /etc/portage/package.keywords

for PACKAGE in ${LIST}

do

        echo "${PACKAGE} ~x86" >> /etc/portage/package.keywords

done

echo "" >> /etc/portage/package.keywords
```

Per usarlo bisogna dare

```
# addkeywords ~ARCH PACKAGE
```

esempio pratico

```
# addkeywords ~x86 gnome
```

----------

## mrfree

Grande fedeli, thz   :Very Happy: 

Proverò lo script appena possibile.

PS: prima o poi dovrò decidermi a diventare bashscript-autonomo   :Wink: 

----------

## sorchino

Ottimo fedeliallalinea in effetti in caso di gnome/kde/o simili è una vera palla aggiungere a mano pacchetto per pacchetto.

----------

## fedeliallalinea

Spero solo che funzioni a dovere visto che non ho fatto molti test

----------

## fedeliallalinea

Post splittatto da questo

----------

## gutter

Una cosa utile   :Wink: 

----------

## Raffo

io tempo fa mi sono creato uno script stupido che chiede se voglio installare un pacchetto stabile o masked ed inserisce la relativa key (se masked) in package.keywords...purtroppo date le mie limitate capacità è molto rozzo, ma funzionale  :Laughing: 

----------

## xchris

non ci credo...

ne avevo appena fatto uno pure io...

mooolto grezzo ma funzionante.

utilizza pero' un approccio diverso (+ lento...decisamente)

Una volta smascherato a mano il primo file (ad es gnome) permette di scrivere correttamente i file package.keywords e package.unmask.

va bhe  :Smile: 

amen

ciao

----------

## fedeliallalinea

 *xchris wrote:*   

> utilizza pero' un approccio diverso (+ lento...decisamente)

 

Non vale la pena di postarlo comunque?

----------

## xchris

ok..script zorro.

Dato uno o piu' pacchetti da emerge (con,senza versione) prepara i file package.unmask e package.keyword

Grezzo e lento ma funzionante. (credo  :Laughing: )

```

#!/bin/bash

# ARCH -> x86 ppc sparc alpha hppa mips ia64 amd64

ARCH="x86"

#####################

HILITE="\033[1m"

NORMAL="\033[0m"

RED='\E[31;01m'

GREEN='\E[32;01m'

YELLOW='\E[33;01m'

#####################

[ $# -eq 0 ] && echo -e "\nSpecify one or more packages\n" && exit

source /sbin/functions.sh

DONE=1

echo && einfo "Please Wait...\n"

PRELIMINARY_CHECK=`emerge -p $* 2>&1 | grep "no ebuilds to satisfy"`

[ "$PRELIMINARY_CHECK" ] && 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

```

bisogna editare la propria ARCH nel file..

esempio d'uso..

devo smascherare xfce4

./zorro =xfce-base/xfce4-4.1.90

```

root@lyra root # ./zorro =xfce-base/xfce4-4.1.90

 * Please Wait...

 * xfce-base/xfce4 removed Hard Masking

 * xfce-base/xfce4 removed Keyword masking

 * xfce-extra/xfce4-taskbar removed Keyword masking

 * xfce-base/xfce4-base removed Hard Masking

 * xfce-base/xfce4-base removed Keyword masking

 * xfce-extra/xfce4-iconbox removed Hard Masking

 * xfce-extra/xfce4-iconbox removed Keyword masking

 * xfce-base/xfce-mcs-manager removed Hard Masking

 * xfce-base/xfce-mcs-manager removed Keyword masking

 * xfce-base/libxfce4util removed Hard Masking

 * xfce-base/libxfce4util removed Keyword masking

 * xfce-base/libxfce4mcs removed Hard Masking

 * xfce-base/libxfce4mcs removed Keyword masking

 * xfce-base/libxfcegui4 removed Hard Masking

 * xfce-base/libxfcegui4 removed Keyword masking

 * xfce-extra/xfce4-systray removed Hard Masking

 * xfce-extra/xfce4-systray removed Keyword masking

 * xfce-base/xfce4-panel removed Hard Masking

 * xfce-base/xfce4-panel removed Keyword masking

 * xfce-base/xfce-utils removed Hard Masking

 * xfce-base/xfce-utils removed Keyword masking

 * dev-libs/dbh removed Keyword masking

 * xfce-extra/xfce4-trigger-launcher removed Hard Masking

 * xfce-extra/xfce4-trigger-launcher removed Keyword masking

 * xfce-extra/xfwm4-themes removed Hard Masking

 * xfce-extra/xfwm4-themes removed Keyword masking

 * xfce-base/xfwm4 removed Hard Masking

 * xfce-base/xfwm4 removed Keyword masking

 * x11-themes/gtk-engines-xfce removed Keyword masking

 * xfce-extra/xfce4-appfinder removed Hard Masking

 * xfce-extra/xfce4-appfinder removed Keyword masking

 * xfce-base/xffm removed Hard Masking

 * xfce-base/xffm removed Keyword masking

 * xfce-extra/xfcalendar removed Hard Masking

 * xfce-extra/xfcalendar removed Keyword masking

 * xfce-base/xfdesktop removed Hard Masking

 * xfce-base/xfdesktop removed Keyword masking

 * xfce-base/xfce-mcs-plugins removed Hard Masking

 * xfce-base/xfce-mcs-plugins removed Keyword masking

 * xfce-base/xfce4-session removed Hard Masking

 * xfce-base/xfce4-session removed Keyword masking

 * xfce-extra/xfce4-toys removed Hard Masking

 * xfce-extra/xfce4-toys removed Keyword masking

 * xfce-base/xfprint removed Hard Masking

 * xfce-base/xfprint removed Keyword masking

 * xfce-extra/xfce4-icon-theme removed Hard Masking

 * xfce-extra/xfce4-icon-theme removed Keyword masking

 * xfce-extra/xfce4-cpugraph removed Keyword masking

 * xfce-extra/xfce4-windowlist removed Keyword masking

 * Your ebuild is emergeable!

```

----------

## fedeliallalinea

 *xchris wrote:*   

> Dato uno o piu' pacchetti da emerge (con,senza versione) prepara i file package.unmask e package.keyword

 

Vedi il tuo fa anche i pacchetti hard masked il mio no

----------

## xchris

si andrebbe comunque sistemato.. non fa un granche' di controlli.

Utilizza il metodo che si fa manualmente...

e' lento perche' richiama sempre emerge.. fino a quando non e' tutto smascherato...

ciao

----------

## fedeliallalinea

E fare come faccio io, cioe' fare un ACCEPT_KEYWORDS e prendere quei pacchetti da mettere in package.keywords (addirittura ACCEPT piu' path cosi' dovrebbe anche funzionare per gli hard masked)?

----------

## xchris

credo...ma non vorrei dire cavolate..

che con un solo emerge non puoi farlo...

mi spiego..

se dai ACCEPT_KEYWORDS="~x86 -x86" per fare entrambi (forse basta l'ultimo...nn so) cmq ti mette tutte le ultime versioni in assoluto.

zorro tende a mettere il minimo indispensabile per farlo andare (cioe' la versione masked (hard o meno) + bassa)

Diciamo che cosi' e' come faccio io di solito...

ciao

----------

## fedeliallalinea

 *xchris wrote:*   

> se dai ACCEPT_KEYWORDS="~x86 -x86" per fare entrambi (forse basta l'ultimo...nn so) cmq ti mette tutte le ultime versioni in assoluto.

 

Sei sicuro? Probabilmente hai ragione

----------

## xchris

"credo" di si...

purtroppo oggi e' una giornataccia per provare...ma a logica direi di si.

ciao

----------

## fedeliallalinea

 *xchris wrote:*   

> purtroppo oggi e' una giornataccia per provare...ma a logica direi di si.

 

Provo io stasera a vedere se mi ricordo  :Very Happy: 

----------

## mrfree

Azz xchris, mi hai anticipato  :Wink: 

Dopo aver esaminato lo scriptino di fedeli ho notato che effettivamente sarebbe stato meglio seguire un approccio più conservativo, se così si può dire, cioè cercare di minimizzare i pacchetti masked (hard e non) da emergere.

Conto di provare zorro il prima possibile

----------

## xchris

in realta' il tool iniziale e' conservativo...+ di zorro.

Era la eventuale versione modificata ad "avere problemi"...

Unica cosa in + che fa zorro e' quella di gestire anche gli hard masked.

ciao

----------

## xchris

ho aggiornato lo scriptino...

ora e' + veloce perche' per i pacchetti che devono essere smascherati sia hard che keywords viene fatto contemporaneamente.

ciao

----------

## Raffo

sto leggendo il tuo script ed è in codice quello che stavo cercando di fare ieri, maledetto  :Evil or Very Mad:   :Laughing: 

penso che prenderò spunto per completare il mio script....

----------

## fedeliallalinea

 *Raffo wrote:*   

> penso che prenderò spunto per completare il mio script....

 

E se invece aiutiamo xchris a migliorare il suo?

----------

## xchris

se qualcuno vuole completare zorro non ci sono problemi...

basta avere un tool funzionante  :Smile: 

ciao

----------

## Raffo

@fedeli: mah, per quello che volevo fare io lo script di xchris nn va proprio bene, diciamo che punta ad un diverso obiettivo. cmq per me va bene di cercare di migliorare il suo, ma lo sviluppo del mio script andrà avanti in parallelo  :Wink: 

----------

## xchris

direi che se integri quello che fa ora zorro e le altre "misteriose" features... 

bhe aspettiamo il tuo tool  :Smile: 

Vorremmo rilasciare un gekit aggiornato per meta' di sett prox.

Pensi di riuscire?

ciao

----------

## 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

----------

## Raffo

@xchris: meglio il tuo per il gechit fidati  :Laughing:  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  :Very Happy: 

----------

## Raffo

credo di aver finito lo script   :Shocked: 

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  :Very Happy: 

----------

## xchris

posta che siamo curiosi  :Smile: 

----------

## 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  :Laughing:  )...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  :Smile:  ) 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  :Wink: 

```
#!/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  :Very Happy: Last edited by Raffo on Thu Oct 28, 2004 11:50 am; edited 1 time in total

----------

## 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  :Smile: 

Premetto che non ho ancora avuto modo di provarlo.

In mattinata ci faccio un giro  :Wink: 

ciao

----------

## 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 

```
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......

----------

## 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  :Wink: 

```
#!/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  :Very Happy: Last edited by Raffo on Tue Nov 02, 2004 5:39 pm; edited 1 time in total

----------

## fra

ho provato zorro per gnome 2.8, ha funzionato tutto alla grande, grazie xchris   :Very Happy: 

----------

## xchris

bene  :Smile: 

e' un po' lento ma funzica  :Smile: 

ciao

----------

## 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

```
#!/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 

```

----------

## xchris

ottimo!

appena riesco la provo.

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

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

----------

## 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.

----------

## xchris

vecchi nel senso che non sono + utilizzati  :Smile:  (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

----------

## fedeliallalinea

Quindi se non capisco male solo un opzione che rimuove quello che gli dico?

----------

## xchris

no  :Smile: 

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

----------

## fedeliallalinea

Quindi togliere da keywords umask i pacchetti che non sono piu' installati?

----------

## xchris

si  :Smile: 

e' solo una mia necessita'?

se cosi' fosse lascia pure perdere... non vale la pena.

ciao

----------

## fedeliallalinea

 *xchris wrote:*   

> e' solo una mia necessita'?

 

No va benissimo provero' a farlo.

----------

## fedeliallalinea

Volevo farvi notare https://forums.gentoo.org/viewtopic.php?t=251843

----------

## 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  :Wink: 

ciao

----------

## 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)?

----------

## 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à...   :Embarassed: 

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

----------

## xchris

 :Smile: 

```

etcat -v mplayer

```

ciao

----------

## Dhaki

 *xchris wrote:*   

> 
> 
> ```
> 
> etcat -v mplayer
> ...

 

Ecco, lo sapevo...   :Very Happy: 

Grazie

----------

## xchris

di nulla  :Smile: 

ciao

P.S.:Se ti interessa  la programmazione bash/python/perl e' cmq un buon esercizio  :Wink: 

----------

## fedeliallalinea

@xchris: chiudo il post in favore di questo https://forums.gentoo.org/viewtopic.php?t=262354?

----------

## xchris

ok ok  :Smile: 

----------

## fedeliallalinea

Ok in concomitanza con xchris chiudo questo post in favore di  https://forums.gentoo.org/viewtopic.php?t=262354

----------

