# FG19: Come usare correttamente portage

## GianX

Navigazione: [ back FG18: Come vengono lette le USE flags?  ]   [ next FG20: Emerge fallisce dopo l'aggiornamento di gcc  ]   [ Fondamenti Gentoo ]   [ Indice ]

Come usare correttamente portage

Questa è  la versione tradotta in italiano da:

https://forums.gentoo.org/viewtopic.php?t=171464

di gaMMa

1. INTRODUZIONE:

Il sistema di portage di Gentoo è una risorsa eccellente se usata correttamente. L'uso errato può portare ad un sistema pieno di inconsistenze, con  pacchetti non rintracciabili, e un file world corrotto. Seguendo questa guida si  otterrà un sistema piu' pulito.

2. FARE EMERGE DEI PACCHETTI

Quando si vuole fare un emerge di un pacchetto instabile è raccomandato usare il comando

```
# emerge  foo
```

Non usate ACCEPT_KEYWORDS="~x86" perche' questo emergerà dipendenze con ~x86 indesiderate.

Si raccomanda di tentare di emergere l'ebuid prima, e se dovesse risultare instabile, procedere in modo opportuno. Una volta risolto, tentare di riemergere il pacchetto il quale potrebbe richiedere una dipendenza. Soddisfatta la dipendenza,  provare ad emergere di nuovo il pacchetto. Continua a ripetere questa procedura fino ad emergere il pacchetto.  Può  sembrare una paranoia, ma almeno sai che cosa è installato nel tuo sistema e anche i pacchetti instabili. Al massimo si puo' scaricare lo script forcekeymask che fa questo lavoro automaticamente.

AVVERTIMENTO: Emergere direttamente un ebuild (emerge foo.ebuild) ha causato i problemi per alcuni utenti, per cui  non si dovrebbe fare. In alcune situazioni  emerge non aggiunge i pacchetti al profilo world. Inoltre  così facendo all'utente non sararanno comunicate le nuove release instabili di questo pacchetto, sebbene contengano seri problemi di sicurezza.

3. MANTENIMENTO DEI PACCHETTI

A volte quando si lancia  "emerge -u world"  (l'opzione -U e' deprecata non utilizzatela) portage tenta un downgrade dei pacchetti. Per rendere "unmasked" i pacchetti in modo che portage non faccia il downgrade creare la directory /etc/portage se non lo si è già fatto.

```
# mkdir/etc/portage
```

All'interno del file /etc/portage/package.keywords aggiungere il nome completo del pacchetto seguito da ~x86. Per esempio per fare accettare al portage  ebuilds instabili di Gaim inseriamo la riga

```
# echo net-im/gaim ~x86 >> /etc/portage/package.keywords
```

Ripetere questa procedura per tutti i pacchetti instabili per i quali non si vuole il downgrade.

Possiamo anche accettare le versioni instabili specifiche per un determinato pacchetto, in modo che quando esce la versione instabile successiva, il sistema non eseguirà laggiornamento automatico di quel pacchetto. Questo si realizza con il seguente comando:

```
# echo =app-misc/foo-version ~x86 >> /etc/portage/package.keywords
```

La linea sopra indica che verrà emersa soltanto una versione specifica del pacchetto.

Tuttavia, le nuove versioni saranno ancora ~arch masked. Per permettere ad  ulteriori versioni di essere marcate come stabili oltre alla versione specifica, usare la seguente riga:

```
# echo app-misc/foo ~x86 >> /etc/portage/package.keywords
```

NOTA: E più facile tenere aggiornata la lista dei pacchetti se sono messi in ordine alfabetico.

AVVERTIMENTO: Usando  "emerge -U  world" si possono avere problemi nel sistema per cui non si dovrebbe usare. Earthwings ne parla qui:  

https://forums.gentoo.org/viewtopic.php?t=167323

Tuttavia, a volte il portage tenta ancora di fare il downgrade di un pacchetto. Generalmente, se questo accade c è un motivo valido, per cui è meglio farlo. Ci sono comunque delle eccezioni; per esempio gli headers del kernel  hanno tentato di tornare a 2.4.x quando ho compilato un kernel 2.6.x. 

Gli headers del kernel  sono l'unico caso in cui si dovrebbe usare questo metodo, gli altri dovrebbero usare il metodo precedente o  fare il downgrade.

In /etc/portage/package.keywords aggiungiamo una linea oppure

```
# echo sys-kernel/linux-headers - * >> /etc/portage/package.keywords
```

Dei pacchetti  a volte cercano di reinstallarsi nel sistema  sebbene non siano necessari. Gli utenti di xorg-x11 possono notare infatti che xfree prova a reinstallarsi (non piu' vero ora perche' xfree non esiste piu' nel portage-tree ma come esempio va bene). Per ovviare a questo, in /etc/portage/package.mask si aggiunga la riga: 

```
# echo x11-base/xfree >> /etc/portage/package.mask
```

Inoltre i pacchetti  di tanto in tanto sono hard masked . Un esempio è realone.  Il fatto che sia hard masked è dovuto al fatto che c è una falla di sicurezza, che potrebbe compromettere la stabilità del sistema.

Se per qualche motivo si desidera  usare  realone comunque, si usa il file package.unmask creando il file /etc/portage/package.unmask e dando questo comando:

```
# echo media-video/realone >> /etc/portage/package.unmask
```

Inoltre se non si vuole che un pacchetto includa una particolare USE flag si usano i package.use. Creare  /etc/portage/package.use e inserire una funzione come questa da terminale:

```
#echo net-p2p/bittorrent -X >> /etc/portage/package.use
```

Questo dice  al portage di non includere il supporto di X quando emerge bittorrent.

Ogni tanto si ha la necessita' di fare crede a portage che un pacchetto e' installato anche se realmente non lo e'. Questo una volta veniva fatto con l'opzione -i che e' deprecata ora. Se si vuole fare questo create il file /etc/portage/profile/package.provided (anche la cartella profile se non esiste ancora) e dante questo comando

```
# echo app-misc/foo-version >> /etc/portage/profile/package.provided
```

Questo puo' risultare utile durante un aggiornamente e magari non si vuole scaricare il kernel nuovo.

NOTA: package.provided non funziona esattamente come -i. Se si mette un pacchetto li e poi si tenta di installarlo portage dira' che non e' installato, ha solo effetto sulle dipendenze.

4. MAINTAINIG DEL PROFILO WORLD

A volte i pacchetti non vengono aggiunti al profilo world per un motivo. Per [ tentare ] di riparare il profilo world ed aggiungere  pacchetti digitare:

```
# regenworld
```

C è un altro thread che dà  informazioni su come riparare il profilo world se regenworld non dovesse funzionare:

https://forums.gentoo.org/viewtopic.php?t=136627

5. CONCLUSIONE:

Usando questo metodo  'emerge -u world'  si adatterà alla vostre necessità e si avrà un sistema integrato di pulizia.

```
#emerge -uDav world
```

È il modo migliore per aggiornare lintero sistema. la 'u' sta per upgade, la 'D' sta deep , 'a' sta per ask e la 'v' sta per verbose, e dice alle USE flag  che saranno usate in ogni pacchetto.

Si consiglia di provare lo script di ecatmur's cruft  per mantenere il sistema accurato e pulito!

https://forums.gentoo.org/viewtopic.php?t=152618

oppure anche lo script di xchris

https://forums.gentoo.org/viewtopic.php?t=249828

APPENDICE: Come usare un ebuild esterno

Pre prima cosa editate il vostro make.conf e aggiungete la linea (se avete gia' questo potete saltare al prossimo punto)

```
PORTDIR_OVERLAY="/usr/local/portage"
```

A questo punto creiamo le cartelle dove va messo il nostro ebuild esterno

```
# mkdir -p /usr/local/portage/<category>/<package name>
```

NOTA: il nome della categoria DEVE esistere nel portage-tree ufficiale. <package name> deve avere lo stesso nome dell'ebuild ma senza versione

A questo punto copiate il vosto ebuild nella cartella appena creata con il nome del programma e versione (es: mypackage-1.0.ebuild). A questo punto date il comando

```
# ebuild /usr/local/portage/<category>/<package name>/mypackage-1.0.ebuild digest
```

Ora siete pronti per mergiare il paccetto con

```
# emerge mypackage
```

NOTA: Se il programma e' mascherato usate i vari package.* per smasherarlo come indicato nei punti precedenti

IMPORTANTE: Solitamente questa procedura funziona ma e' possibile che ebuild scrittti male causino problemi al vostro sistema, quindi fate questo a vostro rischio e pericolo

per ogni revisione o aggiunta contattatemi. Potrebbe sembrare stupido, ma sareste sorpresi se sapreste quante persone usano male il portage.

Ringrazio quanti hanno contribuito  a questa guida e hanno trovato gli errori in questo procedimento  le vostre email e i vostri messaggi hanno contribuito a rendere la guida quello che è.

ChangeLog

28/01/2005 Revisione e correzione del testo -- fedeliallalinea

26/02/2005 Agginta appendice "come usare un ebuild esterno" -- fedeliallalinea

----------

## JacoMozzi

Bello  :Very Happy: 

Solo un appunto visto che é scritto un po' di volte in modo errato: é echo e non eco  :Wink: 

Ciao

Jaco

----------

## randomaze

Ottimo.

Due critiche (piccoline... hai fatto un ottimo lavoro):

1. Se usi il BB Code per colorare/ingrandire i titoli dei paragrafi il post tende alla perfezione.

2. Che codifica dei caratteri stai usando? Perché io vedo tanti punti interrogativi quà e la....

----------

## fedeliallalinea

 *randomaze wrote:*   

> 1. Se usi il BB Code per colorare/ingrandire i titoli dei paragrafi il post tende alla perfezione.

 

Fatto io  :Very Happy: 

 *randomaze wrote:*   

> 2. Che codifica dei caratteri stai usando? Perché io vedo tanti punti interrogativi quà e la....

 

Penso la iso normale (15) visto che io vedo

@GianX: Ottimo lavoro grandissimo  :Very Happy: 

----------

## _sys/sid

 :Rolling Eyes: 

----------

## randomaze

 *fedeliallalinea wrote:*   

> Penso la iso normale (15) visto che io vedo

 

Mah io con il windze del lavoro li vedo  :Sad: 

----------

## fedeliallalinea

Come mai ha perso il codice phpbb messo da me?

----------

## emix

@fedeliallalinea: credo che GianX stia editando il post, quindi siete in concorrenza  :Wink: 

----------

## fedeliallalinea

Riesumo questo post e lo metto come sticky perche' mia pare che molta gente non conosca ancora bene le nuove funzionalita' di portage relativa ai file package.*. Buona lettura

----------

## flocchini

 *GianX wrote:*   

> 
> 
> Quando si vuole fare un emerge di un pacchetto instabile è raccomandato usare il comando
> 
> ```
> ...

 

Signifca in pratica di usare dipendenze stabili finche' si puo' anche per emergiare un pacchetto stabile, evitando di mettere ACCEPT_KEYWORDS in prima battuta... Ho capito giusto? Secondo me non e' cosi' chiaro (o magari sono tonto io  :Smile:  )

Poi un appuntino, alla fine (sn un rompiscatole, lo so  :Very Happy: )

 *GianX wrote:*   

> 
> 
> Potrebbe sembrare stupido, ma sareste sorpresi se sapreste quante persone usano male il portage.

 

Ovviamente immagino sia un refuso, pero' mi viene il mal di pancia a leggerlo  :Wink: 

Davvero utile comunque, anche se conoscevo gia' queste funzioni il post mi era sfuggito.

----------

## wildancer

Una domanda stupida... ma

```
emerge --newuse world
```

 Ricompila solo i programmi sensibili alle use cambiate?

----------

## gutter

Solo quelli nel world.

Per ricompilare pure le dipendenze usi:

```
emerge --newuse -Du world
```

----------

## fedeliallalinea

 *flocchini wrote:*   

> Signifca in pratica di usare dipendenze stabili finche' si puo' anche per emergiare un pacchetto stabile, evitando di mettere ACCEPT_KEYWORDS in prima battuta... Ho capito giusto? Secondo me non e' cosi' chiaro (o magari sono tonto io  )

 

Si esatto ma altre a questo mi pare che ACCEPT_KEYWORDS possa creare casini nel world file

----------

## oRDeX

Gran bel lavoro   :Very Happy: 

----------

## xoen

Ci voleva  :Wink: 

Così forse ci saranno meno post *strani* sul'uso di portage  :Wink: 

----------

## mouser

 *xoen wrote:*   

> Ci voleva 
> 
> Così forse ci saranno meno post *strani* sul'uso di portage 

 

Quoto!

Anche se credo che un conto e' metterlo in rilievo, un conto e' leggerlo  :Rolling Eyes: 

Comunque ottimo lavoro!

Ciriciao

mouser  :Wink: 

----------

## ProT-0-TypE

ottima guida! magari se qualcuno ne ha voglia può aggiungere la spiegazione alle altre funzioni di emerge per far diventare questo post la bibbia del portage   :Embarassed: 

----------

## fedeliallalinea

 *ProT-0-TypE wrote:*   

> ottima guida! magari se qualcuno ne ha voglia può aggiungere la spiegazione alle altre funzioni di emerge per far diventare questo post la bibbia del portage  

 

Beh man portage e man emerge . Comunque le funzioni assolutamente da sapere sono quelle, meglio che gli utenti imparino bene queste. Aggiungerne altre allungherebbe il post e rendendolo non molto leggibile a tutti

----------

## Lucacri

Bellissima guida, davvero ottima! Una sola cosa: come faccio a far si che il mio sistema sia tutto "unstable", ovvero che mi faccia un emerge -Du world e mi agigorni il sistema senza dover dare ACCEPT_KEYWORDS nella riga di comando?

----------

## luna80

 *Lucacri wrote:*   

> Bellissima guida, davvero ottima! Una sola cosa: come faccio a far si che il mio sistema sia tutto "unstable", ovvero che mi faccia un emerge -Du world e mi agigorni il sistema senza dover dare ACCEPT_KEYWORDS nella riga di comando?

 

mmmm   :Rolling Eyes:  non credo se sia una bella idea...

----------

## lavish

 *Lucacri wrote:*   

> Bellissima guida, davvero ottima! Una sola cosa: come faccio a far si che il mio sistema sia tutto "unstable", ovvero che mi faccia un emerge -Du world e mi agigorni il sistema senza dover dare ACCEPT_KEYWORDS nella riga di comando?

 

Aggiungi in /etc/make.conf

```

ACCEPT_KEYWORDS="~<tua_arch>"

```

----------

## randomaze

Segnalo che questo post é stato riportato anche nel gentoo italia wiki: qui.

Quindi chi vuole modificare e/o correggere qualcosa basta che faccia il login nel wiki e si metta ad editare  :Smile: 

----------

## fedeliallalinea

 *Lucacri wrote:*   

> Bellissima guida, davvero ottima! Una sola cosa: come faccio a far si che il mio sistema sia tutto "unstable", ovvero che mi faccia un emerge -Du world e mi agigorni il sistema senza dover dare ACCEPT_KEYWORDS nella riga di comando?

 

Se te la senti fai come dice lavish ma attento perche' potresti avere molti problemi. Anche se non metti l'instabile sei aggiornatissimo comunque con i pacchetti, non e' come una debian

----------

## Lucacri

Ho visto pero che ci sono alcuni pacchetti (tipo XML_TV) che sono molto vecchi nel portage (es: la versione .34 che è di maggio 2004 mentre sono gia arrivati alla .38 di gennaio 2005)! Come posso fare ad aggiornarli maggiormente?

----------

## shev

 *Lucacri wrote:*   

> Ho visto pero che ci sono alcuni pacchetti (tipo XML_TV) che sono molto vecchi nel portage (es: la versione .34 che è di maggio 2004 mentre sono gia arrivati alla .38 di gennaio 2005)! Come posso fare ad aggiornarli maggiormente?

 

Semplicemente installi le versioni masked *solo* dei pacchetti che realmente ti servono aggiornati all'ultima versione. Per "come fare", basta che leggi il primo post. Avere l'intero sistema masked non è consigliato, a meno che si sappiano risolvere da soli i problemi o si voglia dare una mano ai developer. Per intenderci, se hai l'intero sistema masked non venire poi qui a chiedere perchè non va l'ebuild pippo o come mai non si riavvia più la tua macchina: fa parte del gioco e del concetto stesso di pacchetto masked  :Smile: 

----------

## mouser

 *fedeliallalinea wrote:*   

> Se te la senti fai come dice lavish ma attento perche' potresti avere molti problemi. Anche se non metti l'instabile sei aggiornatissimo comunque con i pacchetti ...

 

Quoto in pieno.... ho un amico che aveva installato una gentoo completamente unstable  :Rolling Eyes:  ..... dopo qualche giorno ha ricominciato con lo stage1 smascherando solo cio' che gli serviva veramente! E' la cosa migliore!

 *fedeliallalinea wrote:*   

> 
> 
> ... non e' come una debian
> 
> 

 

 :Twisted Evil:  come si fa' a non quotare?  :Laughing: 

mouser  :Wink: 

----------

## fedeliallalinea

 *mouser wrote:*   

>  *fedeliallalinea wrote:*   ... non e' come una debian
> 
>  
> 
>  come si fa' a non quotare? 

 

Non interpretate male ho tutto il rispetto per debian ma si sa che la stable a pacchetti molto vecchi. Solo questo volevo intendere

----------

## mouser

 *fedeliallalinea wrote:*   

> Non interpretate male ho tutto il rispetto per debian ma si sa che la stable a pacchetti molto vecchi. Solo questo volevo intendere

 

lo so, volevo solo essere un po' lolloso.

Ciauz

mouser  :Wink: 

----------

## xdarma

per quanto riguarda l'aggiornamento del sistema completo, oltre a:

emerge -uDav world

non potrebbe essere utile aggiungere il flag -c per ripulire "completamente" il sistema dai vecchi pacchetti obsoleti gia' aggiornati ma non disinstallati?

per esempio per disinstallare kde_3.1 dopo che hai installato kde_3.3

o sbaglio?

xdarma

----------

## silian87

 *Quote:*   

> per quanto riguarda l'aggiornamento del sistema completo, oltre a:
> 
> emerge -uDav world
> 
> non potrebbe essere utile aggiungere il flag -c per ripulire "completamente" il sistema dai vecchi pacchetti obsoleti gia' aggiornati ma non disinstallati?
> ...

 

Beh... l'AUTOCLEAN e' impostato su "yes" da parecchio tempo ormai... io mi ricordo di averlo visto su "no" solo su gentoo 1.2... quindi almeno che non si sta usando un sistema cosi' vecchio non vedo la necessita'.

 *Quote:*   

>  Note that --clean does
> 
>               not remove unslotted packages.
> 
> 

 

Ad occhio e croce, se il mio inglese non mi inganna   :Embarassed:  , credo di aver capito che emerge -c non toglie i pacchetti installati su slot diversi (ed effettivamente anche al rigor di logica), quindi anche nel caso di kde3.1 e 3.3 (che dovrebbero essere su slot diversi),  emerge non togliera' la versione su slot diverso del pacchetto, e lasciera' tutti e due i kde...

----------

