# Appliccare una patch

## maruscya

Ciao a tutti.

sto usando da qualche tempo zabbix per monitorare alcuni server. Oggi ho scoperto un bug e dal forum di zabbix e' stato consigliato di applicare una patch e ricompilare il tutto. 

Ora... emerge si preoccupa di fare tutto per me (Grande!!)... ma come faccio ad applicare la patch al file incriminato ? Scompatto il tar.gz che scarica emerge e a mano estraggo il contenuto , modifico il file e ricompatto tutto  ??

Una cosa del tipo

1- emerge -f zabbix

2- scompatta tar.gz

3- applica patch

4- ricompatta il tutto i tar.gz

5- emerge zabbix ?

O esiste un metodo piu' pulito ???

Grazie mille a tutti 

Intanto provo cosi... su una postazione di test va  :Smile: 

MaruscyA

----------

## .:deadhead:.

Naah falla pulita: guarda come si fa a far applicare la patch direttamente da portage e poi modifica l'ebuild come si deve.

Curl ad esempio viene patchato: prendi esempio da lì.

Inoltre una cosa utile potrebbe esser quella di spostare una copia dell'ebuild modificato sotto /usr/local/portage o dove avete avete specificato nel make conf.

iauz

----------

## falko

 *maruscya wrote:*   

> 
> 
> 3- applica patch
> 
> 4- ricompatta il tutto i tar.gz
> ...

 

Scusate l'ignoranza....

Ma emerge non dovrebbe fare un controllo MD5 prima di installare un ebuild?

Applicando la patch verrebbe sicuramente modificato!

----------

## .:deadhead:.

 *falko wrote:*   

> Scusate l'ignoranza....
> 
> Ma emerge non dovrebbe fare un controllo MD5 prima di installare un ebuild?
> 
> Applicando la patch verrebbe sicuramente modificato!

 

Ovviamente, infatti a seguire il procedimento un po' contorto sopra esposto ti troveresti a dover rigenerare l'md5 del pacchetto , salvato nel Manifest, lì dove è anche presente l'ebuild.

Facendolo alla Gentoo way, tramite epatch e creando un nuovo ebuild, dovrai sempre ricreare il Manifest ma l'md5 nuovo verrà calcolato solo dell'ebuild.

Per maggiori informazioni vi rimando all'ottima Gentoo Developer Guide, in particolare al primo capitolo.

----------

## djinnZ

altimenti installa il vecchio bashrcng ed attiva il modulo autopatch

----------

## maruscya

Grazie a tutti per le risposte.

Intanto confermo che la modifica fatta a mano non serve a nulla.... emerge fallisce il controllo dell MD5 e riscarica il file originale. Credo che per questo caso, usero il pacchetto tar.gz originale scaricato dal sito del produttore. Il prodotto ha diverse patch che devono essere applicate. 

Devo fare queste modifiche sembrerebbe in modo frequente, percui seguiro' la procedura standard del prodotto... ovvero applica patch e ricompila... 

Grazie Mille per la collaborazone di tutti...

AndreA

----------

## Onip

e certo che l'md5 si scombina, l'hai modificato.

la soluzione è (se non vuoi proprio modificare una riga di ebuild) spostarsi l'ebuild in overlay e dare in alternativa

```

# ebuild tuo_ebuild digest

# emerge tuo_pacchetto

```

oppure tutto insieme con

```
# emerge --digest tuo_pacchetto
```

Ritengo, tuttavia, che la soluzione più semplice sia di mettersi l'ebuild in overlay, modificandolo aggiungendo un bell'

```
epatch ${FILESDIR}/patch_da_applicare
```

dove serve (cioè alla fine del src_unpack())

dare il digest dell'ebuild ed emergerselo. in questo modo ad ogni patch basterà aggiungere una riga all'ebuild e il sorgente rimarrà sempre quello (cioè potrai riscaricarlo tranquillamente dai mirror senza perdere tutto il lavoro già fatto)

In gentoo (anche per questioni di path vari) è sempre meglio affidarsi ad un ebuild, imho.

----------

