Menu Chiudi

Categoria: Informatica

Cairo Dock

letture

Qualche tempo fa avevo scritto un post trionfante sull’essere riuscito ad installare Avant Window Navigator (AWN) sulla mia Slackware.

Da allora l’ho sempre usato con soddisfazione sul mio laptop, e la dock si è dimostrata sempre funzionale, veloce e gradevole.

Tuttavia col passare del tempo si sono manifestati dei problemi, dovuti principalmente alla mancata evoluzione di AWN nel tempo. Infatti il software è rimasto dal 2010 alla versione 0.4.0 e non sono più usciti aggiornamenti, a parte una 0.4.1-trunk scaricabile dal sito di sviluppo ma anch’essa risalente ormai a molto tempo fa.

Con l’evolversi delle versioni di KDE, arrivato adesso alla 4.10.2, alcune funzioni di integrazione  tra la dock e il desktop environment hanno cominciato ad avere problemi, ed in particolare ha smesso di funzionare la possibilità di vedere le varie finestre aperte da un’applicazione cliccando sull’icona dell’applicazione stessa nella dock di awn. Di conseguenza non è stato più possibile passare da una finestra all’altra di uno stesso programma tramite l’icona della dock. E’ evidente che questo toglie moltissimo alla funzionalità della dock, costringendo a usare la taskbar tradizionale di KDE o il menu di ALT-Tab per passare da una finestra all’altra.

Per questa ragione alla fine mi sono convinto ad abbandonare AWN al suo destino, e a passare a qualcos’altro, nello specifico la nuova Cairo Dock versione 3.2.0.

cairo1Cairo Dock è attivamente sviluppata e la versione in questione è di recente uscita. E’ sviluppata principalmente per l’ambiente Gnome, come del resto era AWN e come lo sono un po’ tutte le dock, ma supporta l’integrazione in KDE ed è quindi usabile senza problemi. E’ molto configurabile e prevede diversi temi dagli aspetti più svariati, compresa la classica emulazione della dock di Mac OS X, che è un po’ il punto di partenza e di ispirazione di tutte le dock su Linux, ma dalla quale poi tutte si dipartono realizzando effetti, funzioni e parametrizzazioni che non sono assolutamente possibili su un desktop Mac.

cairo2

 

Su Slackware, Cairo Dock è disponibile tramite SlackBuilds.org insieme ai relativi plugin. E’ sufficiente editare i riferimenti ai numeri di versione negli script di compilazione per ottenere il pacchetto binario della release attuale.

Slackware Linux 14.0, e il futuro

letture

Il 26 settembre, dopo ben 5 release candidate, a testimonianza di lunga riflessione, è uscita la Slackware 14.0.

L’annuncio ufficiale cita le svariate novità di questa versione, che spaziano dal kernel Linux 3.2.29, a XOrg X11R7; la Glibc 2.15; Firefox & Thunderbird 15.0.1; KDE 4.8.5 (anche se è possibile reperire già la versione 4.9.2 dai repository di AlienBOB); le ultime versioni di Perl e Python, la versione 2.8.x di Gimp, in cui viene finalmente introdotta l’interfaccia a finestra singola.

Spicca inoltre la presenza del compilatore Clang/LLVM, di origine Apple e ormai divenuto il compilatore ufficiale per FreeBSD, che ha guadagnato la scena negli ultimi tempi come realistica alternativa a GCC, il quale è anche lui presente alla release 4.7.1.

Viene inoltre introdotto l’utilizzo di NetworkManager come metodo unificato per la gestione delle interfacce di rete sia ethernet che wireless, e tutta la struttura di script della distribuzione è stata adattata  per la gestione dinamica degli indirizzi sulle interfacce, anche se rimane sempre possibile configurarle con il metodo tradizionale del file .conf. Rimane anche presente Wicd, l’altro gestore di interfacce di rete, che ha meno diffusione nel mondo Linux ma è ugualmente stabile e valido.

A margine della felicità per la release, voglio anche citare quelle che sono le preoccupazioni che si stagliano all’orizzonte per il futuro delle distribuzioni come Slackware, ossia quelle che non si assimilano alle scelte mainstream. Mi riferisco all’avvento di Systemd e Udisks2.

Systemd si propone come gestore dell’init di sistema a soppiantare integralmente sysvinit e l’intera filosofia di gestione avvio e servizi in stile System V o BSD, che da decenni sono alla base di tutti i sistemi operativi di derivazione Unix. Negli ambienti legati a Redhat e GNOME si è affermata l’idea che sia necessario liberare Linux da ogni eredità della tradizione Unix. Immagino che anche il successo di Android, il quale unisce il kernel Linux a una struttura di sistema non di derivazione GNU/Unix, abbia alimentato questa teoria. Non ci sarebbe di per se nulla di male, dato che nel mondo OpenSource da sempre tutti sono liberi di sviluppare nuove soluzioni e alternative, ma in questo caso i sostenitori e gli sviluppatori di Systemd pongono forti pressioni sul fatto che non ci si preoccupi di mantenere più alcun tipo di compatibilità con il sistema init tradizionale, e ne incoraggiano apertamente l’abbandono e la scomparsa, definendo obsoleti e irrilevanti i sistemi che vogliono ancora legarsi a una concezione di stretta derivazione Unix, tra i quali l’intera famiglia *BSD. E’ evidente che questo tipo di approccio, espresso anche in maniere irrispettose e arroganti, se dovesse diffondersi su larga scala potrebbe segnare la fine delle distribuzioni che non volessero adeguarsi ad adottare questo nuovo init, in quanto i vari servizi necessari al funzionamento di un sistema Linux andrebbero a legarsi in maniera sempre più stretta e indissolubile a Systemd rendendo difficile, se non addirittura impossibile, riadattarli all’uso in un sistema init tradizionale.

Systemd inoltre, ed è questo l’aspetto più minaccioso per ragioni che chiarisco poco più avanti, avoca a se le funzioni di dialogo con l’hardware che finora sono state svolte da Udev, il quale è stato fuso in Systemd cessando di esistere come software autonomo.

Udisks2 si inserisce sulla stessa scia, come nuovo metodo di gestione del montaggio dei dispositivi di storage che si distacca dal metodo tradizionale a tal punto che non è più possibile montare i device da linea di comando usando il comando mount!

Vale la pena di sottolineare poi che questi due nuovi software portano con se anche altri due effetti. Il primo è che GNOME 3.2 è totalmente dipendente da systemd e Udisks2, e questo lo lega in maniera esclusiva a Linux e ne impedisce l’uso su BSD. Devo però ammettere che questo è l’aspetto che mi preoccupa di meno, dato che Gnome non mi è mai piaciuto, e non vedo nessun disagio nel non poterlo usare. L’altro effetto è quello di togliere il terreno sotto i piedi a tutti gli altri desktop environment e desktop manager, tra cui appunto KDE, ma anche Xfce e gli altri minori, i quali sono stati integralmente costruiti per dialogare con l’hardware di sistema attraverso Udev e messagebus, e modificarli per lavorare con Systemd sarebbe un lavoro non indifferente, quando fosse possibile.

Le principali ragioni in positivo che spingono all’adozione di questi nuovi sistemi sono il desiderio di velocizzare l’avvio iniziale di un sistema Linux, parallelizzando la partenza dei servizi in modo tale che in pochissimi secondi tutto sia attivo, e il pieno supporto all’inserimento e disinserimento a caldo delle periferiche di storage esterne.

I punti di forza di un sistema init tradizionale invece sono la semplicità e leggibilità delle configurazioni, e la predicibilità della sequenza di avvio, che segue un ordine di partenza dei servizi ben preciso e calcolato, al prezzo di una lentezza nella partenza del sistema, che a mio avviso è assolutamente irrilevante e trascurabile considerate le prestazioni dei moderni sistemi.

Ora, è chiaro che tutto ciò assume un aspetto negativo solo nella misura in cui si attribuisca importanza al mantenimento di un’architettura Unix tradizionale all’interno di una moderna distribuzione Linux, e il tutto sarebbe legittimo e rispettabile se non ci fossero gli espliciti incoraggiamenti e le effettive spinte all’abbandono di ogni compatibilità con il sistema tradizionale.

Bisognerà quindi vedere se nel futuro Slackware sarà obbligata ad adottare Systemd e ad abbandonare la sua proverbiale struttura di file di avvio leggibili e comprensibili, o se si apriranno spazi per la sopravvivenza di un init tradizionale. Tempi duri.

Un weekend da sistemista

letture

Esiste una differenza d’approccio fondamentale tra un programmatore e un sistemista per quanto riguarda la scrittura di uno script necessario al funzionamento di un qualche meccanismo di sistema.

Un programmatore in genere scrive un software utilizzando il linguaggio di programmazione che conosce, integra librerie, scrive funzioni, ecc. Un sistemista scrive uno script. I più bravi usano il perl, ma in quel caso diventano uguali ai programmatori, mentre quelli “normali” scrivono uno script in Bash language.

Ecco, io sono un sistemista “normale” 🙂 Ho passato il fine settimana – con i dovuti intervalli, per carità – a scrivere uno script che mi consentisse di usare il Local Delivery Agent (LDA) di Dovecot nel mio sistema che utilizza qmail+VMailMgr. Leggendo la documentazione di Dovecot si ha l’impressione che sia una cosa piuttosto semplice, e che basta chiamare deliver-lda al posto del normale LDA, ma nel caso di VMailMgr non è così. L’LDA di Dovecot si aspetta di poter interrogare un userdb, un database degli utenti, per determinare all’atto della consegna del messaggio se esiste l’utente e dove si trova la sua mailbox. Ma VMailMgr non ha questo database. Il suo LDA vdeliver è in grado di leggere i file di configurazione e ricavare l’informazione, ma non fornisce un comando che dia questa informazione per poterla passare ad altri programmi.

Qui un programmatore probabilmente avrebbe letto i sorgenti di vdeliver, capito come funzionano, e scritto un software analogo che leggesse le informazioni dai file di VMailMgr per poi darle in pasto a deliver-lda.

Io invece mi sono lanciato in una sequela di:

echo $USER | cut -d@ -f1 | grep ....
if [ -d /home/$USER ]; then .. fi
sudo -u $USER  /usr/local/bin/listvdomain ...

cazz! ci vuole l’utente in /etc/sudoers..
cazz! il grep può restituire più di una riga…mettiamo un -m1..
uhmm.. e se non è un utente ma un alias?..altra serie di if e grep..
ecc.ecc.

Insomma, alla fine funziona, ma non prevede tutti i possibili casi e quindi ho dovuto restringerne l’uso a singoli utenti invece che applicarlo system-wide.

Ah, la ragione di tutto ciò era usare il delivery agent di Dovecot in quanto supporta Sieve e quindi mi consente di usare filtri email server-side per avere lo spam direttamente spostato nella cartella spam invece di doverlo far fare a Thunderbird quando è aperto, in questo modo quando non ho aperto Thunderbird e guardo la posta sul cellulare non mi trovo l’inbox piena di cose da spostare a mano 🙂

Pensa.

letture

Slackware Linux 13.37

letture

L’altroieri notte – intorno alle 3 ora italiana, alle 13:37 UTC  – Patrick ha annunciato l’uscita della Slackware 13.37. So l’orario preciso in quanto ero online in quel momento, e sono stato tra i primi a riportare la notizia su Identi.ca e Twitter.

La nuova versione era attesa, in quanto già da un mesetto era iniziato il ciclo delle Release Candidate, e si sapeva che la cosa era imminente.

La prima cosa da spiegare riguardo questa release è il numero di versione. E’ risaputo che Pat non ama essere rigoroso riguardo ai numeri di versione, e già in passato ha compiuto scelte controtendenza, quando decise di saltare dalla 8.0 direttamente alla 11.0. Invece ama essere giocoso e scherzoso, nello spirito della Chiesa del Subgenio, e la scelta della versione 13.37 si richiama esplicitamente al termine “Leet“, uno slang per “elite“, che gli hacker amano usare per definire i propri gruppi come i migliori, i più fighi, i più elitari. Nello slang hacker si usa sostituire alle lettere delle parole alcuni numeri che ricordano le lettere nella forma, il che rende la scrittura in un primo momento poco leggibile. Per cui spesso Leet viene scritto come 133t, oppure anche 1337.

Detto questo, parliamo della distribuzione in se. Come sempre, più che sconvolgenti novità la nuova release porta principalmente aggiornamenti di versione nei software utilizzati. Ecco quindi che KDE è stato aggiornato alla 4.5.5 – per avere la 4.6.2 bisogna far ricorso ai package non ufficiali di AlienBob -, Xfce alla 4.6.2, e il kernel Linux alla 2.6.37.6.

E’ ancora in via di svolgimento la manovra di abbandono di HAL, il sistema di riconoscimento e gestione dell’hardware che era prima alla base di KDE e che è stato ufficialmente abbandonato dal progetto, in favore di Udisk/Upower. Il KDE di Slackware di per se non ne fa più uso, ma ci sono ancora applicativi che non sono stati modificati per il nuovo standard e hanno ancora bisogno di HAL per funzionare correttamente, come ad esempio alcuni software di masterizzazione.

Addendum: una novità alquanto importante legata all’abbandono di HAL è il fatto che adesso la configurazione di X11 utilizza udev per rendersi conto delle periferiche disponibili e di quelle aggiunte al volo (ad esempio mouse e tastiere usb). In casi semplici è addirittura possibile non utilizzare più il file xorg.conf e lasciare che X11 faccia tutto da solo. Altrimenti esiste una nuova struttura di configurazione in /etc/X11/xorg.conf.d dove specificare delle regole da seguire per le nuove periferiche che si dovessero rendere disponibili in hotplug, tramite il criterio del match riferito a categorie generali, come MatchIsKeyboard, MatchIsMouse,ecc. In questo modo ogni nuova tastiera o mouse che viene ad essere inserita sarà configurata secondo i parametri specificati.

E’ stato introdotto l’utilizzo di PolicyKit e ConsoleKit, il primo per regolare in maniera granulare le politiche di accesso per i task che hanno bisogno di funzionalità eseguibili solo da root, e che consente di non dover dare in toto i privilegi di root al programma. Il secondo invece si occupa di operazioni particolari, come ad esempio la gestione delle periferiche quando si effettua il passaggio da un utente a un altro.

Oltre al kernel 2.6.37.6 ufficiale, vengono anche forniti come pacchetti a parte e “sperimentali” il kernel 2.6.38.4 e le config per compilare il kernel 2.6.39-rc4. Personalmente io uso il kernel 2.6.38.4 già da prima di questo rilascio, e l’ho compilato sulla falsariga delle configurazioni dei kernel precedenti.

Relativamente alla toolchain di compilazione, le glibc fornite sono le 2.13 e il gcc è alla versione 4.5.2. Altri punti nodali riguardo allo sviluppo sono il Perl, versione 5.12.3, e il Python alla 2.6.6.

Come browser, a parte il Konqueror integrato in KDE, viene fornito Mozilla Firefox 4.0. C’è da notare che, per quanto riguarda la versione 32bit, finora era stato sempre ripacchettizzato il binario ufficiale fornito da Mozilla, secondo richiesta della loro licenza. Dalla 4.0 invece viene compilato un binario su Slackware partendo dai sorgenti. Forse le condizioni di licenza da parte di Mozilla sono cambiate e consentono questo tipo di operazione senza perdere il diritto a chiamarlo “Firefox”. Altre distribuzioni come Debian in precedenza risolvevano il problema compilando il proprio pacchetto e dandogli un altro nome, come “Iceweasel”. Nelle distribuzioni a 64bit il problema non è mai esistito, in quanto non esiste un binario ufficiale a 64bit da parte di Mozilla, e si è sempre dovuto compilare Firefox dai sorgenti.

Google Chrome viene fornito come pacchetto a parte nel repository Extra. Le ultime release di Chrome dipendono da PAM, e la cosa ha creato scompiglio dato che Pat è da sempre contrario a PAM e Slackware ne è totalmente priva. L’ostacolo è stato risolto tramite un pacchetto “dummy” che installa soltanto il file libpam.so.0 nella cartella di Chrome, in modo che il browser si avvii senza protestare.

La nuova magnifica distribuzione in versione 32 e 64bit è scaricabile da torrent e da diversi mirror, ma consiglio a chi non l’abbia ancora fatto almeno una volta di acquistare il DVD ufficiale presso il negozio online, in modo da fornire un piccolo sostegno economico alla Slackware e a Patrick, che continua a mantenere la distribuzione da quasi 20 anni in maniera pressochè amatoriale e personale, mettendoci tempo e soldi propri, e ricavandone ben poco ritorno economico.

CC BY-NC-SA 4.0 .