domenica 31 marzo 2013

Vlc: riprendere automaticamente la riproduzione di un video grazie ad un plugin

Una feature che da anni gli utenti di Vlc chiedono è la possibilità di riprendere in maniera automatica la riproduzione di un video dal punto esatto in cui è stata precedentemente interrotta. Gli sviluppatori del celebre media player hanno però sempre fatto orecchie da mercante e di fatto questa caratteristica è a tutt'oggi ancora assente.
C'è però una buona notizia per coloro che desiderano questa feature: infatti, per colmare questa lacuna lo sviluppatore Artem Senichev ha da qualche mese reso disponibile un plugin che permette di aggiungere a Vlc il resume automatico dei video: sto parlando di vlc-srpos-plugin disponibile sia per sistemi Linux che per Windows.
Per facilitare il lavoro agli amici di Fedora che volessero provarlo, ho realizzato un pacchetto rpm pronto all'uso: potere recuperarlo dal mio repo Dropbox.
Attivate innanzitutto il repo dando:
 $ wget https://dl.dropbox.com/u/7141888/home_darkhado_extra/18/darkhado_extra.repo -O - | sudo tee /etc/yum.repos.d/darkhado_extra.repo
dopodiché potete installare il plugin con:
$ sudo yum install vlc-srpos-plugin
 Per renderlo però operativo occorre abilitarlo esplicitamente dalle preferenze di Vlc.
Avviate Vlc, quindi Strumenti -> Preferenze, poi in basso a sinistra: Mostra le impostazioni -> Tutto.
Cercate tra le voci sulla sinistra Interfacce di controllo dopodiché spuntate Save/restore position of the last played  files. Confermate con Salva e riavviate VLC per applicare le modifiche fatte.


Dalle prove che ho fatto il plugin sembra mantenere quello che promette, l'unico limite è che attualmente vengono salvate le informazioni di riproduzione esclusivamente degli ultimi 10 file aperti. A mio avviso questo valore dovrebbe essere comunque più che sufficiente per la maggior parte degli utenti

venerdì 29 marzo 2013

Installare FoFiX su Fedora

Dopo aver giocato parecchio a StepMania  ho recentemente eletto come mio gioco preferito per i necessari momenti di svago FoFiX, il celebre clone open di GuitarHero/RockBand e fork del defunto FretsOnFire.
Per paura di incorrere in possibili casi di violazione di brevetti software Fedora non include nei repo ufficiali questo gioco né altri giochi dello stesso tipo (ad esempio Performous)
Ho quindi provveduto personalmente alla creazione di un pacchetto funzionane per Fedora. Ho optato per prelevare direttamente la versione in sviluppo dal server git del progetto, dal momento che le release ufficiali sono un po' "attempate" (l'ultima stabile risale a dicembre 2009, mentre la prima alpha della futura 4.0.0 é del novembre 2010).
Essendo, come dicevo, ancora in sviluppo il gioco non è del tutto stabile al 100%, l'impostazione di alcuni settaggi con valori diversi da quelli di default può causare dei crash; comunque nel complesso si lascia giocare piuttosto bene.

Per rendere il gioco più piacevole e divertenti per pochi euro ho acquistato su ebay una chitarra per PS2 con relativo adattatore usb, il supporto per questi dispositivi è egregio. Se FoFiX vi appassiona vi consiglio di fare come me, non ve ne pentirete :-)
Per condividere il mio pacchetto con chi fosse interessato, ho creato appositamente un repository sperimentale (esclusivamente per Fedora 18) all'intero del mio account Dropbox; lo trovate qui
(non ho potuto utilizzare il mio repo principale su OBS per via della dipendenza di ffmpeg)

Per installare FoFiX sulla vosta macchina, copiate il file darkhado_extra.repo all'intero di /etc/yum.repos.d/
dopodiché date:
$ sudo yum install fofix
Ora non vi resta che impugnare la vostra chitarra ed esibirvi nei grandi assoli dei vostri rocker preferiti! :-)

domenica 17 marzo 2013

Configurare l'invio delle mail di notifica di Cron su Fedora

Di default per i cronjob che producono dei messaggi di output, il demone crond tenta di inviare al proprietario del cronjob tale output tramite il comando sendmail.
In questa breve guida vedremo come configurare su Fedora un servizio di posta locale, con l'obiettivo di monitorare i comandi eseguiti per mezzo di cron.
Il metodo più semplice è senz'altro quello di installare exim, un mail server che Fedora offre già configurato a puntino e funzionante "out-of-the-box":
$ sudo yum install exim
Poiché ci sono diversi pacchetti in Fedora che forniscono il comando sendmail è opportuno verificare che quello offerto da exim sia impostato come default; diamo in un terminale:
$ sudo alternatives --config mta
nel caso in qui nel nostro sistema siano presenti più alternative di sendmail, riceveremo un output del genere:
 Ci sono 2 programmi che forniscono 'mta'.
  Selezione    Comando
-----------------------------------------------
* 1           /usr/sbin/sendmail.ssmtp
+ 2           /usr/sbin/sendmail.exim
Invio per mantenere l'attuale selezione[+], o inserire il numero di selezione: 
Se sendamail.exim non è l'mta di default digitate il numero corrispondente per renderlo tale. L'alternativa correntemente selezionata è evidenziata dal simbolo "+".
Verifichiamo che il nostro servizio di posta locale sia funzionante, provando ad inviarci una mail; scriviamo:
 sendmail $(whoami) << EOF
Dopodiché proseguiamo scrivendo il testo del nostro messaggio di prova:
> subject: Test Local Delivery
>
> Questo è un messaggo di prova!
Per terminare la composizione ed inviare il messaggio scriviamo:
> EOF
Per controlliamo che il messaggio sia stato effettivamente recapitato installiamo il programma mailx:
$ sudo yum install mailx
Dopodiché diamo in un terminale:
$ mail
Se tutto è andato per il verso giusto, dovremmo vedere un output di questo tipo:
Heirloom Mail version 12.5 7/5/10.  Type ? for help.
"/var/spool/mail/simone": 1 message 1 new
>N  1 Simone Sclavi         Sun Mar 17 16:01  15/622   "Test Local Delivery"
&  
segnale che il nostro servizio di posta locale è perfettamente funzionate e quindi utilizzabile da cron.
Un' ulteriore cosa utile che possiamo fare è quella di impostare un alias per l'utente root, fare cioè in modo, per comodità, che i messaggi destinati a root siano reindirizzati all' account di un utente di sistema ordinario. Per fare questo apriamo il file /etc/aliases e alla fine aggiungiamo questa riga:
root:           <nome utente>
Correggete <nome utente> con l'utente di sistema che dovrà ricevere le mail dell'utente root.
Per rendere effettivo l'alias creato, daremo:
$ sudo newaliases
Diversi client mail in Fedora sono in grado di gestire la posta locale; ad esempio se, come me, utilizzate Thunderbird vi sarà sufficiente aggiungere un nuovo account di tipo "Unix Mailspool (Movemail)".

giovedì 14 marzo 2013

Compilare un modulo senza ricompilare l'intero kernel Linux

Esiste una procedura molto semplice per compilare un modulo nativo non presente nel kernel della nostra distro; per far questo non è necessario ricompilare l'intero kernel, è possibile compilare direttamente il modulo o i moduli che ci interessano, tramite gli strumenti che gli sviluppatori ci mettono a disposizione.
In questa guida farò riferimento a Fedora 18, distro che ho utilizzato nei mie test; tuttavia la procedura, con l'eccezione della "preparazione" dei sorgenti, è in linea di massima valida per ogni altra distribuzione GNU/Linux.

Iniziamo verificando se il modulo che ci serve è stato effettivamente escluso dal kernel che stiamo utilizzando, onde evitarci un lavoro inutile; per far questo è sufficiente interrogare il file di configurazione del kernel, generalmente installato all'intero di /boot.
Se ad esempio volessimo controllare la presenza del modulo ntfs, ci basterebbe dare:
 $ grep -i ntfs /boot/config-$(uname -r)
Se l'output di risposta al nostro comando è questo:
# CONFIG_NTFS_FS is not set
è evidente che i package maintainer del kernel hanno effettuato la compilazione escludendo il supporto a tale modulo.

Procediamo quindi con l'installare i pacchetti necessari a compilare il modulo mancante:
$ sudo yum install yum-utils kernel-devel
Recuperiamo i sorgenti del kernel (nel momento in cui scrivo l'ultima release disponibile è la 3.8.2-206)
$ yumdownloader --source kernel
Scompattiamo il pacchetto con:
 $ rpm -ihv kernel-3.8.2-206.fc18.src.rpm
Installiamo le dipendenze di compilazione:
 $ sudo yum-builddep kernel-3.8.2-206.fc18.src.rpm
Scompattiamo i sorgenti e applichiamo le patch di Fedora, in modo da essere allineati con la versione fornita dalla distro:
 $ rpmbuild -bp --target=$(uname -m) ~/rpmbuild/SPECS/kernel.spec
Fatto questo all'interno della directory ~/rpmbuild/BUILD troveremo una sottodirectory contenente i sorgenti del kernel; spostiamoci al suo interno (nel mio caso, sistema 64bit e kernel 3.8.2-206):
$ cd ~/rpmbuild/BUILD/kernel-3.8.fc18/linux-3.8.2-206.fc18.x86_64/
Ipotizziamo di volere compilare il modulo ntfs visto prima; posizioniamoci nella relativa directory:
 $ cd fs/ntfs
Oltre ai sorgenti, nella directory troviamo un file Kconfig fondamentale per il nostro scopo; al suo interno sono specificate i parametri da passare a make per la compilazione. Apriamo Kconfig con un qualunque editor di testo facendo particolare attenzione alle voci "config" presenti nel file; troveremo:
config NTFS_FS
           tristate "NTFS file system support"
           [...]
 config NTFS_DEBUG
           bool "NTFS debugging support"
           [...]
config NTFS_RW
           bool "NTFS write support"
           [...]

"config NTS_FS" abilita la compilazione del modulo ntfs, "config NTFS_DEBUG" e "config NTFS_RW" sono invece parametri facoltativi che permettono di attivare funzionalità aggiunte ( rispettivamente l'abilitazione del debug e il montaggio dei filesystem NTFS in scrittura ).
Ora che abbiamo ottenuto tutte le informazioni che ci servivano, possiamo passare finalmente alla
compilazione del nostro modulo; per una compilazione "standard" senza opzioni aggiuntive è sufficiente dare:
 $ make -C /lib/modules/$(uname -r)/build M=$(pwd) CONFIG_NTFS_FS=m modules
 Invece se volessimo attivare tutte le opzioni di compilazione possibili daremo:
 $ make -C /lib/modules/$(uname -r)/build M=$(pwd) CONFIG_NTFS_FS=m CONFIG_NTFS_DEBUG=y CONFIG_NTFS_RW=y modules
Terminata la compilazione, possiamo installare il modulo con:
 $ sudo make -C /lib/modules/$(uname -r)/build M=$(pwd) modules_install
Per pulire la directory dai risultati delle nostre compilazioni scriviamo:
$ make -C /lib/modules/$(uname -r)/build M=$(pwd) clean
Proviamo a caricare il modulo per verificarne il corretto funzionamento:
$ sudo modprobe --verbose ntfs
Se ci viene restituito l'errore:
   modprobe: FATAL: Module ntfs not found.
eseguiamo:
$ sudo depmode -a
quindi proviamo a ripetere il caricamento del modulo con modprobe.
E' tutto! Come avete potuto notare, in pochi minuti e in maniera tutt'altro che complicata, siamo riusciti a compilare e installare un modulo nativo del kernel risparmiando un enorme quantità di tempo rispetto ad un completa ricompilazione.