Control: found -1 044+223-1
Control: tag -1 + patch

Hi,

Thomas Lange:
>>>>>> On Tue, 28 Jun 2016 23:52:13 +0200, Matteo Settenvini 
>>>>>> <matteo...@member.fsf.org> said:

>     > cp: cannot overwrite non-directory 
> '/var/tmp/dracut.NWphxq/initramfs/bin' with directory 
> '/var/lib/dracut/console-setup-dir/bin

> Please check if you have installed the package console-setup or
> console-setup-mini which include setupcon. It would be nice if you
> could provide verbose or debug output of the build process of the
> initrd. 

I can reproduce this, with console-setup 1.158 installed:

  /usr/lib/dracut/modules.d/09console-setup/module-setup.sh@26(install): cp -a 
/var/lib/dracut/console-setup-dir/bin /var/lib/dracut/console-setup-dir/etc 
/var/tmp/dracut.00KQcT/initramfs/
  cp: cannot overwrite non-directory '/var/tmp/dracut.00KQcT/initramfs/bin' 
with directory '/var/lib/dracut/console-setup-dir/bin'

I believe that's caused by 09console-setup/module-setup.sh not
supporting merged-/usr systems correctly, i.e. it assumes that
$initdir/bin is a directory. Here's what it attempts to do:

  cp -a $vardir/console-setup-dir/* $initdir/

… which fails on merged-/usr systems with the error message reported
by Matteo, because in that case, $initdir/bin is a symlink to
$initdir/usr/bin.

This patch fixes the problem for me:

--- /usr/lib/dracut/modules.d/09console-setup/module-setup.sh.orig      
2017-01-21 10:14:02.876715175 +0100
+++ /usr/lib/dracut/modules.d/09console-setup/module-setup.sh   2017-01-21 
10:14:32.979885559 +0100
@@ -23,7 +23,8 @@
     local vardir
     vardir=/var/lib/dracut
 
-    cp -a $vardir/console-setup-dir/* $initdir/
+    cp -a $vardir/console-setup-dir/bin/* $initdir/bin/
+    cp -a $vardir/console-setup-dir/etc/* $initdir/etc/
     # gzip is workaround a bug in current console-setup
     inst_multiple gzip $(cat $vardir/console-setup-files)
     inst ${moddir}/console-setup.sh /lib/udev/console-setup


I don't know, however, whether there are cases when there could be
other things than 'bin' and 'etc' in $vardir/console-setup-dir/.
If that would be the case, then my simplistic patch would not be
enough, and a more subtle method (e.g. using rsync) would be needed.

Cheers,
-- 
intrigeri

Reply via email to