mercoledì 22 luglio 2009

Compilare QtOctave 0.8.2

Dopo aver compilato GNU Octave 3.2.2 ho compilato un programma che fornisce un'interfaccia grafica per Octave: QtOctave. La versione che ho scaricato è l'ultima disponibile a oggi, la 0.8.2, rilasciata poche settimane dopo la versione 3.2 di GNU Octave.

Anche in questo caso consiglio a chi non può o non vuole compilare questi programmi di scaricare i pacchetti precompilati per Ubuntu di Octave 3.2 + QtOctave 0.8.2 dal sito http://tobal.cymaho.com/?p=920.

L'URL per scaricare i sorgenti di QtOctave può essere trovato a questo indirizzo: http://qtoctave.wordpress.com/download/, in particolare la versione che ho scaricato si ottiene da http://forja.rediris.es/frs/download.php/1383/qtoctave-0.8.2.tar.gz. Scompattate l'archivio in una cartella, aprite un terminale (ApplicazioniAccessoriTerminale) e spostatevi (nel terminale con il comando cd) nella cartella in cui avete scompattato il sorgente. Se per esempio è la cartella ~/Scrivania/qtoctave-0.8.2 (ricordo che la tilde ~ è l'abbreviazione della home dell'utente corrente) dovete dare il comando
cd ~/Scrivania/qtoctave-0.8.2
Come per ogni compilazione, è necessario installare i compilatore, che si ottengono installando il pacchetto build-essential. Questo può essere installato da Synaptic, oppure da terminale con il comando
sudo apt-get install build-essential
Dopo di ciò bisogna installare i pacchetti necessari per la compilazione di QtOctave con il comando
sudo apt-get build-dep qtoctave
Nel file readme.txt che si trova nella cartella dei sorgenti spiega che bisogna inoltre installare le librerie Qt e i pacchetti di sviluppo Qt, dalla versione 4.5.0 in poi. È sufficiente installare il pacchetto libqt4-dev , tutti le dipendenze verranno installate automaticamente. Inoltre bisogna installare il pacchetto cmake. Senza aver installato le librerie Qt sarebbe comparso il seguente messaggio di errore in fase di compilazione:
CMake Error at /usr/share/cmake-2.6/Modules/FindQt4.cmake:1472 (MESSAGE):
Qt qmake not found!
Call Stack (most recent call first):
CMakeLists.txt:22 (FIND_PACKAGE)


-- Configuring incomplete, errors occurred!

A questo punto, nel file readme.txt viene consigliato di creare una cartella chiamata build ed eseguire una serie di comandi elencati. In questo modo, però, ho rilevato numeri errori in fase di compilazione di questo tipo:
[ 44%] Building CXX object easy_plot/src/CMakeFiles/easy_plot.dir/main.o
In file included from /home/luke/qtoctave-0.8.2/easy_plot/src/main.cpp:3:
/home/luke/qtoctave-0.8.2/easy_plot/src/main_window.h:7:35: error: ui_design_main_window.h: Nessun file o directory
/home/luke/qtoctave-0.8.2/easy_plot/src/main_window.h:9:27: error: ui_view_angle.h: Nessun file o directory
In file included from /home/luke/qtoctave-0.8.2/easy_plot/src/main.cpp:3:
/home/luke/qtoctave-0.8.2/easy_plot/src/main_window.h:11: error: ‘Ui’ is not a namespace-name
/home/luke/qtoctave-0.8.2/easy_plot/src/main_window.h:11: error: expected namespace-name before ‘;’ token
/home/luke/qtoctave-0.8.2/easy_plot/src/main_window.h:18: error: ‘Ui_DesignMainWindow’ does not name a type
/home/luke/qtoctave-0.8.2/easy_plot/src/main_window.h:21: error: ISO C++ forbids declaration of ‘Ui_ViewAngle’ with no type
/home/luke/qtoctave-0.8.2/easy_plot/src/main_window.h:21: error: expected ‘;’ before ‘*’ token
make[2]: *** [easy_plot/src/CMakeFiles/easy_plot.dir/main.o] Errore 1
make[1]: *** [easy_plot/src/CMakeFiles/easy_plot.dir/all] Errore 2
make: *** [all] Errore 2

Oltre a questo mi sono comparsi altri errori simili. Li ho risolti copiando gli header file che vengono segnalati come mancanti da una sottocartella della cartella build creata, nella cartella in cui si trovano i sorgenti che compaiono nei messaggi di errore. Sono comunque riuscito a evitare tutto ciò nel seguente modo: dopo aver installato i pacchetti sopra elencati ho dato nel terminale (posizionato nella cartella in cui ho scompattato l'archivio) il comando
cmake .
(notate il punto dopo cmake che shell bash rappresenta un'abbreviazione della cartella corrente, infatti il comando cmake richiede come argomento la cartella in cui si trova un sorgente. Per maggiori informazioni consultate il manuale) a differenza di quanto spiegato nel file readme.txt (AGGIORNAMENTO: mi sono accorto che questa è proprio la procedura descritta in leeme.txt, forse l'autore si è dimenticato di aggiornare anche il file in lingua inglese). Poi ho proseguito con il comando
make
Dopo il make, per installare il programma si dovrebbe dare il comando
sudo make install
ma anche in questo caso ho preferito creare un pacchetto deb con e checkinstall. Per creare il pacchetto, senza installarlo, ho dato il comando
sudo checkinstall --install=no
Successivamente ho installato il pacchetto deb che è stato creato.

Aggiornamento: in questa discussione sul forum di Ubuntu ho aiutato a compilare QtOctave 0.8.2 l'utente simo2777, che però ha riscontrato qualche problema in più rispetto a me. Riporto qui gli errori e le soluzioni per completezza.
Primo problema:
[ 40%] Building CXX object easy_plot/src/CMakeFiles/easy_plot.dir/gnuplot_connection.o
/home/simone/Programmi/qtoctave-0.8.2/easy_plot/src/gnuplot_connection.cpp: In member function ‘void GnuplotConnection::standardOutputReady()’:
/home/simone/Programmi/qtoctave-0.8.2/easy_plot/src/gnuplot_connection.cpp:143: error: ‘printf’ was not declared in this scope
make[2]: *** [easy_plot/src/CMakeFiles/easy_plot.dir/gnuplot_connection.o] Errore 1
make[1]: *** [easy_plot/src/CMakeFiles/easy_plot.dir/all] Errore 2
make: *** [all] Errore 2

Soluzione (solo per il primo errore, per il successivo leggi più avanti): installare le dipendenze di qtoctave con il comando sudo apt-get build-dep qtoctave e (se non già presente) il pacchetto gnuplot con il comando sudo apt-get install gnuplot.
Secondo problema:
[ 43%] Building CXX object easy_plot/src/CMakeFiles/easy_plot.dir/gnuplot_connection.o
/home/simone/Programmi/qtoctave-0.8.2/easy_plot/src/gnuplot_connection.cpp: In member function ‘void GnuplotConnection::standardOutputReady()’:
/home/simone/Programmi/qtoctave-0.8.2/easy_plot/src/gnuplot_connection.cpp:143: error: ‘printf’ was not declared in this scope
make[2]: *** [easy_plot/src/CMakeFiles/easy_plot.dir/gnuplot_connection.o] Errore 1
make[1]: *** [easy_plot/src/CMakeFiles/easy_plot.dir/all] Errore 2
make: *** [all] Errore 2

Soluzione (trovata qui): includere nel file easy_plot/src/gnuplot_connection.cpp l'header cstdio, per esempio in questo modo:
#include <QXmlStreamReader>
#include <QXmlStreamWriter>
#include <QHash>
#include <cstdio>

GnuplotConnection::GnuplotConnection(QObject *parent):QProcess(parent)


Terzo problema (simile a quello precedente):
[ 75%] Building CXX object qtoctave/src/CMakeFiles/qtoctave.dir/search_dialog.o
/home/simone/Programmi/qtoctave-0.8.2/qtoctave/src/search_dialog.cpp: In destructor ‘virtual SearchDialog::~SearchDialog()’:
/home/simone/Programmi/qtoctave-0.8.2/qtoctave/src/search_dialog.cpp:96: error: ‘printf’ was not declared in this scope
make[2]: *** [qtoctave/src/CMakeFiles/qtoctave.dir/search_dialog.o] Errore 1
make[1]: *** [qtoctave/src/CMakeFiles/qtoctave.dir/all] Errore 2
make: *** [all] Errore 2

Soluzione: come prima, includere l'header cstdio nel file
qtoctave/src/search_dialog.cpp aggiungendo la riga
#include <cstdio>
all'inizio.

Compilare GNU Octave 3.2.2

Nota: all'indirizzo http://elubuntu.blogspot.com/2011/02/compilare-gnu-octave-340.html trovate una guida su come compilare GNU Octave 3.4.0.

In Ubuntu 9.04 è presente ancora una versione non nuovissima di GNU Octave e avrei voluto scrivere come ho compilato GNU Octave 3.2, ma proprio oggi è uscita la più recente versione del programma di analisi numerica, ottimo sostituto open-source di Matlab, e quindi spiegherò come ho compilato GNU Octave 3.2.2 (l'ho testato su Ubuntu Jaunty Jackalope, su versioni precedenti del sistema potrebbero mancare troppi pacchetti necessari all'installazione del programma).

Avviso già da adesso, che ci non vuole provare l'"ebbrezza" di compilare da solo questo programma ma preferisce installare direttamente i pacchetti .deb, può scaricare da qui un archivio contenente tutto ciò che serve (sono presenti i pacchetti di Octave 3.2, dell'interfaccia grafica QtOctave e le varie dipendenze che sono necessarie). L'archivio l'ho trovato a questo indirizzo. http://tobal.cymaho.com/?p=920. Questa soluzione potrebbe essere preferita anche da chi non ha intenzione o la possibilità di scaricare diversi megabyte (credo poche centinaia) di pacchetti assortititi che occuperanno molto spazio sull'hard disk dopo l'installazione.

Per prima cosa, ovviamente, serve il sorgente: lo trovate nella pagina dei download di Octave, l'indirizzo del sorgente è ftp://ftp.octave.org/pub/octave/octave-3.2.2.tar.gz. Scaricate l'archivio e scompattatelo in una cartella (ricordatevi per bene il nome della cartella in cui l'avete salvato). Da questo momento in poi sarà necessario usare (quasi) sempre il terminale, quindi apritene uno (ApplicazioniAccessoriTerminale) e spostatevi (nel terminale con il comando cd) nella cartella in cui avete scompattato il sorgente. Se per esempio è la cartella ~/Scrivania/octave-3.2.2 (ricordo che la tilde ~ è l'abbreviazione della home dell'utente corrente) dovete dare il comando
cd ~/Scrivania/octave-3.2.2
Come per ogni compilazione, è necessario installare i compilatore, che si ottengono installando il pacchetto build-essential. Questo può essere installato da Synaptic, oppure da terminale con il comando
sudo apt-get install build-essential
Dopo di ciò bisogna installare i pacchetti necessari per la compilazione di Octave: il comando
sudo apt-get build-dep octave3.0
installerà la maggior parte dei pacchetti che serviranno, ma non tutti (il comando build-dep di apt-get recupera i pacchetti necessari per la compilazione del pacchetto specificato ma qualcuno potrebbe sfuggire, come in questo caso). L'usuale procedura per la compilazione del sorgente di un programma prevedere che a questo punto venga dato il comando
./configure
(esegue il programma configure, quindi assicuratevi di essere nella cartella corretta). La prima volta che ho eseguito il configure, alla fine ho ricevuto questo elenco di avvisi:
configure: WARNING: I didn't find bison, but it's only a problem if you need to reconstruct parse.cc
configure: WARNING: qrupdate not found. The QR & Cholesky updating functions will be slow.
configure: WARNING: arpack not found. This will result in a lack of the eigs function.
configure: WARNING: GraphicsMagick++ config script not found. Assuming GraphicsMagic++ library and header files are missing, so imread will not be fully functional
configure: WARNING: "FLTK config script not found. Native graphics will be disabled."
configure: WARNING:
configure: WARNING: I didn't find the necessary libraries to compile native
configure: WARNING: graphics. It isn't necessary to have native graphics
configure: WARNING: but you will have to use gnuplot or you won't be able
configure: WARNING: to use any of Octave's plotting commands
configure: WARNING:
configure:

NOTE: libraries may be skipped if a library is not found OR
if the library on your system is missing required features.

Per rimediare a questi avvisi ho dovuto installare un po' di pacchetti (come al solito, questi possono essere installati da Synaptic o da terminale, come preferite).
· Per bison è necessario il pacchetto bison.
· Per arpack ho installato i pacchetti libarpack2 libarpack2-dev libibverbs1 libopenmpi1 libopenmpi-dev openmpi-common.
· Per GraphicsMagick++ ho installati i pacchetti libbz2-dev libexif-dev libexpat1-dev libfreetype6-dev libgraphicsmagick++1 libgraphicsmagick++1-dev libgraphicsmagick1 libgraphicsmagick1-dev libice-dev libjasper-dev liblcms1-dev libpng12-dev libpthread-stubs0 libpthread-stubs0-dev libsm-dev libtiff4-dev libtiffxx0c2 libwmf-dev libx11-dev libxau-dev libxcb1-dev libxdmcp-dev libxext-dev libxml2-dev x11proto-core-dev x11proto-input-dev x11proto-kb-dev x11proto-xext-dev xtrans-dev.
· Per FLTK ho installato i pacchetti libfltk1.1 libfltk1.1-dev libgl1-mesa-dev mesa-common-dev
· Per qrupdate ho dovuto scaricare dei pacchetti dagli archivi di Karmic, la versione di Ubuntu che deve ancora essere rilasciata. I pacchetti necessari sono stati libqrupdate1 libqrupdate-dev mpi-default-dev. Facendo clic su ciascuno dei nomi dei pacchetti qui indicati potete scegliere l'architettura del vostro sistema (amd64 o i386) e scaricare i pacchetti deb che potrete installare normalmente.

Dopo aver installato tutti i pacchetti ho nuovamente dato il comando
./configure
che però questa volta non mi ha dato alcun avviso, quindi ho proceduto con il
make
Durante il make, però, ho ricevuto un messaggio di errore:
./DLD-FUNCTIONS/fltk_backend.cc: In member function ‘virtual void OpenGL_fltk::draw_overlay()’:
./DLD-FUNCTIONS/fltk_backend.cc:145: error: ‘gluOrtho2D’ was not declared in this scope
make[2]: *** [pic/fltk_backend.o] Errore 1
make[2]: uscita dalla directory «/home/luke/octave-3.2.2/src»
make[1]: *** [src] Errore 2
make[1]: uscita dalla directory «/home/luke/octave-3.2.2»
make: *** [all] Errore 2

La soluzione a questo problema l'ho trovata su questo sito: installare il pacchetto libglu1-mesa-dev. Ho ricominciato daccapo dal ./configure, che però mi ha dato un nuovo avviso (prima gli sarà sfuggito?):
configure: WARNING: "FTGL headers not found. Native renderer will not have on-screen text"
configure: WARNING:
configure: WARNING: I didn't find the necessary libraries to compile native
configure: WARNING: graphics. It isn't necessary to have native graphics
configure: WARNING: but you will have to use gnuplot or you won't be able
configure: WARNING: to use any of Octave's plotting commands
configure: WARNING:
configure:

NOTE: libraries may be skipped if a library is not found OR
if the library on your system is missing required features.

Per risolvere quest'altro problema ho installato i pacchetti libftgl-dev libftgl2. Dopo di ciò ho dato nuovamente i comandi
./configure
(fortunatamente anche questa volta senza avvisi) e poi
make
Dopo un po' di tempo (credo che a me abbia impiegato circa 2 ore, ma la compilazione potrebbe richiedere anche più tempo (o di meno se siete fortunati)), il processo è terminato ed è comparso il messaggio
Octave successfully built. Now choose from the following:

./run-octave - to run in place to test before installing
make check - to run the tests
make install - to install (PREFIX=/usr/local)

make[1]: uscita dalla directory «/home/luke/octave-3.2.2»

a segnalare (come si può leggere), la fine della compilazione di GNU Octave. A questo punto si può scegliere una delle operazioni suggerite. Per installare il programma si dovrebbe dare, come consigliato, il comando
sudo make install
(il sudo è necessario poiché verranno eseguite delle operazioni in cartelle protetta in scrittura), io però ho preferito creare un pacchetto .deb, in modo da non dover in seguito ricompilare tutto il programma. Per fare ciò, il metodo più semplice (non il migliore, ma per chi non ha bisogno di distribuire i pacchetti questo dovrebbe essere più che sufficiente) è usare checkinstall. Per creare il pacchetto, senza installarlo, bisogna dare il comando
sudo checkinstall --install=no
L'installazione potrà poi essere fatta successivamente, come per tutti i pacchetti deb.


Per compilare l'interfaccia grafica QtOctave 0.8.2 potete leggere qui.


Aggiornamento del 18/08/2009: oggi ho visto che nei repository della prossima versione di Ubuntu (Karmic Koala che uscirà a ottobre) è presente il pacchetto octave-3.2 (però alla versione 3.2.0, non la 3.2.2 la versione adesso è proprio la 3.2.2), quindi chi non ha fretta di installare subito la 3.2 potrebbe aspettare per l'installazione il rilascio di Ubuntu 9.10 per poterlo installare comodamente dal gestore pacchetti.

venerdì 12 giugno 2009

Scoprire il tipo di un file

Per conoscere il tipo di un file si può utilizzare l'utilissimo comando da terminale file. La sintassi per il suo utilizzo basilare è estremamente semplice:
file /percorso/del/file
ovviamente sostituendo a /percorso/del/file il percorso assoluto o relativo (vedi qui per maggiori informazioni) del file di cui si vuole conoscere il tipo. Per esempio, per conoscere il tipo di un file chiamato pippo e posizionato nella Scrivania, nel terminale dobbiamo dare il comando
file ~/Scrivania/pippo
Ricordo che la tilde ~ è l'abbreviazione della cartella home dell'utente che usa il sistema.

Questo programma risulta particolarmente utile quando si vuole individuare la reale "natura" di un file, perché il tipo di un file non si può identificare con la sola estensione. file opera guardando il contenuto del file. Certo può capitare qualche caso in cui anche file sbaglia, ma ciò che determina la "natura" di un file è il suo contenuto, non certo l'estensione che può essere cambiata a piacimento. Per conoscere le opzioni che si possono utilizzare con file potete consultare il manuale con il comando
man file

Chi non ama particolarmente il terminale, o comunque preferisce utilizzare anche delle interfacce grafiche, può usare questo semplice script per Nautilus che ho realizzato:
#!/bin/bash

titolo="Tipo file" # titolo dei popup che verranno visualizzati

if [ $# -gt 0 ]; then # se viene selezionato più di un file
    file -- "$@" | zenity --text-info --title="$titolo" --filename=/dev/stdin # visualizza un popup che mostra il tipo di ciascun file o cartella selezionato
else # altrimenti
    zenity --error --title="$titolo" --text="Devi selezionare almeno un file" # visualizza un popup di errore
fi
Per utilizzare lo script è necessario installare il pacchetto zenity.

Aprite un file vuoto con un editor di testo (come gedit), copiate lo script nell'editor e salvatelo nella cartella ~/.gnome2/nautilus-scripts chiamandolo, per esempio, Tipo file. Rendete quindi eseguibile lo script facendo clic con il taso destro sul file (per accedere alla cartella ~/.gnome2 dovete visualizzare i file nascosti premendo [ CTRL ] + [ H ]), scegliete Proprietà e quindi, nella scheda Permessi, mettete la spunta a Consentire l'esecuzione del file come programma. In questo modo, facendo clic con il tasto destro su un file di cui volete conoscere il tipo, vi basterà fare clic su ScriptTipo file (o il nome che avete dato allo script).

mercoledì 10 giugno 2009

Spostamento celle verso il basso con Incolla speciale in Calc

In Calc (il foglio elettronico della suite OpenOffice.org) avevo necessità di
· tagliare delle celle
· incollarle in un'altra posizione spostando verso il basso le celle selezionate che contengono altri dati
Questa operazione si potrebbe fare con la funzione Incolla speciale. In pratica basta selezionare le celle da tagliare, fare clic con il tasto destro e scegliere Taglia, quindi selezionare la posizione in cui incollare le celle e, facendo clic con il tasto destro, scegliere Incolla speciale. In questo modo apparirà una finestra in basso a destra della quale si può scegliere di spostare in basso le celle selezionate. Il problema è che l'opzione Verso il basso non era selezionabile. Cercando su Google ho trovato un modo per aggirare il problema.

Bisogna incollare ugualmente, selezionando l'opzione Non spostare, anche se non è quello che vogliamo fare. Quindi nel popup che apparirà che chiederà conferma della sovrascrittura, fate clic su .
In questo modo le celle saranno state, ovviamente, sovrascritte. A questo punto, annullate l'operazione (premendo i tasti [ CTRL ] + [ Z ] oppure da ModificaAnnulla Inserisci) e, facendo clic con il tasto destro sulle celle da spostare, selezionate nuovamente Incolla speciale.
Magicamente, adesso sarà possibile scegliere l'opzione di spostamento verso il basso.
Il messaggio della mailing list dove ho trovato questo workaround risale al 2004, il problema nel frattempo non sembra essere stato risolto (se ho visto bene, comunque, è già stato segnalato agli sviluppatori). Inoltre, mi è sembrato che il difetto si verifichi solamente quando si tagliano delle celle, non quando vengono solamente copiate.

venerdì 5 giugno 2009

Catturare screenshot

Se utilizzate Ubuntu nella versione con GNOME come ambiente desktop probabilmente avrete preinstallato il programma gnome-screenshot per catturare le schermate del monitor (in inglese si chiamano screenshot). Se non c'è, per ottenerlo è sufficiente installare il pacchetto omonimo da Synaptic oppure da terminale con il comando
sudo apt-get install gnome-screenshot
Per catturare uno screenshot di tutto il monitor basta premere il tasto [ STAMP ], invece se si vuole catturare solo la schermata della finestra attiva bisogna premere insieme i tasti [ ALT ] + [ STAMP ]. Per utilizzare altre impostazioni (come l'inclusione del puntatore o del bordo di una finestra, oppure il ritardo con cui catturare una schermata) bisogna avviare il programma da ApplicazioniAccessoriCattura schermata.


Esiste inoltre un altro programma che offre numerose opzioni in più: Shutter (precedentemente conosciuto come Gscrot). Shutter può essere installato aggiungendo un repository (qui sono presenti le istruzioni in inglese per farlo) oppure direttamente dal pacchetto che si può scaricare da questa pagina nella sezione Ubuntu packages (è necessario scaricare tutti i pacchetti indicati per la propria versione del sistema). Shutter potrebbe richiedere l'installazione (che avverrà in automatico) di numerose dipendenze (a me per esempio ha dovuto installare 14 pacchetti mancanti). Una volta installato, Shutter può essere avviato da ApplicazioniAccessoriShutter - Screenshot Tool. Il programma permette di scegliere il formato in cui salvare l'immagine, di quale finestra cattura la schermata (la rende attiva automaticamente), di quale desktop virtuale catturare un'intera schermata, inoltre offre la possibilità di selezionare un'area rettangolare dello schermo da salvare e modificare lo screenshot appena catturato con il programma di editing grafico preferito. Qui potete trovare una breve guida in italiano per Shutter.

Utilizzando anche Ubuntu con LXDE come ambiente desktop, sono spesso alla ricerca di programmi quanto più leggeri ed essenziali possibile. Per catturare le schermate del desktop è possibile utilizzare da terminale il semplice programma import. Può essere installato da Synaptic, oppure da terminale con il comando
sudo apt-get install import
Per utilizzarlo basta dare il comando
import nomefile
sostituendo a nomefile il nome che si desidera dare allo screenshot. Dopo aver dato il comando si dovrà selezionare l'area del desktop da catturare. L'immagine verrà salvata nella cartella in cui è posizionato il terminale (usare il comando pwd per sapere qual è). È possibile usare qualche altra opzione, consultate il manuale con il comando
man import
per maggiori informazioni.

Un altro programma da utilizzare da terminale per catturare le schermate è scrot. Come al solito, può essere installato da Synaptic, oppure da terminale con il con il comando
sudo apt-get install scrot
Per catturare immediatamente una schermata dell'intero schermo è sufficiente dare il comando
scrot
Con l'opzione -s è possibile selezionare un'area rettangolare dello schermo da salvare (facendo semplicemente clic in una finestra verrà salvata quella finestra); l'opzione -d NUM permette di impostare un ritardo di NUM secondi prima di catturare lo screenshot; l'opzione -c unitamente a -d visualizza un conto alla rovescia prima della cattura della schermata (ricordo che le opzioni possono anche essere scritte tutte insieme, l'importante è che dopo l'opzione -d ci sia il numero di secondi di ritardo). Altre opzioni di scrot possono essere ottenute leggendo il manuale con il comando
man scrot

File e cartelle nascosti nella home

In genere per ogni utente di un sistema GNU/Linux è presente una cartella home, cioè una cartella sotto /home che ha lo stesso nome dell'utente. Per esempio, se un utente del sistema si chiama pippo, esisterà una cartella il cui percorso è /home/pippo. Spesso, per quanto riguarda la bash, questa cartella viene indicata con la tilde ~ oppure con la variabile $HOME, che stanno entrambe a indicare proprio il percorso della cartella. Queste abbreviazioni risultano molto comode perché indicano sempre il percorso della cartella home dell'utente che sta utilizzando il sistema, indipendentemente dal nome dell'utente stesso.

Generalmente, all'interno della home di ciascun utente si trovano numerosi file e cartelle, ma molti di questi sono nascosti. Un file (o cartella) nascosto in un sistema di tipo Unix ha semplicemente un punto prima del proprio nome: in questo modo, navigando nella cartella il file (o cartella) nascosto non viene visualizzato in maniera predefinita. Proprio perché i nomi dei file nascosti iniziano con un punto in inglese vengono detti dot files (che significa file punto). In Nautilus, il file manager predefinito di GNOME, per visualizzare gli eventuali file nascosti presenti in una cartella è sufficiente premere i tasti [ CTRL ] + [ H ] oppure fare clic su Visualizza e quindi selezionare Mostra file nascosti. Se invece state usando il terminale, il comando normalmente ls non è in grado di elencare i file nascosti presenti in una cartella, bisogna usare l'opzione -a, quindi il comando
ls -a directory
elenca tutti i file, compresi quelli nascosti, presenti nella directory specificata.

Molti dei programmi che si utilizzano quotidianamente salvano le configurazioni personalizzate di ciascun utente all'interno delle rispettive home in cartelle nascoste. Visualizzando i file nascosti della vostra home potrete riconoscere le cartelle di alcuni programmi. Se avete necessità di modificare direttamente il file di configurazione di un programma è probabile che il file si trovi nella cartella nascosta associata a quel software.

Quando si disinstalla un programma generalmente l'eventuale cartella presente nella home di quel programma non viene cancellata, per preservare le configurazioni qualora il programma venisse reinstallato successivamente. La cartella può essere cancellata manualmente dopo la rimozione di un programma, ma può anche essere fatto automaticamente: quando si rimuove un pacchetto da Synaptic, invece di selezionare l'opzione Marca per la rimozione bisogna scegliere Marca per la rimozione completa. Allo stesso modo, se si disinstalla un pacchetto da terminale e si vuole cancellare anche la cartella nascosta contenente le configurazioni, invece dell'usuale
sudo apt-get remove nomepacchetto
bisogna dare il comando
sudo apt-get purge nomepacchetto
o, il che è lo stesso
sudo apt-get remove --purge nomepacchetto

In particolare, molto spesso problemi relativi a Firefox sono proprio collegati al profilo in uso, che si trova nel percorso ~/.mozilla/firefox/nomeprofilo (usualmente il nome della cartella comprende una sequenza casuale di lettere e numeri seguita dal nome del profilo). Una soluzione sarebbe quella di cancellare tutta la cartella .mozilla, ma in questo modo si perderebbero tutti i plugin installati, i Segnalibri, le password salvate e la Cronologia. Un metodo più indolore consiste nel rinominare la cartella .mozilla (ma non cancellarla, per conservare Segnalibri & Co.): in questo modo, all'avvio successivo Firefox creerà automaticamente un nuovo profilo (e quindi una nuova cartella .mozilla/firefox). Un metodo alternativo a quest'ultimo consiste nel creare un nuovo profilo: per fare ciò bisogna avviare Firefox da terminale con l'opzione -ProfileManager:
firefox -ProfileManager
Nella finestra che si aprirà, fate clic su Create Profile. Se in questo modo il problema viene risolto, sarà possibile recuperare dalla cartella del profilo precedente (oppure nella cartella che era stata rinominata) i segnalibri (SegnalibriImporta e salvaRipristinaSeleziona file. Cercate la cartella bookmarkbackups del profilo precedente e selezionate il file *.json più recente). A questo proposito potrebbe essere utile eseguire dei periodici backup del proprio profilo (per esempio con il plugin FEBE).

BaShare: semplice programma per condividere file

Chi usa programmi di messaggistica istantanea come Pidgin sa che i trasferimenti di file tramite protocollo MSN sono molto lenti. Questo perché Pidgin non supporta la connessione diretta fra i due interlocutori per l'invio dei file (segnalazione del bug sul sito ufficiale). Per risolvere questo problema (almeno quando si inviano file) si può usare il programma opensource BaShare, realizzato da Guiodic. Per l'utilizzo del programma non è necessario che il programma sia installato su tutti e due i computer che si scambiano i file (ovviamente è necessario almeno per chi invia il file).

Nella pagina dei download potete trovare, oltre al sorgente, i pacchetti già compilati per diverse distribuzioni, compresa Ubuntu.

Chi utilizza un router potrebbe aver bisogno di scaricare Miniupnpc per aprire automaticamente la porta TCP.

Sul forum in italiano di Ubuntu è presente una discussione su questo programma: http://forum.ubuntu-it.org/index.php/topic,261426.0.html