Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 49510
Collapse All | Expand All

(-)../prelink-howto.xml (-58 / +61 lines)
Lines 40-51 Link Here
40
<body>
40
<body>
41
41
42
<p>
42
<p>
43
La plupart des applications utilisent des bibliothèques partagées (shared
43
La plupart des applications utilisent des bibliothèques partagées («&nbsp;shared
44
libraries). Ces bibliothèques partagées ont besoin d'être chargées en mémoire 
44
libraries&nbsp;»). Ces bibliothèques partagées ont besoin d'être chargées en 
45
lors de l'exécution de l'application et les références aux différents symboles
45
mémoire lors de l'exécution de l'application et les références aux différents 
46
doivent être résolues. Pour la plupart des petits programmes, cette liaison 
46
symboles doivent être résolues. Pour la plupart des petits programmes, cette 
47
dynamique est très rapide. Mais pour les programmes écrits en C++ qui ont 
47
liaison dynamique est très rapide. Mais pour les programmes écrits en C++ qui 
48
beaucoup de dépendances, la liaison dynamique peut prendre un temps 
48
ont beaucoup de dépendances, la liaison dynamique peut prendre un temps 
49
considérable.
49
considérable.
50
</p>
50
</p>
51
51
Lines 79-86 Link Here
79
plus rapidement.</li>
79
plus rapidement.</li>
80
<li>Si une application prelinkée voit une de ses bibliothèques modifiée (mise à
80
<li>Si une application prelinkée voit une de ses bibliothèques modifiée (mise à
81
jour), alors il faut relancer <path>prelink</path> sur l'application, dans le 
81
jour), alors il faut relancer <path>prelink</path> sur l'application, dans le 
82
cas contraire vous n'obtiendrez aucune amélioration de vitesse. En fait à 
82
cas contraire vous n'obtiendrez aucune amélioration de vitesse. En fait, à 
83
chaque fois que vous mettez à jour un paquet via portage qui met à jour des 
83
chaque fois que vous mettez à jour via Portage un paquet qui met à jour des 
84
bibliothèques, vous devez relancer <path>prelink</path> sur ces 
84
bibliothèques, vous devez relancer <path>prelink</path> sur ces 
85
bibliothèques.</li>
85
bibliothèques.</li>
86
<li>Les modifications effectuées sur le binaire sont complètement réversibles.
86
<li>Les modifications effectuées sur le binaire sont complètement réversibles.
Lines 146-152 Link Here
146
<p>
146
<p>
147
Un certain nombre de personnes ont obtenu des erreurs lors de l'installation 
147
Un certain nombre de personnes ont obtenu des erreurs lors de l'installation 
148
parce que des tests ont échoué. Ces tests ont été mis en place pour des raisons de 
148
parce que des tests ont échoué. Ces tests ont été mis en place pour des raisons de 
149
sécurité, le comportement de prelink est incertain si vous les désactivez.
149
sécurité&nbsp;; le comportement de prelink est incertain si vous les désactivez.
150
Les erreurs d'emerge proviennent habituellement des paquets de base : binutils,
150
Les erreurs d'emerge proviennent habituellement des paquets de base : binutils,
151
gcc et glibc. Essayez de réinstaller ces paquets dans cet ordre.
151
gcc et glibc. Essayez de réinstaller ces paquets dans cet ordre.
152
</p>
152
</p>
Lines 189-196 Link Here
189
</pre>
189
</pre>
190
190
191
<note>
191
<note>
192
Vous pouvez ajouter des répertoires dans la liste, séparez-les par 
192
Vous pouvez ajouter des répertoires dans la liste&nbsp;; séparez-les par 
193
deux points ':'.
193
deux points «&nbsp;:&nbsp;».
194
</note>
194
</note>
195
195
196
</body>
196
</body>
Lines 213-224 Link Here
213
</pre>
213
</pre>
214
214
215
<warn>
215
<warn>
216
On a remarqué que dans le cas d'un petit espace disque disponible 
216
Si l'espace disque disponible est limité <path>prelink</path> risque de tronquer 
217
<path>prelink</path> risque de tronquer vos binaires si vous traitez 
217
vos binaires si vous traitez l'intégralité de votre système, ce qui rendra votre 
218
l'intégralité de votre système, ce qui rendra votre système inutilisable. 
218
système inutilisable. Utilisez les commandes «&nbsp;file&nbsp;» ou 
219
Utilisez les commandes "file" ou "readelf" afin de vérifier l'état d'un fichier
219
«&nbsp;readelf&nbsp;» afin de vérifier l'état d'un fichier binaire. Vous pouvez 
220
binaire. Vous pouvez également vérifier l'espace libre de vos disques avant de 
220
également vérifier l'espace libre de vos disques avant de lancer 
221
lancer <path>prelink</path> avec <c>df -h</c>.
221
<path>prelink</path> avec <c>df -h</c>.
222
</warn>
222
</warn>
223
223
224
<table>
224
<table>
Lines 228-256 Link Here
228
</tr>
228
</tr>
229
<tr>
229
<tr>
230
 <th>-a</th>
230
 <th>-a</th>
231
 <ti>Tous (<b>a</b>ll) les binaires sont passés à <path>prelink</path></ti>
231
 <ti>Tous («&nbsp;<b>a</b>ll&nbsp;») les binaires sont passés à 
232
 <path>prelink</path></ti>
232
</tr>
233
</tr>
233
234
234
<tr>
235
<tr>
235
 <th>-f</th>
236
 <th>-f</th>
236
 <ti>Oblige (<b>f</b>orce) <path>prelink</path> à traiter les binaires déjà
237
 <ti>Oblige («&nbsp;<b>f</b>orce&nbsp;») <path>prelink</path> à traiter les 
237
traités. Ceci est nécessaire car sinon <path>prelink</path> échoue si des 
238
 binaires déjà traités. Ceci est nécessaire car sinon <path>prelink</path> échoue 
238
fichiers anciennement traités sont présents et que leurs dépendances vers les 
239
 si des fichiers anciennement traités sont présents et que leurs dépendances vers 
239
bibliothèques ont changé.
240
 les bibliothèques ont changé.
240
 </ti>
241
 </ti>
241
</tr>
242
</tr>
242
243
243
<tr>
244
<tr>
244
 <th>-m</th>
245
 <th>-m</th>
245
 <ti>Conserve l'espace de <b>m</b>émoire virtuelle, nécessaire si vous avez 
246
 <ti>Conserve l'espace de <b>m</b>émoire virtuelle, nécessaire si vous avez 
246
beaucoup de bibliothèques qui ont besoin d'être traitées.
247
 beaucoup de bibliothèques qui ont besoin d'être traitées.
247
 </ti>
248
 </ti>
248
</tr>
249
</tr>
249
250
250
<tr>
251
<tr>
251
 <th>-R</th>
252
 <th>-R</th>
252
 <ti>Rend aléatoire (<b>r</b>andom) l'ordre d'adressage, ceci afin d'améliorer 
253
 <ti>Rend aléatoire («&nbsp;<b>r</b>andom&nbsp;») l'ordre d'adressage, ceci afin 
253
la sécurité contre les dépassements de capacité (buffer overflows).
254
 d'améliorer la sécurité contre les dépassements de capacité («&nbsp;buffer 
255
 overflows&nbsp;»).
254
 </ti>
256
 </ti>
255
</tr>
257
</tr>
256
</table>
258
</table>
Lines 264-272 Link Here
264
</chapter>
266
</chapter>
265
267
266
<chapter>
268
<chapter>
267
<title>Problèmes connus et leur correction</title>
269
<title>Problèmes connus et leurs corrections</title>
268
<section>
270
<section>
269
<title>&quot;Cannot prelink against non-PIC shared library&quot;</title>
271
<title>«&nbsp;Cannot prelink against non-PIC shared library&nbsp;»</title>
270
<body>
272
<body>
271
273
272
<p>
274
<p>
Lines 300-313 Link Here
300
</pre>
302
</pre>
301
303
302
<note>
304
<note>
303
Beaucoup de bibliothèques sont liées statiquement à zlib et/ou à tcp-wrappers, 
305
Beaucoup de bibliothèques sont liées statiquement à zlib et/ou à tcp-wrappers. 
304
donc essayez d'abord d'installer ces paquets puis de réinstaller les
306
Donc, essayez d'abord d'installer ces paquets puis de réinstaller les
305
bibliothèques à problèmes.
307
bibliothèques à problèmes.
306
</note>
308
</note>
307
309
308
<p>
310
<p>
309
Si vous rencontrez des problèmes avec le prelink de QT/KDE, essayez d'abord
311
Si vous rencontrez des problèmes avec le prelink de QT/KDE, essayez d'abord
310
de vous mettre à jour vers >=x11-base/xfree-4.2.1-r2 et 
312
de mettre à jour votre système vers >=x11-base/xfree-4.2.1-r2 et 
311
>=x11-libs/qt-3.1.0-r1. Si QT échoue encore, essayez alors de compiler QT sans
313
>=x11-libs/qt-3.1.0-r1. Si QT échoue encore, essayez alors de compiler QT sans
312
le support de xinerama en ajoutant myconf="-no-xinerama ${myconf}" dans 
314
le support de xinerama en ajoutant myconf="-no-xinerama ${myconf}" dans 
313
l'ebuild de QT.
315
l'ebuild de QT.
Lines 327-333 Link Here
327
329
328
<p>
330
<p>
329
Si votre bibliothèque problématique n'est pas présente dans la liste, nous 
331
Si votre bibliothèque problématique n'est pas présente dans la liste, nous 
330
vous prions de nous le rapporter avec, de préférence, un patch pour ajouter 
332
vous prions de nous le rapporter avec, de préférence, un correctif pour ajouter 
331
<b>-fPIC</b> au CFLAGS approprié.
333
<b>-fPIC</b> au CFLAGS approprié.
332
</p>
334
</p>
333
335
Lines 335-342 Link Here
335
</section>
337
</section>
336
338
337
<section>
339
<section>
338
<title>Échec lors du prelink d'un fichier, avec &quot;1631 Aborted 
340
<title>Échec lors du prelink d'un fichier, avec «&nbsp;1631 Aborted 
339
...&quot;</title>
341
...&nbsp;»</title>
340
<body>
342
<body>
341
343
342
<p>
344
<p>
Lines 348-359 Link Here
348
</section>
350
</section>
349
351
350
<section>
352
<section>
351
<title>&quot;&lt;file&gt;: error while loading shared libraries: 
353
<title>«&nbsp;&lt;file&gt;: error while loading shared libraries: 
352
unexpected reloc type...&quot;</title>
354
unexpected reloc type...&nbsp;»</title>
353
<body>
355
<body>
354
356
355
<p>
357
<p>
356
Ce bug a été corrigé dans sys-libs/glibc-2.3.1-r2 le 18/11/2002, réinstallez
358
Ce bug a été corrigé dans sys-libs/glibc-2.3.1-r2 le 18/11/2002&nbsp;; réinstallez
357
glibc s'il est trop ancien.
359
glibc s'il est trop ancien.
358
</p>
360
</p>
359
361
Lines 394-422 Link Here
394
</p>
396
</p>
395
397
396
<p>
398
<p>
397
&quot;Je suppose que tout se trouve dans le fichier 
399
«&nbsp;Je suppose que tout se trouve dans le fichier téléchargé, et donc que rien 
398
téléchargé, et donc que rien ne dépendra des bibliothèques locales sur le
400
ne dépendra des bibliothèques locales sur le système cible. Malheureusement avec 
399
système cible. Malheureusement avec Linux, et je pense avec quoi que ce soit
401
Linux, et, je pense, avec quoi que ce soit d'autre utilisant la GLIBC, ce n'est 
400
d'autre utilisant la GLIBC, ce n'est plus tout à fait vrai. Prenons "libnss"
402
plus tout à fait vrai. Prenons «&nbsp;libnss&nbsp;» («&nbsp;Sélecteur de Service 
401
("Sélecteur de Service de Nom", certains semblent appeler ça "Système de 
403
de Nom&nbsp;», certains semblent appeler ça «&nbsp;Système de Sécurité 
402
Sécurité Réseau") qui procure des fonctions permettant l'utilisation de 
404
Réseau&nbsp;») qui procure des fonctions permettant l'utilisation de diverses 
403
diverses bases de données pour l'authentification, les informations sur le 
405
bases de données pour l'authentification, les informations sur le réseau et 
404
réseau et autres. C'est supposé rendre les programmes
406
autres. C'est supposé rendre les programmes indépendants de l'environnement 
405
indépendants de l'environnement réseau actuel de la machine, configuré 
407
réseau actuel de la machine, configuré séparément. Bonne idée, mais les 
406
séparément. Bonne idée, mais les changements de la GLIBC peuvent entraîner
408
changements de la GLIBC peuvent entraîner des problèmes lors de son chargement. 
407
des problèmes lors de son chargement. Et vous ne pouvez pas lier statiquement
409
Et vous ne pouvez pas lier statiquement «&nbsp;libnss&nbsp;», car elle est 
408
"libnss", car elle est configurée indépendamment pour chaque machine. Le 
410
configurée indépendamment pour chaque machine. Le problème provient, je pense, 
409
problème provient, je pense, principalement de la liaison statique des autres
411
principalement de la liaison statique des autres bibliothèques de la GLIBC, 
410
bibliothèques de la GLIBC, notamment "libpthread", "libm" et "libc" 
412
notamment «&nbsp;libpthread&nbsp;», «&nbsp;libm&nbsp;» et «&nbsp;libc&nbsp;»  
411
desquelles proviennent des appels aux fonctions de "libnss" incompatibles.&quot;
413
desquelles proviennent des appels aux fonctions de «&nbsp;libnss&nbsp;» 
414
incompatibles.&nbsp;»
412
</p>
415
</p>
413
416
414
</body>
417
</body>
415
</section>
418
</section>
416
419
417
<section>
420
<section>
418
<title>Prelink échoue avec l'erreur &quot;prelink: dso.c:306: fdopen_dso: 
421
<title>Prelink échoue avec l'erreur «&nbsp;prelink: dso.c:306: fdopen_dso: 
419
Assertion 'j == k' failed.&quot;</title>
422
Assertion 'j == k' failed.&nbsp;»</title>
420
<body>
423
<body>
421
424
422
<p>
425
<p>
Lines 438-448 Link Here
438
441
439
<p>
442
<p>
440
Pour faire marcher <path>prelink</path> sur un système sous grsecurity qui 
443
Pour faire marcher <path>prelink</path> sur un système sous grsecurity qui 
441
utilise
444
utilise une base mmap() aléatoire, il est nécessaire de désactiver 
442
une base mmap() aléatoire, il est nécessaire de désactiver "randomized mmap()
445
«&nbsp;randomized mmap() base&nbsp;» pour les fichiers 
443
base" pour les fichiers <path>/lib/ld-2.3.*.so</path>. Pour ce faire, vous 
446
<path>/lib/ld-2.3.*.so</path>. Pour ce faire, vous devez utiliser l'utilitaire 
444
devez utiliser l'utilitaire <c>chpax</c>, mais vous devez le faire sans que le
447
<c>chpax</c>, mais vous devez le faire sans que le fichier ne soit utilisé (par 
445
fichier ne soit utilisé (par exemple démarrez sur un LiveCD).
448
exemple démarrez sur un LiveCD).
446
</p>
449
</p>
447
450
448
</body>
451
</body>

Return to bug 49510