# Gentoo primi passi

## luivm

Ciao a tutti, ho 2 domande per gli esperti di questo forum : 

premesso che ho sempre avuto a che fare con distribuzioni con pacchetti precompilati (centos,redhat,debian,ubuntu,etc). mi sono trovato a dover installare un modulo per Apache per un server Gentoo.

Ho modificato le flags, ricompilato php e tutto ok, ma mi sono chiesto : perchè su gentoo mi devo ricompilare tutto il php per aggiungere un modulo che con altre distribuzioni installi facilmente con un comando ? Ci deve essere qualche differenza sicuramente, e se c'è c'è una differenza di prestazioni ?

Poi volevo sapere, come faccio a fare un pin di una ebuild, esempio vorrei lasciare la mia versione di php invariata.

Grazie a tutti

----------

## Onip

 *luivm wrote:*   

> ma mi sono chiesto : perchè su gentoo mi devo ricompilare tutto il php per aggiungere un modulo che con altre distribuzioni installi facilmente con un comando ? Ci deve essere qualche differenza sicuramente, e se c'è c'è una differenza di prestazioni ?
> 
> 

 

la differenza sta nel fatto che la compilazione negli altri casi se la smazza il developer che poi spezza "il compilato" in uno o più pacchetti a seconda dei casi. Il pacchetto che installi con un comando (semplicisticamente) ti fa scaricare e installare alcuni dei file (in questo caso librerie .so dei moduli) che sono il risultato della compilazione dell'intero pacchetto.

Per le differenze di prestazioni... queste dipendono da una miriade di fattori, ad esempio flags e versione del compilatore, ma non solo quindi non è per niente facile darti una risposta. Diciamo che in generale, a parità di tutto il resto (compilatore, impostazioni, sistema, ...), installare da un pacchetto precompilato o compilare sul sistema non cambia assolutamente niente.

 *luivm wrote:*   

> 
> 
> Poi volevo sapere, come faccio a fare un pin di una ebuild, esempio vorrei lasciare la mia versione di php invariata.
> 
> 

 

semplicemente mascheri tutte le versioni superiori aggiungendo una linea opportuna in /etc/portage/package.mask in questo modo portage non ti chiederà mai un aggiornamento a meno che non sia richiesto come dipendenza di qualche altro pacchetto. È consigliabile, però, eseguire gli upgrade di revision, quelli identificati dalla stessa versione di pacchetto, ma da una maggiore revision (-r3) in quanto indicano una versione nuova dell'ebuild che, probabilmente, risolve qualche problema. I dettagli li trovi nel Changelog disponibile nella directory corrispondente al pacchetto nell'albero di portage.

----------

## luivm

Rimango sempre piacevolmente sorpreso dalle competenze e dalle conoscenze in generale di chi usa gentoo.

Questa cosa mi sta facendo riflettere e mi si sta aprendo un mondo.

Grazie per la risposta

----------

## djinnZ

 *luivm wrote:*   

> centos,redhat

   :Evil or Very Mad:  non è che siano dei buoni esempi. Mi correggo sono ottimi esempi ... di monnezza *luivm wrote:*   

> perchè su gentoo mi devo ricompilare tutto il php per aggiungere un modulo che con altre distribuzioni installi facilmente con un comando ?

 Emerge non fa altro che scaricare i sorgenti, lanciare il make configure od il ./configure o quel che è con determinati parametri in base alle use flag e gli altri make qualcosa e make install.

In realtà si era parlato di salvare la dir di compilazione per riutilizzarla ma non se ne è fatto niente perché comunque quando chiami il ./configure od altro viene sempre ricompilato tutto, è un limite dei pacchetti (ed in particolare dei make) difficilmente risolvibile.

Nelle binarie invece si compilano tutti i moduli e vengono salvati su pacchetti separati, poi li installi.

Verificare che non vi siano dipendenze incomplete è un lavoraccio che fanno solo le distribuzioni binarie.

Il principale beneficio di gentoo rispetto a debian (parliamo di distribuzioni serie, non serve sparare sulla croce rossa) è che, se ti serve un pacchetto instabile, non devi per forza passare alla versione instabile dell'intero sistema o dell'intero albero delle dipendenze (come generalmente e giustamente raccomandato su debian e sconsigliato su gentoo, da chi ne capisce, non dai bimbiminkia).

Devi smascherare solo lo stretto indispensabile, il minimo.

Di contro ti ritrovi con un mutuo a tasso variabile sulle spalle per pagare la bolletta dell'enel.

 *luivm wrote:*   

> fare un pin    di una ebuild, esempio vorrei lasciare la mia versione di php invariata

 Non capisco che vuoi dire, per prevenire l'installazione di nuove versioni stabili di un pacchetto si usa /etc/portage/package.mask ma è una pratica da prender con "le molle". Se ti tiferisci agli aggiornamenti alle versioni -rqualcosa è sempre la stessa versione di php ma è stato corretto qualcosa nell'ebuild o è stata aggiunta una patch specifica per prevenire incompatibilità (è una correzione "interna" a gentoo) o crash (quindi è il caso di farla).

Ovviamente devi mantenere d'occhio lo sviluppo per non trovarti con pacchetti rimossi dal portage tra i piedi da un giorno all'altro.

PHP è un pacchetto "slotted" ovvero è stato modificato per consentire a versioni diverse di rimanere installate.

Se invece il tuo problema e voler mantenere il 5.3 installato il più a lungo possibile e sempre presente anche quando il 5.4 sarà stabile, senza rischio che un emerge --depclean te lo pialli devi aggiungere lo "slot" a world 

```
emerge -n dev-lang/php:5.3
```

come si dovrebbe fare per i kernel, normalmente.

edit:non avevo visto che onip aveva già risposto.

----------

## bi-andrea

luivm questo me lo sono chiesto pure io in RedHat/Fc e ho notato che se parti dai rpm sorgenti (*.SRPM), se li compili noterai che è il sorgente con un'istruzione sotto forma di scipt e rpm ti crea spesso più pacchetti rpm, porpio perchè il progetto viene troncato in più parti e se usando yum fai degli aggiornamenti, ti sarai accorto, che non tutti i pachetti del progetto vengono aggiornate.

In Gentoo è diverso perchè il progetto viene compilato per intero e a secondo di come viene impostato configure, installa una parte o completo e purtroppo come ogni cosa compilata va ripresa per intero, usando la tripletta ./configure-make-make install prima di usare Gentoo...comunque penso che a livello di moduli non viene preso tutto il World, ma solo dipendenze che chiede world

----------

