Lines 20-34
Link Here
|
20 |
</author> |
20 |
</author> |
21 |
|
21 |
|
22 |
<abstract> |
22 |
<abstract> |
23 |
Ce document guidera les utilisateurs de Gentoo Linux à mettre GCC à jour. |
23 |
Ce document guidera les utilisateurs de Gentoo Linux pour mettre GCC à jour. |
24 |
</abstract> |
24 |
</abstract> |
25 |
|
25 |
|
26 |
<!-- The content of this document is licensed under the CC-BY-SA license --> |
26 |
<!-- The content of this document is licensed under the CC-BY-SA license --> |
27 |
<!-- See http://creativecommons.org/licenses/by-sa/2.5 --> |
27 |
<!-- See http://creativecommons.org/licenses/by-sa/2.5 --> |
28 |
<license/> |
28 |
<license/> |
29 |
|
29 |
|
30 |
<version>4</version> |
30 |
<version>8</version> |
31 |
<date>2006-01-30</date> |
31 |
<date>2006-02-09</date> |
32 |
|
32 |
|
33 |
<chapter id="intro"> |
33 |
<chapter id="intro"> |
34 |
<title>Introduction</title> |
34 |
<title>Introduction</title> |
Lines 42-48
Link Here
|
42 |
jour au moment où une nouvelle version supprime un bogue qui vous ennuie, une |
42 |
jour au moment où une nouvelle version supprime un bogue qui vous ennuie, une |
43 |
nouvelle fonctionalité dont vous avez besoin a été ajoutée, ou si vous voulez |
43 |
nouvelle fonctionalité dont vous avez besoin a été ajoutée, ou si vous voulez |
44 |
simplement garder votre système à jour. Si les cas précédents ne vous |
44 |
simplement garder votre système à jour. Si les cas précédents ne vous |
45 |
correspondent pas, vous pouvez retarder votre mise a jour sans crainte tant que |
45 |
correspondent pas, vous pouvez retarder votre mise a jour sans craintes tant que |
46 |
votre version de GCC est supportée par les développeurs de Gentoo. |
46 |
votre version de GCC est supportée par les développeurs de Gentoo. |
47 |
</p> |
47 |
</p> |
48 |
|
48 |
|
Lines 55-87
Link Here
|
55 |
</p> |
55 |
</p> |
56 |
|
56 |
|
57 |
<p> |
57 |
<p> |
58 |
Ce guide documenta les étapes nécessaires à la mise à jour du compilateur |
58 |
Ce guide va documenter les étapes nécessaires pour mettre à jour en douceur le |
59 |
utilisé par votre machine Gentoo. Une section spécifique est dédiée à <uri |
59 |
compilateur utilisé par votre machine Gentoo. Une section spécifique est dédiée |
60 |
link="#upgrade-3.3-to-3.4"> la mise à jour de GCC 3.3 à la version 3.4 </uri> |
60 |
à <uri link="#upgrade-3.3-to-3.4">la mise à jour de GCC depuis la version 3.3 à |
61 |
et les problèmes rencontrés avec <c>libstdc++</c>. |
61 |
la 3.4 ou supérieure</uri>, et aux problèmes avec <c>libstdc++</c>. Une autre |
|
|
62 |
section spécifique vise les utilisateurs qui <uri link="#first-install"> |
63 |
installent Gentoo</uri> à partir d'une image du stage3, après qu'une nouvelle |
64 |
version majeure ou mineure de GCC ait été rendue publique. |
62 |
</p> |
65 |
</p> |
63 |
|
66 |
|
|
|
67 |
<note> |
68 |
Notez bien que la mise à jour de GCC 3.4 vers 4.0 ou plus ne nécessite pas de |
69 |
gros changements à faire par l'utilisateur, puisque GCC 3.4 et 4.0 utilisent |
70 |
la même ABI. Il suffit que <c>gcc-config</c> soit utilisé pour choisir le |
71 |
compilateur désiré. |
72 |
</note> |
73 |
|
64 |
</body> |
74 |
</body> |
65 |
</section> |
75 |
</section> |
66 |
</chapter> |
76 |
</chapter> |
67 |
|
77 |
|
68 |
<chapter id="upgrade-general"> |
78 |
<chapter id="upgrade-general"> |
69 |
<title>Instructions générales à la mise à jour</title> |
79 |
<title>Instructions générales pour la mise à jour</title> |
70 |
<section> |
80 |
<section> |
71 |
<title>Introduction</title> |
81 |
<title>Introduction</title> |
72 |
<body> |
82 |
<body> |
73 |
|
83 |
|
74 |
<impo> |
84 |
<impo> |
75 |
Si vous recherchez les instructions spécifiques à la mise à jour de GCC 3.3 à |
85 |
Si vous recherchez des instructions spécifiques pour la mise à jour de GCC 3.3 |
76 |
la version 3.4, veuillez consulter la <uri link="#upgrade-3.3-to-3.4">section |
86 |
vers GCC 3.4 ou supérieur, veuillez consulter la <uri |
77 |
dédiée</uri>. |
87 |
link="#upgrade-3.3-to-3.4">section dédiée</uri>. |
|
|
88 |
</impo> |
89 |
|
90 |
<impo> |
91 |
Si vous recherchez des instructions spécifiques pour les mises à jour de GCC |
92 |
lors d'une nouvelle installation, veuillez consulter la <uri |
93 |
link="#first-install">section dédiée</uri>. |
78 |
</impo> |
94 |
</impo> |
79 |
|
95 |
|
80 |
<p> |
96 |
<p> |
81 |
En général, les mises à jour servant à <e>corriger les bogues</e>, comme de GCC |
97 |
En général, les mises à jour servant à <e>corriger les bogues</e>, comme de GCC |
82 |
3.3.5 à 3.3.6, devraient être sans risque -- il suffit d'installer la nouvelle |
98 |
3.3.5 à 3.3.6, devraient être sans risques -- il suffit d'installer la nouvelle |
83 |
version, de modifier votre système afin d'utiliser le nouveau GCC et |
99 |
version, de modifier votre système afin d'utiliser le nouveau GCC et de |
84 |
d'uniquement recompiler le paquet affecté, <c>libtool</c>. Quoiqu'il en soit, |
100 |
recompiler le seul paquet affecté, <c>libtool</c>. Cependant, |
85 |
quelques mises à jour de GCC cassent la compatibilité binaire ; dans ces |
101 |
quelques mises à jour de GCC cassent la compatibilité binaire ; dans ces |
86 |
cas, une recompilation des paquets affectés (ou même de la chaîne de |
102 |
cas, une recompilation des paquets affectés (ou même de la chaîne de |
87 |
compilation complète et du système) pourrait être requise. |
103 |
compilation complète et du système) pourrait être requise. |
Lines 91-119
Link Here
|
91 |
Souvenez-vous, nous avons dit que la mise à jour de GCC ne serait pas |
107 |
Souvenez-vous, nous avons dit que la mise à jour de GCC ne serait pas |
92 |
automatique. Il y a tout de même une exception : les mises à jour servant |
108 |
automatique. Il y a tout de même une exception : les mises à jour servant |
93 |
à supprimer des bogues, comme de la version 3.3.5 à la 3.3.6 si vous n'utilisez |
109 |
à supprimer des bogues, comme de la version 3.3.5 à la 3.3.6 si vous n'utilisez |
94 |
pas le dispositif "multislot" autorisant les deux versions à coexister sur un |
110 |
pas le flag USE "multislot" autorisant les deux versions à coexister sur un |
95 |
seul système. Multislot est désactivé, car il n'a pas grand intérêt pour les |
111 |
seul système. Multislot est désactivé par défaut, car il n'a pas grand intérêt |
96 |
utilisateurs. |
112 |
pour les utilisateurs. |
97 |
</p> |
113 |
</p> |
98 |
|
114 |
|
99 |
<pre caption="Mettre GCC à jour"> |
115 |
<pre caption="Mise à jour de GCC"> |
100 |
# <i>emerge -uav gcc</i> |
116 |
# <i>emerge -uav gcc</i> |
101 |
|
117 |
|
102 |
<comment>(Veuillez remplacer "i686-pc-linux-gnu-3.4.4" par la version de GCC |
118 |
<comment>(Veuillez remplacer "i686-pc-linux-gnu-3.4.4" par votre paramètre |
103 |
et le paramètre CHOST que vous venez de mettre à jour)</comment> |
119 |
CHOST et la version de GCC vers laquelle vous venez de mettre à jour)</comment> |
104 |
# <i>gcc-config i686-pc-linux-gnu-3.4.4</i> |
120 |
# <i>gcc-config i686-pc-linux-gnu-3.4.4</i> |
105 |
# <i>source /etc/profile</i> |
121 |
# <i>source /etc/profile</i> |
106 |
|
122 |
|
107 |
<comment>(Recompilez libtool)</comment> |
123 |
<comment>(Recompilation de libtool)</comment> |
108 |
# <i>emerge --oneshot -av libtool</i> |
124 |
# <i>emerge --oneshot -av libtool</i> |
109 |
</pre> |
125 |
</pre> |
110 |
|
126 |
|
111 |
<p> |
127 |
<p> |
112 |
On peut maintenant recompiler la chaîne de compilation et ensuite world, comme |
128 |
On peut maintenant recompiler la chaîne de compilation, puis world, afin de |
113 |
ça, tout sera recompilé par le nouveau GCC. |
129 |
s'assurer que tous les paquets seront recompilés par le nouveau GCC. |
114 |
</p> |
130 |
</p> |
115 |
|
131 |
|
116 |
<pre caption="Recompiler le système"> |
132 |
<pre caption="Recompilation du système"> |
117 |
# <i>emerge -eav system</i> |
133 |
# <i>emerge -eav system</i> |
118 |
# <i>emerge -eav world</i> |
134 |
# <i>emerge -eav world</i> |
119 |
</pre> |
135 |
</pre> |
Lines 125-131
Link Here
|
125 |
désinstaller) : |
141 |
désinstaller) : |
126 |
</p> |
142 |
</p> |
127 |
|
143 |
|
128 |
<pre caption="Supprimer l'ancienne version de GCC"> |
144 |
<pre caption="Désinstallation des anciennes versions de GCC"> |
129 |
# <i>emerge -aC =sys-devel/gcc-3.3*</i> |
145 |
# <i>emerge -aC =sys-devel/gcc-3.3*</i> |
130 |
</pre> |
146 |
</pre> |
131 |
|
147 |
|
Lines 134-148
Link Here
|
134 |
</chapter> |
150 |
</chapter> |
135 |
|
151 |
|
136 |
<chapter id="upgrade-3.3-to-3.4"> |
152 |
<chapter id="upgrade-3.3-to-3.4"> |
137 |
<title>La mise à jour de la version 3.3 à la version 3.4</title> |
153 |
<title>Mise à jour de la version 3.3 à la version 3.4 ou supérieure</title> |
138 |
<section> |
154 |
<section> |
139 |
<title>Introduction</title> |
155 |
<title>Introduction</title> |
140 |
<body> |
156 |
<body> |
141 |
|
157 |
|
142 |
<p> |
158 |
<p> |
143 |
La mise à jour de GCC 3.3 à 3.4 n'est pas sans soucis, car l'ABI C++ a changé |
159 |
La mise à jour de GCC 3.3 à 3.4 ou supérieure n'est pas sans soucis, car l'ABI |
144 |
entre les deux versions. Il faut donc aussi se charger d'un problème qui va |
160 |
C++ a changé entre les deux versions. Il faut également s'occuper d'un |
145 |
survenir avec la bibliothèque <c>libstdc++</c>. |
161 |
problème qui va survenir avec la bibliothèque <c>libstdc++</c>. |
146 |
</p> |
162 |
</p> |
147 |
|
163 |
|
148 |
</body> |
164 |
</body> |
Lines 159-171
Link Here
|
159 |
</impo> |
175 |
</impo> |
160 |
|
176 |
|
161 |
<p> |
177 |
<p> |
162 |
Vous avez le choix entre deux possibilités pour mettre votre système à jour. |
178 |
Vous avez le choix entre deux possibilités pour mettre votre système à jour. La |
163 |
<uri link="#upgrade-3.3-to-3.4-revdep-rebuild">La première méthode</uri> est la |
179 |
<uri link="#upgrade-3.3-to-3.4-revdep-rebuild">première méthode</uri> est la |
164 |
plus rapide et requiert l'utilisation de l'outil <c>revdep-rebuild</c> du |
180 |
plus rapide et requiert l'utilisation de l'outil <c>revdep-rebuild</c> du |
165 |
paquet <c>gentoolkit</c> alors que <uri link="#upgrade-3.3-to-3.4-emerge-e">la |
181 |
paquet <c>gentoolkit</c> alors que la <uri link="#upgrade-3.3-to-3.4-emerge-e"> |
166 |
seconde</uri> recompile le système entier à partir de zéro. Le sytème utilisera |
182 |
seconde</uri> recompile le système entier à partir de zéro. Le système utilisera |
167 |
ainsi les nouveaux dispositifs de GCC. Le choix entre ces deux possibilités |
183 |
ainsi les nouvelles fonctionnalités de GCC. Le choix entre ces deux possibilités |
168 |
vous appartient. |
184 |
vous appartient. Dans la plupart des cas, la première méthode est suffisante. |
169 |
</p> |
185 |
</p> |
170 |
|
186 |
|
171 |
</body> |
187 |
</body> |
Lines 182-201
Link Here
|
182 |
état. |
198 |
état. |
183 |
</p> |
199 |
</p> |
184 |
|
200 |
|
185 |
<pre caption="Installer gentoolkit et mettre GCC à jour"> |
201 |
<pre caption="Installation de gentoolkit et mise à jour de GCC"> |
186 |
# <i>emerge -an gentoolkit</i> |
202 |
# <i>emerge -an gentoolkit</i> |
187 |
# <i>emerge -uav gcc</i> |
203 |
# <i>emerge -uav gcc</i> |
188 |
# <i>gcc-config i686-pc-linux-gnu-3.4.4</i> |
204 |
# <i>gcc-config i686-pc-linux-gnu-3.4.4</i> |
189 |
# <i>source /etc/profile</i> |
205 |
# <i>source /etc/profile</i> |
190 |
|
206 |
|
191 |
<comment>(Recompiler libtool)</comment> |
207 |
<comment>(Recompilation de libtool)</comment> |
192 |
# <i>emerge --oneshot -av libtool</i> |
208 |
# <i>emerge --oneshot -av libtool</i> |
193 |
</pre> |
209 |
</pre> |
194 |
|
210 |
|
195 |
<note> |
211 |
<note> |
196 |
Nous présumons que vous utilisez <c>CHOST="i686-pc-linux-gnu"</c>. Si vous |
212 |
Nous supposons dans cet exemple que vous utilisez la variable |
197 |
utilisez un autre CHOST, veuillez le remplacer dans la commande gcc-config par |
213 |
<c>CHOST="i686-pc-linux-gnu"</c>. Si vous utilisez un autre CHOST, veuillez |
198 |
le CHOST approprié. |
214 |
adapter la ligne gcc-config en conséquence. |
199 |
</note> |
215 |
</note> |
200 |
|
216 |
|
201 |
<p> |
217 |
<p> |
Lines 210-230
Link Here
|
210 |
</pre> |
226 |
</pre> |
211 |
|
227 |
|
212 |
<note> |
228 |
<note> |
213 |
Il est possible que vous rencontriez des problèmes avec des versions de paquets |
229 |
Il est possible que vous rencontriez des problèmes avec des paquets dont la |
214 |
non-existantes du fait qu'elles sont trop anciennes ou masquées. Dans ce cas, |
230 |
version n'existe plus, car ils sont dépassés ou masqués au moment où vous |
215 |
vous aurez besoin d'utiliser l'option <c>--package-names</c> avec |
231 |
mettez à jour. Si c'est le cas, vous pouvez utiliser l'option |
216 |
<c>revdep-rebuild</c>. Cela permet de baser la recompilation du paquet sur son |
232 |
<c>--package-names</c> de <c>revdep-rebuild</c>. Elle permet de recompiler |
217 |
nom plutôt que son nom et sa version. |
233 |
les paquets en se basant sur leur nom, plutôt que leur désignation complète |
|
|
234 |
composée du nom et de la version exacte. |
218 |
</note> |
235 |
</note> |
219 |
|
236 |
|
220 |
<p> |
237 |
<p> |
221 |
Afin de garder une compatibilité avec les anciennes applications binaires en |
238 |
Pour permettre la compatibilité avec les anciens binaires d'applications C++, |
222 |
C++ et des paquets que revdep-rebuild pourrait avoir oublié, |
239 |
<c>sys-libs/libstdc++-v3</c> doit être installé sur votre système. |
223 |
<c>sys-libs/libstdc++-v3</c> a besoin d'être installé avant de désinstaller GCC |
|
|
224 |
3.3. |
225 |
</p> |
240 |
</p> |
226 |
|
241 |
|
227 |
<pre caption="Installer libstdc++-v3 et désinstaller l'ancienne version de GCC proprement"> |
242 |
<pre caption="Installation de libstdc++-v3 et désinstallation de l'ancienne |
|
|
243 |
version de GCC"> |
228 |
# <i>emerge --oneshot sys-libs/libstdc++-v3</i> |
244 |
# <i>emerge --oneshot sys-libs/libstdc++-v3</i> |
229 |
# <i>emerge -aC =sys-devel/gcc-3.3*</i> |
245 |
# <i>emerge -aC =sys-devel/gcc-3.3*</i> |
230 |
</pre> |
246 |
</pre> |
Lines 243-249
Link Here
|
243 |
du compilateur à la nouvelle. |
259 |
du compilateur à la nouvelle. |
244 |
</p> |
260 |
</p> |
245 |
|
261 |
|
246 |
<pre caption="Mettre GCC à jour"> |
262 |
<pre caption="Mise à jour de GCC"> |
247 |
# <i>emerge -uav gcc</i> |
263 |
# <i>emerge -uav gcc</i> |
248 |
# <i>gcc-config i686-pc-linux-gnu-3.4.4</i> |
264 |
# <i>gcc-config i686-pc-linux-gnu-3.4.4</i> |
249 |
# <i>source /etc/profile</i> |
265 |
# <i>source /etc/profile</i> |
Lines 253-269
Link Here
|
253 |
</pre> |
269 |
</pre> |
254 |
|
270 |
|
255 |
<note> |
271 |
<note> |
256 |
Nous présumons que vous utilisez <c>CHOST="i686-pc-linux-gnu"</c>. Si vous |
272 |
Nous supposons dans cet exemple que vous utilisez la variable |
257 |
utilisez un autre CHOST, veuillez le remplacer dans la commande gcc-config par |
273 |
<c>CHOST="i686-pc-linux-gnu"</c>. Si vous utilisez un autre CHOST, veuillez |
258 |
le CHOST approprié. |
274 |
adapter la ligne gcc-config en conséquence. |
259 |
</note> |
275 |
</note> |
260 |
|
276 |
|
261 |
<p> |
277 |
<p> |
262 |
Pour garder une compatibilité avec les anciennes applications binaires C++, |
278 |
Pour permettre la compatibilité avec les anciens binaires d'applications |
263 |
<c>sys-libs/libstdc++-v3</c> a besoin d'être installé sur votre système. |
279 |
C++, <c>sys-libs/libstdc++-v3</c> doit être installé sur votre système. |
264 |
</p> |
280 |
</p> |
265 |
|
281 |
|
266 |
<pre caption="Installer libstdc++-v3"> |
282 |
<pre caption="Installation de libstdc++-v3"> |
267 |
# <i>emerge --oneshot sys-libs/libstdc++-v3</i> |
283 |
# <i>emerge --oneshot sys-libs/libstdc++-v3</i> |
268 |
</pre> |
284 |
</pre> |
269 |
|
285 |
|
Lines 272-283
Link Here
|
272 |
Cela va prendre du temps en fonction du nombre de paquets que vous avez |
288 |
Cela va prendre du temps en fonction du nombre de paquets que vous avez |
273 |
installés, car votre chaîne de compilation entière et ses fichiers système |
289 |
installés, car votre chaîne de compilation entière et ses fichiers système |
274 |
seront recompilés, suivis de chaque paquet de votre système, incluant la chaîne |
290 |
seront recompilés, suivis de chaque paquet de votre système, incluant la chaîne |
275 |
de compilation. Cela est nécessaire pour s'assurer que chaque paquet y compris |
291 |
de compilation. Cela est nécessaire pour s'assurer que chaque paquet, y compris |
276 |
ceux de la chaîne de compilation elle-même aura été compilés avec la nouvelle |
292 |
ceux de la chaîne de compilation elle-même, auront été compilés avec la |
277 |
chaîne de compilation. |
293 |
nouvelle chaîne de compilation. |
278 |
</p> |
294 |
</p> |
279 |
|
295 |
|
280 |
<pre caption="Recompiler le système et world"> |
296 |
<pre caption="Recompilation de system et world"> |
281 |
# <i>emerge -e system</i> |
297 |
# <i>emerge -e system</i> |
282 |
# <i>emerge -e world</i> |
298 |
# <i>emerge -e world</i> |
283 |
</pre> |
299 |
</pre> |
Lines 294-299
Link Here
|
294 |
</section> |
310 |
</section> |
295 |
</chapter> |
311 |
</chapter> |
296 |
|
312 |
|
|
|
313 |
<chapter id="first-install"> |
314 |
<title>Mise à jour de GCC à l'installation du système</title> |
315 |
<section> |
316 |
<title>Introduction</title> |
317 |
<body> |
318 |
|
319 |
<p> |
320 |
La mise à jour de GCC sur un système après l'installation d'une image de stage3 |
321 |
est assez simple. Un des avantage qu'ont les utilisateurs qui installent un |
322 |
nouveau système est qu'ils n'ont pas beaucoup de logiciels installés qui ont |
323 |
des liens avec les anciennes versions de GCC. L'exemple suivant sert pour la |
324 |
mise à jour de GCC 3.3 à 3.4 ou supérieur. Certaines passages seront différents |
325 |
si vous mettez à jour depuis d'autres version de GCC. Par exemple, les noms des |
326 |
bibliothèques utilisées avec <c>revdep-rebuild</c> plus bas sont spécifiques à |
327 |
GCC 3.3, ainsi que le besoin d'installer <c>libstdc++-v3</c>. |
328 |
</p> |
329 |
|
330 |
<p> |
331 |
Si vous n'avez pas encore fait de modifications a votre système, il suffit de |
332 |
quelques étapes pour le mettre à jour vers une nouvelle version de GCC. Comme |
333 |
pour la mise à jour de GCC 3.3 vers 3.4, vous avez deux solutions. Cependant, |
334 |
ce cas de figure est moins compliqué puisque il y a peu de différences entre |
335 |
les deux solutions. La <uri link="#first-install-revdep-rebuild">première |
336 |
méthode</uri> est plus rapide et utilise l'outil <c>revdep-rebuild</c> du paquet |
337 |
<c>gentoolkit</c>, comme la procédure précedente. L'utilisation de |
338 |
revdep-rebuild n'entraîne la recompilation que pour les paquets qui ont un |
339 |
lien avec les librairies de GCC, tandis que <uri link="#first-install-emerge-e"> |
340 |
la seconde méthode</uri> entraîne la recompilation de tout le système et |
341 |
prend donc beaucoup plus de temps. Cette seconde méthode n'est jamais utile |
342 |
et est seleument documentée à des fins d'exhaustivité. |
343 |
</p> |
344 |
|
345 |
<p> |
346 |
Les premières étapes sont communes aux deux méthodes, et doivent être accomplies |
347 |
dans tous les cas. |
348 |
</p> |
349 |
|
350 |
<pre caption="Mise à jour de GCC"> |
351 |
# <i>emerge -uav gcc</i> |
352 |
# <i>gcc-config i686-pc-linux-gnu-3.4.4</i> |
353 |
# <i>source /etc/profile</i> |
354 |
|
355 |
<comment>(Recompilation de libtool)</comment> |
356 |
# <i>emerge --oneshot -av libtool</i> |
357 |
</pre> |
358 |
|
359 |
<note> |
360 |
Nous supposons dans cet exemple que vous utilisez la variable |
361 |
<c>CHOST="i686-pc-linux-gnu"</c>. Si vous utilisez un autre CHOST, veuillez |
362 |
adapter la ligne gcc-config en conséquence. |
363 |
</note> |
364 |
|
365 |
<p> |
366 |
Pour permettre la compatibilité avec les anciens binaires d'applications C++, |
367 |
<c>sys-libs/libstdc++-v3</c> doit être installé sur votre système. |
368 |
</p> |
369 |
|
370 |
<pre caption="Installation de libstdc++-v3"> |
371 |
# <i>emerge --oneshot sys-libs/libstdc++-v3</i> |
372 |
</pre> |
373 |
|
374 |
</body> |
375 |
</section> |
376 |
|
377 |
<section id="first-install-revdep-rebuild"> |
378 |
<title>Utilisation de revdep-rebuild</title> |
379 |
<body> |
380 |
|
381 |
<p> |
382 |
Cette méthode nécessite que vous installiez d'abord <c>gentoolkit</c> si vous |
383 |
ne l'avez pas déjà fait. Nous utiliserons <c>revdep-rebuild</c> pour rechercher |
384 |
les paquets installés que nous devrons recompiler, et les recompiler. |
385 |
</p> |
386 |
|
387 |
<pre caption="Installation de gentoolkit et utilisation de revdep-rebuild"> |
388 |
# <i>emerge -an gentoolkit</i> |
389 |
# <i>revdep-rebuild --library libstdc++.so.5 -- -p -v</i> |
390 |
# <i>revdep-rebuild --library libstdc++.so.5</i> |
391 |
</pre> |
392 |
|
393 |
<note> |
394 |
Il est possible que vous rencontriez des problèmes avec des paquets dont la |
395 |
version n'existe plus, car ils sont dépassés ou masqués au moment où vous |
396 |
mettez à jour. Si c'est le cas, vous pouvez utiliser l'option |
397 |
<c>--package-names</c> de <c>revdep-rebuild</c>. Elle permet de recompiler les |
398 |
paquets en se basant sur leur nom, plutôt que leur désignation complète composée |
399 |
du nom et de la version exacte. |
400 |
</note> |
401 |
|
402 |
</body> |
403 |
</section> |
404 |
<section id="first-install-emerge-e"> |
405 |
<title>Utilisation de emerge -e</title> |
406 |
<body> |
407 |
|
408 |
<p> |
409 |
Cette méthode, bien que plus lente, va recompiler tout le système pour s'assurer |
410 |
que tout a bien été compilé avec votre nouveau compilateur. Ce n'est pas |
411 |
nécessaire, mais c'est une solution valide si vous avez modifié les CFLAGS ou |
412 |
d'autres variables de make.conf qui ont un effet sur la compilation. |
413 |
</p> |
414 |
|
415 |
<pre caption="Mise à jour de GCC"> |
416 |
# <i>emerge -uav gcc</i> |
417 |
# <i>gcc-config i686-pc-linux-gnu-3.4.4</i> |
418 |
# <i>source /etc/profile</i> |
419 |
|
420 |
<comment>(Recompilation de libtool)</comment> |
421 |
# <i>emerge --oneshot -av libtool</i> |
422 |
</pre> |
423 |
|
424 |
<note> |
425 |
Nous supposons dans cet exemple que vous utilisez la variable |
426 |
<c>CHOST="i686-pc-linux-gnu"</c>. Si vous utilisez un autre CHOST, veuillez |
427 |
adapter la ligne gcc-config en conséquence. |
428 |
</note> |
429 |
|
430 |
<p> |
431 |
Pour permettre la compatibilité avec les anciens binaires d'applications C++, |
432 |
<c>sys-libs/libstdc++-v3</c> doit être installé sur votre système. |
433 |
</p> |
434 |
|
435 |
<pre caption="Installation de libstdc++-v3"> |
436 |
# <i>emerge --oneshot sys-libs/libstdc++-v3</i> |
437 |
</pre> |
438 |
|
439 |
<p> |
440 |
Puisque nous accomplissons la mise à jour après une installation initiale, il |
441 |
est inutile de recompiler la cible world comme on devrait le faire pour une |
442 |
mise à jour d'un système déjà installé. Cependant, vous pouvez choisir de faire |
443 |
une mise à jour de world au lieu de seulement system, pour être certain que |
444 |
tous les paquets soient mis à jour. |
445 |
</p> |
446 |
|
447 |
<pre caption="Recompilation de system"> |
448 |
# <i>emerge -e system</i> |
449 |
</pre> |
450 |
|
451 |
<p> |
452 |
Il est également possible de désinstaller les anciennes versions de GCC sans |
453 |
risques à ce stade. Veuillez remplacer <c>VOTRE-NOUVELLE-VERSION-DE-GCC</c> |
454 |
avec la version vers laquelle vous avez mis à jour: |
455 |
</p> |
456 |
|
457 |
<pre caption="Désinstallation des anciennes versions de GCC"> |
458 |
# <i>emerge -aC "<sys-devel/gcc-VOTRE-NOUVELLE-VERSION-DE-GCC"</i> |
459 |
</pre> |
460 |
|
461 |
</body> |
462 |
</section> |
463 |
</chapter> |
464 |
|
297 |
<chapter id="common-pitfalls"> |
465 |
<chapter id="common-pitfalls"> |
298 |
<title>Pièges connus</title> |
466 |
<title>Pièges connus</title> |
299 |
<section> |
467 |
<section> |
Lines 302-319
Link Here
|
302 |
<p> |
470 |
<p> |
303 |
Il est important de désactiver <c>distcc</c> durant la mise à jour. Mélanger |
471 |
Il est important de désactiver <c>distcc</c> durant la mise à jour. Mélanger |
304 |
les versions de compilateurs sur vos nœuds <e>provoquera</e> des problèmes au |
472 |
les versions de compilateurs sur vos nœuds <e>provoquera</e> des problèmes au |
305 |
niveau de la compilation. Vous pouvez laisser ccache étant donné que les |
473 |
niveau de la compilation. Vous pouvez garder ccache activé étant donné que les |
306 |
objets en cache seront invalidés automatiquement. |
474 |
objets en cache seront invalidés automatiquement. |
307 |
</p> |
475 |
</p> |
308 |
|
476 |
|
309 |
<p> |
477 |
<p> |
310 |
Utilisez toujours la même version de GCC pour votre noyau et les modules |
478 |
Utilisez toujours la même version de GCC pour votre noyau et les modules |
311 |
additionels du noyau. Une fois votre "world" recompilé avec votre nouveau GCC, |
479 |
additionnels du noyau. Une fois votre "world" recompilé avec votre nouveau GCC, |
312 |
les modules externes (comme <c>app-emulation/qemu-softmmu</c>) échoueront lors |
480 |
les modules externes (comme <c>app-emulation/qemu-softmmu</c>) échoueront lors |
313 |
de leur chargement. Il suffit de recompiler votre noyau pour résoudre ce |
481 |
de leur chargement. Il suffit de recompiler votre noyau pour résoudre ce |
314 |
problème. |
482 |
problème. |
315 |
</p> |
483 |
</p> |
316 |
|
484 |
|
|
|
485 |
<p> |
486 |
Si vous mettez à jour une machine SPARC, n'oubliez pas de relancer <c>silo -f |
487 |
</c> après avoir recompilé world afin d'éviter d'eventuels problèmes. |
488 |
</p> |
489 |
|
317 |
</body> |
490 |
</body> |
318 |
</section> |
491 |
</section> |
319 |
<section> |
492 |
<section> |
Lines 332-346
Link Here
|
332 |
/etc/env.d/gcc/i686-pc-linux-gnu-3.3.5: No such file or directory</e>, essayez |
505 |
/etc/env.d/gcc/i686-pc-linux-gnu-3.3.5: No such file or directory</e>, essayez |
333 |
alors de supprimer <path>/etc/env.d/gcc/config-i686-pc-linux-gnu</path> et |
506 |
alors de supprimer <path>/etc/env.d/gcc/config-i686-pc-linux-gnu</path> et |
334 |
lancez de nouveau <c>gcc-config</c>, suivi de <c>source /etc/profile</c>. Ne |
507 |
lancez de nouveau <c>gcc-config</c>, suivi de <c>source /etc/profile</c>. Ne |
335 |
faites cela que si vous n'utilisez pas de compilateurs croisés. |
508 |
faites pas cela si vous utilisez la compilation croisée. |
336 |
</p> |
509 |
</p> |
337 |
|
510 |
|
338 |
<p> |
511 |
<p> |
339 |
Si un paquet échoue durant <c>emerge -e system/world</c>, vous pouvez relancer |
512 |
Si un paquet échoue durant <c>emerge -e system</c> ou <c>emerge -e world</c>, |
340 |
l'operation avec la commande <c>emerge --resume</c>. Si un paquet continue |
513 |
vous pouvez relancer l'opération avec la commande <c>emerge --resume</c>. Si un |
341 |
d'échouer, passez au paquet suivant avec la commande <c>emerge --resume |
514 |
paquet continue d'échouer, passez au paquet suivant avec la commande <c>emerge |
342 |
--skipfirst</c>. Ne lancez aucun autre emerge entre temps, car cela effacerait |
515 |
--resume --skipfirst</c>. Ne lancez aucun autre emerge entre temps, car cela |
343 |
les informations qui permettent la relance. |
516 |
effacerait les informations qui permettent la relance. |
344 |
</p> |
517 |
</p> |
345 |
|
518 |
|
346 |
<p> |
519 |
<p> |
Lines 350-356
Link Here
|
350 |
<c>GCC_SPECS</c> et relancez la mise à jour de GCC : |
523 |
<c>GCC_SPECS</c> et relancez la mise à jour de GCC : |
351 |
</p> |
524 |
</p> |
352 |
|
525 |
|
353 |
<pre caption="Restaurer les specifications primaires"> |
526 |
<pre caption="Restauration de la configuration d'origine"> |
354 |
# <i>gcc-config 1</i> |
527 |
# <i>gcc-config 1</i> |
355 |
# <i>source /etc/profile</i> |
528 |
# <i>source /etc/profile</i> |
356 |
# <i>unset GCC_SPECS</i> |
529 |
# <i>unset GCC_SPECS</i> |