[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#834083: libc-bin: essential tag



On 2016-08-11 22:12, Javier Serrano Polo wrote:
> X-Debbugs-CC: clint@debian.org, aurel32@debian.org, adconrad@0c3.net, sthibault@debian.org
> 
> El dj 11 de 08 de 2016 a les 21:55 +0200, Aurelien Jarno va escriure:
> > On 2016-08-11 21:32, Javier Serrano Polo wrote:
> > > libc-bin is tagged essential since 2.13-10. Old systems based on Squeeze
> > > can work without libc-bin, with a dpkg that does not require ldconfig.
> > 
> > No they can't. In squeeze, the binaries from libc-bin were included in
> > libc6. The package has been split as part of the switch to multiarch.
> 
> This is not correct:
> https://archive.debian.net/squeeze/libc-bin

Indeed I was wrong. Looking at the history we had to do that in multiple
steps to be able to provide and upgrade path and have libc-bin depends on
libc6 and not the other way around.

This has been done with the following steps:
- libc6 was de facto essential (essential packages depending on it), but
  it was not possible to mark it as essential as it is a library.
- libc-bin has been split from libc6. libc6 got added a dependency on
  libc-bin. libc-bin therefore became de facto essential.
- libc-bin has been marked Essential
- libc6 dropped the dependency on libc-bin. libc-bin added a dependency
  on libc6.

As per policy permission to make libc-bin essential has been asked on
debian-devel. You'll find the mail there:

https://lists.debian.org/debian-devel/2011/07/msg00006.html

> > > Could anyone explain why libc-bin is essential?
> > 
> > Because it provides binaries and configuration files essential for the
> > system: ldconfig, getent, ld.so.conf, nsswitch.conf, C.UTF-8 locale, etc.
> 
> These elements are very useful, but a system based on Squeeze can work
> without them. Is there any other reason in a Sid system?

ldconfig is definitely necessary, it is called in all postinst scripts.
If you don't have it, packages fail to configure:

| (squeeze-amd64)root@ohm:~# dpkg-reconfigure libpcre3 ; echo $?
| debconf: unable to initialize frontend: Dialog
| debconf: (No usable dialog-like program is installed, so the dialog based frontend cannot be used. at /usr/share/perl5/Debconf/FrontEnd/Dialog.pm line 75.)
| debconf: falling back to frontend: Readline
| /var/lib/dpkg/info/libpcre3.postinst: 6: ldconfig: not found
| 127

Further more you can't install a package:

| (squeeze-amd64)root@ohm:~# apt-get install -y dialog
| Reading package lists... Done
| Building dependency tree       
| Reading state information... Done
| The following extra packages will be installed:
|   libncursesw5
| The following NEW packages will be installed:
|   dialog libncursesw5
| 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
| Need to get 684 kB of archives.
| After this operation, 2367 kB of additional disk space will be used.
| Get:1 http://localhost/debian-archive/ squeeze/main libncursesw5 amd64 5.7+20100313-5 [390 kB]
| Get:2 http://localhost/debian-archive/ squeeze/main dialog amd64 1.1-20100428-1 [295 kB]
| Fetched 684 kB in 0s (63.2 MB/s)
| debconf: delaying package configuration, since apt-utils is not installed
| dpkg: warning: 'ldconfig' not found in PATH or not executable.
| dpkg: 1 expected program not found in PATH or not executable.
| NB: root's PATH should usually contain /usr/local/sbin, /usr/sbin and /sbin.
| E: Sub-process /usr/bin/dpkg returned an error code (2)

So it is clearly not correct to say that a squeeze or a sid system can
work without them. And I am sure many of the other binaries are
necessary to make the system working given what the policy says:

| Packages may assume that functionality provided by essential packages
| is always available without declaring explicit dependencies.

Some of them are even required by POSIX.

Regards,
Aurelien

-- 
Aurelien Jarno                          GPG: 4096R/1DDD8C9B
aurelien@aurel32.net                 http://www.aurel32.net

Attachment: signature.asc
Description: Digital signature


Reply to: