Archivio della categoria 'Tips & tricks'

Montare una partizione NTFS in scrittura con OpenSUSE

Open Source, Sistema, Tips & tricks Nessun commento »

Dopo avere installato OpenSUSE 11.0 su una delle mie workstation portatili mi sono accorto che l’accesso alle due partizioni NTFS riservate a Windows è possibile in scrittura solo per l’utente root. Rapida occhiata al file /etc/fstab per scoprire che si tratta di una scelta di default dell’installer di OpenSUSE, scelta che senz’altro è dettata da motivi di sicurezza ma che è altrettanto facilmente aggirabile. È sufficiente infatti modificare come segue i valori fmask e dmask nello stesso file /etc/fstab:

# /dev/disk/by-id/scsi-SATA_FUJITSU_MHV2100_NS91T5B26UKA-part2 /windows/D           ntfs-3g    users,gid=users,fmask=133,dmask=022,locale=it_IT.UTF-8 0 0
/dev/disk/by-id/scsi-SATA_FUJITSU_MHV2100_NS91T5B26UKA-part2 /windows/D           ntfs-3g    users,gid=users,fmask=113,dmask=002,locale=it_IT.UTF-8 0 0

Nell’esempio ho commentato la riga originale (fatelo sempre anche voi: non si sa mai…) ed ho cambiato il valore di fmask da 133 a 113 e quello di dmask da 022 a 002. In questo modo l’accesso in scrittura viene concesso non solo all’owner del filesystem ma anche a tutti gli utenti del gruppo users.

Fatto questo, ricordate di smontare e rimontare il filesystem perché le modifiche abbiano effetto immediato:

# umount /windows/D
# mount /windows/D

Sun xVM VirtualBox su Debian Etch

Debian, Open Source Nessun commento »

Non ci sono mezzi termini: la mia esperienza con VirtualBox di Sun Microsystems è stata semplicemente entusiasmante! Ora posso utilizzare i software che girano meglio sotto Windows XP senza dovere ogni volta riavviare la mia Linux box. Indispensabile, provare per credere! Inutile perdermi in spiegazioni su come effettuare l’installazione perché è di una semplicità imbarazzante: è sufficiente installare il pacchetto con dpkg. In questo modo anche chi – come me – utilizza un kernel compilato ad hoc verrà assistito nella compilazione (completamente automatica) dei moduli necessari alla virtualizzazione. Ecco gli step:

  1. visitare la pagina http://www.virtualbox.org/wiki/Downloads e clicca su Binaries (all platforms)
  2. accettare le condizioni d’uso e scaricare il file corretto (nel mio caso: virtualbox_1.6.4-33808_Debian_etch_i386.deb)
  3. installare con dpkg:
    #dpkg -i virtualbox_1.6.4-33808_Debian_etch_i386.deb

Piccola guida ai principali comandi Linux

Debian, Open Source, Segnalazioni, Shell, Sistema, Tips & tricks 1 commento »

Riproduco in questo post la tabella realizzata da Pádraig Brady e pubblicata sul suo sito Internet ufficiale (http://www.pixelbeat.org). La tabella mostra alcuni fra i principali comandi per amministrare un server Linux, con una breve spiegazione e – in alcuni casi – link a pagine di approfondimento.

This is a linux command line reference for common operations. Examples marked with • are valid/safe to paste without modification into a terminal, so you may want to keep a terminal window open while reading this so you can cut & paste. All these commands have been tested both on Fedora and Ubuntu.

Leggi il resto »

Tabelle riassuntive di entity e caratteri speciali HTML

HTML, Localizzazione, Tips & tricks Nessun commento »

Come sapete le entity sono una particolare forma di codifica usata in HTML per individuare alcuni caratteri speciali in maniera indipendente dalla tastiera e dal sistema operativo che si sta utilizzando. Le prime definizioni delle entity sono state introdotte nella versione HTML 2.0, le successive nella 3.2. Per questo e per tanti altri motivi che non è il caso di discutere qui, non tutti i browser supportano tutte le entity.

Quelle che riporto nella prossima pagina sono tabelle riassuntive delle principali entity e di altri caratteri speciali che possono rivelarsi utilissimi durante lo sviluppo di applicazioni per il web, specie quando si ha a che fare con versioni multilingue di interfacce HTML. Le tabelle provengono da un sito Internet inglese di cui ho perso qualsiasi riferimento, se qualcuno avesse modo di rintracciarne la fonte sarei lieto di poterla citare.

Leggi il resto »

Installare Interchange su Debian Etch

Debian, Open Source, Tips & tricks Nessun commento »

Come si legge sul sito Internet ufficiale del progetto, Interchange è una suite composta da un’applicazione server e un framework di componenti extra dedicati alla erogazione di servizi di commercio elettronico a livello professionale. Si tratta di uno dei più longevi e meglio supportati progetti Open Source mai realizzato.

Per esperienza diretta (io lo uso dal 1999) posso dire che Interchange sia davvero la migliore applicazione ecommerce oggi disponibile. Certo, necessita di una approfondita competenza sia dal punto di vista sistemistico che di sviluppo: sin dal principio la scelta di Interchange Development Group (il team di sviluppo di Interchange) è stata quella di realizzare una perfetta integrazione tra l’ambiente UNIX/Linux e l’interfaccia web. Per questo motivo mettere mano a questo programma non è mai cosa semplice, ma permette sempre di ottenere risultati straordinari. Chi decida di provarlo sappia che il prerequisito fondamentale è un’ottima conoscenza di PERL, MySQL e Apache.

Detto questo, ecco come si installano i pacchetti di Interchange su un server Debian GNU/Linux 4.0 (Etch):

  1. Aggiornare il file /etc/apt/sources.list aggiungendo i repositori ufficiali messi a disposizione da Interchange Development Group:
    deb http://ftp.icdevgroup.org/interchange/debian interchange main
    deb-src http://ftp.icdevgroup.org/interchange/debian interchange main
  2. Aggiornare le sorgenti di apt-get:
    # apt-get update
  3. Procedere con l’installazione via apt-get del software e delle relative dipendenze:
    # apt-get install interchange interchange-cat-standard interchange-ui

Questo è quanto. Ora che Interchange è installato sul nostro server non resta che creare il nostro primo negozio online con il comando:

# makecat

Rispondendo alle domande dell’input di comando realizzeremo il nostro primo catalogo di prodotti. Per la gestione completa del programma e per la customizzazione del codice e dei template grafici, si veda la documentazione ufficiale di Interchange. Provatelo: ne vale la pena!

FreeBSD: come effettuare l’aggiornamento dei ports

FreeBSD, Open Source, Tips & tricks Nessun commento »

Prima di tuffarmi a capofitto nel mondo di Debian GNU/Linux ho lavorato alcuni anni quasi esclusivamente con FreeBSD, che continuo ad utilizzare su alcuni server che ospitano applicazioni critiche.

Come (quasi) tutti sanno, FreeBSD mette a disposizione due meccanismi distinti per l’installazione delle applicazioni: il sistema dei Packages per l’installazione di pacchetti precompilati e l’albero dei Ports per l’installazione autocompilante. Il primo metodo di gestione dei pacchetti somiglia in tutto e per tutto a quelli adottati dalle principali distro Linux. Per chi lavora abitualmente con Slackware le analogie sono particolarmente evidenti, come dimostra la screenshot di una pagina di `sysinstall` che riproduco di seguito.

Diverso invece il caso dei ports, che in un certo senso sono il “vero” strumento di gestione del software sotto FreeBSD. La gestione dei ports permette di scaricare localmente il tree, ovvero l’alberatura completa delle istruzioni di compilazione e installazione, suddivisa per categorie di software. In ogni singolo port scaricato nel tree locale è riportata la descrizione delle dipendenze e lo scheletro del codice. Attraverso una serie di semplici comandi è possibile installare, disinstallare, reinstallare, cancellare, aggiornare ogni programma installato sul server, compresi i servizi core del sistema operativo.

Per una corretta manutenzione dell’alberatura dei ports è bene predisporre un meccanismo di aggiornamento dei tree. Per prima cosa, assicuriamoci che i ports siano installati sul server, in caso contrario pensiamoci noi:

# pkg_add -r cvsup-without-gui
# mkdir /usr/ports

Il primo comando installa CVSup, il software con cui sotto FreeBSD si gestisce il versioning dei port.

Procediamo ora al popolamento dell’alberatura aggiornata dei ports:

# cvsup -L 2 -h cvsup9.FreeBSD.org /usr/share/examples/cvsup/ports-supfile

Capita spesso che, dopo molti secondi di inattività, il comando restituisca un errore di connessione. Non vi preoccupate, in questo caso attendete qualche secondo oppure provate a cambiare repository scalando da 9 – teoricamente il meno utilizzato – a scendere:

# cvsup -L 2 -h cvsup8.FreeBSD.org /usr/share/examples/cvsup/ports-supfile
# cvsup -L 2 -h cvsup7.FreeBSD.org /usr/share/examples/cvsup/ports-supfile
# cvsup -L 2 -h cvsup6.FreeBSD.org /usr/share/examples/cvsup/ports-supfile
# cvsup -L 2 -h cvsup5.FreeBSD.org /usr/share/examples/cvsup/ports-supfile
# cvsup -L 2 -h cvsup4.FreeBSD.org /usr/share/examples/cvsup/ports-supfile
[...]

Ripetendo questa semplice operazione ogni volta che vorremo effettuare un aggiornamento completo dei ports avremo sempre a disposizione software aggiornato anche per il nostro server FreeBSD. Se vogliamo, ad esempio, installare l’ultima versione di `mutt`, il celebre programma di gestione della posta elettronica da linea di comando, procediamo come segue:

# cd /usr/ports
# make search name=Mutt
# cd mail/mutt
# make install clean

Fatto… :-)

Comando `explain` per ottimizzare le query con MySQL

MySQL, Open Source, Tips & tricks Nessun commento »

Quando un’applicazione raggiunge un livello di complessità elevato si rischia di perdere di vista alcuni dettagli – apparentemente minori – che spesso si rivelano fondamentali per una esecuzione armoniosa e ottimizzata dell’intera applicazione.

Dovendo gestire database molto articolati con MySQL, ad esempio, si incorre facilmente in piccoli errori di valutazione circa l’effettivo consumo di risorse che può generare una istruzione SQL. Può essere utile in questi casi ricorrere ad un semplice strumento che ci rinfreschi le idee circa la struttura della table che andremo ad interrogare: il comando `explain`.

Grazie al comando `explain` è possibile analizzare quali indici chiama in causa una query e ottimizzare di conseguenza le dichiarazioni INSERT, specie quando si ricorre a quelle multiple per memorizzare più righe con una sola istruzione SQL. Il comando `explain` vi mostra quali indici vengono utilizzati da ogni query, oltre ad altre importanti informazioni.

Per rendere più efficienti le query dovremo fare in modo che tutte le tabelle interessate vengano lette attraverso gli indici, senza subire uno scorrimento completo (table scan). In questo senso le informazioni ricavate mediante `explain` possono rivelarsi fondamentali.

Utilizzare al meglio l’editor Vim

Open Source, Sistema, Tips & tricks Nessun commento »

Ci sono funzionalità avanzate di Vim che spesso non utilizziamo, certi come siamo che lavorare da remoto in linea di comando debba significare necessariamente anche avere poche comodità a disposizione.

Una fra le funzionalità più misconosciute riguarda la possibilità di editare contemporaneamente più file. Grazie al suo particolare metodo di buffering, Vim può gestire contemporaneamente un numero pressoché illimitato di file. Il solo, vero limite consiste nella modalità di visualizzazione: per poter lavorare contemporaneamente su più file l’interfaccia di Vim viene suddivisa – orizzontalmente o verticalmente, si veda oltre – riducendo progressivamente l’area destinata ad ognuno dei file.

Per aprire due file contemporaneamente dividendo l’area di lavoro orizzontalmentesi ricorre all’opzione -o:

$ vim -o file1.txt file2.txt

Per aprire due file contemporaneamente dividendo l’area di lavoro orizzontalmente si ricorre all’opzione -O:

$ vim -O file1.txt file2.txt

Per passare da una finestra all’altra si utilizzano le seguenti shortcut:

  1. CTRL + W + <freccia sinistra> attiva la finestra a sinistra
  2. CTRL + W + <freccia destra> attiva la finestra a destra
  3. CTRL + W + <freccia su> attiva la finestra in alto
  4. CTRL + W + <freccia giù> attiva la finestra in basso
  5. CTRL-W + CTRL-W (due volte CTRL+W) si sposta rapidamente da una finestra all’altra

Per chiudere la finestra corrente, è sufficiente procedere con la consueta sequenza

[ESC]+:q

proprio come quando stiamo editando un solo file per volta.

Per aprire un nuovo file dall’interno di Vim si utilizza la sequenza

[ESC]+:new nomefile.txt

Se il file esiste verrà editato, in caso contrario verrà creato ex novo.

Per ridimensionare la finestra corrente, prima si digita il numero corrispondente alla quantità di righe che vogliamo ridimensionare e poi si procede con la combinazione di tasti “CTRL-W + +/-”:

[ESC] + 5 + CTRL + W + -

Nell’esempio abiamo ridotto la finestra corrente di 5 righe.

Dopo avere lavorato contemporaneamente su più file, può rendersi necessario chiudere tutto e andarsene un poco a spasso. Questi sono i comandi con cui chiudere una sessione multipla di Vim:

[ESC]+:wqall
[ESC]+:qall!

Nel primo caso si chiudono tutte le finestre dopo avere salvato le modifiche di ognuno. Nel secondo si chiede di chiudere tutto ignorando qualsiasi modifica effettuata sui file.

Bash e velocità di un hard disk SCSI

Open Source, Sistema, Tips & tricks Nessun commento »

Supponiamo di volere stabilire la velocità di un hard disk SCSI montato su un server a cui possiamo accedere solo da remoto. Ci sono più modi per ottenere questo tipo di informazioni. Il più semplice consiste nel ricavare modello e/o numero seriale del disco. Queste due informazioni contengono infatti quasi sempre indicazioni chiare circa la tipologia del dispositivo e le sue caratteristiche principali. Si tratta solo di conoscere la sintassi esatta del seriale, che varia a seconda del produttore. Prendiamo ad esempio un hard disk Seagate etichettato come modello #ST373355SS. Scomponendo il codice come segue otteniamo una serie di informazioni preziose:

  1. ST = identidicatore del brand
  2. 3 = formato dell’unità disco (3=3.5″)
  3. 73 = Capacità del disco (in GB)
  4. 3 = Campo riservato per usi futuri
  5. 5 = RPM (5=15k, 0=10K)
  6. 5 = numero della generazione del modello
  7. SS = interfaccia (SS=SCSI)

Per individuare il modello e/o il seriale del disco da linea di comando possiamo semplicemente fare un `cat` di /proc/scsi/scsi:

# cat /proc/scsi/scsi

Oppure ricorrere alle sg3-utils per interrogare direttamente il dispositivo SCSI:

# sginfo -g /dev/sda

Nel caso le sg3-utils non fossero installate:

# apt-get install sg3-utils

Anche se più elegante, questo secondo approccio è di gran lunga più macchinoso del necessario: una volta ottenuto il seriale mediante il `cat` indicato sopra, se non siamo in grado di decodificarlo è sufficiente visitare il sito Internet del produttore e ricavare le informazioni che ci servono direttamente dalla scheda tecnica del prodotto.

Kernel 2.6.25 con Debian Etch e Backports

Debian, Kernel, Open Source, Sistema, Tips & tricks Nessun commento »

Attenzione! Questo è soltanto l’aggiornamento di un post pubblicato mesi fa, la cui lettura raccomando vivamente prima di procedere oltre, a meno che non si conosca già sufficientemente l’argomento. Clicca qui per accedere al vecchio post.

Fatta questa piccola – ma doverosa – premessa, ecco le istruzioni per compilare il nuovo kernel 2.6.25 per l’attuale stable release di Debian GNU/Linux (nome in codice: Etch).

Per prima cosa è necessario scaricare i sorgenti del nuovo kernel Linux 2.6.25:

# apt-get -t etch-backports install linux-source-2.6.25

Poi procediamo come di consueto:

  1. Spostiamoci nella directory dove sono collocati i nuovi sorgenti e scompattiamoli:
    # cd /usr/src
    # tar xjf linux-2.6.25.tar.bz2
    # ln -s linux-2.6.25 linux
    # cd /usr/src/linux
  2. Resettiamo (opzionale) tutti i parametri di compilazione e rivediamoli per maggiore sicurezza:
    # make clean && make mrproper
    # cp /boot/config-`uname -r` ./.config
    # make menuconfig
  3. Compiliamo i sorgenti e prepariamo i pacchetti .deb:
    # make-kpkg clean
    # fakeroot make-kpkg --initrd --append-to-version=-tetragono kernel_image kernel_headers
  4. Installiamo i pacchetti .deb:
    # cd ..
    # dpkg -i linux-image-2.6.25-tetragono_2.6.25-tetragono-10.00.Custom_i386.deb
    # dpkg -i linux-headers-2.6.25-tetragono_2.6.25-tetragono-10.00.Custom_i386.deb

Ed ecco il kernel installato e perfettamente funzionante:

That’s all, folks ;)