Package: dkms Version: 2.0.21.1-1 Severity: wishlist
hi, when dkms installs, it may override an existing kernel module by a new one. To this end, dkms moves away the old module using 'mv' But this breaks if the kernel is upated/reinstalled (as for example after the recent security updates). There is though a more effective way, and it is to use dpkg-divert The attached patch is a proof-of-concept. a. -- System Information: Debian Release: 5.0.1 APT prefers stable APT policy: (500, 'stable') Architecture: i386 (i686) Kernel: Linux 2.6.26-2-686 (SMP w/2 CPU cores) Locale: LANG=it_IT.UTF-8, LC_CTYPE=it_IT.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/bash Versions of packages dkms depends on: ii build-essential 11.4 Informational list of build-essent ii dpkg-dev 1.14.25 Debian package development tools ii gcc 4:4.3.2-2 The GNU C compiler ii make 3.81-5 The GNU version of the "make" util ii module-init-tools 3.4-1 tools for managing Linux kernel mo Versions of packages dkms recommends: ii fakeroot 1.11 Gives a fake root environment ii linux-headers-2.6.26-1-6 2.6.26-13lenny2 Header files for Linux 2.6.26-1-68 ii linux-headers-2.6.26-2-6 2.6.26-15lenny2 Header files for Linux 2.6.26-2-68 ii linux-image-2.6.26-1-686 2.6.26-13lenny2 Linux 2.6.26 image on PPro/Celeron ii linux-image-2.6.26-2-686 2.6.26-15lenny2 Linux 2.6.26 image on PPro/Celeron ii lsb-release 3.2-20 Linux Standard Base version report ii menu 2.1.41 generates programs menu for all me ii patch 2.5.9-5 Apply a diff file to an original ii sudo 1.6.9p17-2 Provide limited super user privile dkms suggests no packages. -- no debconf information -- Andrea Mennucc "E' un mondo difficile. Che vita intensa!" (Tonino Carotone)
--- /var/tmp/dkms.2 2009-05-17 15:48:57.000000000 +0200 +++ /usr/sbin/dkms 2009-05-17 15:57:46.000000000 +0200 @@ -1209,7 +1209,7 @@ dup_tree=`echo $module_dup | sed "s#^$lib_tree##" | sed "s#${dest_module_name[$count]}$module_suffix##"` echo $" - Stored $module_dup" mkdir -p "$dkms_tree/$module/original_module/${kernelver_array[0]}/${arch_array[0]}/collisions/$dup_tree" - mv -f $module_dup "$dkms_tree/$module/original_module/${kernelver_array[0]}/${arch_array[0]}/collisions/$dup_tree" + dpkg-divert --add --rename --divert "$dkms_tree/$module/original_module/${kernelver_array[0]}/${arch_array[0]}/collisions/$dup_tree/$module_dup" $module_dup done fi @@ -1553,7 +1553,7 @@ echo $" - Archived original module found in the DKMS tree" echo $" - Moving it to: $install_tree/$1${DEST_MODULE_LOCATION[$count]}/" mkdir -p "$install_tree/$1${DEST_MODULE_LOCATION[$count]}/" - mv -f "$dkms_tree/$module/original_module/$1/$2/${dest_module_name[$count]}$module_suffix" "$install_tree/$1${DEST_MODULE_LOCATION[$count]}/" 2>/dev/null + dpkg-divert --remove --rename --divert "$dkms_tree/$module/original_module/$1/$2/${dest_module_name[$count]}$module_suffix" "$install_tree/$1${DEST_MODULE_LOCATION[$count]}/" else echo $" - No original module was found for this module on this kernel." echo $" - Use the dkms install command to reinstall any previous module version."