Bug 729796

Summary: glibc-common warning: (null) scriptlet failed, exit status 127
Product: [Fedora] Fedora Reporter: Mads Kiilerich <mads>
Component: glibcAssignee: Andreas Schwab <schwab>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 16CC: atodorov, fweimer, jakub, schwab
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: glibc-2.14.90-12.999 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2011-10-19 04:34:16 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description Mads Kiilerich 2011-08-10 20:41:26 UTC
When glibc-common is installed in chroot (when building a livecd) it emits a warning, as shown by this example:

# rm -rf root
# rpm --root `pwd`/root -ihv \
    glibc-common-2.14.90-4.1.x86_64.rpm \
    glibc-2.14.90-4.1.x86_64.rpm \
    bash-4.2.10-4.fc16.x86_64.rpm \
    tzdata-2011h-1.fc16.noarch.rpm \
    libgcc-4.6.1-7.fc16.x86_64.rpm \
    basesystem-10.0-5.fc16.noarch.rpm \
    setup-2.8.35-1.fc16.noarch.rpm \
    filesystem-2.4.44-1.fc16.x86_64.rpm \
    libselinux-2.0.102-6.fc16.x86_64.rpm \
    nss-softokn-freebl-3.12.10-4.fc16.x86_64.rpm \
    libsepol-2.1.1-1.fc16.x86_64.rpm \
    ncurses-libs-5.9-2.20110716.fc16.x86_64.rpm \
    ncurses-base-5.9-2.20110716.fc16.x86_64.rpm
warning: glibc-common-2.14.90-4.1.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID a82ba4b7: NOKEY
Preparing...                ########################################### [100%]
   1:setup                  ########################################### [  8%]
   2:libgcc                 ########################################### [ 15%]
   3:filesystem             ########################################### [ 23%]
   4:basesystem             ########################################### [ 31%]
   5:ncurses-base           ########################################### [ 38%]
   6:tzdata                 ########################################### [ 46%]
   7:nss-softokn-freebl     ########################################### [ 54%]
   8:glibc-common           ########################################### [ 62%]
warning: (null) scriptlet failed, exit status 127
   9:glibc                  ########################################### [ 69%]
  10:ncurses-libs           ########################################### [ 77%]
  11:bash                   ########################################### [ 85%]
  12:libsepol               ########################################### [ 92%]
  13:libselinux             ########################################### [100%]

Why do glibc-common installation cause a warning, and what is it that is failing?


glibc.spec has:

%triggerin common -p <lua> -- glibc
if posix.stat("%{_prefix}/lib/locale/locale-archive.tmpl", "size") > 0 then
  pid = posix.fork()
  if pid == 0 then
    posix.exec("%{_prefix}/sbin/build-locale-archive")
  elseif pid > 0 then
    posix.wait(pid)
  end
end

%post common -p <lua>
if posix.access("/etc/ld.so.cache") then
  if posix.stat("%{_prefix}/lib/locale/locale-archive.tmpl", "size") > 0 then
    pid = posix.fork()
    if pid == 0 then
      posix.exec("%{_prefix}/sbin/build-locale-archive")
    elseif pid > 0 then
      posix.wait(pid)
    end
  end
end

%triggerin common -p /usr/sbin/tzdata-update -- tzdata

strace shows that %post correctly is skipped after 
525   access("/etc/ld.so.cache", F_OK)  = -1 ENOENT (No such file or directory)
but tzdata has already been installed and is thus run before glibc is available and we get:
526   execve("/usr/sbin/tzdata-update", ["/usr/sbin/tzdata-update", "/var/tmp/rpm-tmp.8o2qZw", "1", "1"], [/* 28 vars */]) = -1 ENOENT (No such file or directory)
526   exit_group(127)                   = ?
... 18 lines ...
525   write(2, "warning: ", 9)          = 9
525   write(2, "(null) scriptlet failed, exit st"..., 41) = 41

AFAICS rpm does the right thing so I guess the tzdata scriptlet should be fixed somehow.

Thinking out loud: it seems like the simplest way to break the strong circular glibc/glibc-common dependency would be to merge the packages ... but I guess there is a reason they are separate ... Forcing or tricking rpm to install glibc first would perhaps also solve the problem - perhaps with some tricky explicit Requires(post).


glibc-common-2.14.90-4.1.x86_64
rpm-4.9.1-3.fc16.x86_64

Comment 1 Alexander Todorov 2011-10-06 09:38:52 UTC
Same issue when installing in KVM guest from the Fedora 16 Beta DVD:

install.log:

05:23:03 Installing ncurses-base-5.9-2.20110716.fc16.x86_64
05:23:04 Installing nss-softokn-freebl-3.12.10-4.fc16.x86_64

05:23:04 Installing glibc-common-2.14.90-8.x86_64
warning: (null) scriptlet failed, exit status 127

05:23:10 Installing glibc-2.14.90-8.x86_64
05:23:21 Installing ncurses-libs-5.9-2.20110716.fc16.x86_64
05:23:21 Installing bash-4.2.10-4.fc16.x86_64

Comment 2 Fedora Update System 2011-10-11 13:17:37 UTC
glibc-2.14.90-11 has been submitted as an update for Fedora 16.
https://admin.fedoraproject.org/updates/glibc-2.14.90-11

Comment 3 Fedora Update System 2011-10-12 16:49:19 UTC
Package glibc-2.14.90-11:
* should fix your issue,
* was pushed to the Fedora 16 testing repository,
* should be available at your local mirror within two days.
Update it with:
# su -c 'yum update --enablerepo=updates-testing glibc-2.14.90-11'
as soon as you are able to.
Please go to the following url:
https://admin.fedoraproject.org/updates/FEDORA-2011-14175
then log in and leave karma (feedback).

Comment 4 Fedora Update System 2011-10-18 08:10:36 UTC
glibc-2.14.90-12.999 has been submitted as an update for Fedora 16.
https://admin.fedoraproject.org/updates/FEDORA-2011-14504

Comment 5 Fedora Update System 2011-10-19 04:34:16 UTC
glibc-2.14.90-12.999 has been pushed to the Fedora 16 stable repository.  If problems still persist, please make note of it in this bug report.