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