ubuntuusers.de

libc über dpkg installiert, seitdem apt-get kaputt

Status: Ungelöst | Ubuntu-Version: Ubuntu 11.10 (Oneiric Ocelot)
Antworten |

repat

Anmeldungsdatum:
21. März 2007

Beiträge: 16

Wohnort: Hamburg

Hi,

für Code, den ich bei github gefunden habe, brauchte ich die Version 2.15(ist bei 12.04 dabei) von libc und habe einfach das .deb von packages.ubuntu.com runtergeladen und über dpkg --install installiert. Jetzt bekomm ich jedes mal bei apt-get upgrade oder apt-get install die Meldung:

repat@laptop:~/Downloads$ sudo apt-get install hamfax
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut       
Statusinformationen werden eingelesen... Fertig
Probieren Sie »apt-get -f install«, um dies zu korrigieren:
Die folgenden Pakete haben unerfüllte Abhängigkeiten:
 aptitude : Hängt ab von: libboost-iostreams1.46.1 (>= 1.46.1-1) soll aber nicht installiert werden
            Hängt ab von: libcwidget3 soll aber nicht installiert werden
            Empfiehlt: libparse-debianchangelog-perl soll aber nicht installiert werden
 hamfax : Hängt ab von: libhamlib2 (>= 1.2.13.1) soll aber nicht installiert werden
 libc-dev-bin : Hängt ab von: libc6 (< 2.14) aber 2.15-0ubuntu17 soll installiert werden
 libc6 : Hängt ab von: libc-bin (= 2.15-0ubuntu17)
         Beschädigt: libc6:i386 (!= 2.15-0ubuntu17) aber 2.13-20ubuntu5.1 soll installiert werden
 libc6:i386 : Beschädigt: libc6 (!= 2.13-20ubuntu5.1) aber 2.15-0ubuntu17 soll installiert werden
 libc6-dbg : Hängt ab von: libc6 (= 2.13-20ubuntu5.1) aber 2.15-0ubuntu17 soll installiert werden
 libc6-dev : Hängt ab von: libc6 (= 2.13-20ubuntu5.1) aber 2.15-0ubuntu17 soll installiert werden
 libc6-i386 : Hängt ab von: libc6 (= 2.13-20ubuntu5.1) aber 2.15-0ubuntu17 soll installiert werden
 libnih1 : Hängt ab von: libc6 (< 2.14) aber 2.15-0ubuntu17 soll installiert werden
E: Unerfüllte Abhängigkeiten. Versuchen Sie »apt-get -f install« ohne Angabe eines Pakets (oder geben Sie eine Lösung an).

In einem der Google-Treffer stand, dass aptitude das lösen könnte, leider hab ich das aber nicht installiert. Es taucht da oben auf, weil ich es auch versucht habe über dpkg zu installieren.

Ein apt-get -f install ergibt:

repat@laptop:~/Downloads$ sudo apt-get -f install
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut       
Statusinformationen werden eingelesen... Fertig
Abhängigkeiten werden korrigiert... fehlgeschlagen.
Die folgenden Pakete haben unerfüllte Abhängigkeiten:
 aptitude : Hängt ab von: libboost-iostreams1.46.1 (>= 1.46.1-1) ist aber nicht installiert
            Hängt ab von: libcwidget3 ist aber nicht installiert
            Empfiehlt: libparse-debianchangelog-perl ist aber nicht installiert
 libc-dev-bin : Hängt ab von: libc6 (< 2.14) aber 2.15-0ubuntu17 ist installiert
 libc6 : Hängt ab von: libc-bin (= 2.15-0ubuntu17)
         Beschädigt: libc6:i386 (!= 2.15-0ubuntu17) aber 2.13-20ubuntu5.1 ist installiert
 libc6:i386 : Beschädigt: libc6 (!= 2.13-20ubuntu5.1) aber 2.15-0ubuntu17 ist installiert
 libc6-dbg : Hängt ab von: libc6 (= 2.13-20ubuntu5.1) aber 2.15-0ubuntu17 ist installiert
 libc6-dev : Hängt ab von: libc6 (= 2.13-20ubuntu5.1) aber 2.15-0ubuntu17 ist installiert
 libc6-i386 : Hängt ab von: libc6 (= 2.13-20ubuntu5.1) aber 2.15-0ubuntu17 ist installiert
 libnih1 : Hängt ab von: libc6 (< 2.14) aber 2.15-0ubuntu17 ist installiert
E: Fehler: Unterbrechungen durch pkgProblemResolver::Resolve hervorgerufen; dies könnte durch zurückgehaltene Pakete verursacht worden sein.
E: Abhängigkeiten konnten nicht korrigiert werden

Wie kann ich das lösen bzw. wieder 2.13(von 11.10) installieren? Den oben genannten Code würde ich dann einfach auf einem anderen System ausführen/kompilieren. Irgendwie fielen mir auch nicht besonders gute Google Stichwörter ein, für das, was ich da veranstaltet hab :-/

Was ich noch versucht habe, ist mit einer Live CD- sowohl /lib/x86_64-linux-gnu/libc-2.15.so als auch die Verknüpfung dahin, /lib/x86_64-linux-gnu/libc.so.6, per Hand zu ändern. Dann kommt es aber beim Reboot zu einem Fehler mit GLIBC.

Ubuntu 11.10, 64-Bit

Moderiert von tomtomtom:

Ins passende Forum verschoben. Bitte beachte die Themenstickies.

diesch Team-Icon

Avatar von diesch

Anmeldungsdatum:
18. Februar 2009

Beiträge: 5072

Wohnort: Brandenburg an der Havel

Die libc ist ein zentraler Bestandteil eines Linux-Systems, den man nicht austauschen kann, ohne eine Menge anderer Sachen mindestens neu zu kompilieren.

Lade das .deb-Paket für 11.10 von packages.ubuntu.com runter und installiere es mit dpkg.

mickydoutza

Avatar von mickydoutza

Anmeldungsdatum:
31. Dezember 2010

Beiträge: 2185

repat schrieb:

für Code, den ich bei github gefunden habe, brauchte ich die Version 2.15(i...) von libc ...

In so einem Fall kannst Du diese lib-Version aus dem source code, ohne Installation (auf deinem PC) kompilieren und mit "-L" für deinen Code benutzen.

Z. B.:

env LD_LIBRARY_PATH=/opt/<mylibc>/lib gcc -o <mycode> <mycode>.c -I/opt/<mylibc>/include -L/opt/<mylibc>/lib

repat

(Themenstarter)

Anmeldungsdatum:
21. März 2007

Beiträge: 16

Wohnort: Hamburg

Dann bekomm ich folgendes:

repat@laptop:~/Downloads$ sudo dpkg --install libc6_2.13-20ubuntu5.1_amd64.deb 
[sudo] password for repat: 
dpkg: Warnung: libc6 wird von 2.15-0ubuntu17 zu 2.13-20ubuntu5.1 deaktualisiert.
(Lese Datenbank ... 
dpkg: Warnung: Dateilisten-Datei des Paketes »libc6:i386« fehlt, es wird angenommen,
dass das Paket derzeit keine Dateien installiert hat.

dpkg: Warnung: Dateilisten-Datei des Paketes »libc6« fehlt, es wird angenommen,
dass das Paket derzeit keine Dateien installiert hat.

dpkg: Warnung: Dateilisten-Datei des Paketes »libc6-dev-i386« fehlt, es wird angenommen,
dass das Paket derzeit keine Dateien installiert hat.

dpkg: Warnung: Dateilisten-Datei des Paketes »libc6-i386« fehlt, es wird angenommen,
dass das Paket derzeit keine Dateien installiert hat.

dpkg: Warnung: Dateilisten-Datei des Paketes »libc6-dev« fehlt, es wird angenommen,
dass das Paket derzeit keine Dateien installiert hat.

dpkg: Warnung: Dateilisten-Datei des Paketes »libc6-dbg« fehlt, es wird angenommen,
dass das Paket derzeit keine Dateien installiert hat.
(Lese Datenbank ... 493664 Dateien und Verzeichnisse sind derzeit installiert.)
Vorbereitung zum Ersetzen von libc6 2.15-0ubuntu17 (durch libc6_2.13-20ubuntu5.1_amd64.deb) ...

A copy of the C library was found in an unexpected directory:
  '/lib/x86_64-linux-gnu/libc-2.15.so'
It is not safe to upgrade the C library in this situation;
please remove that copy of the C library or get it out of
'/lib/x86_64-linux-gnu' and try again.

dpkg: Fehler beim Bearbeiten von libc6_2.13-20ubuntu5.1_amd64.deb (--install):
 Unterprozess neues pre-installation-Skript gab den Fehlerwert 1 zurück
Fehler traten auf beim Bearbeiten von:
 libc6_2.13-20ubuntu5.1_amd64.deb

Wie gesagt, manuell ersetzen funktioniert nicht. Wenn ich die Datei lösche oder verschiebe, geht natürlich absolut garnicht mehr-.-

edit: irgendwas mit dpkg-divert? ich probier lieber erstmal nichts..

Lasall

Ehemalige
Avatar von Lasall

Anmeldungsdatum:
30. März 2010

Beiträge: 7723

Hi repat,

ich würde das pre-install Skript anpassen, sodass es bei der Warnung nicht abbricht. Das Skript liegt unter /var/lib/dpkg/info/libc6:amd64/preinst (das exit 1 in Zeile ~117 entfernen). Backup vorher nicht vergessen.

Gruss Lasall

repat

(Themenstarter)

Anmeldungsdatum:
21. März 2007

Beiträge: 16

Wohnort: Hamburg

Hi,

das klappt leider nicht, weil es das Verzeichnis nicht gibt:

repat@laptop:/var/lib/dpkg/info$ ls | grep libc6
repat@laptop:/var/lib/dpkg/info$ 

Vielleicht habe ich das ausversehen in früheren Versuchen gelöscht(?)

Lasall

Ehemalige
Avatar von Lasall

Anmeldungsdatum:
30. März 2010

Beiträge: 7723

Hi repat,

tut mir Leid, ich hatte mich auch verschrieben. Die Datei sollte unter /var/lib/dpkg/info/libc6:amd64.preinst liegen. Allerdings ist auch diese nicht bei dir vorhanden, deswegen wird das pre-install Skript des aktuellen Paketes verwendet. Um das Skript anzulegen, repacke entweder das heruntergeladene Paket oder extrahiere gleich das Skript an die entsprechende Stelle:

dpkg --info /PFAD/ZU/libc6….deb preinst | sudo tee /var/lib/dpkg/info/libc6\:amd64.preinst 

Dann bearbeite diese Datei und versuche anschließend die Installation durchzuführen.

Gruss Lasall

repat

(Themenstarter)

Anmeldungsdatum:
21. März 2007

Beiträge: 16

Wohnort: Hamburg

Selbes Problem :-/

repat@laptop:~/Downloads$ sudo dpkg --install libc6_2.13-20ubuntu5.1_amd64.deb 
dpkg: Warnung: libc6 wird von 2.15-0ubuntu17 zu 2.13-20ubuntu5.1 deaktualisiert.
(Lese Datenbank ... 
dpkg: Warnung: Dateilisten-Datei des Paketes »libc6:i386« fehlt, es wird angenommen,
dass das Paket derzeit keine Dateien installiert hat.

dpkg: Warnung: Dateilisten-Datei des Paketes »libc6« fehlt, es wird angenommen,
dass das Paket derzeit keine Dateien installiert hat.

dpkg: Warnung: Dateilisten-Datei des Paketes »libc6-dev-i386« fehlt, es wird angenommen,
dass das Paket derzeit keine Dateien installiert hat.

dpkg: Warnung: Dateilisten-Datei des Paketes »libc6-i386« fehlt, es wird angenommen,
dass das Paket derzeit keine Dateien installiert hat.

dpkg: Warnung: Dateilisten-Datei des Paketes »libc6-dev« fehlt, es wird angenommen,
dass das Paket derzeit keine Dateien installiert hat.

dpkg: Warnung: Dateilisten-Datei des Paketes »libc6-dbg« fehlt, es wird angenommen,
dass das Paket derzeit keine Dateien installiert hat.
(Lese Datenbank ... 493664 Dateien und Verzeichnisse sind derzeit installiert.)
Vorbereitung zum Ersetzen von libc6 2.15-0ubuntu17 (durch libc6_2.13-20ubuntu5.1_amd64.deb) ...

A copy of the C library was found in an unexpected directory:
  '/lib/x86_64-linux-gnu/libc-2.15.so'
It is not safe to upgrade the C library in this situation;
please remove that copy of the C library or get it out of
'/lib/x86_64-linux-gnu' and try again.

dpkg: Fehler beim Bearbeiten von libc6_2.13-20ubuntu5.1_amd64.deb (--install):
 Unterprozess neues pre-installation-Skript gab den Fehlerwert 1 zurück
Fehler traten auf beim Bearbeiten von:
 libc6_2.13-20ubuntu5.1_amd64.deb

Zeile 109-119 von libc6:amd64.preinst sehen so aus:

        # Output an error message and exit
        echo
        echo "A copy of the C library was found $msg:"
        echo "  '$lib'"
        echo "It is not safe to upgrade the C library in this situation;"
        echo "please remove that copy of the C library or get it out of"
        echo "'$dir' and try again."
        echo
#        exit 1
    done
}

Lasall

Ehemalige
Avatar von Lasall

Anmeldungsdatum:
30. März 2010

Beiträge: 7723

Hi repat,

entferne wieder die Datei und bearbeite das Paket direkt (siehe dazu hier). Falls sich jemand dafür interessiert, warum der letzte Versuch nicht funktioniert hat, siehe 6.5 Summary of ways maintainer scripts are called 🇬🇧 in der Policy.

Gruss Lasall

repat

(Themenstarter)

Anmeldungsdatum:
21. März 2007

Beiträge: 16

Wohnort: Hamburg

Sehr geil, das hat geklappt:) Vielen, vielen Dank:)

repat

(Themenstarter)

Anmeldungsdatum:
21. März 2007

Beiträge: 16

Wohnort: Hamburg

Hi,

nächstes Problem, hängt aber damit zusammen: Nach einem apt-get upgrade und einem reboot funktionieren bei mir einige Programme nicht mehr. Ich bekomm z.B. bei gnome-panel die Meldung: Speicherzugriffsfehler. In der recovery shell bekomm ich dann eine genauere Fehlermeldung:

[626.107295] gnome-panel[1951]; segfault at b0 ip 00007f63a7325721 sp 00007fff943d1fd0 error 4 in libc-2.15.so[7f63a71f6000+1b3000]
Speicherzugriffsfehler

Also, die libc6-2.13 Installation ist zwar geglückt, aber er zeigte diese Meldungen weiterhin an:

dpkg: Warnung: Dateilisten-Datei des Paketes »libc6-dev-i386« fehlt, es wird angenommen,
dass das Paket derzeit keine Dateien installiert hat.

Dabei hab ich mir dann nichts gedacht, aber es scheint so als würden die Programme trotzdem noch zum Teil 2.15 verwenden. Jetzt hab ich Angst, dass wenn ich die Datei einfach lösche, dann garnichts mehr funktioniert.

Lasall

Ehemalige
Avatar von Lasall

Anmeldungsdatum:
30. März 2010

Beiträge: 7723

Hi repat,

zeige bitte:

dpkg -l 'libc-*' 'libc6*'
ls -l /lib/x86_64-linux-gnu/ | grep libc- 

Wegen der Warnung mit der Dateilistendatei solltest du diese ganzen Pakete reinstallieren.

Gruss Lasall

repat

(Themenstarter)

Anmeldungsdatum:
21. März 2007

Beiträge: 16

Wohnort: Hamburg

Ok, ich glaube ich habs gerade entdeckt. Die libc.so.6 zeigt auf 2.15, nicht 2.13. Soll ich das einfach mal umbiegen?

ls -l /lib/x86_64-linux-gnu/ | grep libc- ergibt:

[...]libc-2.13.so
[...]libc-2.15.so
[...]libc.so.6 -> libc-2.15

Der andere Befehl ergibt:

ii libc-bin       2.13-20ubuntu5
un libc-dbg       <keine>
un libc-dev       <keine>
ii libc-dev-bin   2.13-20ubuntu5
ii libc6          2.13-20ubuntu5
un libc6-amd64    <keine>
ii libc6-dbg      2.13-20ubuntu5
ii libc6-dev      2.13-20ubuntu5
ii libc6-dev-i386 2.13-20ubuntu5
ii libc6-i386     2.13-20ubuntu5
un libc6-686      <keine>
un libc6.1        <keine>
un libc6.1-dev    <keine>

update: ln auf 2.13 bringt nichts, jetzt bekomm ich:

/sbin/init: /lib/x86_64-linux-gnu/libc.so.6: version 'GLIBC_2.14' not found (required by /lib x86_64-linux-gnu/libpthread.so.0)
/sbin/init: /lib/x86_64-linux-gnu/libc.so.6: version 'GLIBC_2.14' not found (required by /lib x86_64-linux-gnu/librt.so.1)

ldd --version ergibt aber:

ldd (Ubuntu EGLIBC 2.13-20ubuntu5.1) 2.13

Die Pakete konnte ich alle re-installieren, außer dieses hier:

repat@laptop:~$ sudo apt-get install --reinstall libc6:i386
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut       
Statusinformationen werden eingelesen... Fertig
0 aktualisiert, 0 neu installiert, 1 erneut installiert, 0 zu entfernen und 0 nicht aktualisiert.
Es müssen noch 0 B von 3.800 kB an Archiven heruntergeladen werden.
Nach dieser Operation werden 0 B Plattenplatz zusätzlich benutzt.
E: Internal Error, No file name for libc6

repat@laptop:~$ sudo apt-get install libc6:i386
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut       
Statusinformationen werden eingelesen... Fertig
libc6:i386 ist schon die neueste Version.
0 aktualisiert, 0 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.
repat@tauri:~$ 

repat@laptop:~$ sudo dpkg-reconfigure libc6:i386
repat@laptop:~$

Lasall

Ehemalige
Avatar von Lasall

Anmeldungsdatum:
30. März 2010

Beiträge: 7723

Hi repat,

hast du die Pakete schon reinstalliert? Ich kenne die Konfigurationsroutine der Standardbibliothek nicht, prinzipiell sollten aber die Dateien ersetzt werden. Hast du nachdem du den Link geändert hast, neu gestartet? (Ins System kommst du ja immer noch per Live-CD.)

Zeige bitte zuerst:

objdump -p /lib/x86_64-linux-gnu/libpthread.so.0 | grep -A 99 required 

Gruss Lasall

repat

(Themenstarter)

Anmeldungsdatum:
21. März 2007

Beiträge: 16

Wohnort: Hamburg

repat@laptop:~$ objdump -p /lib/x86_64-linux-gnu/libpthread.so.0 | grep -A 99 required 
  required from ld-linux-x86-64.so.2:
    0x09691a75 0x00 16 GLIBC_2.2.5
    0x0d696913 0x00 15 GLIBC_2.3
    0x0963cf85 0x00 14 GLIBC_PRIVATE
  required from libc.so.6:
    0x06969194 0x00 17 GLIBC_2.14
    0x09691972 0x00 13 GLIBC_2.3.2
    0x0963cf85 0x00 12 GLIBC_PRIVATE
    0x09691a75 0x00 11 GLIBC_2.2.5

s.o., ich habe den Post nochmal editiert, ich habe die Pakete re-installiert bekommen bis auf das mit dem :i386, und was sinnvolles findet man bei google auch nicht, weil er das als -i386 versteht.

repat schrieb:

Die Pakete konnte ich alle re-installieren, außer dieses hier:

repat@laptop:~$ sudo apt-get install --reinstall libc6:i386
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut       
Statusinformationen werden eingelesen... Fertig
0 aktualisiert, 0 neu installiert, 1 erneut installiert, 0 zu entfernen und 0 nicht aktualisiert.
Es müssen noch 0 B von 3.800 kB an Archiven heruntergeladen werden.
Nach dieser Operation werden 0 B Plattenplatz zusätzlich benutzt.
E: Internal Error, No file name for libc6

repat@laptop:~$ sudo apt-get install libc6:i386
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut       
Statusinformationen werden eingelesen... Fertig
libc6:i386 ist schon die neueste Version.
0 aktualisiert, 0 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.
repat@tauri:~$ 

repat@laptop:~$ sudo dpkg-reconfigure libc6:i386
repat@laptop:~$

Beim Installieren von Programmen bekomme ich also immer noch die Meldung:

(Lese Datenbank ... 
dpkg: Warnung: Dateilisten-Datei des Paketes »libc6:i386« fehlt, es wird angenommen,
dass das Paket derzeit keine Dateien installiert hat.

Ich hab einen reboot gemacht und dann den Fehler mit GLIBC bekommen. Dann habe ich per LiveCD alles zurückgesetzt, damit ich diesen Beitrag schreiben kann (OpenBox funktioniert halbwegs)

Antworten |