sabato 6 dicembre 2008

Risolviamo il problema della finestra extra di nautilus-gksu e impariamo ad applicare le patch ai pacchetti



 

Qualche tempo fa ho scritto di come aggiungere una comoda voce al menu contestuale di Nautilus che permette di aprire file e cartelle con i diritti di amministratore, se vi foste persi quell'articolo potete andarlo a recuperare qui. In ogni caso il pacchetto nautilus-gksu ha un piccolo problemino che si presenta con Nautilus e con altre applicazioni com Fileroller, nel caso del file manager per esempio se vogliamo aprire una cartella oltre alla cartella desiderata di aprirà sempre con diritti di amministratore anche la Home.

Ora per carità, non che sia la fine del mondo questa cosa ma nell'uso quotidiano risulta essere particolarmente fastidiosa, non a caso il bug è stato segnalato e è stata anche proposta una patch che funziona benissimo (LP: #252633) ma che non è stata ancora applicata nel pacchetto presente nei repository ufficiali. Quindi quale occasione migliore per correggere un problema e allo stesso tempo imparare ad applicare una patch ad un pacchetto? Questa operazione è molto comune se vi capita di andare in giro per launchpad alla ricerca di una soluzione a qualche fastidioso bug. Ora non è che vi mostrerò come si scopre la luna, le istruzioni che sto per dare sono molto banali e comuni ma, come ho detto altre volte, questo spazio mi serve anche per tenere nota delle cose che faccio per riutilizzarle quando mi servono.

Possiamo quindi cominciare, sono due le operazioni preliminari importanti: prima di tutto abilitate nel vostro sources.list i repository con i file sorgente, la stessa operazione la potete farlo aprendo Sorgenti Software che sta sotto Sistema/Amministrazione; come seconda cosa createvi un po' dove vi pare una cartella con un nome qualsiasi, io ho creato la cartella nautilus-gksu nella Home.

 

 

Installiamo ora gli strumenti che ci serviranno per fare tutti i lavoretti, si apre il terminale e si lavora da lì che è più rapido. Quindi per prima cosa usiamo questo comando

sudo apt-get install build-essential fakeroot devscripts

 

Portiamoci ora nella cartella che abbiamo creato precedentemente (nautilus-gksu per esempio)

cd nautilus-gksu

 

Scarichiamo ora la patch che è stata postata nella pagina di segnalazione del bug

wget http://launchpadlibrarian.net/16363176/libnautilus-gksu.c.patch

 

Ora ci tocca scaricare i file sorgente del pacchetto che vogliamo andare a modificare

apt-get source nautilus-gksu

 

Ora bisogna installare le librerie che ci serviranno per ricompilare dai file sorgente

sudo apt-get build-dep nautilus-gksu

 

Siamo quasi pronti ad applicare la patch, prima però dobbiamo recarci nella cartella dove si trova il file che vogliamo cambiare, nel nostro caso abbiamo bisogno della cartella nautilus-gksu che è una sottodirectory di gksu-2.0.0, tutta questa roba la trovate all'interno della cartella creata precedentemente ed è stata creata quando sono stati scaricati i sorgente

cd gksu-2.0.0/nautilus-gksu

 

Applichiamo ora la patch stando bene attenti a inserire senza errori il percorso del file patch che abbiamo scaricato

patch -p1 < /home/NOMEUTENTE/nautilus-gksu/libnautilus-gksu.c.patch

 

Non resta altro da fare se non ricostruire il pacchetto per averne una versione patchata e senza il fastidioso bug, prima di fare questo tornate alla cartella superiore e cioè gksu-2.0.0, dopodiché continuate con questo comando

debuild -uc -us

 

 

Se non avete fatto cazzate fino ad ora tutto andrà nel migliore dei modi e il risultato sarà quello di ottenere un bel pacchetto .deb da installare con un semplice doppio clic oppure se ci avete preso la mano con il terminale con sudo dpkg -i NOMEPACCHETTO avendo l'accortezza di tornare alla cartella superiore, quella che avete creato all'inizio. Questa è tutta la procedura, lunghetta ma utile per imparare un po' di cose oltre che per risolvere il bug in questione, ora però arriva il momento della finezza, una cosa utile ma non fondamentale che però fa figo. Il pacchetto che abbiamo creato in pratica ha lo stesso nome e lo stesso numero di versione di quello disponibile sui repository, questo fa si che il gestore aggiornamenti ci segnali la presenza di un'altra versione e ci intimerà di installarla, possiamo non farlo ma avremo sempre la maledetta icona nella tray. Ci sono due soluzioni per ovviare a questo o si blocca il pacchetto alla versione installata oppure al momento di creare la nostra versione patchata far sì di costruire un pacchetto con una versione superiore. La prima strada la si può percorrere da Synaptic (a me non funziona) o da linea di comando (a me funziona) in questo modo:

sudo dpkg --set-selections
nautilus-gksu hold
CTRL-D

 

Per sbloccarlo di nuovo seguite la stessa procedura e scrivete install al posto di hold. La seconda strada è più figa e in fondo in fondo anche più facile. In pratica prima di eseguire il comando debuild ma dopo esservi portati nella cartella gksu-2.0.0 digitate

dch -i

 

Vi si proporrà la scelta di un editor di testo, scegliete il numero 3, nano, e vi si aprirà il file debian/changelog già opportunamente modificato con l'aggiunta delle righe per l'avanzamento di versione, nel nostro caso uscirà qualcosa di questo tipo

gksu (2.0.0-5ubuntu4) jaunty; urgency=low

*

-- NOMEUTENTE Sat, 06 Dec 2008 17:15:05 +0100

gksu (2.0.0-5ubuntu3) hardy-proposed; urgency=low

* debian/patches/20_move_to_extensions-2.0.patch,
debian/rules:
- Move libnautilus-gksu.so to the new extensions dir in Nautilus
(LP: #201462)

 

Salvate con CTRL-O e uscite con CTRL-X, quindi potete fare finalmente debuild -uc -us.

In questo modo otterrete un pacchetto più nuovo di quello presente nei repository e non vi verrà segnalato come aggiornabile. Come ultima abbiate la decenza di pulire un po' dopo il casino che avete fatto cancellando la cartella nautilus-gksu e tutto il suo contenuto e dando un bel sudo apt-get autoremove fakeroot build-essential devscripts per disinstallare tutta la roba che vi è servita per la compilazione.
Buone cose.

Nessun commento:

Posta un commento