en to fr translation catalogue (12 entries)

note: type: Content of: <sect1><sect2><title>
en: Libraries: Static or shared?
fr: Bibliothèques&nbsp;: statiques ou partagées&nbsp;?

note: type: Content of: <sect1><indexterm><primary>
en: libraries: static or shared
fr: bibliothèques&nbsp;: statiques ou partagées

note: type: Content of: <sect1><sect2><para>
en: The original libraries were simply an archive of routines from which the required routines were extracted and linked into the executable program. These are described as static libraries, with names of the form <filename>libfoo.a</filename> on UNIX-like operating systems.  On some old operating systems they are the only type available.
fr: Les premières bibliothèques étaient de simples archives de routines, à partir desquelles on extrayait et liait les routines nécessaires dans l'exécutable. On appelle cela des bibliothèques statiques et elles ont un nom de la forme <filename>libtoto.a</filename> sur les systèmes d'exploitation UNIX. Sur certains systèmes d'exploitation anciens, ce sont les seules qui sont disponibles.

note: type: Content of: <sect1><sect2><para>
en: On almost all Linux platforms there are also <quote>shared</quote> (or equivalently <quote>dynamic</quote>)  libraries (with names of the form <filename>libfoo.so</filename>) &ndash; one copy of the library is loaded into virtual memory, and shared by all the programs which call any of its functions. This is space efficient.
fr: Sur la plupart des plate-formes Linux, il y a aussi des bibliothèques <quote>partagées</quote> (ou encore <quote>dynamiques</quote>) et elles ont un nom de la forme <filename>libtoto.so</filename>. Une seule copie de la bibliothèque est chargée dans la mémoire virtuelle et partagée par tous les programmes qui appellent ses fonctions. C'est plus efficace en terme d'espace.

note: type: Content of: <sect1><sect2><para>
en: In the past, essential programs such as a shell were often linked statically so that some form of minimal recovery system would exist even if shared libraries, such as <filename>libc.so</filename>, became damaged (e.g. moved to <filename class="directory">lost+found</filename> after <command>fsck</command> following an unclean shutdown). Nowadays, most people use an alternative system install or a USB stick if they have to recover. Journaling filesystems also reduce the likelihood of this sort of problem.
fr: Autrefois, des programmes essentiels tels que le shell étaient souvent liés de manière statique pour qu'il existe une forme de système de secours minimal, même en cas de bibliothèques partagées endommagées telles que <filename>libc.so</filename> (par exemple, déplacées dans <filename class="directory">lost+found</filename> après un <command>fsck</command> consécutif à une extinction brutale). De nos jours, la plupart des gens utilisent une installation système alternative ou une clé USB s'ils ont besoin d'une récupération. Les systèmes de fichiers journalisés réduisent également la probabilité de ce genre de problème.

note: type: Content of: <sect1><sect2><para>
en: Within the book, there are various places where configure switches such as <parameter>--disable-static</parameter> are employed, and other places where the possibility of using system versions of libraries instead of the versions included within another package is discussed. The main reason for this is to simplify updates of libraries.
fr: À plusieurs endroits du livre, des paramètres de configuration tels que <parameter>--disable-static</parameter> sont utilisés, et à d'autres endroits, la possibilité d'utiliser les versions du système des bibliothèques plutôt que les versions fournies par un autre paquet est abordée. Nous traitons cela surtout pour simplifier les mises à jour des bibliothèques.

note: type: Content of: <sect1><sect2><para>
en: If a package is linked to a dynamic library, updating to a newer library version is automatic once the newer library is installed and the program is (re)started (provided the library major version is unchanged, e.g. going from <filename>libfoo.so.2.0</filename> to <filename>libfoo.so.2.1</filename>. Going to <filename>libfoo.so.3</filename> will require recompilation &ndash; <command>ldd</command> can be used to find which programs use the old version). If a program is linked to a static library, the program always has to be recompiled. If you know which programs are linked to a particular static library, this is merely an annoyance. But usually you will <emphasis>not</emphasis> know which programs to recompile.
fr: Si un paquet est lié à une bibliothèque dynamique, la mise à jour de la bibliothèque se fait automatiquement une fois que la nouvelle bibliothèque est installée et que le programme est (re)démarré (à condition que la version majeure de la bibliothèque reste inchangée, passant par exemple de <filename>libtoto.so.2.0</filename> à <filename>libtoto.so.2.1</filename>. Le passage à <filename>libtoto.so.3</filename> exigera une recompilation. Utilisez <command>ldd</command> pour connaître les programmes qui utilisent l'ancienne version). Si un programme est lié à une bibliothèque statique, il faut toujours le recompiler. Si vous connaissez les programmes liés à une bibliothèque statique particulière, pas de problème. Mais en général, vous ne saurez <emphasis>pas</emphasis> quels programmes recompiler.

note: type: Content of: <sect1><sect2><para>
en: One way to identify when a static library is used, is to deal with it at the end of the installation of every package.  Write a script to find all the static libraries in <filename class="directory">/usr/lib</filename> or wherever you are installing to, and either move them to another directory so that they are no longer found by the linker, or rename them so that <filename>libfoo.a</filename> becomes e.g. <filename>libfoo.a.hidden</filename>. The static library can then be temporarily restored if it is ever needed, and the package needing it can be identified. This shouldn't be done blindly since many libraries only exist in a static version. For example, some libraries from the <application>glibc</application> and <application>gcc</application> packages should always be present on the system (<filename>libc_nonshared.a, libg.a, libpthread_nonshared.a, libssp_nonshared.a, libsupc++.a</filename> as of glibc-2.36 and gcc-12.2).
fr: Une manière d'identifier si une bibliothèque statique est utilisée est de s'en préoccuper à la fin de l'installation de chaque paquet. Écrivez un script pour trouver toutes les bibliothèques statiques dans <filename class="directory">/usr/lib</filename> ou bien là où vous installez, puis déplacez-les dans un autre répertoire de sorte que l'éditeur de liens ne les trouve plus ou renommez-les pour que <filename>libtoto.a</filename> devienne par exemple <filename>libtoto.a.hidden</filename>. Vous pouvez alors restaurer temporairement une bibliothèque statique si nécessaire, et identifier les paquets qui en ont besoin. Vous ne devriez pas le faire sans réfléchir car de nombreuses bibliothèques n'existent qu'en version statique. Par exemple, certaines bibliothèques des paquets <application>glibc</application> et <application>gcc</application> devraient toujours être présentes sur le système (<filename>libc_nonshared.a, libg.a, libpthread_nonshared.a, libssp_nonshared.a, libsupc++.a</filename> pour glibc-2.36 et gcc-12.2).

note: type: Content of: <sect1><sect2><para>
en: If you use this approach, you may discover that more packages than you were expecting use a static library. That was the case with <application>nettle-2.4</application> in its default static-only configuration: It was required by <application>GnuTLS-3.0.19</application>, but also linked into package(s) which used <application>GnuTLS</application>, such as <application>glib-networking-2.32.3</application>.
fr: Si vous faites cela, il se peut que vous trouviez que plus de paquets que vous ne le pensiez utilisent une bibliothèque statique. C'était le cas avec <application>nettle-2.4</application> dans sa configuration par défaut en statique seulement&nbsp;: il était requis par <application>GnuTLS-3.0.19</application>, mais aussi lié à des paquets qui utilisaient <application>GnuTLS-3.0.19</application>, tels que <application>glib-networking-2.32.3</application>.

note: type: Content of: <sect1><sect2><para>
en: Many packages put some of their common functions into a static library which is only used by the programs within the package and, crucially, the library is <emphasis>not</emphasis> installed as a standalone library. These internal libraries are not a problem &ndash; if the package has to be rebuilt to fix a bug or vulnerability, nothing else is linked to them.
fr: De nombreux paquets mettent certaines de leurs fonctions courantes dans une bibliothèque qui n'est utilisée que par les programmes du paquet et qui, surtout, <emphasis>n'est pas</emphasis> installée en tant que bibliothèque autonome. Ces bibliothèques internes ne posent pas problème — si le paquet doit être reconstruit pour corriger un bogue ou une faille de sécurité, rien de plus n'y est lié.

note: type: Content of: <sect1><sect2><para>
en: When BLFS mentions system libraries, it means shared versions of libraries. Some packages such as <xref linkend="firefox"/> and <xref linkend="gs"/> bundle many other libraries in their build tree.  The version they ship is often older than the version used in the system, so it may contain bugs &ndash; sometimes developers go to the trouble of fixing bugs in their included libraries, other times they do not.
fr: Quand BLFS indique des bibliothèques système, cela signifie les versions partagées. Certains paquets tels que <xref linkend="firefox"/> et <xref linkend="gs"/> embarquent beaucoup d'autres bibliothèques dans leur arborescence de construction. La version incluse est souvent plus ancienne que la version utilisée dans le système, donc il se peut qu'elle comporte des bogues. Parfois les développeurs prennent la peine de corriger les bogues dans les bibliothèques qu'ils incluent, mais pas toujours.

note: type: Content of: <sect1><sect2><para>
en: Sometimes, deciding to use system libraries is an easy decision.  Other times it may require you to alter the system version (e.g. for <xref linkend="libpng"/> if used for <xref linkend="firefox"/>).  Occasionally, a package ships an old library and can no longer link to the current version, but can link to an older version. In this case, BLFS will usually just use the shipped version. Sometimes the included library is no longer developed separately, or its upstream is now the same as the package&apos;s upstream and you have no other packages which will use it.  In those cases, you'll be lead to use the included library even if you usually prefer to use system libraries.
fr: Parfois, il est facile de décider d'utiliser les bibliothèques du système. D'autres fois il se peut que vous deviez modifier la version du système (c'est le cas pour <xref linkend="libpng"/> si on l'utilise pour <xref linkend="firefox"/>).  Parfois, un paquet contient une ancienne bibliothèque et ne peut plus se lier à la version actuelle, mais il peut se lier à une version plus ancienne. Dans ce cas, BLFS utilisera généralement la version incluse. Parfois, la bibliothèque incluse n'est plus développée de son côté, ou ses responsables en amont sont les mêmes que celles et ceux du paquet et vous n'avez aucun autre paquet qui l'utilisera. Dans ces cas, vous pourriez décider d'utiliser la bibliothèque incluse même si vous préférez généralement utiliser les bibliothèques du système.
