← Back to team overview

registry team mailing list archive

[Bug 512096] Re: [MASTER] Exec format error : package failed to install/remove : installation/removal script returned error exit status 2

 

** Description changed:

  Under some conditions package installation/upgrade/removal fails with
  the following error:
  
  -- Error during installation --
  Setting up screenlets (0.1.2-7) ...
  dpkg (subprocess): unable to execute installed post-installation script: Exec format error
  dpkg: error processing screenlets (--configure):
   subprocess installed post-installation script returned error exit status 2
  
  -- Error during removal --
  Removing gnome-do ...
  dpkg (subprocess): unable to execute installed pre-removal script: Exec format error
  dpkg: error processing gnome-do (--purge):
   subprocess installed pre-removal script returned error exit status 2
  
  This error occurs when one of the installation or removal scripts
  (/var/lib/dpkg/info/PACKAGE.p*) is empty or corrupted.
  
  == HOW TO REPRODUCE ==
  Install a package and emulates a system crash before 30 seconds:
  # apt-get install hello; sleep 20; echo b > /proc/sysrq-trigger
  [simulates a system crash]
  After reboot both installation and removal scripts are 0 bytes. You will notice that hello.list was correctly written to disk because of the fsync call in dpkg/src/filesdb.c
  $ ls -l /var/lib/dpkg/info/hello.*
  -rw-r--r-- 1 root root 323 2010-02-09 00:42 /var/lib/dpkg/info/hello.list
  -rwxr-xr-x 1 root root   0 2009-08-15 19:17 /var/lib/dpkg/info/hello.postinst
  -rwxr-xr-x 1 root root   0 2009-08-15 19:17 /var/lib/dpkg/info/hello.prerm
  
  If you replay the test but adding a sync before the system crash:
  # apt-get install hello; sync;  echo b > /proc/sysrq-trigger
  After reboot the files are fine:
  $ ls -l  /var/lib/dpkg/info/hello.*
  -rw-r--r-- 1 root root 323 2010-02-09 00:46 /var/lib/dpkg/info/hello.list
  -rwxr-xr-x 1 root root 103 2009-08-15 19:17 /var/lib/dpkg/info/hello.postinst
  -rwxr-xr-x 1 root root  74 2009-08-15 19:17 /var/lib/dpkg/info/hello.prerm
  
  If I adjust /proc/sys/vm/dirty_expire_centisecs to be below the sleep
  time, ( for exemple 1000 in the test above ) then data are correctly
  written to disk.
  
  == WORKAROUNDS ==
  Execute the following commands in a terminal
  (GNOME: Applications -> Accessories -> Terminal
   KDE: KMenu -> Applications -> System -> Terminal [Konsole] )
  
  Workaround A: Remove the package and reinstall
  
  $ sudo rm /var/lib/dpkg/info/PACKAGE_VERSION.p*
  $ sudo apt-get remove --purge PACKAGE
  $ sudo apt-get clean
  $ sudo apt-get update
  
  Then reinstall the package
  
  Workaround B: Finish the install when the package can't be removed
  
  $ sudo apt-get clean
  $ sudo aptitude download PACKAGE
  $ sudo dpkg --unpack ./PACKAGE_VERSION.deb
  $ sudo dpkg --configure PACKAGE
  
  Replace PACKAGE with the package name which fails to install/remove.
  
  == Localization ==
  The same error in non-english language:
   . Erreur de format pour exec()
   . Error de formato ejecutable
   . Errore di formato di exec
   . Exec format error
   . Formatfel på körbar fil
   . Érvénytelen végrehajtható fájlformátum
   . Exec formátum hiba
   . Verkeerd uitvoerbaar bestand
   . Exec 格式错误
-  . Formatfel på körbar fil
+  . Formatfel på körbar fil

-- 
[MASTER] Exec format error : package failed to install/remove : installation/removal script returned error exit status 2
https://bugs.launchpad.net/bugs/512096
You received this bug notification because you are a member of Registry
Administrators, which is the registrant for Debian.



Follow ups