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

Bug#1005906: libc6: 'test -x' ignores executable bit on files and directories



Package: libc6
Version: 2.33-6
Severity: important
X-Debbugs-Cc: bugs@gringene.org

Dear Maintainer,

I'm not sure which package this bug is linked to; I'm fairly confident it's one of the following:

fontconfig-config libbrotli-dev libbrotli1 libc-bin libc-dev-bin libc-l10n
  libc6 libc6-dev libexpat1 libexpat1-dev libfontconfig-dev libfontconfig1
  libfreetype-dev libfreetype6 libfreetype6-dev libuuid1 locales uuid-dev

I was trying to get R working on a Docker container with the following Dockerfile:

--- BEGIN ---

FROM rocker/r-base:4.1.2

## This works
RUN R -e 'install.packages(c("rjson"))'

RUN apt-get update && apt-get install -y \
  libfontconfig1-dev

## This doesn't work
RUN R -e 'install.packages(c("rjson"))'

--- END ---

Unfortunately, the R command stops working after the packages are updated. At the time I ran this,
the following packages were pulled in:

fontconfig-config libbrotli-dev libbrotli1 libc-bin libc-dev-bin libc-l10n
  libc6 libc6-dev libexpat1 libexpat1-dev libfontconfig-dev libfontconfig1
  libfreetype-dev libfreetype6 libfreetype6-dev libuuid1 locales uuid-dev

I get similar results [i.e. R not working] when I try to install 'nano' instead of libfontconfig1-dev.

I opened up the docker container to try to work out what was happening, and noticed the R command
has the following logic:

if test -x "${R_HOME}"; then
  :
else
  error "R_HOME ('${R_HOME}') not found"
fi

When I changed this to a 'test -d', R started working again:

if test -d "${R_HOME}"; then
  :
else
  error "R_HOME ('${R_HOME}') not found"
fi

Unfortunately, this didn't fix all my problems, because there was another R INSTALL script that
was required for installing R packages, and this script also didn't work. The script had a simiar
'-x' command, but it was used to test to make sure a file was executable, instead of a directory.

I created a short test shell commands to demonstrate the issue:

# export R_HOME=/usr/lib/R
# ls -lh ${R_HOME}/bin/INSTALL
-rwxr-xr-x 1 root root 825 Nov  1 11:00 /usr/lib/R/bin/INSTALL
# if test -x "${R_HOME}/bin/INSTALL"; then echo "file is executable"; else echo "dead beef"; fi
dead beef

[note that this reports "dead beef", rather than stating that the file is executable, even though
'ls' reports the file as executable]

As I believed this to have an effect beyond R, I am reporting this under one of the packages
that was installed by apt. This package is likely incorrect; please reassign as necessary.

-- System Information:
Debian Release: 11.0
  APT prefers testing
  APT policy: (990, 'testing'), (500, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)

Kernel: Linux 4.4.0-194-generic (SMP w/12 CPU threads)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) (ignored: LC_ALL set to en_US.UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /bin/dash
Init: unable to detect

Versions of packages libc6 depends on:
ii  libgcc-s1  11.2.0-16

Versions of packages libc6 recommends:
ii  libidn2-0  2.3.0-5

Versions of packages libc6 suggests:
ii  debconf [debconf-2.0]  1.5.77
pn  glibc-doc              <none>
ii  libc-l10n              2.33-5
pn  libnss-nis             <none>
pn  libnss-nisplus         <none>
ii  locales                2.33-5

-- debconf information:
  libraries/restart-without-asking: false
  glibc/kernel-not-supported:
  glibc/upgrade: true
  glibc/kernel-too-old:
  glibc/restart-failed:
  glibc/disable-screensaver:
  glibc/restart-services:


Reply to: