Old:Pacchettizzare ed installare Xorg su Debian Sid: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
m (task Revisione Wiki #44)
 
(14 versioni intermedie di 6 utenti non mostrate)
Riga 1: Riga 1:
==Personalizzare il prompt==
{{Old}}
== Introduzione ==


Dunque come sappiamo bash � un tipo, forse il pi� usato, di shell per linux. Spesso per� c'� la necessit� di amministrare pi� macchine, anche solo all'interno di una rete casalinga. Possiamo riconoscerle certamente dall'hostname, ma se vogliamo fare una cosa anche pi� carina oltre che utile, possiamo colorare il prompt. Per farlo basta editare il file ~/.bashrc. Al suo interno troveremo (se non le abbiamo cancellate in precedenza) delle righe pi� o meno cosi:
Xorg è ormai ufficialmente entrato in Sid ed in Etch. La guida è dunque diventata obsoleta, ma viene lasciata per motivi storici e didattici.


<pre>
Buona Lettura ;-).
# Coloriamo bash
if [ "$PS1" ]; then
export PS1="\[\033[1;32m\]\u\[\033[1;37m\]@\[\033[1;31m\]\h\[\033[1;0m\]:\w\$ "
fi
</pre>


La sintassi � abbastanza semplice, esploriamo invece i vari comandi:
== Descrizione ==
Questa guida tenterà di illustrare i passi base necessari a chi volesse cimentarsi nella compilazione ed installazione di Xorg su Sid.<br>
Il nostro obiettivo è creare una serie di pacchetti .deb adattando quelli presenti nei repository dei sorgenti Ubuntu e personalizzandoli per Sid.<br>
Tutto questo lavoro di compilazione serve ad evitare di dover installare ulteriori pacchetti dal repository Ubuntu, le cui versioni sono spesso presenti soltanto in quel particolare repository (molti pacchetti vengono personalizzati e modificati dal team di sviluppo) e che renderebbero il nostro sistema un misto tra Ubuntu e Debian.<br>
Tenuta presente comunque la buona compatibilità dei sorgenti dei pacchetti Ubuntu rispetto ai .deb prelevati da debian.org (specialmente in relazione alle dipendenze di ciascun pacchetto), è possibile ricostruire l'intero Xorg sfruttando le librerie necessarie prelevandole però, direttamente da Sid.<br>
Faccio notare come la durata di tutta l'operazione sia un fattore importante da valutare: sulla mia macchina (Athlon xp 2000+, 256Mb), ad esempio, sono necessari oltre '''100 minuti''' per portare a termine tutto il processo di compilazione.<br>


<pre>
== Configurazione sistema ==
u = Il nostro nome utente
Innanzitutto dobbiamo aggiungere ad i repository dei pacchetti che usiamo abitualmente, anche quello di Ubuntu (NB: abbiamo bisogno solo dei sorgenti, quindi basta la sola riga con deb-src), commentando temporaneamente le altre righe deb-src presenti nel nostro <code>/etc/apt/sources.list</code>.<br>
@ = il carattere @
[\033[1;32m\] = cambio il colore in verde
h = hostname
[\033[1;0m\] = colore di default
: = il carattere :
w = directory corrente
$ = $ se siamo user, # se siamo superuser
</pre>


Nell'esempio riportato sopra, che � una parte del mio bashrc, possiamo usare bash con la bandiera italiana. Ovviamente potete personalizzarlo come volete, cambiare caratteri, modificare colori e quant'altro.
<pre>deb-src http://us.archive.ubuntu.com/ubuntu hoary universe main restricted</pre>


==Usare i colori negli script==
Dopo aver aggiunto tale riga, provvediamo ad aggiornare le liste di apt con il solito '''apt-get update'''.<br>
Durante l'operazione, possiamo controllare se viene scaricata anche la lista appena inserita per i pacchetti di Ubuntu.


Se si vogliono usare spesso i colori negli script bash � molto comodo definire delle variabili mnemoniche alle quali assegnare i codici di ogni colore. Questo pu� essere fatto ad esempio creando un file di nome '''/usr/local/bin/colors''', con il seguente contenuto:
Prepariamo adesso una directory di nome '''xorg''', con il comando <pre>mkdir xorg</pre> questa accoglierà i sorgenti prelevati dalla rete, i file oggetto prodotti dalla compilazione ed infine i pacchetti .deb.<br>
Per esperienza personale, consiglio di creare la cartella all'interno di una partizione con '''almeno 4.5 gb di spazio libero'''.


<pre>
== Modifica degli script di compilazione ==
#!/bin/bash
Posizioniamoci nella directory appena creata, e con <pre># apt-get source xorg</pre> procediamo al download dei sorgenti e alla scompattazione dei sorgenti di Xorg.<br>
export cane=gatto
Attualmente, (versione '''6.8.2-10'''), il download consiste di circa '''51 MB''' di archivi.<br>
export WHITE="\e[1;37m"
Alla fine del download, notiamo che sono stati creati all'interno della directory <code>xorg</code>, alcuni file ed una directory.
export LGRAY="\e[0;37m"
export GRAY="\e[1;30m"
export BLACK="\e[0;30m"
export RED="\e[0;31m"
export LRED="\e[1;31m"
export GREEN="\e[0;32m"
export LGREEN="\e[1;32m"
export BROWN="\e[0;33m"
export YELLOW="\e[1;33m"
export BLUE="\e[0;34m"
export LBLUE="\e[1;34m"
export PURPLE="\e[0;35m"
export PINK="\e[1;35m"
export CYAN="\e[0;36m"
export LCYAN="\e[1;36m"
export Z="\e[0m"
</pre>


In questo modo non ci resta che fare un source del file '''/usr/local/bin/colors''' ogni qual volta vogliamo usare i colori. Per fare il source basta inserire:
* situazione del nostro filesystem
<pre>[xorg]
|
|_ [xorg-6.8.2]
|  |
|  |_ [debian]
|  |_ ALTRI_FILES
|
|_ xorg_6.8.2-10.diff.gz
|_ xorg_6.8.2-10.dsc
|_ xorg_6.8.2.orig.tar.gz</pre>


<pre>
La directory '''xorg-6.8.2''' raccoglie i sorgenti scompattati dell'archivio originale di Xorg (oltre ai file necessari alla compilazione di un sorgente Debian), a cui non sono ancora state applicate le varie patch apportate dagli sviluppatori Ubuntu.<br>
. colors
I file, invece, rappresentano l'archivio con il sorgente originale, il file con le patch approntate dal team di Ubuntu e quello con la descrizione del pacchetto Debian.<br>
</pre>
Posizioniamoci pertanto nella sottodirectory '''debian''' di xorg-6.8.2.


in un punto dello script. A questo punto potremo colorare facilmente il nostro output in questo modo:
Affinché si possano adattare i sorgenti a Sid, dobbiamo modificare 2 file: nel primo caso la modifica è più che altro cosmetica, nel secondo caso invece è una scelta obbligata.


<pre>
Con il nostro editor preferito, apriamo pertanto il file '''changelog'''.<br>
echo -e "$LGREEN *** $Z Attenzione: la dir $LGREEN documenti $Z sara' eliminata"
Questo file mantiene lo storico delle modifiche fatte dagli sviluppatori Ubuntu a partire dalla versione stable rilasciata dal team di Xorg: tale file viene regolato da una sintassi ben precisa, in cui anche gli spazi hanno una loro funzione e pertanto vanno tenuti in considerazione per la buona riuscita della compilazione.<br>
</pre>
È necessario pertanto, prestare molta attenzione alla disposizione dei vari campi e al numero degli spazi che li delimitano.<br>
La entry più recente presente nella versione attuale del file changelog ci appare così:
<pre>xorg (6.8.2-10) hoary; urgency=low


che da come risultato nel terminale:
  * Include patch from Ben Herrenschmidt to fix assertion of DDC GPIO lines
    after a DDC probe had finished, which would render Apple Studio Displays
    useless.
  * Don't reset all templates when migrating from xserver-xfree86; this will
    render the template migration useless.  Don't mess with $RECONFIGURE when
    migrating from xfree86.  Set use_sync_ranges true when upgrading from
    xfree86 (closes: Ubuntu#8562, Ubuntu#8626).
  * Use debug_echo liberally in xserver-xorg.postinst.in to tell us why we're
    writing out sync ranges.


<div style="padding: 10px; background-color: black;color: white;">
-- Daniel Stone <daniel.stone@ubuntu.com> Tue,  5 Apr 2005 08:38:20 +1000</pre>
<tt><font color="red"> *** </font>Attenzione: la dir <font color="#0FFF2F">documenti</font> sara' eliminata</tt>
</div>
Affinché possiamo ottenere una nostra versione personalizzata dei pacchetti, dobbiamo aggiungere prima del gruppo di linee appena descritto (quindi all'inizio del file), qualcosa del genere:
<pre>xorg (6.8.2-10-ld10) sid; urgency=low


;Nota 1: bisogna usare l'opzione '''-e''' con echo per fargli interpretare correttamente i caratteri di escape.
  * [Ld-xorg] packages for Debian Sid, based on Ubuntu sources.


;Nota 2: la variabile $Z ripristina il colore di default del terminale.
-- Mario "Ldonesty" Di Nitto <ldonesty@debianizzati.org>  Sun, 15 May 2005 10:25:32 +0100</pre>


{{warningbox| I colori sono un caratteristica non POSIX di bash, quindi non usateli se vole fare script portabili}}
mantenendo uno spazio di separazione con il gruppo successivo.


Queste righe possono essere personalizzate secondo i propri gusti tenendo presente che '''6.8.2-10-ld10''' sarà la versione che comparirà nel nome di ogni pacchetto, dove <code>-ld</code> indica la nostra estensione personale, la quale *dovrà* essere seguita da un numero a scelta: es <code>-myExt1</code>.<br>
Infatti la mancanza di tale valore pregiudica irreparabilmente la compilazione e creazione dei pacchetti (lo script preposto all'operazione, si rifiuterà di assemblare i .deb)


----
A questo punto salviamo il file changelog e dedichiamoci invece a '''control'''.<br>
Autore iniziale: Bedo
La struttura del file control si può riassumere in una sequenza di "blocchi" all'interno dei quali sono contenute tutte le informazioni proprie di un pacchetto Debian raccolte per riga (ad esempio: la descrizione, le dipendenze, i conflitti, etc.). <br>
Dato che la versione di Xorg su cui stiamo lavorando proviene dal repository Ubuntu, è possibile che siano presenti alcune dipendenze relative a pacchetti contenuti solamente in tale repository.<br>
Pertanto questi pacchetti risulterebbero non disponibili all'atto dell'installazione sulla nostra Sid, pregiudicando così tutta l'operazione.<br>
Possiamo evitare questa situazione ricercando nelle sole righe Depends del file control, i riferimenti ai pacchetti di Ubuntu (presentano la segnatura "ubuntu" all'interno del numero di versione).<br>
Nel nostro caso, scorrendo il file (possiamo usare la funzione di ricerca del nostro editor) notiamo che alla riga 1895 è presente una referenza al pacchetto '''lsb-base''' nella versione ('''1.3-9ubuntu2''').


Verificata ed estesa da : [[Utente:TheNoise|~ The_Noise]]
Dopo aver controllato che in Sid esista tale pacchetto in una versione per lo meno uguale (meglio se superiore) a quella citata dal file control (possiamo usare '''apt-cache show lsb-base | grep Version''' per questo scopo), cancelliamo la parola "ubuntu" ed ogni eventuale numero postposto, lasciando quindi solo il numero della versione del pacchetto, infine salviamo.<br>
Quindi la versione di lsb-base nella riga Depends ci apparirà come ('''1.3-9''').<br>
Relativamente a questa versione di Xorg, non ci sono altre referenze da modificare; nel caso in cui, invece, fossimo in presenza di parecchie dipendenze da sistemare dobbiamo valutare ciascun caso separatamente, ripetendo tutta la procedura di controllo e modifica.
 
== Controllo dipendenze e avvio compilazione ==
A questo punto siamo in grado di avviare la compilazione/creazione dei pacchetti di Xorg usando il comando '''dpkg-buildpackage''' dopo esserci posizionati nella cartella xorg-6.8.2 ed aver ottenuto i privilegi di root.
 
Molto probabilmente ci verrà notificato che alcune dipendenze non sono soddisfatte per portare a termine la compilazione:
 
<pre>dpkg-checkbuilddeps: Unmet build dependencies: flex bison groff zlib1g-dev |
libz-dev libpam0g-dev | libpam-dev libfreetype6-dev rman lynx
libglide2-dev (>> 2001.01.26) libglide3-dev (>= 2002.04.10-7) libpng12-dev |
libpng-dev libexpat1-dev libfontconfig1-dev libxft-dev (>= 2.1.2) libxcursor-dev
dbs m4 libxrender-dev (>= 0.9.0) sharutils</pre>
 
Per ovviare a questo problema possiamo installare i pacchetti suggeriti usando il comando:
 
<pre># apt-get install flex bison groff zlib1g-dev libpam0g-dev libfreetype6-dev \
rman lynx libglide2-dev libglide3-dev libpng12-dev libexpat1-dev libfontconfig1-dev \
libxft-dev libxcursor-dev dbs m4 libxrender-dev sharutils</pre>
 
A questo punto possiamo rilanciare il comando '''dpkg-buildpackage''' (a cui potremo preporre il comando '''time''', per visualizzare la durata effettiva di tutta l'operazione) ed attendere che i pacchetti vengano creati.
 
== Installazione ==
Posizioniamoci innanzitutto nella cartella dove sono contenuti i file .deb di xorg.
 
Possiamo avere 3 situazioni:
*  Macchina pulita: nessun XFree/Xorg precedentemente installato
*  Xorg in una versione precedente
*  Xfree preso da Sid
 
<br>La prima situazione può essere risolta (NB, si potrebbe fare anche con un repository locale) con <pre># dpkg -i x-window-system-core*.deb </pre> aggiungendo volta per volta i pacchetti che vengono richiesti come mancanti in coda a dpkg -i, ovvero
<pre># dpkg -i PKT1 PKT2 PKT3 PKT4</pre> dove i vari PKT corrispondono al nome del pacchetto '''completo di estensione'''.
 
 
 
{{Autori
|Autore = [[Utente:Ldonesty|Ldonesty]]
}}

Versione attuale delle 10:00, 7 mag 2016

Emblem-important.png Attenzione. Questa guida è obsoleta. Viene mantenuta sul Wiki solo per motivi di natura storica e didattica.


Introduzione

Xorg è ormai ufficialmente entrato in Sid ed in Etch. La guida è dunque diventata obsoleta, ma viene lasciata per motivi storici e didattici.

Buona Lettura ;-).

Descrizione

Questa guida tenterà di illustrare i passi base necessari a chi volesse cimentarsi nella compilazione ed installazione di Xorg su Sid.
Il nostro obiettivo è creare una serie di pacchetti .deb adattando quelli presenti nei repository dei sorgenti Ubuntu e personalizzandoli per Sid.
Tutto questo lavoro di compilazione serve ad evitare di dover installare ulteriori pacchetti dal repository Ubuntu, le cui versioni sono spesso presenti soltanto in quel particolare repository (molti pacchetti vengono personalizzati e modificati dal team di sviluppo) e che renderebbero il nostro sistema un misto tra Ubuntu e Debian.
Tenuta presente comunque la buona compatibilità dei sorgenti dei pacchetti Ubuntu rispetto ai .deb prelevati da debian.org (specialmente in relazione alle dipendenze di ciascun pacchetto), è possibile ricostruire l'intero Xorg sfruttando le librerie necessarie prelevandole però, direttamente da Sid.
Faccio notare come la durata di tutta l'operazione sia un fattore importante da valutare: sulla mia macchina (Athlon xp 2000+, 256Mb), ad esempio, sono necessari oltre 100 minuti per portare a termine tutto il processo di compilazione.

Configurazione sistema

Innanzitutto dobbiamo aggiungere ad i repository dei pacchetti che usiamo abitualmente, anche quello di Ubuntu (NB: abbiamo bisogno solo dei sorgenti, quindi basta la sola riga con deb-src), commentando temporaneamente le altre righe deb-src presenti nel nostro /etc/apt/sources.list.

deb-src http://us.archive.ubuntu.com/ubuntu hoary universe main restricted

Dopo aver aggiunto tale riga, provvediamo ad aggiornare le liste di apt con il solito apt-get update.
Durante l'operazione, possiamo controllare se viene scaricata anche la lista appena inserita per i pacchetti di Ubuntu.

Prepariamo adesso una directory di nome xorg, con il comando

mkdir xorg

questa accoglierà i sorgenti prelevati dalla rete, i file oggetto prodotti dalla compilazione ed infine i pacchetti .deb.

Per esperienza personale, consiglio di creare la cartella all'interno di una partizione con almeno 4.5 gb di spazio libero.

Modifica degli script di compilazione

Posizioniamoci nella directory appena creata, e con

# apt-get source xorg

procediamo al download dei sorgenti e alla scompattazione dei sorgenti di Xorg.

Attualmente, (versione 6.8.2-10), il download consiste di circa 51 MB di archivi.
Alla fine del download, notiamo che sono stati creati all'interno della directory xorg, alcuni file ed una directory.

  • situazione del nostro filesystem
[xorg]
|
|_ [xorg-6.8.2]
|   |
|   |_ [debian]
|   |_ ALTRI_FILES
|
|_ xorg_6.8.2-10.diff.gz
|_ xorg_6.8.2-10.dsc
|_ xorg_6.8.2.orig.tar.gz

La directory xorg-6.8.2 raccoglie i sorgenti scompattati dell'archivio originale di Xorg (oltre ai file necessari alla compilazione di un sorgente Debian), a cui non sono ancora state applicate le varie patch apportate dagli sviluppatori Ubuntu.
I file, invece, rappresentano l'archivio con il sorgente originale, il file con le patch approntate dal team di Ubuntu e quello con la descrizione del pacchetto Debian.
Posizioniamoci pertanto nella sottodirectory debian di xorg-6.8.2.

Affinché si possano adattare i sorgenti a Sid, dobbiamo modificare 2 file: nel primo caso la modifica è più che altro cosmetica, nel secondo caso invece è una scelta obbligata.

Con il nostro editor preferito, apriamo pertanto il file changelog.
Questo file mantiene lo storico delle modifiche fatte dagli sviluppatori Ubuntu a partire dalla versione stable rilasciata dal team di Xorg: tale file viene regolato da una sintassi ben precisa, in cui anche gli spazi hanno una loro funzione e pertanto vanno tenuti in considerazione per la buona riuscita della compilazione.
È necessario pertanto, prestare molta attenzione alla disposizione dei vari campi e al numero degli spazi che li delimitano.
La entry più recente presente nella versione attuale del file changelog ci appare così:

xorg (6.8.2-10) hoary; urgency=low

  * Include patch from Ben Herrenschmidt to fix assertion of DDC GPIO lines
    after a DDC probe had finished, which would render Apple Studio Displays
    useless.
  * Don't reset all templates when migrating from xserver-xfree86; this will
    render the template migration useless.  Don't mess with $RECONFIGURE when
    migrating from xfree86.  Set use_sync_ranges true when upgrading from
    xfree86 (closes: Ubuntu#8562, Ubuntu#8626).
  * Use debug_echo liberally in xserver-xorg.postinst.in to tell us why we're
    writing out sync ranges.

 -- Daniel Stone <daniel.stone@ubuntu.com>  Tue,  5 Apr 2005 08:38:20 +1000

Affinché possiamo ottenere una nostra versione personalizzata dei pacchetti, dobbiamo aggiungere prima del gruppo di linee appena descritto (quindi all'inizio del file), qualcosa del genere:

xorg (6.8.2-10-ld10) sid; urgency=low

  * [Ld-xorg] packages for Debian Sid, based on Ubuntu sources.

 -- Mario "Ldonesty" Di Nitto <ldonesty@debianizzati.org>  Sun, 15 May 2005 10:25:32 +0100

mantenendo uno spazio di separazione con il gruppo successivo.

Queste righe possono essere personalizzate secondo i propri gusti tenendo presente che 6.8.2-10-ld10 sarà la versione che comparirà nel nome di ogni pacchetto, dove -ld indica la nostra estensione personale, la quale *dovrà* essere seguita da un numero a scelta: es -myExt1.
Infatti la mancanza di tale valore pregiudica irreparabilmente la compilazione e creazione dei pacchetti (lo script preposto all'operazione, si rifiuterà di assemblare i .deb)

A questo punto salviamo il file changelog e dedichiamoci invece a control.
La struttura del file control si può riassumere in una sequenza di "blocchi" all'interno dei quali sono contenute tutte le informazioni proprie di un pacchetto Debian raccolte per riga (ad esempio: la descrizione, le dipendenze, i conflitti, etc.).
Dato che la versione di Xorg su cui stiamo lavorando proviene dal repository Ubuntu, è possibile che siano presenti alcune dipendenze relative a pacchetti contenuti solamente in tale repository.
Pertanto questi pacchetti risulterebbero non disponibili all'atto dell'installazione sulla nostra Sid, pregiudicando così tutta l'operazione.
Possiamo evitare questa situazione ricercando nelle sole righe Depends del file control, i riferimenti ai pacchetti di Ubuntu (presentano la segnatura "ubuntu" all'interno del numero di versione).
Nel nostro caso, scorrendo il file (possiamo usare la funzione di ricerca del nostro editor) notiamo che alla riga 1895 è presente una referenza al pacchetto lsb-base nella versione (1.3-9ubuntu2).

Dopo aver controllato che in Sid esista tale pacchetto in una versione per lo meno uguale (meglio se superiore) a quella citata dal file control (possiamo usare apt-cache show lsb-base | grep Version per questo scopo), cancelliamo la parola "ubuntu" ed ogni eventuale numero postposto, lasciando quindi solo il numero della versione del pacchetto, infine salviamo.
Quindi la versione di lsb-base nella riga Depends ci apparirà come (1.3-9).
Relativamente a questa versione di Xorg, non ci sono altre referenze da modificare; nel caso in cui, invece, fossimo in presenza di parecchie dipendenze da sistemare dobbiamo valutare ciascun caso separatamente, ripetendo tutta la procedura di controllo e modifica.

Controllo dipendenze e avvio compilazione

A questo punto siamo in grado di avviare la compilazione/creazione dei pacchetti di Xorg usando il comando dpkg-buildpackage dopo esserci posizionati nella cartella xorg-6.8.2 ed aver ottenuto i privilegi di root.

Molto probabilmente ci verrà notificato che alcune dipendenze non sono soddisfatte per portare a termine la compilazione:

dpkg-checkbuilddeps: Unmet build dependencies: flex bison groff zlib1g-dev |
 libz-dev libpam0g-dev | libpam-dev libfreetype6-dev rman lynx 
libglide2-dev (>> 2001.01.26) libglide3-dev (>= 2002.04.10-7) libpng12-dev |
 libpng-dev libexpat1-dev libfontconfig1-dev libxft-dev (>= 2.1.2) libxcursor-dev 
dbs m4 libxrender-dev (>= 0.9.0) sharutils

Per ovviare a questo problema possiamo installare i pacchetti suggeriti usando il comando:

# apt-get install flex bison groff zlib1g-dev libpam0g-dev libfreetype6-dev \
rman lynx libglide2-dev libglide3-dev libpng12-dev libexpat1-dev libfontconfig1-dev \
libxft-dev libxcursor-dev dbs m4 libxrender-dev sharutils

A questo punto possiamo rilanciare il comando dpkg-buildpackage (a cui potremo preporre il comando time, per visualizzare la durata effettiva di tutta l'operazione) ed attendere che i pacchetti vengano creati.

Installazione

Posizioniamoci innanzitutto nella cartella dove sono contenuti i file .deb di xorg.

Possiamo avere 3 situazioni:

  • Macchina pulita: nessun XFree/Xorg precedentemente installato
  • Xorg in una versione precedente
  • Xfree preso da Sid


La prima situazione può essere risolta (NB, si potrebbe fare anche con un repository locale) con

# dpkg -i x-window-system-core*.deb 

aggiungendo volta per volta i pacchetti che vengono richiesti come mancanti in coda a dpkg -i, ovvero

# dpkg -i PKT1 PKT2 PKT3 PKT4

dove i vari PKT corrispondono al nome del pacchetto completo di estensione.





Guida scritta da: Ldonesty Swirl-auth20.png Debianized 20%
Estesa da:
Verificata da:

Verificare ed estendere la guida | Cos'è una guida Debianized