Package: makejail
Version: 0.0.5-10
Severity: critical
Tags: patch
Justification: breaks unrelated software
Dear Maintainer,
when updating an existing chroot jail, then makejail fails on updating
symbolic links, e.g. for updated libraries.
makejails aborts and leaves the jail in an inconsistent stage.
Reason is that it doesn't recognize existing but broken symbol links.
As a fix I use the attached patch.
-- My error case:
Checking Depends
Executing : dpkg -p base-passwd
Executing : dpkg -l libc6
Installing the package libc6
Copying the files from the dpkg information
...
Checking path '/usr/lib/x86_64-linux-gnu/gconv/ASMO_449.so'
File /usr/lib/x86_64-linux-gnu/gconv/ASMO_449.so is newer
than the /home/maddes/usr/lib/x86_64-linux-gnu/gconv/ASMO_449.so,
overwriting
Executing : file
/usr/lib/x86_64-linux-gnu/gconv/ASMO_449.so
shared object, checking the required libraries with ldd
Executing : ldd
/usr/lib/x86_64-linux-gnu/gconv/ASMO_449.so
Checking path '/lib/x86_64-linux-gnu/libc.so.6'
File /home/maddes/lib/x86_64-linux-gnu/libc.so.6
already exists
Checking path '/lib64/ld-linux-x86-64.so.2'
'/lib64/ld-linux-x86-64.so.2' is a symlink to
'/lib/x86_64-linux-gnu/ld-2.19.so'
Checking path '/lib/x86_64-linux-gnu/ld-2.19.so'
File
/home/maddes/lib/x86_64-linux-gnu/ld-2.19.so already exists
Creating 'lib64/ld-linux-x86-64.so.2' as a
symlink to '/lib/x86_64-linux-gnu/ld-2.19.so' (pwd=/home/maddes/lib64)
Traceback (most recent call last):
File "/usr/sbin/makejail", line 1060, in <module>
makeChroot()
File "/usr/sbin/makejail", line 888, in makeChroot
addPackageToJail(package)
File "/usr/sbin/makejail", line 585, in addPackageToJail
addPackageToJail(depend)
File "/usr/sbin/makejail", line 576, in addPackageToJail
addFileToJail(file)
File "/usr/sbin/makejail", line 448, in addFileToJail
checkRequirements(fileName)
File "/usr/sbin/makejail", line 553, in checkRequirements
addFileToJail(lib)
File "/usr/sbin/makejail", line 395, in addFileToJail
os.symlink(linkTarget,os.path.split(fileName)[1])
OSError: [Errno 17] File exists
-- Reason for my error case:
lib64/ld-linux-x86-64.so.2 pointed to the older installed library, which
was not existent anymore.
-- Patch:
--- /usr/sbin/makejail 2012-03-05 19:17:34.000000000 +0100
+++ /usr/sbin/makejail 2016-05-26 16:00:50.000000000 +0200
@@ -385,6 +385,9 @@
newWorkingDir="%s/%s" %
(config.chroot,os.path.realpath(fileDir)[1:])
os.chdir(newWorkingDir)
debug(" Creating '%s' as a symlink to '%s' (pwd=%s)" %
(fileName[1:],linkTarget,newWorkingDir))
+ # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=...
+ if os.path.lexists(os.path.split(fileName)[1]):
+ os.remove(os.path.split(fileName)[1])
os.symlink(linkTarget,os.path.split(fileName)[1])
os.chdir("/")
missingFiles.append(fileName)
Kind regards
Matthias
-- System Information:
Debian Release: 8.4
APT prefers stable
APT policy: (990, 'stable'), (500, 'stable-updates')
Architecture: amd64 (x86_64)
Kernel: Linux 3.16.0-4-amd64 (SMP w/8 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
Versions of packages makejail depends on:
ii binstats 1.08-8
ii debconf 1.5.56
ii psmisc 22.21-2
ii python 2.7.9-1
ii strace 4.9-2
makejail recommends no packages.
makejail suggests no packages.
-- no debconf information
--- /usr/sbin/makejail 2012-03-05 19:17:34.000000000 +0100
+++ /usr/sbin/makejail 2016-05-26 16:00:50.000000000 +0200
@@ -385,6 +385,9 @@
newWorkingDir="%s/%s" %
(config.chroot,os.path.realpath(fileDir)[1:])
os.chdir(newWorkingDir)
debug(" Creating '%s' as a symlink to '%s' (pwd=%s)" %
(fileName[1:],linkTarget,newWorkingDir))
+ # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=...
+ if os.path.lexists(os.path.split(fileName)[1]):
+ os.remove(os.path.split(fileName)[1])
os.symlink(linkTarget,os.path.split(fileName)[1])
os.chdir("/")
missingFiles.append(fileName)