Error code bei upgrade dpkg /apt /dselect

Du kommst mit der Installation nicht voran oder willst noch was nachfragen? Schau auch in den "Tipps und Tricks"-Bereich.
Antworten
Benutzeravatar
gammatron
Beiträge: 11
Registriert: 19.03.2009 17:48:40

Error code bei upgrade dpkg /apt /dselect

Beitrag von gammatron » 22.07.2009 03:07:07

ein....

Code: Alles auswählen

apt-get -u dselect-upgrade
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut
Lese Status-Informationen ein... Fertig



Die folgenden NEUEN Pakete werden installiert:
  konq-plugins-l10n
Die folgenden Pakete werden aktualisiert:
  ark bomber bovo dolphin dpkg dragonplayer gwenview juk kamera kapman kappfinder katomic kbattleship kblackbox kblocks kbounce kbreakout
  kcalc kcharselect kcolorchooser kdebase kdebase-bin kdebase-data kdegames kdegraphics kdegraphics-strigi-plugins kdemultimedia
  kdemultimedia-kio-plugins kdepasswd kdessh kdeutils kdf kdiamond kfind kfloppy kfourinline kgamma kgoldrunner kgpg khelpcenter4 killbots
  kiriki kjumpingcube klines kmahjongg kmines kmix kmldonkey knetwalk kolf kollision kolourpaint4 konq-plugins konqueror konqueror-nsplugins
  konquest konsole kpat kreversi kruler ksame kscd kshisen ksirk ksnapshot kspaceduel ksquares ksudoku ktimer ktuberling kubrick
  kwalletmanager kwrite libgnomevfs2-extra libkcddb4 libkdegames5 libkexiv2-7 libkipi6 libkonq5 libkonqsidebarplugin4 libksane0 libneon27
  libneon27-gnutls libokularcore1 lskat mutt okteta okular plasma-scriptengine-superkaramba plasma-widget-folderview sweeper
91 aktualisiert, 1 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.
Es müssen noch 0B von 53,2MB an Archiven heruntergeladen werden.
Nach dieser Operation werden 1270kB Plattenplatz zusätzlich benutzt.
Extrahiere Templates aus Paketen: 100%
(Lese Datenbank ... 490131 Dateien und Verzeichnisse sind derzeit installiert.)
Vorbereiten zum Ersetzen von dpkg 1.15.2 (durch .../dpkg_1.15.3.1_amd64.deb) ...
dpkg: Fehler beim Bearbeiten von /var/cache/apt/archives/dpkg_1.15.3.1_amd64.deb (--unpack):
 Unterprozess neues pre-installation-Skript gab den Fehlerwert 1 zurück
Fehler traten auf beim Bearbeiten von:
 /var/cache/apt/archives/dpkg_1.15.3.1_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
quadriga:/var/cache/apt/archives#

leider handelt es sich hier um das dpkg Paket selbst und kann es nicht einfach mit Purge löschen, wäre ja zu gefährlich.

Manchmal kommt dieser error code, wenn die Platten voll sind, ein df zeigt:

Code: Alles auswählen

df
Dateisystem          1K-Blöcke   Benutzt Verfügbar Ben% Eingehängt auf
/dev/sdb3            211191744  18510088 192681656   9% /
tmpfs                  3971024         8   3971016   1% /lib/init/rw
udev                     10240       224     10016   3% /dev
tmpfs                  3971024       156   3970868   1% /dev/shm
/dev/sda7             39516244    226704  37282220   1% /boot
/dev/sdb4              9139804    152052   8523476   2% /tmp
/dev/sdb1             82011920  11991272  70020648  15% /usr
/dev/sdb5            260101800  63218964 196882836  25% /media/sdb5
/dev/sdb7            442788992 146577344 296211648  34% /media/sdb7
/dev/sdb8            439254656   1983348 437271308   1% /media/sdb8
und ein

dpkg -l dpkg zeigt folgendes:

Code: Alles auswählen

Gewünscht=Unbekannt/Installieren/R=Entfernen/P=Vollständig Löschen/Halten
| Status=Nicht/Installiert/Config/U=Entpackt/Fehlgeschl. Konfiguration/
         Halb installiert/Trigger erWartet/Trigger anhängig
|/ Fehler?=(kein)/Halten/R=Neuinst notw/X=beide (Status, Fehler: GROSS=schlecht)
||/ Name                          Version                       Beschreibung
+++-=============================-=============================-==========================================================================
ii  dpkg                          1.15.2                        Debian package management system

ein apt-cache policy coreutils
coreutils:
  Installiert: 7.4-2
  Kandidat: 7.4-2
  Versions-Tabelle:
 *** 7.4-2 0
        500 http://ftp.debian.org testing/main Packages
        500 http://ftp.de.debian.org testing/main Packages
        500 http://http.us.debian.org testing/main Packages
        100 /var/lib/dpkg/status
zeigt mir eigentlich, dass alles okay erscheint.......

es sind keine Paket auf "hold" gesetzt.
leider kann ich nirgends im Netz Fehler für die Installation des Paketes dpkg_1.15.3.1_amd64.deb.

das alte hat die Version 1.15.2.
Kann es sein dieses alte Paket, bereits fehlerhaft installiert wurde?

Abhilfe?

Benutzeravatar
Saxman
Beiträge: 4233
Registriert: 02.05.2005 21:53:52
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: localhost

Re: Error code bei upgrade dpkg /apt /dselect

Beitrag von Saxman » 22.07.2009 08:45:32

Lad dir das Paket nochmal per Hand runter und installier es mit dpkg neu um auszuschließen daß es an einem defekten Paket liegt.
Versuch auch mal nur das paket mit dpkg --configure neu zu konfigurieren, alleine schon um vielleicht eine etwas aussagefähigere Fehlermeldung zu erhalten.
Wenn das nicht hilft würde Ich das Paket auf die vorherige Version downgraden.
Schau dir in der manpage zu dpkg auch mal die Sektion zu den --force Schaltern an wenn es zwicken sollte.
"Unix is simple. It just takes a genius to understand its simplicity." - Dennis Ritchie

Debian GNU/Linux Anwenderhandbuch | df.de Verhaltensregeln | Anleitungen zum Review und zum Verfassen von Wiki Artikeln.

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Error code bei upgrade dpkg /apt /dselect

Beitrag von rendegast » 22.07.2009 10:26:15

OffTopic
40GB für /boot (verschenkter Platz?), aber kein eigenes /home.
Das /usr dem / zuschlagen. 8GB Ram, tmpfs nach /tmp mounten.


Unterprozess neues pre-installation-Skript gab den Fehlerwert 1 zurück
Darin sind nur zwei Funktionen, eine beschäftigt sich mit den alternatives-Links.
Vielleicht diese händisch ausführen um zu sehen, wo es hängt?
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Benutzeravatar
gammatron
Beiträge: 11
Registriert: 19.03.2009 17:48:40

Re: Error code bei upgrade dpkg /apt /dselect

Beitrag von gammatron » 22.07.2009 11:19:14

rendegast hat geschrieben:OffTopic
40GB für /boot (verschenkter Platz?), aber kein eigenes /home.
Das /usr dem / zuschlagen. 8GB Ram, tmpfs nach /tmp mounten.

:-), ja das mit dem Boot und 40 GB ist sicher "verschenkt", jedoch habe ich in der Vergangenheit, auch schon recht kleinere Partitionenen für Boot. Ich meine, es ist sicher immer einfacher, alles unter / das wurzelverzeichnis zu verpacken (ausser /home, schon aus wiederherstellungs-Gründen).

die Kernel-Images halte ich ziemlich lange auf, bis ich dann sicher bin dass ich sie wieder endgültig lösche.
Daher der sehr großzügige Platz... :-)

tmpfs nach tmp ist sicher eine Überlegung wert :-)

Unterprozess neues pre-installation-Skript gab den Fehlerwert 1 zurück
Darin sind nur zwei Funktionen, eine beschäftigt sich mit den alternatives-Links.
Vielleicht diese händisch ausführen um zu sehen, wo es hängt?
Alternative Links? du meinst softlinks? wäre möglich..., wenn sie ins nirvana führen...

Und was meinst du, mit händisch ausführen?

gruß

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Error code bei upgrade dpkg /apt /dselect

Beitrag von rendegast » 22.07.2009 12:17:24

Das preinst erwartet zwei Parameter

Code: Alles auswählen

preinst [install|upgrade|abort-upgrade|dummy] vorherige-dpkg-Version
Im Fall 'preinst upgrade 1.15.2' wird diese Funktion aufgerufen:

Code: Alles auswählen

kill_bad_alternatives () {
    local IFS=""
    ALTDIR="/var/lib/dpkg/alternatives"
    for alt in $ALTDIR/*; do
        if [ ! -e $alt ]; then
            # In case it's been removed by the code below
            continue
        fi
        {
            read mode
            read mainlink
            while true; do
                read slave
                if [ "$slave" = "" ]; then
                    break
                fi
                if [ -e "$ALTDIR/$slave" ]; then
                    echo "Removing conflicting master alternative $slave (it is slave of $(basename $alt))..."
                    rm -f "$ALTDIR/$slave"
                fi
                read slavelink
            done
        } <$alt
    done
}
Vielleicht findest Du in /var/lib/dpkg/alternatives etwas offensichtliches, was einen Fehler hervorruft?
Oder Du baust oben echos ein, um beim Arbeiten zuzuschauen?



Aber ein Fehler kann aus diesem Script nur daher kommen?

Code: Alles auswählen

    *)
	echo "$0 called with unknown argument \`$1'" 1>&2
	exit 1
	;;
Vielleicht steht diese Meldung ja in einem Log, da sie oben nicht ausgegeben wurde?
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Maxux
Beiträge: 2
Registriert: 23.07.2009 04:15:26

Re: Error code bei upgrade dpkg /apt /dselect

Beitrag von Maxux » 23.07.2009 04:20:16

Hallo,

Ich bin nich gut in deutsh, Ich will schnell sein.
Ich habe auch dieses Problem.

Edit file preinst habe nicht funktioniert, aber:

Code: Alles auswählen

mkdir /var/lib/dpkg/alter
mv /var/lib/dpkg/alternatives/* /var/lib/dpkg/alter/
apt-get install dpkg
mv /var/lib/dpkg/alter/* /var/lib/dpkg/alternatives/
Rulz !

Ich weiß nicht warum, aber es funktioniert für mir.

Clio

Re: Error code bei upgrade dpkg /apt /dselect

Beitrag von Clio » 23.07.2009 13:15:42

Maxux hat geschrieben:Ich bin nich gut in deutsh, Ich will schnell sein.
Hier kannst Du Dir getrost ganz viel Zeit lassen wenn dadurch Deine Beiträge verbessert werden.
Ist zum Lesen doch wesentlich angenehmer...

Maxux
Beiträge: 2
Registriert: 23.07.2009 04:15:26

Re: Error code bei upgrade dpkg /apt /dselect

Beitrag von Maxux » 23.07.2009 15:59:15

Clio: danke :) Das ist Debian's User <3.

Also, Hier ist eine Erklärung:

Ich habe suchen in Google um das problem korrigieren, und Ich habe found eine Post wo der problem was eine "corrupt file" in "alternative".
Preinst script suche:

Code: Alles auswählen

if [ -e "$ALTDIR/$slave" ]; then
Das sagt "nur file". Wenn es gibt eine "corrput file" oder eine "folder" in "alternative" folder, script ende mit error 1.

Es gibt eine patch fur das:

Code: Alles auswählen

--- a/debian/dpkg.preinst
+++ b/debian/dpkg.preinst
@@ -30,8 +30,9 @@ kill_bad_alternatives () {
     local IFS=""
     ALTDIR="/var/lib/dpkg/alternatives"
     for alt in $ALTDIR/*; do
-        if [ ! -e $alt ]; then
-            # In case it's been removed by the code below
+        if [ ! -f $alt ]; then
+            # In case it's been removed by the code below, or in case
+            # it's not a real file
             continue
         fi
         { 
(found here)
aber ich bin so müde to patch, ich habe mein vorhergehenden post verwendet. Das move alternative's file, kein problem NUR für dpkg.
Du sollst nicht install ein andere package ohne "alternative's files" !

Good Luck.

Benutzeravatar
gammatron
Beiträge: 11
Registriert: 19.03.2009 17:48:40

Re: Error code bei upgrade dpkg /apt /dselect

Beitrag von gammatron » 27.07.2009 01:23:32

das mit den preinst skripten ging nicht. Denn die dpkg info war komplett zerschossen.


1. ich habe mir anhand /usr/share/doc eine Liste bisher aller installierter Programme gemacht (natürlich automatisiert s. Debian-Referenzbuch.)

Code: Alles auswählen

#!/bin/bash

get_control_info ()
{
for i in /var/lib/apt/lists/*_Packages
do
sed '/Package: '"$1"'$/,/^$/!d' $i
done
}

for i in /var/lib/dpkg/info/*.list
do
package_name=`basename $i | sed 's/.list$//'`
get_control_info $package_name >> status-new
done

sed -i -e '/^Filename: .*/d' -e '/^MD5sum:/d' -e '/^SHA1:/d' -e '/^SHA256:/d' status-new
sed -i '/^Package: /a\Status: install ok installed' status-new
hier noch eine zweite Variante, die bei mir nicht funktioniert hat, weil dselect sich nicht dazu überreden liess, woran das lag weiss ich noch nicht, aber gebe mal hier den Code frei:

Code: Alles auswählen

#!/bin/sh

ls /usr/share/doc | \
grep -v [A-Z] | \
grep -v '^texmf$' | \
grep -v '^debian$' | \
awk '{print $1 " install"}' | \
dpkg --set-selections
dselect --expert # reinstall system, de-select as needed
end;
und noch eine sehr gute dritte Methode, hier den Code:

Code: Alles auswählen

#!/bin/sh
export PATH=/usr/sbin:/usr/bin:/sbin:/bin
# Let's be verbose....
set -v

# Test existence of any subdirs in /var. If they exist, exit, otherwise
# risk destroying an active system. If they don't exist, the remainder
# of this script is safe.

function create_new_dir () {
if [ ! -f $1 && ! -d $1 ]
then mkdir $1
else
echo "$1 exists, aborting" 1>&2
exit 1
fi
}

for d in /var/log /var/cache/{debconf,apt/archives} \
/var/lib/dpkg/{info,parts,alternatives,methods,updates}
do
create_new_dir $d
done

# Create a rudimentary status file
cat <<-EOF>/var/lib/dpkg/status
Package: libc6
Status: install ok installed
Version: 2.3.1-9
EOF

# Update package cache
apt-get update
apt-get dist-upgrade

# Register as installed crucial packages.
dpkg --clear-avail
apt-get update
apt-get dist-upgrade
cd /var/cache/apt/archives
dpkg -i libncurses*
dpkg -i perl-base*
dpkg -i libstdc++*
dpkg -i dselect*
dpkg -i dpkg*

# Reinstall libc to register it.
apt-get install --reinstall libc6

# Reinstall base packages.
apt-get dist-upgrade

# Generate list of installed packages to Re-register previously
# installed packages as installed, using /usr/share/doc as a
# fallback package registry.
# ref: dpkg -l $( ls /usr/share/doc | grep -v [A-Z] ) >/dev/null

dpkg --set-selections < $(
ls /usr/share/doc | \
grep -v [A-Z] | \
grep -v '^texmf$' | \
grep -v '^debian$' | \
awk '{print $1 " install"}'
)

# Re-register everything.
apt-get -u dselect-upgrade

## End of script ##

2. Leider ist dpkg einer der Grundlegendsten Programme überhaupt. Und normalerweise wenn die dpkg Datenbank weg ist, heisst es: besser eine Installation machen. Das konnte ich Gott-sei-Dank vermeiden.
Denn: ein einzelner Rechner wie meiner mit ca. 500.000 Dateien ist ziemlich anstrengend zu installieren und nicht zu vergessen neu zu konfigurieren. Da ist mancher abgespeckter "Profi-Rechner" leichter zu administrieren, er soll ja nur einen ganz bestimmten Zweck erfüllen und dazu nur das mindeste an Anwendungs- u. Sicherheitsprogrammen installiert haben.

3. ich habe einen Eintrag in die /etc/apt/sources.list gemacht mit apt-build:

Code: Alles auswählen

deb file:/var/cache/apt-build/repository apt-build main
damit habe ich mir die wichtigsten Programme "from scratch" kompiliert.
z.b. mit

Code: Alles auswählen

apt-build install binutils --reinstall binutils
Komplette Neu-Installation mit (meine angewendete Methode, ca. 3600 .deb-Pakete, das braucht Zeit und Flat-Rate):

Code: Alles auswählen

apt-get install apt-show-versions
apt-show-versions -b | grep -v "No available version in archive" | \
xargs apt-get install --reinstall -y
eine zweite Methode, die nicht sehr empfehlenswert ist geht auch über

Code: Alles auswählen

dpkg -S /var/lib | cut -d ":" -f 1 | tr ',' ' ' | \
xargs apt-get install --reinstall
Die ganze Angelegenheit ist wirklich ein mittlerer Gau.
Als Überlegung sollte man sich auf jeden Fall eine kleine Backup-Strategie zulegen:

/etc/
/var/lib
var/lib/dpkg
/usr/lib
und /var/cache/apt/archives zur not, damit man nicht mehr alles downloaden muss.
selbstverständlich auch die /home -dirs


Wünsche allen viel Erfolg bei der Bewältigung desselben Problems.. :-))

gruß

Antworten