Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: Verwijderen van half-installed packet loopt fout  (gelezen 439 keer)

Offline Nero

  • Lid
Verwijderen van half-installed packet loopt fout
« Gepost op: 2015/10/14, 12:30:42 »
Volgende opdrachten reeds geprobeerd, met bijgevoegde resultaten:sudo dpkg --configure -a
sudo apt-get remove --purge
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  uw-imapd
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
1 not fully installed or removed.
After this operation, 287 kB disk space will be freed.
Do you want to continue? [Y/n]
(Reading database ... 129962 files and directories currently installed.)
Removing uw-imapd (8:2007e~dfsg-3.1) ...
dpkg: error processing package uw-imapd (--remove):
 subprocess installed post-removal script returned error exit status 10
Errors were encountered while processing:
 uw-imapd
E: Sub-process /usr/bin/dpkg returned an error code (1)
sudo apt install -f
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  uw-imapd
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
1 not fully installed or removed.
After this operation, 287 kB disk space will be freed.
Do you want to continue? [Y/n]
(Reading database ... 129962 files and directories currently installed.)
Removing uw-imapd (8:2007e~dfsg-3.1) ...
dpkg: error processing package uw-imapd (--remove):
 subprocess installed post-removal script returned error exit status 10
Errors were encountered while processing:
 uw-imapd
E: Sub-process /usr/bin/dpkg returned an error code (1)

Hoe raak ik van deze fouten af?

Offline Pjotr

  • Lid
    • Makkelijke Linuxtips
Re: Verwijderen van half-installed packet loopt fout
« Reactie #1 Gepost op: 2015/10/14, 12:38:21 »
Je kunt eens proberen of je het betreffende pakket handmatig kunt verwijderen uit /var/cache/apt of uit /var/cache/apt/archives.

Kijk wel uit wat je daar verwijdert, want teveel verwijderen is linke soep.
« Laatst bewerkt op: 2015/10/14, 12:43:25 door Pjotr »

Offline Nero

  • Lid
Re: Verwijderen van half-installed packet loopt fout
« Reactie #2 Gepost op: 2015/10/14, 13:56:50 »
Daar staan die al niet meer in.

Een locate geeft wel nogsudo locate uw-imapd
[sudo] password for nero:
/etc/logcheck/ignore.d.server/uw-imapd.dpkg-new
/var/lib/dpkg/info/uw-imapd.conffiles
/var/lib/dpkg/info/uw-imapd.config
/var/lib/dpkg/info/uw-imapd.list
/var/lib/dpkg/info/uw-imapd.md5sums
/var/lib/dpkg/info/uw-imapd.postinst
/var/lib/dpkg/info/uw-imapd.postrm
/var/lib/dpkg/info/uw-imapd.preinst
/var/lib/dpkg/info/uw-imapd.templates

Re: Verwijderen van half-installed packet loopt fout
« Reactie #3 Gepost op: 2015/10/14, 14:13:42 »
Het gaat fout tijdens de uitvoering van een post-removal script, dus /var/cache/apt is er niet bij betrokken. Beter even naar de uitvoering van dat script kijken.
In de Ubuntu repo's is die versie van dat pakket niet meer terug te vinden, maar het versienummer lijkt ook op een oorspronkelijk Debian pakket te wijzen en Debian's snapshot archive is geduldig...

Helaas word ik uit de inhoud van het script niet veel wijzer - het gebruikt debconf scripts en daar heb ik me nog niet in verdiept. Wat je zóu kunnen doen is /var/lib/dpkg/info/uw-imapd.postrm in een editor (rootrechten!) zo aanpassen dat het op een geschikt punt exit 0 doet. Je zou dat punt in eerste instantie vrij ver in het script kunnen plaatsen en als de fout dan nog steeds optreedt het iets terugzetten en zo voort tot het goed gaat. Is een beetje link omdat je dan een deel van het verwerking die bij het verwijderen van dit pakket hoort overslaat, maar als dat script het vertikt een nette foutmelding te geven waar je als gebruiker iets mee kunt, zal het wel zo moeten.

Offline Nero

  • Lid
Re: Verwijderen van half-installed packet loopt fout
« Reactie #4 Gepost op: 2015/10/14, 14:53:53 »
Heb al het volgende geprobeerd:sudo sh -x /var/lib/dpkg/info/uw-imapd.postrm
+ set -e
+ pkg=uw-imapd
+ cert=imapd
+ daemonsets=imap2:imapd imap3:imapd imaps:imapd
+ . /usr/share/debconf/confmodule
+ [ !  ]
+ PERL_DL_NONLAZY=1
+ export PERL_DL_NONLAZY
+ [  ]
+ exec /usr/share/debconf/frontend /var/lib/dpkg/info/uw-imapd.postrm
Use of uninitialized value $action in string eq at /usr/share/debconf/frontend line 27.

Het loopt dus mis op de lijn . /usr/share/debconf/confmodule waar een perl script wordt aangeroepen. Hoe dat moet debugged worden... ??

Offline Soul-Sing

  • Lid
Re: Verwijderen van half-installed packet loopt fout
« Reactie #5 Gepost op: 2015/10/14, 15:01:24 »
/var/lib/dpkg/info
/vaqr/lib/dpkg/status
zijn volgens mij beide relevant.
rm -f /var/lib/dpkg/status/uw-imapd.postrm
« Laatst bewerkt op: 2015/10/14, 15:05:06 door Soul-Sing »

Offline Nero

  • Lid
Re: Verwijderen van half-installed packet loopt fout
« Reactie #6 Gepost op: 2015/10/14, 15:09:06 »
Uit /var/lib/dpkg/status:Package: uw-imapd
Status: deinstall ok half-installed
Priority: optional
Section: mail
Installed-Size: 280
Maintainer: Jonas Smedegaard <dr@jones.dk>
Architecture: amd64
Source: uw-imap
Version: 8:2007e~dfsg-3.1
Provides: imap-server
Depends: libc-client2007e, libc6 (>= 2.3), libcomerr2 (>= 1.01), libgssapi-krb5-2 (>= 1.6.dfsg.2), libkrb5-3 (>= 1.6.dfsg.2), libpam0g (>= 0.99.7.1), libssl0.9.8 (>= 0.9.8k-1), debconf (>= 0.5) | debconf-2.0, openssl, libpam-runtime (>= 1.0.1-11), openbsd-inetd | inet-superserver
Recommends: default-mta | mail-transport-agent
Suggests: mutt | imap-client, logcheck
Conflicts: courier-imap, cyrus-imapd-2.2, imap-server, kolab-cyrus-imapd
Conffiles:
 /etc/pam.d/imap newconffile
 /etc/logcheck/ignore.d.server/uw-imapd newconffile
Description: remote mail folder access server using IMAP4rev1
 IMAP (Internet Message Access Protocol) is a method of accessing
 electronic messages kept on a (possibly shared) mail server.
 .
 The UW (University of Washington) IMAP toolkit provides the c-client
 mail-handling library supporting various network transport methods,
 file system storage formats, and authentication and authorization
 methods.
 .
 This package contains imapd, an IMAP4rev1 server daemon which uses the
 c-client library.
Homepage: http://www.washington.edu/imap/
Wat moet ik daar verder uit distilleren?

/var/lib/dpkg/status is een tekst bestand, geen folder.
« Laatst bewerkt op: 2015/10/14, 15:12:01 door Nero »

Re: Verwijderen van half-installed packet loopt fout
« Reactie #7 Gepost op: 2015/10/14, 17:26:21 »
Een maintainer script 'los' uitvoeren zal niet werken. Het hoort in de context van dpkg te worden uitgevoerd, vandaar de foutmelding m.b.t. de $action variabele.

Zoals ik eerder al schreef, waar het om gaat is dat script een 'exit 0' te laten uitvoeren door die opdracht er op een strategische plaats in te zetten, zodat het bij de verwerking door dpkg geen foutsituatie oplevert. Het script verwijderen zoals Soul-Sing suggereert (zij het met een onjuiste rm opdracht...) kan ook, maar dat is een laatste redmiddel.
Van de status database kan je beter afblijven. Als je die 'opblaast' heb je pas echt een probleem.

Offline Nero

  • Lid
Re: Verwijderen van half-installed packet loopt fout
« Reactie #8 Gepost op: 2015/10/15, 13:32:42 »
Van de status database kan je beter afblijven. Als je die 'opblaast' heb je pas echt een probleem.
Zover was ik ook al. Niet te min bedankt voor de reminder.

Hieronder de inhoud van het script#!/bin/sh

set -e

pkg="uw-imapd" # basename of package
cert="imapd" # basename of certificate
daemonsets="imap2:imapd imap3:imapd imaps:imapd" # space-seperated list of colon-seperated list of port and binary name (or path if not /usr/sbin)

# Source debconf library.
. /usr/share/debconf/confmodule
db_version 2.0

##
## Remove imapd from inetd.conf
##

if [ "$1" = "purge" ]; then
UPDATE_INETD_ARG='--remove'
else
# Note that we disable in upgrades too
UPDATE_INETD_ARG='--disable'
fi

db_get "$pkg/protocol"
for debconf_entry in `echo "$RET" | tr ',' ' '`; do
seen=""
for daemonset in $daemonsets; do
service="`echo "$daemonset" | awk -F: '{ print $1 }'`"
if [ "$debconf_entry" = "$service" ]; then
if [ -x /usr/sbin/update-inetd ]; then
update-inetd $UPDATE_INETD_ARG "${service}"
fi
seen="yes"
break
fi
done

if [ "$seen" != "yes" ]; then
echo "WARNING: Unsupported debconf value \"$debconf_entry\" in \"$pkg/protocol\"" >/dev/stderr
fi
done

if [ "$1" = "purge" ] && [ -f /etc/ssl/certs/$cert.pem ]; then
echo "SSL certificate /etc/ssl/certs/$cert.pem is NOT removed."
echo "Please remove manually if required."
# cd /etc/ssl/certs
# PATH=$PATH:/usr/bin/ssl
# rm -f `openssl x509 -noout -hash < $cert.pem`.0 || true
# if [ -f $cert.pem ]; then rm -f $cert.pem; fi
fi

# Automatically added by dh_installdebconf
if [ "$1" = purge ] && [ -e /usr/share/debconf/confmodule ]; then
. /usr/share/debconf/confmodule
db_purge
fi
# End automatically added section

exit 0

De exit 0 had in eerste instantie geen effect tot deze na db_version (lijn 11) kwam. Toen gaf apt-get install -f geen fout meer. Vervolgens deze manueel ingevoegde exit 0 weer verwijderd, en de foutmelding blijft achterwege. Echter is de purge niet volledig:nero@k95vj:~$ locate uw-imapd
/etc/logcheck/ignore.d.server/uw-imapd.dpkg-new
/var/lib/dpkg/info/uw-imapd.conffiles
/var/lib/dpkg/info/uw-imapd.config
/var/lib/dpkg/info/uw-imapd.list
/var/lib/dpkg/info/uw-imapd.md5sums
/var/lib/dpkg/info/uw-imapd.postinst
/var/lib/dpkg/info/uw-imapd.postrm
/var/lib/dpkg/info/uw-imapd.preinst
/var/lib/dpkg/info/uw-imapd.templates
nero@k95vj:~$
De pre/post install bestanden van uw-mapd blijven dus staan. Een purge lukt niet meer vermits het packet niet is geïnstalleerd.

Re: Verwijderen van half-installed packet loopt fout
« Reactie #9 Gepost op: 2015/10/15, 22:00:09 »
Welke output geeftdpkg-query -l uw-imapd

Offline Nero

  • Lid
Re: Verwijderen van half-installed packet loopt fout
« Reactie #10 Gepost op: 2015/10/16, 09:47:20 »
~$ dpkg-query -l uw-imapd
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                               Version                Architecture           Description
+++-==================================-======================-======================-=========================================================================
rc  uw-imapd                           8:2007e~dfsg-3.1       amd64                  remote mail folder access server using IMAP4rev1
~$
Wel removed, maar de conf-files blijven staan.
~$ dpkg-query -L uw-imapd
/etc
/etc/pam.d
/etc/pam.d/imap
/etc/logcheck
/etc/logcheck/ignore.d.server
/etc/logcheck/ignore.d.server/uw-imapd
~$

Re: Verwijderen van half-installed packet loopt fout
« Reactie #11 Gepost op: 2015/10/16, 12:35:32 »
Het probleem is dat het post removal script zo vroeg is gestopt dat er eigenlijk helemaal niks is gedaan.

Je zousudo apt-get purge uw-imapd
sudo dpkg --purge --force-remove-reinstreq uw-imapd
kunnen proberen om in ieder geval zeker te zijn dat eventuele verwijzingen weg zijn en dan handmatig opruimen wat er overblijft. De meeste suggesties elders op het web komen daar ook op neer.

Offline Nero

  • Lid
Re: Verwijderen van half-installed packet loopt fout
« Reactie #12 Gepost op: 2015/10/16, 13:10:16 »
~$ sudo apt-get purge uw-imapd
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  uw-imapd*
0 upgraded, 0 newly installed, 1 to remove and 35 not upgraded.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n]
(Reading database ... 145933 files and directories currently installed.)
Removing uw-imapd (8:2007e~dfsg-3.1) ...
Purging configuration files for uw-imapd (8:2007e~dfsg-3.1) ...
dpkg: error processing package uw-imapd (--purge):
 subprocess installed post-removal script returned error exit status 10
Errors were encountered while processing:
 uw-imapd
E: Sub-process /usr/bin/dpkg returned an error code (1)
~$
~$ sudo dpkg --purge --force-remove-reinstreq uw-imapd
[sudo] password for nero:
(Reading database ... 145935 files and directories currently installed.)
Removing uw-imapd (8:2007e~dfsg-3.1) ...
Purging configuration files for uw-imapd (8:2007e~dfsg-3.1) ...
dpkg: error processing package uw-imapd (--purge):
 subprocess installed post-removal script returned error exit status 10
Errors were encountered while processing:
 uw-imapd
~$
De fouten blijven dus bestaan. Had ik overigens voordien reeds geprobeerd, echter niet meer sinds het geforceerd afsluiten van het post-removal script.

Re: Verwijderen van half-installed packet loopt fout
« Reactie #13 Gepost op: 2015/10/16, 16:18:56 »
O ja, dat is waar. Je had die exit 0 weer verwijderd uit het postrm script. Dan loopt de boel uiteraard weer vast.

Teruglezend... Had je nou al een apt-get of dpkg purge uitgevoerd met die exit 0 erin? Dan wordt het waarschijnlijk niet beter dan dit. Ik zou de resterende bestanden handmatig weghalen.

Je zou eventueel kunnen overwegen dat script nog wat grondiger aan te passen, zodat alleen het laatste stuk (vanaf de regel die begint met "# Automatically added by dh_installdebconf") wordt uitgevoerd en dan nog eens een purge te proberen.

[Overweging: Kan het weglaten van zo'n stuk kwaad? Je schreef eerder dat een en ander pas doorliep als de exit 0 onder de db_version regel stond. Dat zou erop wijzen dat de db_get een paar regels verder de fout veroorzaakt. In dat geval kan de for lus die daarop volgt dus ook niets zinnigs doen.]

Offline Nero

  • Lid
Re: Verwijderen van half-installed packet loopt fout
« Reactie #14 Gepost op: 2015/10/16, 17:22:20 »
An sich is er niet echt nog een probleem. Het installeren of verwijderen van andere pakketten geeft geen fout meer. Het enige wat ik nog wilde bereiken was het wegwerken van enkele 'loose ends': de resten van het pakket verwijderen. Af en toe doe ik toch een volledige re-install na wat veel experimenteren met software.

Hier in dit geval had ik in eerste instantie een probleem omdat ik na die mislukte installatie, gevolgd door de mislukte verwijdering, niets meer kon met dpkg zonder foutmeldingen. ik kreeg steeds de melding You held broken packages of iet in die strekking. Dat is nu wel opgelost. Het pakket is verwijderd, sommige config bestanden blijven nog achter. En die eten geen brood (ik weet niet of deze uitdrukking in het noorden gekend is). Dus...

Re: Verwijderen van half-installed packet loopt fout
« Reactie #15 Gepost op: 2015/10/16, 20:04:23 »
En die eten geen brood (ik weet niet of deze uitdrukking in het noorden gekend is).
Hier in Scheveningen in ieder geval wel. Is dat het noorden? O, ja. Alles boven de Moerdijk...  =D