lunedì 23 aprile 2012

Configurare yaourt per funzionare con i server git tramite proxy

In questo breve how-to illustrerò un semplice trucchetto per permette a yaourt di lavorare correttamente con PKGBUILD che richiedono l'acquisizione dei sorgenti da server remoti git, non raggiungibili nel caso il nostro accesso a internet sia vincolato ad un server proxy.
Arrivando subito al dunque il "trucco" sta nel sostituire all'interno del nostro PKGBUILD ogni riferimento a git:// dopo il comando git clone  in http:// dal momento che tale comando in pratica non fa altro che inviare al server git remoto una serie di GET tramite il protocollo http.
Facciamo un esempio:
innanzitutto istruiamo yaourt relativamente al proxy da utilizzare impostando  la variabile d'ambiente http_proxy, in questo modo:

$  export http_proxy=http://192.168.1.100:8080/

Sostituite indirizzo ip e porta con quelle del vostro proxy.
( Potete inserire tale comando nel vostro .bashrc oppure in uno script nella directory /etc/profile.d/ in modo che venga eseguito per tutti gli utenti di sistema. )

Proseguendo nel nostro esempio procediamo con l'installazione di un pacchetto che richiede git, xfce-theme-bluebird:

$ yaourt -S xfce-theme-bluebird

 quando yaourt vi chiede se volete modificare il file rispondete di sì, quindi cercate la stringa

git clone "git://github.com/shimmerproject/Bluebird.git

e sostituitela in

git clone "http://github.com/shimmerproject/Bluebird.git

avviate la compilazione, yaourt sarà in grado di prelevare i sorgenti e di compilare il pacchetto senza errori e senza mal di testa :-)
É anche possibile impostare yaourt in modo che applichi tali sostituzioni automaticamente al posto nostro ogni qualvolta sia necessario:

installiamo da AUR il pacchetto aggiuntivo customizepkg:

$ yaourt -S customizepkg

spostiamoci ora in /etc/customizepkg.d e, da root, diamo:

# echo "replace#global#git:#http:" > git.example

questo sarà il nostro file di "base", ogni volta che installeremo un pacchetto da git creeremo preventivamente un link a tale file con il nome del pacchetto stesso ( cioè il pkgname );nel nostro esempio daremo:

# ln -s git.example xfce-theme-bluebird

Se a questo punto provate a reinstallare il pacchetto xfce-theme-bluebird, yaourt vi notificherà riguardo le modifiche applicate; l'output sarà simile a questo:

=> removes/replaces 'git:' by 'http:' in global
--- ./PKGBUILD    2012-04-22 02:27:22.000000000 +0200
+++ ./PKGBUILD.custom    2012-04-22 23:59:46.503834220 +0200
@@ -24,7 +24,7 @@
 package() {
    
     # Clone git repository
-    git clone "git://github.com/shimmerproject/Bluebird.git"
+    git clone "http://github.com/shimmerproject/Bluebird.git"

     # Change into source directory
     cd "$_pkgname"


Ripetete la creazione del symlink a git.example per ogni pacchetto che volete scaricare da un server git.

giovedì 12 aprile 2012

Aggiornare Arch Linux con kalu

Kalu è un interessante "upgrade notifier", ovvero un' utility che verifica la disponibilità di aggiornamenti per la nostra Arch (sia dai repo ufficiali che da AUR) e ce ne consente la relativa installazione tramite una semplice e funzionale interfaccia GTK. Punti di forza di Kalu, che la differenziano da altri simili tool, sono, tra le altre cose,:
  • la possibilità di eseguire comandi personalizzati dopo ogni aggiornamento di sistema
  • notifiche e visualizzazione delle "latest news" di archlinux.org   
  • controllo della disponibilità di aggiornamenti anche per pacchetti non installati
In questo breve tutorial vediamo come installare e configurare kalu in particolare per l'ambiente desktop Xfce, quello che personalmente preferisco.

Iniziamo con l'installare kalu da AUR:

$ yaourt -S kalu

 Oltre alle dipendenze indicate nel PKGBUILD, nel mio caso mi è servito installare anche il pacchetto 'polkit-gnome''  :

# pacman -S polkit-gnome

Nel caso utilizzate slim come display manager potreste inoltre aver bisogno di aggiungere la seguente riga a /etc/pam.d/slim:

session        optional        pam_ck_connector.so 

(non l'ho verificato personalmente, mi limito in questo caso a riportare quanto scritto da un arciere nel forum bbs.archlinux.org)
Questi 'fix' sono necessari qualora avviando il "System upgrade" da kalu viene restituito l'errore "Error: Failed to initialize: Authorization from PolicyKit failed".

Impostiamo kalu per l'avvio automatico al boot (verrà visualizzata un icona nel systray raffigurante il logo di Arch):

$  cp /usr/share/applications/kalu.desktop ~/.config/autostart/

Dopo aver avviato il programma, spulciando tra le preferenze noterete che di default non è prevista nessuna istruzione per l'aggiornamento dei pacchetti da AUR; per avere questa funzionalità ho creato un semplicissimo script dal nome aur_updater.sh che contiene sostanzialmente la seguente riga di codice: 

terminal -H -e "yaourt -S $(cower -uq)"

(se non avete cower installato sulla vostra macchina date un "yaourt -S cower")
Ora non resta che aprire le preferenze di kalu, selezionare la scheda "AUR", abilitare "Show a button 'Update AUR packages' on notifications" e nella casella "When clicking the button, run the following" indicare il percorso del nostro script aur_updater.sh (ricordatevi di renderlo eseguibile, ad esempio con 'chmod 755 aur_updater.sh')
Lo script non fa altro che avviare l'installazione dei nuovi pacchetti tramite yaourt all'interno del terminale di xfce. L'opzione "-H" fa in modo che il terminale non si chiuda automaticamente al termine delle operazioni di aggiornamento ( utile per esaminare comodamente l'output di yaourt )

Non occorre fare altro: ogni 60 minuti (tempo di default aggiustabile) kalu verificherà la presenza di aggiornamenti per la vostra Arch consentendovene l'installazione, quando disponibili, con pochi click :-) 

aggiornamento del 26/07/12

Per rendere ancora più rapido il processo di aggiornamento dei pacchetti AUR, possiamo invocare yaourt con l'opzione --noconfirm, modificando il nostro script in questo modo:

terminal -H -e "yaourt -S --noconfirm $(cower -uq)"

Se preferite utilizzare konsole (o siete utenti KDE) sostituite la precedente istruzione con la seguente:

konsole --hold -e yaourt -S --noconfirm  $(cower -uq)