public inbox for linux-man@vger.kernel.org
 help / color / mirror / Atom feed
From: Alejandro Colomar <alx.manpages@gmail.com>
To: "G. Branden Robinson" <g.branden.robinson@gmail.com>
Cc: linux-man@vger.kernel.org
Subject: Re: [PATCH v4 02/10] ldconfig.8: Revise and update for glibc 2.32
Date: Sat, 7 Jan 2023 14:10:12 +0100	[thread overview]
Message-ID: <43a8427b-4038-054e-cea1-c54417bf65bb@gmail.com> (raw)
In-Reply-To: <20230107095422.44loq4pzsfjktvpz@illithid>


[-- Attachment #1.1: Type: text/plain, Size: 8771 bytes --]

Hi Branden,

On 1/7/23 10:54, G. Branden Robinson wrote:
> * Recast summary description to identify relevance of libraries.
> * Drop `-V` option from synopsis; it doesn't make any sense combined
>    with the operation mode shown, and no other "get out quick" option,
>    including its synonym `--version`, is documented in the synopsis.
> * Clarify that the "links" manipulated by the program are symbolic.
> * Discuss caching feature separately from symbolic link management.
> * Clarify how ldconfig can be run by unprivileged users (probably for
>    troubleshooting).
> * Recast example of shared library linkage chain and motivate the
>    existence for each link or file.  Define term "soname" and present it
>    in lowercase like other Linux man-pages, instead of full caps.
> * Document auxiliary cache file, which apparently has been described
>    nowhere but a source comment in the original commit 15 years ago.
> * Document that `-C` implies `-i`.  See elf/ldconfig.c:162.
> * Clarify how `-l` option works (a little).
> * Drop mention of "quiet mode", which does not seem to exist.
> * Be explicit that `-p`/`--print-cache` option exits early; i.e., it
>    doesn't undertake ldconfig's primary function.
> * Document `--usage` and `-?`/`--help` options.
> * Clarify what `-v`/`--verbose` does.
> * Clarify that `-V`/`--version` exits early.
> * Expand description of "ld.so.conf" file to discuss "include" and
>    "hwcap" features.  Describe these as "directives" (though the latter
>    died upstream in glibc 2.32 before we got around to documenting it).
>    Document ld.so.conf's comment syntax.

I think ld.so.conf(4) might be a good manual page on its own, and ldconfig(1) 
refer to it.

And maybe also for ld.so.cache(4).

Cheers,

Alex

> * Document handling of leading spaces and empty lines in ld.so.conf.
> * Document location of auxiliary cache file.
> 
> Signed-off-by: G. Branden Robinson <g.branden.robinson@gmail.com>
> ---
>   man8/ldconfig.8 | 121 +++++++++++++++++++++++++++++++++++++-----------
>   1 file changed, 95 insertions(+), 26 deletions(-)
> 
> diff --git a/man8/ldconfig.8 b/man8/ldconfig.8
> index 36b891dab..5b671f0a1 100644
> --- a/man8/ldconfig.8
> +++ b/man8/ldconfig.8
> @@ -7,12 +7,12 @@
>   .\"   Change listed order of /usr/lib and /lib
>   .TH ldconfig 8 (date) "Linux man-pages (unreleased)"
>   .SH NAME
> -ldconfig \- configure dynamic linker run-time bindings
> +ldconfig \- configure library bindings used by run-time dynamic linker
>   .SH SYNOPSIS
>   .SY /sbin/ldconfig
>   .\" TODO?: -c, --format, -i, --ignore-aux-cache, --print-cache,
>   .\" --verbose, -V, --version, -?, --help, --usage
> -.RB [ \-nNvVX ]
> +.RB [ \-nNvX ]
>   .RB [ \-C\~\c
>   .IR cache ]
>   .RB [ \-f\~\c
> @@ -31,8 +31,10 @@ ldconfig \- configure dynamic linker run-time bindings
>   .YS
>   .SH DESCRIPTION
>   .B \%ldconfig
> -creates the necessary links and cache to the most recent shared
> -libraries found in the directories specified on the command line,
> +creates the necessary symbolic links
> +to the most recent versions of the shared libraries
> +found in the directories
> +specified on the command line,
>   in the file
>   .IR /etc/ld.so.conf ,
>   and in the trusted directories,
> @@ -50,7 +52,8 @@ and
>   .I /usr/lib64
>   are used for 64-bit libraries.
>   .PP
> -The cache is used by the run-time linker,
> +It also maintains a cache
> +used by the run-time linker,
>   .I ld.so
>   or
>   .IR ld\-linux.so .
> @@ -61,8 +64,11 @@ determining which versions should have their links updated.
>   .\" 8ee878592c4a642937152c8308b8faef86bcfc40 (2022-07-14) as "obsolete
>   .\" for over twenty years".
>   .B \%ldconfig
> -should normally be run by the superuser as it may require write
> -permission on some root owned directories and files.
> +is normally run by the superuser
> +since it may require write permission
> +on some root-owned directories and files.
> +.RI \%\(lq ldconfig\~\-p \(rq
> +can be run without such privileges.
>   .PP
>   .B \%ldconfig
>   will look only at files that are named
> @@ -74,10 +80,7 @@ Other files will be ignored.
>   Also,
>   .B \%ldconfig
>   expects a certain pattern to how the symbolic links are set up,
> -like this example,
> -where the middle file
> -.RB ( libfoo.so.1
> -here) is the SONAME for the library:
> +as in the following.
>   .PP
>   .in +4n
>   .EX
> @@ -85,8 +88,26 @@ libfoo.so \-> libfoo.so.1 \-> libfoo.so.1.12
>   .EE
>   .in
>   .PP
> -Failure to follow this pattern may result in compatibility issues
> -after an upgrade.
> +The name
> +.B libfoo.so
> +is used when preparing object code that uses shared libraries.
> +.B libfoo.so.1
> +is the
> +.I soname
> +(shared object name)
> +used at run time,
> +by which object code locates its shared library dependencies.
> +.B libfoo.so.1.12
> +is the shared library.
> +This practice enables upward-compatible upgrades of shared libraries;
> +a change in the version number after the soname indicates that no
> +\(lqbreak\(rq in the ABI
> +(application binary interface)
> +has occurred.
> +.PP
> +.B ldconfig
> +maintains an auxiliary cache file that helps it to avoid re-reading
> +libraries that have not changed since the last time it was run.
>   .SH OPTIONS
>   .TP
>   .BI \-c\~ fmt
> @@ -102,9 +123,9 @@ which is one of
>   or
>   .BR \%compat .
>   Since glibc 2.32,
> +.\" commit cad64f778aced84efdaa04ae64f8737b86f063ab
>   the default is
>   .BR new .
> -.\" commit cad64f778aced84efdaa04ae64f8737b86f063ab
>   Before that,
>   it was
>   .BR \%compat .
> @@ -114,6 +135,8 @@ Use
>   .I cache
>   instead of
>   .IR /etc/ld.so.cache .
> +Implies
> +.BR \-i .
>   .TP
>   .BI \-f\~ conf
>   Use
> @@ -151,27 +174,29 @@ links are still updated.
>   .B \-p
>   .TQ
>   .B \-\-print\-cache
> -Print the lists of directories and candidate libraries stored in
> -the current cache.
> +Report the libraries stored in the cache and exit.
>   .TP
>   .BI \-r\~ root
>   Change to and use
>   .I root
>   as the root directory.
>   .TP
> +.B \-\-usage
> +Report a terse usage message and exit.
> +.TP
>   .B \-v
>   .TQ
>   .B \-\-verbose
> -Verbose mode.
> -Print current version number,
> +Operate verbosely;
> +for each library,
> +report the current version number,
>   the name of each directory as it is scanned,
>   and any links that are created.
> -Overrides quiet mode.
>   .TP
>   .B \-V
>   .TQ
>   .B \-\-version
> -Print program version.
> +Report program version information and exit.
>   .TP
>   .B \-X
>   Don't update links.
> @@ -179,26 +204,70 @@ Unless
>   .B \-N
>   is also specified,
>   the cache is still rebuilt.
> +.TP
> +.B \-?
> +.TQ
> +.B \-\-help
> +Report a usage message and exit.
>   .SH FILES
> -.\" FIXME Since glibc-2.3.4, "include" directives are supported in ld.so.conf
> -.\"
> -.\" FIXME Since glibc-2.4, "hwcap" directives are supported in ld.so.conf
> -.PD 0
>   .TP
>   .I /lib/ld.so
>   is the run-time linker/loader.
>   .TP
>   .I /etc/ld.so.conf
> +.RS
>   contains a list of directories,
>   one per line,
> -in which to search for libraries.
> +in which to search for libraries;
> +or a multi-word
> +.I directive
> +further configuring the run-time linker/loader.
> +A number sign
> +.RB ( # )
> +introduces a comment that extends to the end of the line;
> +this character is thus not supported in directives or directory names.
> +Leading spaces are removed.
> +Empty lines are ignored.
> +.PP
> +Since glibc\~2.3.4,
> +.\" commit 8e115d80b07f17a11690c108918f847846a752da
> +a directive in the form
> +.RS
> +.EX
> +include\~\c
> +.I filename\~\c
> +\&.\|.\|.
> +.EE
> +.RE
> +is supported;
> +each
> +.I filename
> +is recursively opened and read.
> +.\" XXX: ...with no detection of cycles!
> +.I filename
> +can be a
> +.BR glob (3)
> +pattern.
> +This feature enables libraries or packages to manage shared library
> +placement in a modular way.
> +.PP
> +In glibc\~2.4,
> +.\" commit ab1d521db39bf4371c7db96e8a0fcd4857ee70ed
> +a
> +.B \%hwcap
> +directive was introduced,
> +but it is no longer supported as of glibc\~2.32.
> +.\" commit 31563b68410ff8e9490c5aafca31ec71b38f87a5
> +.RE
>   .TP
>   .I /etc/ld.so.cache
>   contains an ordered list of libraries found in the directories
>   specified in
>   .IR /etc/ld.so.conf ,
>   as well as those found in the trusted directories.
> -.PD
> +.TP
> +.I /var/cache/ldconfig/aux\-cache
> +is the auxiliary cache.
>   .SH SEE ALSO
>   .BR ldd (1),
>   .BR ld.so (8)

-- 
<http://www.alejandro-colomar.es/>

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  reply	other threads:[~2023-01-07 13:10 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-07  9:54 [PATCH v4 02/10] ldconfig.8: Revise and update for glibc 2.32 G. Branden Robinson
2023-01-07 13:10 ` Alejandro Colomar [this message]
2023-01-07 16:53   ` G. Branden Robinson
2023-01-07 19:39     ` Alejandro Colomar
2023-01-08 23:00       ` G. Branden Robinson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=43a8427b-4038-054e-cea1-c54417bf65bb@gmail.com \
    --to=alx.manpages@gmail.com \
    --cc=g.branden.robinson@gmail.com \
    --cc=linux-man@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox