Gentoo Logo

Guida per la migrazione a X Modulare

Indice:

1.  Introduzione

Perché modulare?

Probabilmente ci si meraviglierebbe se un singolo ed elementare pacchetto come xorg-x11 venisse diviso in almeno 300 pacchetti separati. Questo cambiamento non è qualcosa che Gentoo sta facendo indipendentemente dallo sviluppo di X.Org; gli sviluppatori di questo software stanno suddividendo tutti i pacchetti in versioni separate, e il gruppo degli sviluppatori di Gentoo sta seguendo la stessa modalità.

Le ragioni dietro la divisione e alla modifica della struttura di X.Org sono almeno tre:

  • E' troppo difficile per i nuovi sviluppatori addentrarsi in X, perciò si è migrati ad autotools, un sistema di cui molte persone sono soddisfatte, se non addirittura felici.
  • Seguendo questo spostamento, con autotools è possibile dividere i sorgenti, e questo rende X più facile da sviluppare.
  • Le varie parti di X sono state tenute insieme senza motivo in passato, e ciò ha reso la risoluzione di bug spesso non possibile. Se si riusciva ad effettuare le correzioni, esse richiedevano la ricompilazione totale di XOrg. Per esempio, un bug nei driver ati significava aspettare 6 mesi fino al prossimo rilascio, oppure bisognava ricompilare tutto, anche i font, per risolvere il problema, senza nessuna ragione valida.

2.  Migrare a X Modulare

Introduzione

Per far sì che vecchi pacchetti non creino conflitti, verrà fatta pulizia di tutti i file relativi al vecchio xorg-x11, prima di installare X modulare. Non è assolutamente essenziale ciò, ma aiuterà ad effettuare una migrazione il più trasparente possibile.

Primo passaggio. Rimuovere completamente il vecchio X

Codice 2.1: Fare una copia di sicurezza del vecchio xorg-x11

# emerge gentoolkit
# quickpkg xorg-x11

Liberarsi dell'installazione monolitica:

Codice 2.2: Rimuovere l'installazione monolitica

# emerge -Ca xorg-x11 virtual/x11

si potrebbe aver bisogno di una copia di sicurezza di xorg-x11 monolitico nel caso in seguito si verificassero incidenti irreversibili. È consigliabile installare un browser testuale come links o lynx per visualizzare questa guida mentre X non è disponibile.

Se la propria directory /usr/X11R6 non è un collegamento simbolico a /usr, cancellarla e cominciare da zero. Ma prima di farlo, salvare la lista di tutti i pacchetti installati dentro di essa. Il pacchetto gentoolkit fornisce equery.

Codice 2.3: Creare una lista di pacchetti

# if [[ ! -L /usr/X11R6 ]]; \
  then equery belongs /usr/X11R6 > ~/usr-x11r6-packages \
  && rm -rf /usr/X11R6; fi

Secondo passaggio: Installare X modulare

Per l'accelerazione grafica, attivare la flag USE dri.

Successivamente, installare i driver necessari. Questa operazione potrà variare in base al proprio hardware video o di input. Se si possiede già un file di configurazione /etc/X11/xorg.con funzionante, eseguire il seguente comando per farsi un'idea di quale driver si avrà bisogno:

Codice 2.4: Trovare i driver dei quali si ha bisogno

# grep Driver /etc/X11/xorg.conf
Driver      "kbd"
Driver      "mouse"
Driver      "radeon"

Codice 2.5: Verificare i driver disponibili

# emerge --verbose --pretend xorg-x11
[ebuild   R   ] x11-base/xorg-x11-7.0-r1  USE="-xprint" INPUT_DEVICES="keyboard
mouse -acecad -aiptek -calcomp -citron -digitaledge -dmc -dynapro -elo2300
-elographics -evdev -fpit -hyperpen -jamstudio -joystick -magellan -magictouch
-microtouch -mutouch -palmax -penmount -spaceorb -summa -synaptics% -tek4957
-ur98 -vmmouse -void" VIDEO_CARDS="i128 mga savage -apm -ark -ati* -chips
-cirrus -cyrix -dummy -fbdev -fglrx% -glint -i740 -i810 -imstt -neomagic
-newport -nsc -nv -nvidia% -rendition -s3 -s3virge -siliconmotion -sis -sisusb
-sunbw2 -suncg14 -suncg3 -suncg6 -sunffb -sunleo -suntcx -tdfx -tga -trident
-tseng -v4l -vesa -vga -via -vmware -voodoo" 0 kB

Impostare INPUT_DEVICES e VIDEO_CARDS secondo le proprie esigenze in /etc/make.conf. Le impostazioni minimail per l'esempio precedente potrebbero essere INPUT_DEVICES="keyboard mouse" VIDEO_CARDS="ati". Se non si imposta l'una o l'altra variabile, xorg-x11 farà installare tutti i possibili driver di quel tipo. Per avere dei driver di scorta, si potrebbe aggiungere anche vesa e fbdev a VIDEO_CARDS.

A questo punto installare il metapacchetto, il quale installerà il server e le applicazioni principali, fornendo una implementazione funzionante di X per il desktop:

Codice 2.6: Installare il metapacchetto modulare

# emerge xorg-x11
# etc-update

Si noterà che questa installazione sarà alquanto minimale, poichè elementi come xcursor-themes non verranno installati in modo predefinito. Per esempio, si potrebbe voler installare xcursor-themes se è stata cambiata la configurazione dei cursori su whiteglass, redglass o handhelds. Se si usano i temi gentoo, gentoo-blue o gentoo-silver per i cursori, installare gentoo-xcursors.

Nota: Con l'installazione modulare, driver esterni come nvidia-glx o wacom o applicazioni vnc potrebbero non funzionare, se essi installano delle loro parti in /usr/lib/modules/ invece che in /usr/lib/xorg/modules. Molti di questi pacchetti hanno una rilevazione di X modulare inserita nel processo di installazione, di conseguenza essi vanno reinstallati a seguito dell'installazione di X modulare.

3.  Avvertimenti/Problemi Comuni

'emerge -u world' vuole installare xorg-x11 6.x o virtual/x11

Questo avviene perchè le dipendenze di alcuni pacchetti non sono ancora state aggiornate per la versione modulare. È possibile dare una mano nel faticoso compito di migrazione leggendo la Guida per il porting a X modulare e fornire le patch dei bug ai manutentori dei singoli pacchetti. I manutentori saranno elencati in metadata.xml nella stessa directory del pacchetto e il pacchetto herdstat velocizzerà la loro interrogazione.

Cos'è successo a tutte le flag USE?

Diverse flag USE usate nella serie xorg-x11-6.8 sono state rimosse o spostate nella 7.0. Qualche nuova flag USE è invece apparsa. Ecco il perchè:

USE flag Cosa comporta in xorg 7.0?
3dfx Nella versione 7.0, aggiunge glide-v3 come dipendenza del metapacchetto xorg-x11
3dnow, mmx, sse Abilitate in modo predefinito in fase di compilazione, perchè ci sono dei controlli in fase di esecuzione.
bitmap-fonts, truetype-fonts, type1-fonts Il metapacchetto xorg-x11 installa un piccola selezione dei principali font usati o richiesti. Si potrà installarne di ulteriori tramite i pacchetti in media-fonts/.
cjk USE=nls su font-misc-misc e font-sony-misc per ottenere i font JISX0201 giapponesi. Molti altri sono in font-jis-misc. I font cinesi sono in font-isas-misc. I font coreani sono in font-daewoo-misc.
dlloader la versione 7.0 usa il dllloader in modo predefinito, e l'elfloader non funziona.
doc Spostato in app-doc/xorg-docs
dmx Contenuto in xorg-server almeno che USE=minimal
font-server È possibile installare manualmente xfs.
ipv6 Spostato nei singoli pacchetti che lo usano. Impostarlo globalmente in base alle proprie necessità.
minimal Per avere lo stesso effetto, installare solamente xorg-server invece che xorg-x11. USE=minimal in xorg-server per evitare di compilare Xdmx, Xvfb e Xnest. Se serve qualcosa di ancora più minimale, dare un'occhiata in x11-base/kdrive.
nls In 7.0, USE=nls installa tutte le versioni non-ISO8859-1 dei font.
nocxx Non esiste ancora un equivalente in 7.0
opengl Il nome è stato cambiato in "dri", il quale abilita il rendering diretto in xorg-server e diversi driver. Sia che USE=dri sia abilitato, sia che sia disabilitato, sarà possibile ottenere l'accelerazione 3D software tramite Mesa.
pam Spostato nei singoli pacchetti che lo usano, come xorg-server e xdm
sdk 7.0 deve installare l'SDK come conseguenza della modularizzazione.
static Nella maggior parte dei casi non ha molto senso provare a compilare un server statico in un mondo modulare, poichè i driver non verrebbero compilati al suo interno.
xprint Nel metapacchetto, installa libXp. Nelle altre applicazion abilita il supporto a xprint. Molte persone non avranno bisogno di abilitare questa flag USE.
xv Non più opzionale perchè non salva molto spazio e causa altri problemi con qualche pacchetto che si aspetta la sua presenza.

Cos'è successo a tutti i file di configurazione?

Nel pacchetto X.Org 6.8 di Gentoo tutti i file di configurazione e gli script risiedevano in /etc/X11. In X.Org modulare l'ubicazione di questi file è stata cambiata dagli sviluppatori di X.Org stesso: in pratica i file di configurazione sono ancora in /etc/X11, ma gli script e le configurazioni predefinite ora risiedono in /usr/lib/X11 (o /usr/lib64/X11) e /usr/share/X11.

A causa della protezione delle configurazioni (CONFIG_PROTECT), probabilmente si avranno ancora i vecchi file di configurazione di X.Org 6.8 in /etc/X11, occuperanno spazio ma potranno risultare utili.

Siccome queste nuove directory non sono in CONFIG_PROTECT, è importante che ogni modifica alle configurazioni predefinite venga fatta copiando i file necessari in /etc/X11 e aggiornando la configurazione appropriata in quella posizione. In alternativa, ma non è consigliabile, la nuova ubicazione può essere protetta. Di seguito vengono proposti alcuni esempi:

Codice 3.1: Personalizzare l'inizializzazione di XDM


Per prima cosa copiare il file Xsetup_0 in /etc così verrà incluso nella protezione delle configurazioni.

# cp -a /usr/lib/X11/xdm/Xsetup_0 /etc/X11/xdm/

Modificare il file e personalizzarlo a piacimento.


Infine, modificare xdm-config per aggiornare il percorso per questo file.

# nano /etc/X11/xdm/xdm-config

Cambiare la seguente sezione da così:

! The following three resources set up display :0 as the console.
DisplayManager._0.setup:        /usr/lib/X11/xdm/Xsetup_0
DisplayManager._0.startup:      /usr/lib/X11/xdm/GiveConsole
DisplayManager._0.reset:        /usr/lib/X11/xdm/TakeConsole

a così:

! The following three resources set up display :0 as the console.
DisplayManager._0.setup:        /etc/X11/xdm/Xsetup_0
DisplayManager._0.startup:      /usr/lib/X11/xdm/GiveConsole
DisplayManager._0.reset:        /usr/lib/X11/xdm/TakeConsole

Nota: Nei sistemi a 64 bit multilib con il profilo senza il collegamento simbolico, bisogna sostituire lib con lib64.

In questo esempio proposto da Joe Womack, verranno personalizzate alcune impostazioni di xterm Ciò può essere fatto sia globalmente sia per utente.

Codice 3.2: Personalizzare app-defaults/XTerm-color globalmente


Come sopra, creare una copia del file in /etc per includerlo nella protezione delle configurazioni:

# cp -a /usr/share/X11/app-defaults/XTerm-color /etc/X11/app-defaults/

Personalizzare il file a piacimento. A questo punto bisogna dire a Xt dove trovare i file tramite XFILESEARCHPATH. Inserire questa variabile in un file all'interno di /etc/env.d:

# echo '# Questo si applica alla configurazione globale.' >>
/etc/env.d/10xpaths
# echo 'XFILESEARCHPATH=/etc/X11/%T/%N:/usr/share/X11/%T/%N' >>
/etc/env.d/10xpaths

Codice 3.3: Personalizzare app-defaults/XTerm-color localmente

Ci sono principalmente due modi per farlo:
1) Configurare una directory app-defaults per utente:
# echo '# Questo si applica alla personalizzazione utente in $HOME/app-defaults.' >> /etc/env.d/10xpaths 
# echo 'XUSERFILESEARCHPATH=$HOME/%T/%N' >> /etc/env.d/10xpaths


2) Creare un file .Xdefaults o .Xresources e copiare le impostazioni che si
vogliono modificare. Le modifiche di questo esempio fanno sì che tutti gli
Xterm abbiano un cursore aranciano, siano eseguiti come shell di login, abbiano
una barra di scorrimento come decorazione, e 1000 linee di buffer per lo scroll
all'indietro:

# echo '! Xterm defaults'               >> .Xresources
# echo 'XTerm*CursorColor:      orange' >> .Xresources
# echo 'XTerm*loginShell:       true'   >> .Xresources
# echo 'XTerm*scrollBar:        true'   >> .Xresources
# echo 'XTerm*saveLines:        1000'   >> .Xresources


Per applicare queste impostazione, riavviare X o eseguire:

# xrdb -merge $HOME/.Xresources

Nota: Vedere http://www.faqs.org/faqs/x-faq/part2/section-22.html per avere maggiori dettagli nell'impostazione di XFILESEARCHPATH e XUSERFILESEARCHPATH. Vedere http://tldp.org/HOWTO/XWindow-User-HOWTO/moreconfig.html#XRESOURCES per ulteriori dettagli su .Xresources.

Problemi dei driver

Sono state ricevute alcune segnalazioni in cui:

  • vesa blocca sistemi con schede video Matrox
  • vga produce una schermata molto bizzarra, divisa in quattro parti

Far funzionare di nuovo l'accellerazione 3D

Per ottenere qualche informazione di debug da glxinfo per aiutare a far funzionare il rendering diretto si può usare questo comando:

Codice 3.4: Ottenere delle informazioni di debug da glxinfo

# LIBGL_DEBUG=verbose glxinfo

Autoriconoscimenti del protocollo del mouse

Se è stato impostato "Protocol" "auto" in xorg.conf per il proprio mouse, esso potrebbe non funzionare. Bisognerà specificare "Protocol" "ExplorerPS/2" o "IMPS/2" per far sì che il proprio mouse funzioni correttamente.

Ricevo messaggi d'errore riguardo la mancanza di libbitmap o libpcidata

Reinstallare >=xorg-server-0.99.1-r4. Questo è un bug temporaneo nell'ebuild che causa questa cancellazione a seguito della rimozione di un pacchetto. Invece, /usr/lib/xorg dovrebbe venire cancellato quando non rimane nessun xorg-server nel sistema.

Inoltre, assicurarsi che nessuna voce ModulePath esista in /etc/X11/xorg.conf.

gdm/kdm non funzionano

Se è stato installato X modulare in una nuova installazione di Gentoo, si potrebbe non avere il collegamento simbolico /usr/X11R6 -> /usr. il pacchetto x11-base/xorg-x11 assicurerà che il collegamento simbolico esista durante il processo di emerge.

Per aiutare nel tenere fuori le cose da /usr/X11R6 si possono corregge i pacchetti che vengono installati lì dentro e inserire i rispettivi bug. Inoltre, ricordarsi di reinstallare i pacchetti.

Codice 3.5: Pacchetti che vengono installati in /usr/X11R6

# cat ~/usr-x11r6-packages
# emerge --pretend $(< ~/usr-x11r6-packages )

XKB non funziona, non posso spostarmi tra i VT, ecc.

  • Molte configurazioni di XKB sono state rimosse, spostate o consolidate. Controllare in /usr/share/X11/xkb/symbols/ per vedere cos'è successo al vecchio parametro XkbLayout in xorg.conf. Per esempio, per ripristinare la vecchia configurazione "us_intl", si dovrebbe mettere "XkbLayout" "latin", "XkbOptions" "lv3:ralt_switch". Per ripristinare la vecchia configurazione "sk_qwerty", si dovrebbe mettere "XkbLayout" "sk", "XkbVariant" "qwerty". Per fare un esempio più complesso, si dovrebbe avere "XkbLayout" "us,sk_qwerty". Per far sì che funzioni, la nuova impostazione dovrebbe essere "XkbLayout" "us,sk", e il trucchetto è nella virgola presente nell'esempio seguente: "XkbVariant" ",qwerty", perchè in questo modo si applicherà la variante solo alla seconda configurazione.

Codice 3.6: Scovare i cambiamenti di XKB

Controllare in /var/log/Xorg.0.log per individuare questo messaggio:
(WW) Couldn't load XKB keymap, falling back to pre-XKB keymap
Se non si ha questo errore, la propria installazione di XKB funziona già.
# grep Xkb /etc/X11/xorg.conf
Option "XkbModel"  "logibik"
Option "XkbLayout"  "dvorak"
Option "XkbOptions" "ctrl:swapcaps"
Per prima cosa, guardare cos'è cambiato per la configurazione in uso, spostandosi nella directory symbols/pc .
# cd /usr/share/X11/xkb/symbols/
Se è stato installato xkbdata invece di xkeyboard-config, spostatrsi nella sottodirectory pc/ .
# ls *dvorak*
OK, non è stato mostrato nulla.
Molti delle vecchie configurazioni sono state spostate nelle mappe caratteri codificate per paese
# ls *us*
us
A questo punto controllare l'esistenza di una variante xkb_symbols chiamata dvorak.
# grep xkb_symbols.*dvorak us
xkb_symbols "dvorak" {
Ciò significa che in xorg.conf ci sarò bisogno di Option "XkbLayout" "us" e Option "XkbVariant" "dvorak".

Ma quando si proverà a testare questa configurazione con setxkbmap, si otterrà ancora un errore
# setxkbmap -model logibik -layout us -variant dvorak-option "ctrl:swapcaps"
Il modello potrebbe anche essere cambiato.
# cd /usr/share/X11/xkb/rules/
# grep logibik xorg.lst
Nessun output da questo comando, per cui questo modello non esiste più. Si può comunque provare con dei modelli simili.
# grep logi* xorg.lst
logiaccess      Logitech Access Keyboard
logicdit        Logitech Cordless Desktop iTouch
logicdp         Logitech Cordless Desktop Pro
logicdpa        Logitech Cordless Desktop Pro (alternate option)
logicdpa2       Logitech Cordless Desktop Pro (alternate option2)
logicdo         Logitech Cordless Desktop Optical
logicfn         Logitech Cordless Freedom/Desktop Navigator
logicdn         Logitech Cordless Desktop Navigator
logidak         Logitech Deluxe Access Keyboard
logiitc         Logitech iTouch Cordless Keyboard (model Y-RB6)
logiik          Logitech Internet Keyboard
logiitc         Logitech iTouch Cordless Keyboard (model Y-RB6)
logiik          Logitech Internet Keyboard
logiink         Logitech Internet Navigator Keyboard
logiultrax      Logitech Ultra-X Keyboard
Bene! Il modello "logiik" sembra abbastanza simile, perciò testarlo con setxkbmap.
# setxkbmap -model logiik -layout us -variant dvorak -option "ctrl:swapcaps"
Funziona correttamente, per cui impostare la voce XkbModel a quel valore.
Dopo di ciò, tutto dovrebbe funzionare correttamente

Altri problemi

  • Il pacchetto x11-base/xorg-x11 ora filtra tutte le voci ModulePath e RgbPath contenute in /etx/X11/xorg.conf, poichè entrambi i percorsi sono cambiati dalla versione precedente. Assicurarsi di eseguire etc-update per applicare questi cambiamenti.


Stampa

Aggiornato il 5 novembre 2006

Oggetto: Questa guida spiega come migrare ad X.org modulare.

Donnie Berkholz
Autore

Joshua Baergen
Autore

Davide Cendron
Traduzione

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.