From mboxrd@z Thu Jan  1 00:00:00 1970
Received: from lists.gentoo.org ([140.105.134.102] helo=robin.gentoo.org)
	by nuthatch.gentoo.org with esmtp (Exim 4.54)
	id 1EmGXj-0006yB-J7
	for garchives@archives.gentoo.org; Tue, 13 Dec 2005 20:14:36 +0000
Received: from robin.gentoo.org (localhost [127.0.0.1])
	by robin.gentoo.org (8.13.5/8.13.5) with SMTP id jBDKEFKY012696;
	Tue, 13 Dec 2005 20:14:15 GMT
Received: from vsmtp1alice.tin.it (vsmtp1alice.tin.it [212.216.176.144])
	by robin.gentoo.org (8.13.5/8.13.5) with ESMTP id jBDKEFvF008041
	for <gentoo-docs-it@lists.gentoo.org>; Tue, 13 Dec 2005 20:14:15 GMT
Received: from [82.51.130.161] (82.51.130.161) by vsmtp1alice.tin.it (7.2.060.1)
        id 439DB3950003932E for gentoo-docs-it@lists.gentoo.org; Tue, 13 Dec 2005 21:14:32 +0100
Message-ID: <439F2CD1.10909@libero.it>
Date: Tue, 13 Dec 2005 21:19:29 +0100
From: Federico Della Ricca <richard77@libero.it>
User-Agent: Mozilla Thunderbird 1.0.7 (X11/20051208)
X-Accept-Language: en-us, en
Precedence: bulk
List-Post: <mailto:gentoo-docs-it@lists.gentoo.org>
List-Help: <mailto:gentoo-docs-it+help@gentoo.org>
List-Unsubscribe: <mailto:gentoo-docs-it+unsubscribe@gentoo.org>
List-Subscribe: <mailto:gentoo-docs-it+subscribe@gentoo.org>
List-Id: Gentoo Linux mail <gentoo-docs-it.gentoo.org>
X-BeenThere: gentoo-docs-it@gentoo.org
Reply-to: gentoo-docs-it@lists.gentoo.org
MIME-Version: 1.0
To: gentoo-docs-it@lists.gentoo.org
Subject: [gentoo-docs-it] gcc-upgrading
Content-Type: multipart/mixed;
 boundary="------------080803010001080003080807"
X-Archives-Salt: 9987a9f2-f1a8-481d-9559-8b3860b20ad0
X-Archives-Hash: 33c799cddc339c4dd6b4f0da1c33e187

This is a multi-part message in MIME format.
--------------080803010001080003080807
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit



--------------080803010001080003080807
Content-Type: text/xml;
 name="gcc-upgrading.xml"
Content-Disposition: inline;
 filename="gcc-upgrading.xml"
Content-Transfer-Encoding: quoted-printable
X-MIME-Autoconverted: from 8bit to quoted-printable by robin.gentoo.org id jBDKEFKg012696

<?xml version=3D'1.0' encoding=3D"UTF-8"?>
<!-- $Header: /var/www/www.gentoo.org/raw_cvs/gentoo/xml/htdocs/doc/en/gc=
c-upgrading.xml,v 1.2 2005/12/08 19:25:55 jkt Exp $ -->

<!DOCTYPE guide SYSTEM "/dtd/guide.dtd">

<guide link=3D"/doc/en/gcc-upgrading.xml">
<title>Guida all'aggiornamento di GCC per Gentoo Linux</title>

<author title=3D"Author">
  <mail link=3D"amne@gentoo.org">Wernfried Haas</mail>
</author>
<author title=3D"Author">
  <mail link=3D"jkt@gentoo.org">Jan Kundr=C3=A1t</mail>
</author>
<author title=3D"Editor">
  <mail link=3D"halcy0n@gentoo.org">Mark Loeser</mail>
</author>
<author title=3D"Editor">
  <mail link=3D"wolf31o2@gentoo.org">Chris Gianelloni</mail>
</author>
<author title=3D"Traduzione">
  <mail link=3D"richard77@libero.it">Federico Della Ricca</mail>
</author>


<abstract>
Questo documento guida gli utenti attraverso il processo di aggiornamento=
 di GCC su sistemi Gentoo Linux.
</abstract>

<!-- The content of this document is licensed under the CC-BY-SA license =
-->
<!-- See http://creativecommons.org/licenses/by-sa/2.5 -->
<license/>

<version>2</version>
<date>2005-12-08</date>

<chapter id=3D"intro">
<title>Introduzione</title>
<section>
<title>Aggiornamento di GCC</title>
<body>

<p>
Bench=C3=A9 il suo corretto funzionamento sia critico per il sistema, il =
compilatore GCC =C3=A8 un pacchetto come tutti gli altri, e necessita di =
essere aggiornato. Fra i motivi che possono richiedere l'aggiornamento di=
 GCC vi sono: la correzione di bachi che possono interferire con il siste=
ma, l'aggiunta di nuove funzionalit=C3=A0  o semplicemento il desiderio d=
i mantenere aggiornato il proprio sistema. Se nessuna di queste motivazio=
ni si applica al proprio caso, si pu=C3=B2 rimandare tranquillamente l'ag=
giornamento finch=C3=A9 la propria versione di GCC gode del supporto da p=
arte degli sviluppatori Gentoo.
</p>

<p>
Se si installa una versione aggiornata di GCC, il sistema non la user=C3=A0=
 automaticamente. Poich=C3=A9 potrebbero essere richiesti passaggi aggiun=
tivi, bisogna effettuare il passaggio esplicitamente. Se si decide di non=
 passare alla nuova versione, Portage user=C3=A0 la vecchia finch=C3=A9 n=
on si cambia idea, o il vecchio compilatore non viene rimosso dal sistema.
</p>

<p>
Questa guida spiega i passi necessari per effettuare un aggiornamento sic=
uro del compilatore di un sistema Gentoo. Una sezione specifica =C3=A8 de=
dicata all'<uri link=3D"#aggiornamento-da-3.3-a-3.4">aggiornamento dal GC=
C 3.3 alla versione 3.4</uri> e alle problematiche coinvolgenti <c>libstd=
c++</c>.
</p>

</body>
</section>
</chapter>

<chapter id=3D"Aggiornamento-generico">
<title>Istruzioni per un aggiornamento generico</title>
<section>
<title>Introduzione</title>
<body>

<impo>
Se si cercano istruzioni specifiche per l'aggiornamento dal GCC 3.3 al GC=
C 3.4, si consulti la <uri link=3D"#aggiornamento-da-3.3-a-3.4">sezione a=
pposita</uri>.
</impo>

<p>
In generale, gli aggiornamenti <e>di manutenzione</e> (che eliminano bach=
i della precedente versione), come quello dalla versione 3.3.5 alla versi=
one 3.3.6 dovrebbero poter essere fatti in tutta tranquillit=C3=A0, basta=
 installare la nuova versione, impostare il sistema in modo che la utiliz=
zi e ricompilare l'unico altro pacchetto coinvolto, <c>libtool</c>. A vol=
te, gli aggiornamenti di GCC spezzano la compatibilit=C3=A0 a livelli di =
codice binario, in tali casi la ricompilazione dei pacchetti coinvolti (o=
 addirittura della <e>toolchain</e> [insieme dei programmi necessari per =
la compilazione dei pacchetti, NdT] o di tutti i pacchetti di base [il <e=
>system</e> NdT]) potrebbe rendersi necessaria.
</p>

<p>
La norma per cui il nuovo compilatore non viene utilizzato automaticament=
e ha una importante eccezione negli aggiornamenti di manutenzione, come q=
uello fra le versioni 3.3.5 e 3.3.6, a meno di non utilizzare la <e>featu=
re</e> "multislot", che permette di farli coesistere nello stesso sistema=
. Questa <e>feature</e> =C3=A8 normalmente disabilitata, in quanto la mag=
gior parte degli utenti non ne avrebbe beneficio.
</p>

<pre caption=3D"Aggiornamento di GCC">
# <i>emerge -uav gcc</i>

<comment>(Si ponga attenzione a sostituire "i686-pc-linux-gnu-3.4.4" con =
la versione del GCC a cui si =C3=A8 aggiornato e l'impostazione per CHOST=
 del proprio sistema)</comment>
# <i>gcc-config i686-pc-linux-gnu-3.4.4</i>
# <i>source /etc/profile</i>

<comment>(Ricompilazione di libtool)</comment>
# <i>emerge --oneshot -av libtool</i>
</pre>

<p>
Ora si ricompili il sistema di base e i pacchetti appartenenti al profilo=
 world per utilizzare il nuovo compilatore.
</p>

<pre caption=3D"Ricompilazione del sistema">
# <i>emerge -eav system</i>
# <i>emerge -eav world</i>
</pre>

<p>
Ora =C3=A8 possibile rimuovere le vecchie versioni di GCC. Se lo si riten=
esse opportuno, si esegua il comando seguente (sostituendo ovviamente a <=
c>=3Dsys-devel/gcc-3.3*</c> la versione che si vuole rimuovere):
</p>

<pre caption=3D"Rimozione delle vecchie versioni di GCC">
# <i>emerge -aC =3Dsys-devel/gcc-3.3*</i>
</pre>

</body>
</section>
</chapter>

<chapter id=3D"aggiornamento-da-3.3-a-3.4">
<title>Aggiornamento da GCC-3.3 a 3.4</title>
<section>
<title>Introduzione</title>
<body>

<p>
L'aggiornamento dal GCC 3.3 al 3.4 presenta della problematiche particola=
ri, in quanto l'ABI C++ =C3=A8 cambiata fra queste versioni, quindi bisog=
na porre particolare attenzione ai possibili problemi dati dalla libreria=
 <c>libstdc++</c>.
</p>

</body>
</section>
<section id=3D"modi-aggiornamento-da-3.3-a-3.4">
<title>Modalit=C3=A0 dell'aggiornamento</title>
<body>

<p>
Ci sono due metodi per effettuare l'aggiornamento. Il <uri link=3D"#aggio=
rnamento-da-3.3-a-3.4-revdep-rebuild">primo metodo</uri> =C3=A8 pi=C3=B9 =
veloce e implica l'uso del programma <c>revdep-rebuild</c> contenuto nel =
pacchetto <c>gentoolkit</c> mentre il <uri link=3D"#aggiornamento-da-3.3-=
a-3.4-emerge-e">secondo</uri> ricompila l'intero sistema da zero, sfrutta=
ndo le nuove caratteristiche del GCC. Ogni utente pu=C3=B2 decidere per l=
'uno o l'altro metodo.
</p>

</body>
</section>
<section id=3D"aggiornamento-da-3.3-a-3.4-revdep-rebuild">
<title>Utilizzo di revdep-rebuild</title>
<body>

<p>
Questo metodo richiede l'installazione di <c>gentoolkit</c> se non gi=C3=A0=
 presente nel sistema. Fatto ci=C3=B2, si proceda all'aggiornamento del G=
CC e al passaggio al nuovo compilatore. Si ricompili anche il pacchetto <=
c>libtool</c> per assicurare la corretta funzionalit=C3=A0 del sistema di=
 compilazione.
</p>

<pre caption=3D"Installazione di gentoolkit e aggiornamento del GCC">
# <i>emerge -an gentoolkit</i>
# <i>emerge -uav gcc</i>
# <i>gcc-config i686-pc-linux-gnu-3.4.4</i>
# <i>source /etc/profile</i>

<comment>(Ricompilazione di libtool)</comment>
# <i>emerge --oneshot -av libtool</i>
</pre>

<note>
Questo esempio suppone che si abbia impostato <c>CHOST=3D"i686-pc-linux-g=
nu"</c>. In caso contrario, si cambi l'argomento del comando gcc-config.
</note>

<p>
A questo punto si generi la lista dei pacchetti che revdep-rebuild preved=
e di ricompilare. Poi si usi revdep-rebuild per ricompilarli. Si presti a=
ttenzione al fatto che questa fase pu=C3=B2 richiedere diverso tempo.
</p>

<pre caption=3D"Utilizzo di revdep-rebuild">
# <i>revdep-rebuild --library libstdc++.so.5 -- -p -v</i>
# <i>revdep-rebuild --library libstdc++.so.5</i>
</pre>

<note>
E' possibile che si verifichino dei problemi con delle versioni non esist=
enti di pacchetti, perch=C3=A9 obsolete o mascherate. In questo caso si p=
u=C3=B2 usare <c>revdep-rebuild</c> con l'opzione <c>--package-names</c>,=
 per far s=C3=AC che i pacchetti siano ricompilati sulla base solo del no=
me del pacchetto, piuttosto che sulla combinazione esatta del nome del pa=
cchetto e sua versione.
</note>

<p>
Per ottenere la compatibilit=C3=A0 con applicazioni C++ binarie ed eventu=
ali pacchetti che potrebbero non essere stati aggiornati da revdep-rebuil=
d, bisogna installare <c>sys-libs/libstdc++-v3</c> prima di rimuovere GCC=
 3.3 dal sistema.
</p>

<pre caption=3D"Installazione di libstdc++-v3 e rimozione di GCC 3.3">
# <i>emerge --oneshot sys-libs/libstdc++-v3</i>
# <i>emerge -aC =3Dsys-devel/gcc-3.3*</i>
</pre>

</body>
</section>
<section id=3D"aggiornamento-da-3.3-a-3.4-emerge-e">
<title>Utilizzo di emerge -e</title>
<body>

<p>
Questo metodo, bench=C3=A9 molto pi=C3=B9 lento, effettua la ricompilazio=
ne dell'intero sistema, per essere sicuri che tutti i pacchetti siano ric=
ompilati con il nuovo compilatore, ed =C3=A8 perci=C3=B2 pi=C3=B9 sicuro.=
 Per prima cosa, si aggiornino GCC e libtool e si effettui il passaggio a=
l nuovo compilatore.
</p>

<pre caption=3D"Aggiornamento di GCC">
# <i>emerge -uav gcc</i>
# <i>gcc-config i686-pc-linux-gnu-3.4.4</i>
# <i>source /etc/profile</i>

<comment>(Ricompilazione di libtool)</comment>
# <i>emerge --oneshot -av libtool</i>
</pre>

<note>
Questo esempio suppone che si abbia impostato <c>CHOST=3D"i686-pc-linux-g=
nu"</c>. In caso contrario, si cambi l'argomento del comando gcc-config.
</note>

<p>
Per ottenere la compatibilit=C3=A0 con vecchie applicazioni C++ binarie, =
bisogna installare <c>sys-libs/libstdc++-v3</c>.
</p>

<pre caption=3D"Installazione di libstdc++-v3">
# <i>emerge --oneshot sys-libs/libstdc++-v3</i>
</pre>

<p>
Ora si proceda a ricompilare per primo l'insieme di pacchetti (profilo) s=
ystem, poi il profilo world. Questa fase richiede molto tempo, a seconda =
del numero di pacchetti installati, in quanto ricompila il sistema di bas=
e (toolchain) e poi tutti i pacchetti installati (compresa la toolchain).=
 Questo =C3=A8 necessario per assicurarsi che tutti i pacchetti siano sta=
ti compilati la nuova toolchain, compresa la toolchain stessa.
</p>

<pre caption=3D"Ricompilazione di system e world">
# <i>emerge -e system</i>
# <i>emerge -e world</i>
</pre>

<p>
Si possono anche rimuovere in sicurezza le vecchie versioni del GCC:
</p>

<pre caption=3D"Rimuozione delle vecchie versioni del GCC">
# <i>emerge -aC =3Dsys-devel/gcc-3.3*</i>
</pre>

</body>
</section>
</chapter>

<chapter id=3D"problemi-comuni">
<title>Problemi comuni</title>
<section>
<body>

<p>
Ci si assicuri di aver disabilitato <c>distcc</c> durante l'aggiornamento=
. Mescolare sui vari nodi versioni differenti del compilatore <e>causer=C3=
=A0</e> problemi di ricompilazione. Non =C3=A8 necessario disabilitare <c=
>ccache</c>, in quanto la cache dei file oggetto sar=C3=A0 comunque ignor=
ata, perch=C3=A9 non pi=C3=B9 valida.
</p>

<p>
Si usi sempre la stessa versione di GCC per compilare il kernel e moduli =
aggiuntivi del kernel. Una volta ricompilato il  world con il nuovo GCC, =
i moduli esterni (come ad esempio <c>app-emulation/qemu-softmmu</c>) non =
potranno essere caricati. Ricompilare il kernel con il nuovo GCC risolve =
il problema.
</p>

</body>
</section>
<section>
<title>Messaggi di errore frequenti</title>
<body>

<p>
Se si verifica l'errore: <e>libtool: link: `/usr/lib/gcc-lib/i686-pc-linu=
x-gnu/3.3.6/libstdc++.la' is not a valid libtool archive,</e> si esegua i=
l comando <c>/sbin/fix_libtool_files.sh 3.3.6</c>. (eventualmente sostitu=
ire a "3.3.6" la versione riportata dal messaggio d'errore).
</p>

<p>
Se si verifica l'errore: <e>error: /usr/bin/gcc-config: line 632: /etc/en=
v.d/gcc/i686-pc-linux-gnu-3.3.5: No such file or directory,</e> si provi =
a cancellare <c>/etc/env.d/gcc/config-i686-pc-linux-gnu</c> e si riesegua=
 <c>gcc-config</c>, seguito da <c>source /etc/profile</c>. E' possibile f=
arlo solo se non sono stati impostati dei compilatori per altri sistemi (=
cross-compilers).
</p>

<p>
Se un pacchetto non si compila durante l'esecuzione del comando emerge -e=
 system/world, si pu=C3=B2 riprendere l'operazione con <c>emerge --resume=
</c> Se un pacchetto fallisce ripetutamente, si pi=C3=B2 passare al succe=
ssivo con <c>emerge --resume --skipfirst</c>. Non eseguire altre instanze=
 di emerge nel frattempo o si perderanno le informazioni necessarie per p=
oter riprendere la ricompilazione.
</p>

<p>
Se si verifica l'errore: <e>spec failure: unrecognized spec option</e> du=
rante l'aggiornamento del compilatore, si provi  a ritornare al compilato=
re predefinito, azzerare il valore della variabile <c>GCC_SPECS</c> e agg=
iornare nuovamente il GCC:
</p>

<pre caption=3D"Ripristino della configurazione predefinita">
# <i>gcc-config 1</i>
# <i>source /etc/profile</i>
# <i>unset GCC_SPECS</i>
# <i>emerge -uav gcc</i>
</pre>

</body>
</section>

</chapter>
</guide>

--------------080803010001080003080807--
-- 
gentoo-docs-it@gentoo.org mailing list