-->

Re Ubuntu: i 10 articoli più letti nel mese di Novembre 2013.

Sono rimasto molto sorpreso delle statistiche che mi ha presentato il mese di settembre appena lasciato alle spalle. Non per le visite e il traffico sia chiaro, sempre soddisfacenti e nella norma, ma per gli articoli più letti.

Se lasciamo da parte i soliti post che trattano argomenti "classici", ormai sempre più ricercati in rete (ad esempio Gnome uno dei quali con degli accessi davvero strepitosi) mi lascia perplesso la totale assenza nel riepilogo mensile di articoli in cui confidavo molto.

È probabile che magari riprenderanno quota nei prossimi mesi, dopotutto non sarebbe la prima volta che ciò accade (basta far caso l'attesa suscitata dalla usicta di Ubuntu 13.10 Saucy Salamander), vi confesso però che sono rimasto balestrato nel preparare ieri questo post statistico.

Tanto per cominciare mai e poi mai avrei sospettato che Gnome continuasse ad spuntarla articolo scritto di getto e per pura curiosità mi portasse così tanti lettori da porlo a essere l’articolo più letto scritto nel mese di novembre 2013
21461-comeinfromthecold

1.- Re Ubuntu: i 10 articoli più letti nel mese di Novembre 2013.

Re Ubuntu: i 10 articoli più letti nel mese di Novembre 2013.

Sono rimasto molto sorpreso delle statistiche che mi ha presentato il mese di settembre appena lasciato alle spalle. Non per le visite e il traffico sia chiaro, sempre soddisfacenti e nella norma, ma per gli articoli più letti. Se lasciamo da parte i soliti post che trattano argomenti...

More »

2.- Copiare, fare il mirror e riscaricare i pacchetti Debian.

Copiare, fare il mirror e riscaricare i pacchetti Debian.

Riscaricare tutti i pacchetti .deb installati.  Si potrebbe volerlo fare per necessità di mirror o di backup, o per creare un set di CD che soddisfi le dipendenze. Il trucco può essere realizzato con: # COLUMNS=200 dpkg -l | grep '^ii' | awk '{ print $2 }' > /tmp/pkglist # cat /tmp/pkglist |...

More »

3.- Il sistema Debian 'alternatives', un modo elegante per impostare i valori predefiniti per il sistema.

Il sistema Debian 'alternatives', un modo elegante per impostare i valori predefiniti per il sistema.

Supponete che su un sistema siano installate molte applicazioni di uno stesso tipo, ad esempio tanti browser, tanti editor di testo o anche tante diverse versioni della macchina virtuale Java. Dal punto di vista dell’utente non ci sono problemi ad invocare l’applicazione desiderata, ma per il...

More »

4.- Systemd offre agli utenti la possibilità di eseguire un'istanza di systemd per gestire i propri processi e servizi.

Systemd offre agli utenti la possibilità di eseguire un'istanza di systemd per gestire i propri processi e servizi.

systemd offre agli utenti la possibilità di eseguire un'istanza di systemd per gestire i propri processi e servizi, consentendo di avviare, fermare, abilitare e disabilitare le unità che si trovano in certe directory quando systemd viene eseguito dall'utente. Ciò è utile per demoni e altri...

More »

5.- Due parole sul Tahr, chiamato anche Trusty.

Due parole sul Tahr, chiamato anche Trusty.

Il tahr (o thar) dell'Himalaya (Hemitragus jemlahicus) è un grosso ungulato strettamente imparentato con la capra selvatica. È originario delle colline rocciose e boscose e delle pendici montuose dell'Himalaya, dall'Asia Centrale e dal Kashmir settentrionale fino alla Cina. Trascorre i mesi estivi...

More »

6.- Svelato il nome e la roadmap di Ubuntu 14.04: c’è un caprone in arrivo.

Svelato il nome e la roadmap di Ubuntu 14.04: c’è un caprone in arrivo.

A pochi giorni dal rilascio di Ubuntu 13.10 “Saucy Salamander”, gli sviluppatori del team Canonical sono già pronti per mettere le mani su quella che sarà la prossima release 14.04.   E c’è davvero da rimboccarsi le maniche, considerati i numerosi problemi che Mir e il suo livello di...

More »

7.- Re Ubuntu: i 10 articoli più letti nel mese di Settembre 2013.

Re Ubuntu: i 10 articoli più letti nel mese di Settembre 2013.

Sono rimasto molto sorpreso delle statistiche che mi ha presentato il mese di settembre appena lasciato alle spalle. Non per le visite e il traffico sia chiaro, sempre soddisfacenti e nella norma, ma per gli articoli più letti. Se lasciamo da parte i soliti post che trattano argomenti...

More »

8.- ElementaryOS ha abilitati di default tutti i repository ufficiali di Ubuntu.

ElementaryOS ha abilitati di default tutti i repository ufficiali di Ubuntu.

Elementary ha abilitati di default tutti i repository ufficiali di Ubuntu. Ciò vuol dire che per installare qualsiasi cosa presente in archivio, sarà comunque possibile digitare il buon vecchio "sudo apt-get install ...". Se invece preferite l'installazione grafica, il Software Center è a portata...

More »

9.- ElementaryOS Luna si presenta con un desktop pulito e una barra superiore che ricorda quella di GNOME-Shell.

ElementaryOS Luna si presenta con un desktop pulito e una barra superiore che ricorda quella di GNOME-Shell.

Elementary OS è una distribuzione GNU/Linux per personal computer, basata su Ubuntu Linux. È una distribuzione orientata verso la semplicità, ma allo stesso tempo anche al minimalismo (per via della scarsità delle possibilità di configurazione grafica di quasi tutte le applicazioni), basata su...

More »

10.- Una delle novità principali della Clock App è il nuovo layout della pagina per la ricerca delle città.

Una delle novità principali della Clock App è il nuovo layout della pagina per la ricerca delle città.

Una delle novità principali della Clock App è il nuovo layout della pagina per la ricerca delle città. Il pulsante di ricerca è stato totalmente ridisegnato e ora presenta alcuni puntini bianchi disposti a formare un triangolo su sfondo rosa. Il campo di testo adiacente, inoltre, è stato allungato...

More »

 
Se ti è piaciuto l'articolo , iscriviti al feed cliccando sull'immagine sottostante per tenerti sempre aggiornato sui nuovi contenuti del blog:
reeder
   

Copiare, fare il mirror e riscaricare i pacchetti Debian.

Riscaricare tutti i pacchetti .deb installati.
 Si potrebbe volerlo fare per necessità di mirror o di backup, o per creare un set di CD che soddisfi le dipendenze. Il trucco può essere realizzato con:
# COLUMNS=200 dpkg -l | grep '^ii' | awk '{ print $2 }' > /tmp/pkglist
# cat /tmp/pkglist | xargs apt-get --download-only --reinstall -y install
Terminato il download, si dovrebbero vedere tutti i file .deb in /var/cache/apt/archives/. Si veda anche il metodo apt-move sync successivo, potrebbe essere ciò di sui si ha veramente bisogno.

Impostare un mirror Debian o una sorgente apt sul disco locale.
Questa sottosezione potrebbe essere di interesse se si vogliono copiare i CD Debian sul proprio disco (così da non dovere cambiare i CD-ROM nel lettore ogni volta) o esportare il mirror Debian sulle macchine della propria LAN locale.

Il modo più semplice per copiare i CD Debian sul proprio hard disk dovrebbe essere l'utilizzo dello strumento dd e la creazione diretta dell'immagine del CD:
# dd if=/dev/cdrom of=/mnt/deb-cd1.img bs=512k
SuggerimentoSuggerimento
Se si installa il pacchetto cdrecord sarà disponibile il comando readcd:
# readcd dev=0,0,0 f=deb-cd1.img
Si monterà poi l'immagine così (naturalmente la si aggiunga a /etc/fstab se si vuole averla disponibile sempre):

# mkdir /mnt/deb-cd1
# mount -o loop,ro /mnt/deb-cd1.img /mnt/deb-cd1
 
 
Una riga in sources.list di esempio potrebbe essere simile a questa:
deb file://mnt/deb-cd1 woody main contrib non-free non-US/main non-US/contrib non-US/non-free
NotaNotare:
Sebbene questa procedura dovrebbe funzionare ed è perfettamente corretta se si vogliono davvero le immagini CD (per esempio se si stiano salvando i CD Debian), probabilmente la si troverà inadatta per altre necessità (perché il numero massimo di device loop disponibili in maniera predefinita nel kernel è solo 7 e si avranno necessariamente sorgenti multiple invece di una omnicomprensiva).

Usare apt-move per spostare i pacchetti nel repository sull'hard disk locale.
Se si ha sufficiente spazio disco, si troverà apt-move molto utile. Si può utilizzarlo per copiare i CD-ROM sul disco, ordinare i file scaricati da /var/cache/apt/archives o rimanere sincronizzati con il proprio mirror Debian locale.
  • Primo, si installi apt-move:
    apt-get install apt-move
  • Modificare /etc/apt-move.conf, mettere "localhost" (o il nome Internet del mirror naturalmente) nel campo APTSITES e cambiare l'opzione DIST (in "woody", se si ha Debian 3.0). Si potrebbe anche modificare PKGTYPE in "both" (entrambi) se si desiderano anche i pacchetti sorgente.
  • Modificare /etc/apt/sources.list e disattivare tutte le righe riferite ai CD-ROM.
  • Esportare /cdrom con Apache (se si utilizza http://localhost invece del mirror Internet come sorgente dei pacchetti):
    # apt-get install apache
    # echo "Alias /cdrom/ /cdrom/" >> /etc/apache/httpd.conf
    # /etc/init.d/apache restart
    # echo "deb http://localhost/cdrom/ woody contrib main non-US/contrib 
    non-US/main non-US/non-free non-free" >> /etc/apt/sources.list
    # apt-get update
  • Inizializzare apt-move:
    # apt-move get
  • Adesso per ciascun CD che si vuole spostare sul proprio hard disk, si digiti:
    # mount /cdrom
    # apt-get update
    # apt-move mirror
    # umount /cdrom
    Se non si utilizzano CD ma direttamente il mirror Internet:
    # Per spostare i pacchetti da /var/cache/apt/archives/ solamente
    # apt-move move 
    
    # Per creare un mirror completo
    # apt-move mirror 
    
    # Per copiare solo i pacchetti che sono installati sul sistema
    # apt-move sync 
  • Quando si è terminato, si creino i nuovi Packages.gz e Sources.gz:
    # apt-move packages
    # cd /mirrors/debian
    # gunzip `find . -name Packages.gz`
    # apt-move packages
    Si noti che la riga gunzip ... è importante, perché crea i semplici file Packages; saranno necessari in seguito se si utilizzano strumenti tipo debootstrap. Sarà anche necessario copiare alcuni file Release esistenti nella directory dists/woody/.
  • Sostituire il repository http://localhost/cdrom/ (non è più necessario) con il nuovo mirror creato e si installi xplanet per testarlo:
    # perl -n -i -e 'print unless m#/cdrom/#' /etc/apt/sources.list
    # apt-get install apache
    # echo "Alias /mirrors/debian/ /debian/" >> /etc/apache/httpd.conf
    # /etc/init.d/apache reload
    # echo "deb http://localhost/debian/ woody contrib main non-US/contrib 
    non-US/main non-US/non-free non-free" \ >> /etc/apt/sources.list
    # apt-get update
    # apt-get install xplanet xplanet-images
    Prima di andare avanti, non ci si dimentichi di rimuovere la voce /cdrom/ da /etc/apache/httpd.conf.
  
Se ti è piaciuto l'articolo , iscriviti al feed cliccando sull'immagine sottostante per tenerti sempre aggiornato sui nuovi contenuti del blog:
reeder

Il sistema Debian 'alternatives', un modo elegante per impostare i valori predefiniti per il sistema.

Supponete che su un sistema siano installate molte applicazioni di uno stesso tipo, ad esempio tanti browser, tanti editor di testo o anche tante diverse versioni della macchina virtuale Java. Dal punto di vista dell’utente non ci sono problemi ad invocare l’applicazione desiderata, ma per il sistema potrebbe essere importante sapere quale browser o quale editor di testo avviare in caso di necessità, ad esempio durante l’esecuzione di uno script di installazione o configurazione.

Per l’autore dello script potrebbe essere estremamente scomodo dover inserire delle parti di codice per verificare la disponibilità sul sistema di un particolare editor, di un particolare browser o altre applicazioni da invocare. Per questo c’è il sistema delle debian-alternatives, un sistema che assegna un nome generico (genname) a ciascuna classe di applicazioni, in modo che con quel nome si possa avviare l’applicazione idonea.

Esempio pratico
Sul vostro sistema ci sono diversi editor di testo, ad esempio jed, vim, nano e pico. Uno script che dovesse avere bisogno di invocare un editor di testo, invece di invocarne esplicitamente uno attraverso il comando diretto, invocherebbe semplicemente il comando editor. Sarà poi compito di debian-alternatives avviare un editor effettivamente disponibile sul sistema, in particolare quello deciso da voi oppure quello cui è stata assegnata la maggiore priorità.

Quindi sul sistema potrete trovare un generico comando x-www-browser che avvia un browser nell’ambiente grafico, un generico javac che invoca il compilatore Java (ad esempio gcj, oppure quello della SUN, ecc.), e così via. Una cosa analoga avviene anche per le pagine di manuale, ovvero pagine di manuale generiche che fanno riferimento alla manpage dell’opportuna applicazione.
Vediamo ora più nel dettaglio come funzionano queste debian-alternatives.

Significato dei termini usati.
Genname: è il nome generico assegnato ad una classe di applicazioni, ed è il nome del file sul filesystem che verrà usato in luogo dell’applicazione particolare. Esempi: /usr/bin/editor, /usr/bin/x-www-browser, ecc.

Symlink: è il nome del link simbolico nella directory /etc/alternatives. Esempi: x-www-browser, editor, ecc.

/etc/alternatives: è la directory che contiene, salvo diversa impostazione, tutti i symlink delle applicazioni, vale a dire quei link simbolici che hanno come nome il nome generico del gruppo e che puntano all’applicazione predefinita del gruppo.

Alternativa: il nome di uno specifico file nel filesystem, che sarà acceduto/invocato attraverso un nome generico.

Link group: insieme di symlink correlati, che si vuole trattare in maniera coordinata.
Master link: il link all’interno di un link group che stabilisce come gli altri link ad esso collegati devono essere configurati.

Slave link: link subordinato ad un master link, e che viene modificato in caso di modifica del master link. Per intenderci, è quello che avviene con le man-pages.

Priorità: è un valore intero che serve a specificare quale applicazione di un gruppo deve essere quella di default, a meno di una ridefinizione manuale dell’utente. E’ anche il parametro che viene preso in considerazione quando si reimposta l’alternativa allo stato automatico.

Comandi ed esempi
Il comando principale con cui si interagisce col sistema delle alternative è update-alternatives, e va eseguito sempre con i privilegi di amministratore di sistema. Le opzioni più importanti sono le seguenti:
  • --display: mostra le impostazioni attuali di un’alternativa;
  • --list: mostra le possibili scelte per un’alternativa;
  • --config: configura un’alternativa;
  • --auto: reimposta lo stato automatico per un’alternativa, cioè la riassegna all’applicazione con priorità maggiore;
  • --install: installa una nuova alternativa all’interno di un gruppo. Se il gruppo non esiste, lo crea.
  • --remove: rimuove un’alternativa all’interno di un gruppo, con tutti i suoi slave;
  • --remove-all: rimuove un intero gruppo di alternative.
Esempio 1: opzione --list
update-alternatives --list x-www-browser
Output:
/usr/bin/iceweasel
/usr/bin/konqueror
/usr/bin/firefox-2.0
Questo vuol dire che per x-www-browser ci sono tre diverse alternative (Iceweasel, Konqueror e Firefox-2.0).

Esempio 2: opzione --display
update-alternatives --display x-www-browser
Output:
x-www-browser - lo status è auto.
il link attualmente punta a /usr/bin/konqueror
/usr/bin/iceweasel - priorità 70
slave x-www-browser.1.gz: /usr/share/man/man1/iceweasel.1.gz
/usr/bin/konqueror - priorità 100
slave x-www-browser.1.gz: /usr/share/man/man1/konqueror.1.gz
/usr/bin/firefox-2.0 - priorità 20
slave x-www-browser.1.gz: /usr/share/man/man1/firefox.1.gz
La `migliore' versione attualmente è /usr/bin/konqueror.
Questo significa che nel gruppo x-www-browser (browser nell’ambiente grafico) sono presenti tre distinte applicazioni: Konqueror, Iceweasel e Firefox-2.0. La dicitura status auto segnala che l’applicazione da associare a x-www-browser è scelta automaticamente in base alla priorità; essendo Konqueror l’applicazione cui è assegnata la priorità più alta, invocando il comando x-www-browser verrà avviato Konqueror.

Esempio 3: opzione --config
update-alternatives --config x-www-browser
Output:
Ci sono 3 alternative che forniscono `x-www-browser'.
Selezione Alternativa
-----------------------------------------------
1 /usr/bin/iceweasel
*+ 2 /usr/bin/konqueror
3 /usr/bin/firefox-2.0

Premi invio per mantenere il default[*], o inserisci il numero da selezionare:
Il carattere * indica la configurazione corrente, mentre il + indica l’applicazione a maggiore priorità. Inserendo 1, 2 o 3 sceglierete quale applicazione associare a x-www-browser; premendo semplicemente invio, invece, manterrete tutto inalterato.
Esempio 4: opzione --auto
update-alternatives --auto x-www-browser
Viene reimpostato per x-www-browser il link a priorità maggiore (Konqueror).

Esempio 5: opzione --install
update-alternatives --install /usr/bin/x-www-browser x-www-browser /usr/bin/opera 40 --slave /usr/share/man/man1/x-www-browser.1.gz x-www-browser.1.gz /usr/share/man/man1/opera.1.gz
Attenzione: il precedente comando va scritto su un’unica riga, senza andare a capo!
Analizziamo il comando pezzo per pezzo:
l’opzione --install serve per aggiungere un’applicazione ad un gruppo o, se il gruppo non esiste ancora, per crearlo.
La parte del master link include i seguenti frammenti:
  • /usr/bin/x-www-browser: è il file che rappresenta l’applicazione generica (genname)
  • x-www-browser: è il nome del gruppo, ovvero del symlink nella directory /etc/alternatives
  • /usr/bin/opera: è il file che rappresenta l’applicazione da associare al gruppo
  • 40: è la priorità da assegnare a questa applicazione
La parte dello slave link, che inizia con l’opzione --slave, include:
  • /usr/share/man/man1/x-www-browser.1.gz: il nome del file che rappresenta lo slave link (ovvero il genname dello slave)
  • x-www-browser.1.gz: il nome dello slave
  • /usr/share/man/man1/opera.1.gz: il file da associare a questo slave link
Le opzioni --remove e --remove-all sono banali, per cui vi invito a leggere la man-page del comando update-alternatives, in cui troverete ulteriori dettagli.

Capita che, dopo l'installazione o rimozione o aggiornamento del software, le alternatives si riconfigurino, sovrascrivendo la precedente configurazione.

Gli amanti del terminale possono usufruire di questo comando:
# update-alternatives --config [alternativa]
Chi invece non ha molta dimestichezza con la riga di comando può ricorrere a due software grafici: galternatives oppure kalternatives, rispettivamente per Gnome e per KDE.

Installazione.
Per installare, è sufficiente dare uno dei due comandi, in base a quale dei due programmi si vuole installare:
# apt-get install galternatives
# apt-get install kalternatives

Ora è possibile amministrare graficamente le alternatives, senza scervellarsi col terminale.
Se ti è piaciuto l'articolo , iscriviti al feed cliccando sull'immagine sottostante per tenerti sempre aggiornato sui nuovi contenuti del blog:
reeder

Systemd offre agli utenti la possibilità di eseguire un'istanza di systemd per gestire i propri processi e servizi.

systemd offre agli utenti la possibilità di eseguire un'istanza di systemd per gestire i propri processi e servizi, consentendo di avviare, fermare, abilitare e disabilitare le unità che si trovano in certe directory quando systemd viene eseguito dall'utente. Ciò è utile per demoni e altri servizi che comunemente non vengono avviati da root oppure utilizzano un utente apposito, come avviene con mpd. 

Setup.

startx.
Nota: Questo passaggio non è necessario se si intende utilizzare l'autologin.
Si faccia gestire la propria sessione da systemd-logind. Se systemd è stato eseguito come sistema di init, allora non è necessario compiere alcuna operazione.

L'utente dovrà ora lanciare un'istanza di systemd inserendo quanto segue nel proprio ~/.xinitrc:
/usr/lib/systemd/systemd --user &
 
Se l'utente non lancia il proprio window manager tramite /usr/lib/systemd/systemd --user, sarà invece necessario inserire systemd --user & in modo da lanciare systemd come qualsiasi altra applicazione prima di eseguire il window manager.

Dopo l'avvio di X, è possibile controllare se la sessione è gestita da systemd-logind utilizzando il seguente comando:


$ loginctl --no-pager show-session $XDG_SESSION_ID | grep Active
 
Se l'output corrisponde a Active=yes, allora si sta utilizzando systemd-logind per gestire la sessione. Rimuovere eventuali occorrenze di ck-launch-session o dbus-launch dal proprio ~/.xinitrc, dal momento che tali comandi non sono più richiesti.


Display Managers.
I principali Display Manager utilizzano systemd-logind di default, perciò il comando loginctl menzionato nella sezione precedente dovrebbe funzionare come previsto. Sarà semplicemente necessario aggiungere /usr/lib/systemd/systemd --user all'elenco dei programmi che l'ambiente desktop avvia automaticamente.

GNOME 3 (Utilizzando GDM).
Gli utenti che desiderano che GDM 3 avvii automaticamente la propria sessione di /usr/lib/systemd/systemd --user devono semplicemente creare una sessione di login speciale:
/usr/share/xsessions/gnome-systemd.desktop
[Desktop Entry]
Type=Application
Name=systemd
Comment=Avvia un'istanza utente di 'systemd'
Exec=/usr/lib/systemd/systemd --user
Assicurarsi di scegliere la sessione systemd al login.
Nota: Quanto sopra è stato testato con una installazione pura di GNOME 3 e GDM. In caso di configurazioni alternative, la vostra esperienza potrebbe variare. Questo metodo non richiede l'installazione degli script user-session di systemd.

Utilizzare /usr/lib/systemd/systemd --user per gestire la propria sessione.
Systemd ha molte caratteristiche utili, una delle quali è la capacità di tracciare i programmi utilizzando i cgroups (si esegua systemctl status). Benchè ciò sia veramente utile per un sistema di init il cui processo ha pid 1, anche la modalità utente può avvalersi di questa caratteristica per avviare automaticamente i programmi dello stesso, tracciando al tempo stesso il contenuto di ogni cgroup.

Tutte le units dell'utente andranno inserite in $HOME/.config/systemd/user ed avranno la precedenza sulle altre unità contenute nelle directory di sistema.
Sarà necessario installare due pacchetti per avvalersi di questa funzionalità, entrambi reperibili su AUR: systemd-xorg-launch-helper-git e systemd-user-session-units-git, se si desidera utilizzare l'autologin.
Inizializzare quindi i propri targets. È consigliabile crearne due: una per il window manager e l'altra come target di default. Il target del window manager dovrebbe essere simile al seguente:
$HOME/.config/systemd/user/wm.target
[Unit]
Description=Window manager target
Wants=xorg.target
Wants=mystuff.target
Requires=dbus.socket
AllowIsolate=true

[Install]
Alias=default.target
Si crei un secondo target chiamato mystuff.target, che andrà poi inserito nel campo WantedBy (sezione [Install]) di tutti i servizi che si intende avviare ad eccezione del window manager:
$HOME/.config/systemd/user/mystuff.target
[Unit]
Description=Xinitrc Stuff
Wants=wm.target

[Install]
Alias=default.target
Si crei un link simbolico di nome default.target, che punta al target di cui sopra. Quando si esegue /usr/lib/systemd/systemd --user, questo sarà il target avviato.
Infine, si scrivano i vari files .service corrispondenti ai servizi da avviare. Si inizi con quello del window manager:
$HOME/.config/systemd/user/mystuff.target
[Unit]
Description=your window manager service
Before=mystuff.target
After=xorg.target
Requires=xorg.target
 
[Service]
Requires=xorg.target
#Environment=PATH=decommentare:per:sovrascrivere:PATH
Environment=DISPLAY=:0
ExecStart=/percorso/assoluto/ad/eseguibile/wm
Restart=always
RestartSec=10
 
[Install]
WantedBy=wm.target
Nota: La sezione [Install] include il valore WantedBy, che permetterà al servizio di essere linkato come $HOME/.config/systemd/user/wm.target.wants/VOSTRO_WM.service, quando si utilizza systemctl --user enable, consentendone l'avvio al login. È consigliabile abilitare questo servizio con systemctl e non linkarlo manualmente.
È ora possibile riempire la directory delle unità con tutti i servizi di cui si potrebbe aver bisogno, come ad esempio mpd, gpg-agent, offlineimap, parcellite, pulse, tmux, urxvtd, xbindkeys e xmodmap.

Per uscire dalla sessione utente si utilizzi systemctl --user exit.

Login automatico.
Se si vuole utilizzare il login automatico al boot, è possibile utilizzare la relativa unit fornita dal pacchetto user-session-units. Si consideri l'idea di abilitare uno screen locker per evitare che qualcuno possa avvalersi della sessione appena avviata.

Si aggiunga questa linea ai files /etc/pam.d/login e /etc/pam.d/system-auth:
session    required    pam_systemd.so
 
Dal momento che user-session@.service viene avviato sulla tty1, sarà necessario aggiungere Conflicts=getty@tty1.service al .service in questione, se non è già presente.

Una volta fatto quanto sopra, si esegua systemctl --user enable WM_SCELTO.service
Nota: È necessario prestare attenzione alle tty, in modo che la sessione di systemd sia marcata come attiva. Una sessione viene segnata come inattiva quando la tty nella quale ci si trova è diversa da quella in cui è stato effettuato il login, il che significa che il server X dovrà essere avviato nella stessa tty specificata in user-session@.service, altrimenti potrebbero verificarsi diversi problemi con le applicazioni grafiche, come l'impossibilità di montare dispositivi removibili USB.
Una delle cose più importanti da aggiungere ai propri .service è l'utilizzo di Before= e After= nella sezione [Unit], che permettono di determinare l'ordine di avvio dei servizi. Si supponga di disporre di una applicazione grafica che si vuole avviare al boot: sarà possibile farlo aggiungendo After=xorg.target al proprio .service. Si supponga inoltre di voler avviare ncmpcpp che richiede mpd per funzionare: in tal caso si dovrà aggiungere After=mpd.service al .service di ncmpcpp.
Col tempo e l'esperienza si capirà come gestire l'ordine di avvio delle applicazioni, oppure leggendo le pagine di man di systemd. Iniziare con systemd.unit(5) è una buona idea.

Altri casi d'uso. 

Multiplexer di terminale persistente.
Si potrebbe voler utilizzare la propria sessione utente per avviare un multiplexer di terminale come GNU Screen o Tmux in background invece di una sessione grafica. La separazione del login dal login grafico è probabilmente utile solamente per gli utenti che effettuano il boot in TTY invece di utilizzare un display manager (nel cui caso è possibile inserire tutti i programmi da avviare nel target mystuff.target).

Per creare questo tipo di sessione utente si proceda come sopra, creando però multiplexer.target invece di wm.target:
[Unit]
Description=Terminal multiplexer
Documentation=info:screen man:screen(1) man:tmux(1)
After=cruft.target
Wants=cruft.target

[Install]
Alias=default.target
Il target cruft.target, similmente a mystuff.target, dovrebbe occuparsi dell'avvio di tutti quei programmi che si pensa debbano essere lanciati prima di tmux o screen (o che si intende avviare al boot indifferentemente dal momento di avvio), come una sessione demone di GnuPG.

Sarà quindi necessario creare un servizio per la propria sessione multiplexer. Di seguito un servizio di esempio che utilizza tmux ed effettua il source di una sessione di gpg-agent che scrive le proprie informazioni in /tmp/gpg-agent-info. La sessione proposta è inoltre in grado di avviare programmi grafici previo avvio del server X, dal momento che la variabile DISPLAY è impostata.
[Unit]
Description=tmux: A terminal multiplixer Documentation=man:tmux(1)
After=gpg-agent.service
Wants=gpg-agent.service

[Service]
Type=forking
ExecStart=/usr/bin/tmux start
ExecStop=/usr/bin/tmux kill-server
Environment=DISPLAY=:0
EnvironmentFile=/tmp/gpg-agent-info

[Install]
WantedBy=multiplexer.target
Una volta fatto, si esegua systemctl --user enable su tmux.service, multiplexer.target ed eventuali altri servizi che debbano essere avviati da cruft.target.

Si abiliti inoltre user-session@.service come spiegato sopra, ma assicurarsi di rimuovere la linea Conflicts=getty@tty1.service, dal momento che la propria sessione utente non gestirà una TTY.
Congratulazioni! Si dispone ora di un multiplexer di terminale ed altri programmi utili che vengono avviati automaticamente al boot!

Avviare X.
Si avrà notato che, essendo il multiplexer di terminale il nuovo default.target, X non sarà avviato automaticamente al boot. Per avviare X, si proceda come sopra ma non si attivi o linki manualmente wm.target a default.target, bensì utilizzare un semplice alias per startx:
alias startx='systemctl --user start wm.target'

Servizi Utente.
Gli utenti possono ora interagire con le unità poste nelle seguenti directory proprio come farebbero con i servizi di sistema (ordinate in modo ascendente di preferenza):
  • /usr/lib/systemd/user/
  • /etc/systemd/user
  • ~/.config/systemd/user
Per controllare l'istanza di systemd, si utilizzi il comando systemctl --user.

Servizi installati da pacchetti.
I pacchetti che forniscono servizi pensati per essere avviati dall'utente, possono installarli in /usr/lib/systemd/user/. L'amministratore di sistema può quindi modificare l'unità copiandola in /etc/systemd/user/ e quest'ultima potrà a sua volta essere modificata dall'utente copiandola in ~/.config/systemd/user.

Esempio.
Quanto segue è una versione utente del servizio di mpd:
mpd.service
[Unit]
Description=Music Player Daemon

[Service]
ExecStart=/usr/bin/mpd --no-daemon

[Install]
WantedBy=default.targets
Esempio con variabili. Quanto segue è una versione utente del servizio sickbeard.service, che utilizza una variabile contenente il valore della home directory dell'utente che lo esegue, utilizzata da SickBeard per trovare alcuni files:
sickbeard.service
[Unit]
Description=SickBeard Daemon

[Service]
ExecStart=/usr/bin/env python2 /opt/sickbeard/SickBeard.py --config %h/.sickbeard/config.ini --datadir %h/.sickbeard

[Install]
WantedBy=default.target
Come spiegato in man systemd.unit, la variabile %h contiene il valore della home directory dell'utente che esegue il servizio. È possibile utilizzare altre variabili, il cui elenco è disponibile nelle pagine di man di systemd.

Nota per le applicazioni X11.
La maggior parte delle applicazioni grafiche richiedono che la variabile d'ambiente DISPLAY sia impostata per essere avviate (se i propri servizi non si avviano, questa è la prima cosa da controllare). Assicurarsi quindi di includerla nei propri servizi:
$HOME/.config/systemd/user/parcellite.service
[Unit]
Description=Parcellite clipboard manager

[Service]
ExecStart=/usr/bin/parcellite
Environment=DISPLAY=:0 # <= !

[Install]
WantedBy=mystuff.target
Sarebbe però preferibile non inserire direttamente il valore della variabile DISPLAY nei servizi (specialmente se si hanno più schermi):
$HOME/.config/systemd/user/x-app-template@.service
[Unit]
Description=Your amazing and original description

[Service]
ExecStart=/full/path/to/the/app
Environment=DISPLAY=%i # <= !

[Install]
WantedBy=mystuff.target
È ora possibile avviarli con:
systemctl --user {start|enable} x-app@display-in-uso.service # <= :0 nella maggior parte dei casi
Alcune applicazioni grafiche potrebbero non avviarsi correttamente poichè il display socket non è ancora disponibile. È possibile ovviare il proglema aggiungendo quanto segue ai propri servizi:
$HOME/.config/systemd/user/x-app-template@.service
[Unit]
After=xorg.target
Requires=xorg.target

... 
Se ti è piaciuto l'articolo , iscriviti al feed cliccando sull'immagine sottostante per tenerti sempre aggiornato sui nuovi contenuti del blog:
reeder

Random Posts

I miei preferiti in Instagram

Archivio