# Prelink da rifare ? [risolto]

## Kernel78

Ciao a tutti, seguendo la guida sul prelink non ho capito se quando aggiorno i pacchetti devo prelinkare io a manina o se ci pensa emerge a prelinkare in automatico ...

Sapete dirmi qualcosa ?

----------

## Ty[L]eR

a manina, quando aggiorni i binari e quando aggiorni le librerie ad essi prelinkati (fedora, e forse anke altre distro, hanno un "prelink -amR") nella daily crontab

----------

## Kernel78

Sarebbe più carino che emerge riuscisse a prelinkare da solo ma visto che così non è aggiungerò prelink a cron   :Wink: 

Grazie

----------

## silian87

 *Quote:*   

> Sarebbe più carino che emerge riuscisse a prelinkare da solo ma visto che così non è aggiungerò prelink a cron 
> 
> Grazie

 

Beh... puoi fare un alias a "emerge" che in realta' fa anche il comando che ti serve  :Smile: 

----------

## Kernel78

 *silian87 wrote:*   

>  *Quote:*   Sarebbe più carino che emerge riuscisse a prelinkare da solo ma visto che così non è aggiungerò prelink a cron 
> 
> Grazie 
> 
> Beh... puoi fare un alias a "emerge" che in realta' fa anche il comando che ti serve 

 

ci avevo pensato ma preferisco schedularlo per l'esecuzione notturna visto che:

1)il pc è sempre acceso

2)il prelink sulla mia povera e vecchia macchina impiega un'eternità   :Wink: 

----------

## makoomba

forza, qualcuno tiri fuori uno script che controlla mtime di /var/log/emerge ed esegue prelink solo se ci sono stati emerge dall'ultima esecuzione.

lo farei io, ma sono appena stato colpito da artrite reumatoide...

..innfatki noon risco piiu assc river corttamente

----------

## Kernel78

 *makoomba wrote:*   

> forza, qualcuno tiri fuori uno script che controlla mtime di /var/log/emerge ed esegue prelink solo se ci sono stati emerge dall'ultima esecuzione.
> 
> lo farei io, ma sono appena stato colpito da artrite reumatoide...
> 
> ..innfatki noon risco piiu assc river corttamente

 

 :Laughing: 

Penso che piuttosto che controllare mtime (vengono loggate anche le cancellazioni mi pare) sarebbe più carino sfruttare qualcosa tipo 

```
genlop --list --date 1 days ago
```

----------

## makoomba

```
tail -n 100 /var/log/emerge.log | grep "::: completed emerge" | cut -d: -f1 | tail -n1
```

restituisce il timestamp dell'ultimo emerge completato con successo.

----------

## Kernel78

```
if [ ! `genlop --list --date 1 days ago | wc -l` -eq 0 ]; then prelink -amR; fi
```

 messo in esecuzione giornaliera dovrebbe essere adatto allo scopo (anche se non è il massimo dell'eleganza)

----------

## gutter

 *Kernel78 wrote:*   

> messo in esecuzione giornaliera dovrebbe essere adatto allo scopo (anche se non è il massimo dell'eleganza)

 

Ma è quasi il massimo della semplicità  :Wink: 

----------

## theRealMorpheu5

Gente, ma notate miglioramenti significativi prelinkando? Io ricordo di averlo fatto qualche tempo fa ma, ogni poco, avevo più rogne che guadagni. Sto su un AthlonXP 1700+ con un gigo di ram... non saprei.

----------

## bandreabis

 *makoomba wrote:*   

> forza, qualcuno tiri fuori uno script che controlla mtime di /var/log/emerge ed esegue prelink solo se ci sono stati emerge dall'ultima esecuzione.
> 
> lo farei io, ma sono appena stato colpito da artrite reumatoide...
> 
> ..innfatki noon risco piiu assc river corttamente

 

Occhio, non è che qualcuno ti ha fatto una Makoomba?   :Laughing: 

 :Embarassed: 

----------

## thewally

 *theRealMorpheu5 wrote:*   

> Gente, ma notate miglioramenti significativi prelinkando? Io ricordo di averlo fatto qualche tempo fa ma, ogni poco, avevo più rogne che guadagni. Sto su un AthlonXP 1700+ con un gigo di ram... non saprei.

 

A volte volte sono capitati anche a me dei problemi...  :Sad: 

----------

## Ty[L]eR

io mai avuto problemi (toccatina di palle scaramantica), tuttavia un apprezzabile miglioramento lo si nota ad occhio

----------

## Kernel78

Il mio sistema è lentino di suo (almeno rispetto ai moderni pc), parliamo di un p3 500 con 700mb di ram.

L'avvio di kde è un agonia ma dopo il prelink il miglioramento è netto e di problemi non ne ho mai avuti ...

----------

## Dr.Dran

ehm... non vorrei fare una brutta figura, ma sulla guida generale del prelink nella doc ufficiale sono riportate le seguenti righe:

 *Quote:*   

> In breve
> 
>     * Il prelinking viene effettuato attraverso un programma chiamato, incredibilmente, prelink, che modifica gli eseguibili per farli partire più velocemente.
> 
>     * Se una libreria da cui dipende un'applicazione viene modificata dopo il prelink, è necessario prelinkare nuovamente l'eseguibile, altrimenti si perdono i vantaggi in termini di prestazioni. In altre parole, ogni volta che viene aggiornato con portage un pacchetto che aggiorna delle librerie, è necessario effettuare nuovamente il prelink.
> ...

 

Quindi renderebbe non necessario l'utilizzo di script per prelinkare ogni volta, lo fa già emerge in automatico... almeno così pare da doc ufficiale...

Correggetemi se sbaglio, nche perchè se non fosse così inserisco pure io lo script per il prelinking  :Very Happy: 

Ciauz  :Very Happy: 

----------

## Kernel78

 *DranXXX wrote:*   

> ehm... non vorrei fare una brutta figura, ma sulla guida generale del prelink nella doc ufficiale sono riportate le seguenti righe:
> 
> Quindi renderebbe non necessario l'utilizzo di script per prelinkare ogni volta, lo fa già emerge in automatico... almeno così pare da doc ufficiale...
> 
> Correggetemi se sbaglio, nche perchè se non fosse così inserisco pure io lo script per il prelinking 
> ...

 

L'avevo letto anche io ma non mi è chiaro cosa intenda con "binario prelinkato" e come lo gestisce ?

Significa che se si accorge che un paccheto che vuoi aggiornare è già stato prelinkato e nel caso lo prelinka anche dopo l'aggiornamento ? (questo è quello che mi pare di capire)

In questo caso però se volessi installare un pacchetto nuovo non ci sarebbero "binari prelinkati" ...

Se la guida invece si riferisce al binario di prelink allora lo script è COMPLETAMENTE inutile in quanto ogni pacchetto verrebbe prelinkato automaticamente ...

----------

## Dr.Dran

 *Kernel78 wrote:*   

> Se la guida invece si riferisce al binario di prelink allora lo script è COMPLETAMENTE inutile in quanto ogni pacchetto verrebbe prelinkato automaticamente ...

 

Esattamente hai colto nel segno proprio il dubbio che volevo sollevare e chiarire  :Very Happy: 

Grande kernel78  :Very Happy: 

----------

## Ic3M4n

@DranXXX: beh... hai ragione, però ammettiamolo, non è molto coerente come guida:

 *Quote:*   

> * Se una libreria da cui dipende un'applicazione viene modificata dopo il prelink, è necessario prelinkare nuovamente l'eseguibile, altrimenti si perdono i vantaggi in termini di prestazioni. In altre parole, ogni volta che viene aggiornato con portage un pacchetto che aggiorna delle librerie, è necessario effettuare nuovamente il prelink.

 

 *Quote:*   

> * Non è necessario impostare FEATURES="prelink" in make.conf: Portage si appoggerà automaticamente a prelink se troverà il file binario 'prelinkato'.

 

separando le due indicazioni da te postate si nota una certa incoerenza, ovvero: se la seconda è vera, la prima è inutile. però se la prima è vera e la seconda idem vuol dire che se io ricompilo un programma questo sarà già ri-prelinkato da portage, viceversa, se ricompilo le glibc devo prelinkare nuovamente tutto il sistema. (logicamente è la mia interpretazione di quanto lì scritto.)

----------

## Dr.Dran

@Ic3M4n

Hai effettivamente ragione... sarebbe interessante eventualmente chidere info hai develop di portage... magari questo fine ci provo.... eh eh eh chissa  :Very Happy: 

----------

## makoomba

sono due cose diverse.

portage tiene traccia di md5 e mtime di ogni files/dir installata tramite emerge.

quelle righe (scritte un pò col culo), stanno a significare che vengono tenute in considerazione anche

le modifiche apportate al binario da prelink, quindi successive all'emerge del pacchetto.

----------

## Dr.Dran

Cioè quindi vuoi dire che emerge sa che al  binario è stato applicato il prelink, ma di conseguenza, quando questo binario viene aggiornato come si comporta? non riesegue il prelink vero?

----------

## Ic3M4n

io personalmente non me ne sono mai preoccupato di cosa faccia portage sotto questo aspetto, ho messo in crontab prelink e basta.

----------

## Dr.Dran

Si capisco quello che dici, però per me è anche importante sapere se effettivamente non mi complico la vita facendo fare al sistema una operazione che fa già di su in automatico... tutto qui   :Wink: 

----------

## makoomba

no, il prelink non è automatico.

----------

## Dr.Dran

Benissimo, allora creo un bellissimo script dalla stringa suggerta da te e kernel78  :Very Happy: 

P.S: Ecco era proprio qui dove volevo arrivare   :Very Happy: 

----------

## SteelRage

Ma scusate...

Invece che utilizzare prelink, non sarebbe più elegante/pulito usare delle LDFLAGS nel make.conf?

In tal modo, non è necessario prelinkare di nuovo l'intero sistema ogni volta che si installa una nuova libreria  :Surprised: 

Da quello che ho capito io spulciando un po' di documentazione e post in giro per il forum, prelink e LDFLAGS fanno la stessa cosa (ottimizzano il linking), solo in modi diversi (le LDFLAGS operano in fase di compilazione, prelink lavora sui binari)... 

Giusto?

----------

## Dr.Dran

Certo ho capito quello che vuoi dire, ma lavora essenzialmente in modi differenti, se hai letto anche in giro di solito operare sulle LDFLAGS (cioè sul linker) comporta a volte instabilità ede errori di compilazione dei binari... invece il prelink è molto + sicuro   :Wink: 

----------

## Ic3M4n

 *SteelRage wrote:*   

> Invece che utilizzare prelink, non sarebbe più elegante/pulito usare delle LDFLAGS nel make.conf? 
> 
> In tal modo, non è necessario prelinkare di nuovo l'intero sistema ogni volta che si installa una nuova libreria 

 

è un alternativa ma non funziona per lo stesso motivo che ho scritto sopra... ad ogni aggiornamento di librerie bisognerebbe ricompilare l'intero sistema, invece con prelink è una cosa da 5 minuti. 

mi autoquoto:

 *io, me e me stesso nelle nostre elucubrazioni mentali wrote:*   

>  vuol dire che se io ricompilo un programma questo sarà già ri-prelinkato da portage, viceversa, se ricompilo le glibc devo prelinkare nuovamente tutto il sistema. (logicamente è la mia interpretazione di quanto lì scritto.)

 

solo che usando le LDFLAGS (che operano in fase di compilazione) mi devo ricompilare tutto il sistema.

----------

## makoomba

 *Ic3M4n, lui e se stesso nelle nostre elucubrazioni mentali wrote:*   

> vuol dire che se io ricompilo un programma questo sarà già ri-prelinkato da portage, viceversa, se ricompilo le glibc devo prelinkare nuovamente tutto il sistema. (logicamente è la mia interpretazione di quanto lì scritto.)

 

di nuovo, portage non prelinka nulla in automatico

va fatto sempre manualmente.

----------

## Luca89

Il supporto a prelink in portage consiste nel fatto che portage appena deve eliminare un pacchetto è capace di accorgersi se il pacchetto è stato prelinkato e quindi anche se il checksum che si era calcolato prima dell'emersione non corrisponde eliminerà lo stesso il binario.

----------

## Dr.Dran

 *makoomba wrote:*   

> di nuovo, portage non prelinka nulla in automatico va fatto sempre manualmente.

 

Perdonaci ma è tutta cola dell'howto tradotto in maniera burina... provo a dire qualche cosa a Stefano Rossi del DocTeam   :Very Happy: 

----------

## makoomba

se è per questo, non è chiaro neanche l'howto originale.

cmq, per fugare ogni dubbio in proposito

 *emerge fbset && prelink -nv `which fbset` | grep `which fbset` wrote:*   

> Would prelink /usr/bin/fbset

 

----------

## Ic3M4n

 *makoomba wrote:*   

> 
> 
> di nuovo, portage non prelinka nulla in automatico
> 
> va fatto sempre manualmente.

 

si, scusa... ho ripreso quello che avevo scritto non rileggendo il contesto originale, ovvero una supposizione su quello che c'era scritto nella guida. solo intendevo dire che se utilizzo il prelink questo può essere eseguito con cron ogni giorno, settimana... quanto vuoi e per prelinkare il sistema ci impiego 5-10 minuti, mentre con la soluzione portata da SteelRage ad ogni aggiornamento di una libreria dovrei ricompilarmi tutti i binari a cui tal libreria è collegata, quindi con un incremento notevole delle risorse computazionali per un forse nullo incremento di prestazioni. quindi il gioco non vale la candela.

----------

## makoomba

anche secondo me prelink è più comodo.

ha pure l'undo.

----------

## Ic3M4n

ok... felice di essere riuscito a chiarirmi...   :Wink: 

scusa per l'imprecisione di prima!

----------

