mercoledì 6 febbraio 2013

Installare StepMania su Fedora da repository

Se, come me, siete appassionati di questo bellissimo gioco, vi farà piacere sapere che ho da pochissimo aggiunto i relativi pacchetti al mio repository online su OpenSUSE Build Service.
Ci sono però alcuni importanti limiti: poiché OBS gestisce unicamente pacchetti provenienti dai repo ufficiali di Fedora, ho dovuto compilare StepMania senza il supporto a ffmpeg e libmad.
La mancanza di ffmpeg significa nessun video riprodotto in background durante il gioco, mentre senza libmad non sarete in grado di utilizzare nessuna traccia audio in formato MP3, dettaglio sicuramente non trascurabile.
Ma andiamo con ordine; se volete installare il mio repo sulla vostra macchina, date da root:
# wget http://download.opensuse.org/repositories/home:darkhado/Fedora_17/home:darkhado.repo -O - | tee /etc/yum.repos.d/home\:darkhado.repo
Questo comando è valido esclusivamente se state utilizzando ancora Fedora 17, OBS non offre ancora la possibilità di creare repository per  la release 18 (aggiornerò l'articolo quando il supporto verrà introdotto, il che dovrebbe avvenire a breve).

Aggiornamento del 15/02/2013
È disponibile da qualche giorno anche il repo per Fedora 18; per installarlo date:
# wget http://download.opensuse.org/repositories/home:darkhado/Fedora_18/home:darkhado.repo -O - | tee /etc/yum.repos.d/home\:darkhado.repo

Nel repository oltre a StepMania potete trovare altri software che ho pacchettizzato per mie necessità e che potreste trovare utili (potete consultare l'elenco dei pacchetti disponibili qui)
Dopo aver aggiunto il repository per l'installazione del gioco è sufficiente dare:
# yum install stepmania
Come ho detto prima, in questo modo però installerete StepMania senza il supporto a mp3 e  filmati; se tale supporto vi serve ( e penso di sì ) dovrete ricompilarvi manualmente il pacchetto; tranquilli, è tutt'altro che complicato!
Cominciamo con l'installare mock (uno strumento che ci assisterà nella ricompilazione di StepMania) più i file di configurazione richiesti per il repo RPM Fusion Free (il repo che contiene ffmpeg e libmad):
# yum install mock-rpmfusion-free
Se non avete mai usato mock prima di ora, dovrete aggiungere il vostro utente all'omonimo gruppo 'mock':
# usermod -a -G  mock <utente>
Scarichiamo ora il pacchetto sorgente di StepMania:
$ yumdownloader --source stepmania
Al termine del download avremo un file dal nome stepmania-5.0-x.x.src.rpm, ad esempio stepmania-5.0-6.1.src.rpm (purtroppo OBS gestisce il tag "Release" unicamente secondo lo stile di OpenSUSE)
Possiamo ora passare alla ricompilazione del pacchetto con (se siamo su un sistema a 64bit):
$ mock -r fedora-17-x86_64-rpmfusion_free --with=mad --with=ffmpeg  stepmania-5.0-x.x.src.rpm
 Su una macchina a 32 bit daremo invece:
$ mock -r fedora-17-i386-rpmfusion_free [...]
Mock offre anche la possibilità di compilare pacchetti per release di Fedora differenti da quella installata; quindi, ad esempio, anche se stiamo utilizzando Fedora 17 nulla ci vieterebbe di creare un pacchetto di StepMania adatto per Fedora 18, nel qual caso daremo:
$ mock -r fedora-18-i386-rpmfusion_free [...]
Se tutto è andato a buon fine, al termine della compilazione troveremo i nostri nuovi pacchetti nella directory
  /var/lib/mock/fedora-<release>-<architettura>/result (ad esempio: /var/lib/mock/fedora-17-x86_64/result); sarà comunque mock stesso a fornirci il percorso esatto, stampandolo a video alla fine del processo di rebuild.
Dopo aver installato la versione ricompilata di StepMania, possiamo dire a yum di "bloccarla"; cioè di non installare eventuali futuri aggiornamenti onde preservare il pacchetto che abbiamo compilato con il prezioso supporto a ffmpeg e libmad.
Per fare questo è sufficiente aggiunger al file /etc/yum.conf la seguente riga:
 exclude=stepmania
Con questa istruzione vi sarà impossibile reinstallare o aggiornare StepMania ad una nuova versione tramite yum; qualora aveste queste esigenze ricordatevi di cancellare o commentare tale riga prima di procedere con queste operazioni.

venerdì 1 febbraio 2013

Creare una live personalizzata di Fedora 18 (LXDE)

Fedora mette a disposizione una serie di strumenti per creare facilmente live cd personalizzati; in questo esempio vi mostrerò come realizzare un proprio "remix" di LXDE, includendo pacchetti non compresi nella live ufficiale.Le istruzioni possono essere facilmente adattate per creare la propria versione di qualunque spin di Fedora (KDE, XFCE, ecc.)

Iniziamo installando i pacchetti necessari:
# yum install fedora-kickstarts livecd-tools createrepo
  Creiamo la nostra directory di lavoro:
$ mkdir ~/iso
$ cd ~/iso
copiamo i file di configurazione ("kickstart") relativo alla spin di LXDE
 $ cp /usr/share/spin-kickstarts/fedora-livecd-lxde.ks .
Il file, a sua volta, richiede altri due file di configurazione, fedora-live-base.ksfedora-live-minimization.ks. Potete verificarlo aprendo fedora-livecd-lxde.ks con un editor di testo e cercando le istruzioni %include.
Copiamo quindi i due file:
$ cp /usr/share/spin-kickstarts/{fedora-live-minimization.ks,fedora-live-base.ks} .
 Cominciamo il nostro lavoro di personalizzazione, aprendo il file fedora-live-base.ks e correggendo le impostazioni relative alla localizzazione; trovate all'inizio del file le seguenti righe:
lang en_US.UTF-8
keyboard us
timezone US/Eastern
Sostituite con:
lang it_IT.UTF-8
keyboard it
timezone Europe/Rome
dopodiché salvate e chiudete il file.
Passiamo ora alla parte più importante e interessante: l'aggiunta di pacchetti extra in base alle nostre preferenze.
In questo nostro esempio affronteremo tre possibili casi:
  • aggiunta di pacchetti contenuti nei repo ufficiali
  • aggiunta di pacchetti contenuti in repo NON ufficiali
  • aggiunta di pacchetti non contenuti in nessun repo
Apriamo il file fedora-livecd-lxde.ks, cerchiamo il tag %packages  e inseriamo, al di sotto, il nome
dei pacchetti che vogliamo inserire nel nostro live cd (in aggiunta a quelli standard). Supponiamo, per esempio, di avere il seguente elenco:
%packages
motif
icedtea-web
adobe-release-i386
flash-plugin
ICAClient
skype
...
I pacchetti motif (necessario per ICAClient) e icedtea-web provengono dai repository ufficiali di Fedora, quindi non è richiesta alcuna configurazione aggiuntiva per l'inclusione nella nostra live. Possiamo aggiungere in questa sezione qualunque altro pacchetto ufficiale senza il minimo problema. Non è necessario preoccuparci nemmeno delle dipendenze: verranno risolte ed installate automaticamente in fase di creazione della nostra immagine iso (come vedremo più avanti)
Passiamo ora ad adobe-release-i386 e flash-plugin: i due pacchetti (ipotizziamo di essere in un sistema a 32 bit, in caso contrario vi servirà il pacchetto adobe-release-x86_64) non sono inclusi nei repo ufficiali, dobbiamo quindi indicare esplicitamente all'interno del nostro file kickstart l'indirizzo del repo extra da cui andare a prelevarli.
La procedura è semplicissima: spostiamoci all'inizio del file fedora-livecd-lxde.ks e sotto le istruzioni %include aggiungiamo la seguente riga:
repo --name=adobe-linux-i386 --baseurl=http://linuxdownload.adobe.com/linux/i386/
Le informazioni (--name e --baseurl) relativi ad eventuali altri repo extra che volete aggiungere, possono essere reperite all'intero della directory /etc/yum.repos.d/ (a patto che, ovviamente, stiate utilizzando tali repo sulla vostra Fedora).
Eccoci ora all'ultimo caso: ICAClient e skype. Come detto prima questi pacchetti non sono presenti nei repo ufficiali; dovremmo quindi creare un repo locale in cui andare a mettere gli rpm dei due software (dopo averli scaricati dai rispettivi siti)
Anche in questo caso la procedura è banale; creiamo la directory che conterrà il nostro repo locale:
$ mkdir ~/iso/myrepo/
e copiamo all'interno di myrepo i pacchetti che ci interessano. Al  termine diamo:
$ createrepo ~/iso/myrepo/
e il nostro repo è pronto! Non ci resta che aggiornare il file fedora-livecd-lxde.ks, aggiungendo la seguente riga:
repo --name=myrepo --baseurl=file:///home/utente/iso/myrepo
Ok, fatto questo siamo praticamente pronti a creare la nostra iso! Un problema che ho riscontrato è che la live si avvia con il layout di tastiera  en_US (inglese americano), anche dopo averlo settato su "it" nel file fedora-live-base.ks.
Si può correggere questo comportamento con un piccolo workaround: sempre all'interno del file fedora-livecd-lxde.ks cerchiamo la seguente porzione di testo:

cat > /etc/xdg/lxsession/LXDE/autostart << FOE
/usr/libexec/gam_server
@lxpanel --profile LXDE
@pcmanfm --desktop --profile LXDE
/usr/libexec/notification-daemon
FOE
e correggiamola in questo modo:

cat > /etc/xdg/lxsession/LXDE/autostart << FOE
/usr/libexec/gam_server
@lxpanel --profile LXDE
@pcmanfm --desktop --profile LXDE
/usr/libexec/notification-daemon
@setxkbmap it  <---aggiungere questa riga!
FOE
A questo punto non ci resta che lanciare la creazione della nostra iso: dalla directory ~/iso, come root, diamo:
# livecd-creator --verbose --config=./fedora-livecd-lxde.ks \
   --fslabel=Fedora-LiveCD  --cache=/var/cache/live
Al termine della operazione (che può richiedere diverso tempo) nella directory corrente troveremo la nostra immagine Fedora-LiveCD.iso pronta per essere masterizzata o scritta su un pendrive.
Se scegliete quest'ultima opzione, potete usare il comando livecd-iso-to-disk specificando il device di destinazione, ad esempio:
# livecd-iso-to-disk Fedora-LiveCD.iso /dev/sdb1
È tutto per questa prima mia guida sull'argomento, spero vi possa risultare utile! :-)