# emerge beendet sich mit fehlermleldung

## calvin-gr

immer wenn ich ein paket gemerged habe, beendet sich emerge mit folgender fehlermeldung:

```

>>> Auto-cleaning packages ...

Traceback (most recent call last):

  File "/usr/bin/emerge", line 3080, in ?

    unmerge("clean", ["world"])

  File "/usr/bin/emerge", line 2114, in unmerge

    slotmap[myslot][localtree.dbapi.cpv_counter(mypkg)]=mypkg

  File "/usr/lib/portage/pym/portage.py", line 4483, in cpv_counter

    cfile=open(cpath, "r")

IOError: [Errno 21] Is a directory

```

hat jemand eine lösung für mein problem?

----------

## hds

/var/tmp/portage ist nicht zufaellig ein symlink?

----------

## calvin-gr

nein:

```

$ ls -ld /var/tmp/portage

drwxrwxr-x  495 portage portage 12288 11. Mär 16:23 /var/tmp/portage

```

----------

## hds

nur um nochmal sicherzugehen.. in make.conf zeigt:

PORTAGE_TMPDIR="/mnt/daten/tmp"

auf den richtigen pfad? auch /var bzw. /var/tmp ist kein symlink?

oder zufaellig ein / am ende des pfades in make.conf??

dann gibts naemlich idr so komische effekte  :Wink: 

wie du an meinem pfad siehst, hatte ich den auf ne andere platte umgelegt (wegen openoffice compile). hatte das damals auch zuerst mit nem symlink probiert..

wenns an dem nicht ist, andere vor! <g>. haette ja sein koennen  :Wink: 

ps: der emerge laeuft aber ansonsten durch? poste doch mal den output von "emerge info"

----------

## calvin-gr

PORTAGE_TMPDIR ist in make.conf garnicht enthalten.

emerge info sagt dies:

```
$ emerge info

Portage 2.0.51.19 (default-linux/x86/2004.3, gcc-3.3.5, glibc-2.3.4.20040808-r1, 2.6.10-gentoo-r6-asg i686)

=================================================================

System uname: 2.6.10-gentoo-r6-asg i686 Intel(R) Pentium(R) 4 CPU 3.06GHz

Gentoo Base System version 1.4.16

Python:              dev-lang/python-2.3.4-r1 [2.3.4 (#1, Feb 18 2005, 16:51:26)]

ccache version 2.3 [enabled]

dev-lang/python:     2.3.4-r1

sys-devel/autoconf:  2.13, 2.59-r6

sys-devel/automake:  1.5, 1.8.5-r3, 1.7.9-r1, 1.4_p6, 1.6.3, 1.9.4

sys-devel/binutils:  2.15.92.0.2-r1

sys-devel/libtool:   1.5.10-r4

virtual/os-headers:  2.4.22-r1

ACCEPT_KEYWORDS="x86"

AUTOCLEAN="yes"

CFLAGS="-O2 -march=pentium4 -fomit-frame-pointer -pipe"

CHOST="i686-pc-linux-gnu"

CONFIG_PROTECT="/etc /usr/kde/2/share/config /usr/kde/3.3/env /usr/kde/3.3/share/config /usr/kde/3.3/shutdown /usr/kde/3/share/config /usr/lib/X11/xkb /usr/lib/mozilla/defaults/pref /usr/share/config /var/qmail/control"

CONFIG_PROTECT_MASK="/etc/gconf /etc/terminfo /etc/env.d"

CXXFLAGS="-O2 -march=pentium4 -fomit-frame-pointer -pipe"

DISTDIR="/usr/portage/distfiles"

FEATURES="autoaddcvs autoconfig ccache distlocks sandbox sfperms"

GENTOO_MIRRORS="http://distfiles.gentoo.org http://distro.ibiblio.org/pub/Linux/distributions/gentoo"

LANG="de_DE"

MAKEOPTS="-j2"

PKGDIR="/usr/portage/packages"

PORTAGE_TMPDIR="/var/tmp"

PORTDIR="/usr/portage"

PORTDIR_OVERLAY="/usr/local/portage"

SYNC="rsync://rsync.gentoo.org/gentoo-portage"

USE="x86 X alsa apm arts avi berkdb bitmap-fonts cdr crypt cups curl emboss encode esd fam flac font-server foomaticdb fortran gdbm gpm gtk gtk2 imagemagick imlib ipv6 jpeg kde libg++ libwww mad mikmod motif mozilla moznomail mp3 mpeg mysql ncurses nls oggvorbis opengl oss pam pdflib perl png python qt quicktime readline sdl slang snmp spell ssl svga tcltk tcpd tiff truetype truetype-fonts type1-fonts xml2 xmms xv zlib linguas_de"

Unset:  ASFLAGS, CBUILD, CTARGET, LC_ALL, LDFLAGS

```

sowohl /var als auch /var/tmp sind keine symlinks:

```
$ ls -ld /var /var/tmp

drwxr-xr-x  14 root root 4096 19. Feb 15:08 /var

drwxrwxrwt   9 root root 4096  9. Mär 17:46 /var/tmp

```

----------

## hds

ja, gut, dann liegts am symlink nicht.. was ist mit meiner anderen frage? laeuft der emerge dennoch durch, sprich: wird das paket installiert?

und was passiert eigentlich bei "emerge sync"? bekommst du den fehler dann auch?

//edit: wenn emerge geht, und du lediglich diese errormeldung hast, wuerde ich einfach portage mal neu emergen. zur not python auch noch.Last edited by hds on Fri Mar 11, 2005 4:15 pm; edited 1 time in total

----------

## calvin-gr

das gewünschte paket wird installiert, nur bricht emerge am ende, wie schon gesagt mit dieser meldung ab.

nach emerge sync kommt dieser fehler nicht.

----------

## hds

ok, mach ein "emerge portage", danach ein "emerge metadata".

fehler immer noch da?

//edit: mach auch (just in case) mal ein "env-update; source /etc/profile".. vielleicht liegts auch an was ganz anderem..

und nochwas: kam der fehler schon immer, oder erst seit kurzem (natuerlich nachdem du "ueberhaupt nichts gemacht" hast <g>).

sprich: hast du irgendwas emerged, und DANN trat der fehler auf?

idr kannst du das mittels emerge.log zurueckverfolgen..

----------

## calvin-gr

nach dem ich dies alles durchgeführt habe, besteht der fehler immer noch.

der fehler kommt erst seit einer gewissen zeit (natuerlich nachdem ich "ueberhaupt nichts gemacht" habe <g>).

emerge.log ist dabei nicht sehr aufschlussreich, über den fehler steht da garnichts

----------

## c07

Vielleicht ist was in /var/db/pkg korrupt (was ein ernsthaftes Problem wär) oder auch nur deine world. So du es hast, würd ich das mal mit einem Backup aus der Zeit, bevor dieser Fehler aufgetreten ist, vergleichen, oder sonst so nach Auffälligkeiten überprüfen.

Oder es liegt an /var/cache/edb. Das könnte man probehalber löschen (zumindest das |dep| dadrin). Die Suchfunktion gibt auch noch einige ähnliche Threads her, z.B. den hier.

----------

## calvin-gr

woran kann ich erkennen, dass /var/db/pkg korrupt ist? ein backup habe ich nämlich leider nicht

kann ich /var/cache/edb/dep (bzw. /var/cache/edb) gefahrlos löschen? wozu ist /var/cache/edb/dep (und /var/cache/edb) gut?

----------

## c07

 *calvin-gr wrote:*   

> woran kann ich erkennen, dass /var/db/pkg korrupt ist?

 

Z.B. daran, dass 

```
find /var/db/pkg -mindepth 3 -type d
```

 was findet. Es gibt auch ein paar Bugs zu dem Thema, die allerdings nicht besonders informativ sind.

Steht eigentlich in der Fehlermeldung hinter "Is a directory" kein konkretes Verzeichnis?

 *calvin-gr wrote:*   

> kann ich /var/cache/edb/dep (bzw. /var/cache/edb) gefahrlos löschen?

 

/var/cache/edb/dep ja, der Rest kann teilweise (relativ ungefährliche) Nebenwirkungen haben (z.B. dass der Log-Counter zurückgesetzt wird). Wird von einem "emerge --metadata" wieder erzeugt.

 *calvin-gr wrote:*   

> wozu ist /var/cache/edb/dep (und /var/cache/edb) gut?

 

In dep stehn die extrahierten Metadaten aus den Ebuilds, um schneller Abhängigkeiten u.Ä. berechnen zu können. Bis auf die Overlays ist das aber ziemlich sinnlos, weil ansonsten die selben Informationen auch in $PORTDIR/metadata/cache stehn.

----------

## hds

<duck>revdep</duck>  :Embarassed: 

sprich:"revdep rebuild -p"

spuckt das was aus?

----------

## calvin-gr

/var/db/pkg scheint korrupt zu sein:

```
$ find /var/db/pkg -mindepth 3 -type d

/var/db/pkg/sys-kernel/genkernel-3.1.0k/COUNTER

```

wie soll ich vorgehen? kann ich COUNTER einfach löschen?

revdep-rebuild -p sagt:

```
$ revdep-rebuild -p

Checking reverse dependencies...

Packages containing binaries and libraries broken by any package update,

will be recompiled.

Collecting system binaries and libraries... done.

  (/home/severin/.revdep-rebuild.1_files)

Collecting complete LD_LIBRARY_PATH... done.

  (/home/severin/.revdep-rebuild.2_ldpath)

Checking dynamic linking consistency...

ldd: warning: you do not have execution permission for `/opt/OpenOffice.org/program/python-core-2.2.2/lib/lib-dynload/bsddb.so'

  broken /opt/OpenOffice.org/program/python-core-2.2.2/lib/lib-dynload/bsddb.so (requires libdb-3.1.so)

ldd: warning: you do not have execution permission for `/opt/OpenOffice.org/program/python-core-2.2.2/lib/lib-dynload/mpz.so'

  broken /opt/OpenOffice.org/program/python-core-2.2.2/lib/lib-dynload/mpz.so (requires libgmp.so.3)

ldd: warning: you do not have execution permission for `/opt/OpenOffice.org/program/python-core-2.2.2/lib/lib-dynload/_tkinter.so'

  broken /opt/OpenOffice.org/program/python-core-2.2.2/lib/lib-dynload/_tkinter.so (requires libtk8.3.so libtcl8.3.so)

 done.

  (/home/severin/.revdep-rebuild.3_rebuild)

Assigning files to ebuilds... done.

  (/home/severin/.revdep-rebuild.4_ebuilds)

Evaluating package order... done.

  (/home/severin/.revdep-rebuild.5_order)

All prepared. Starting rebuild...

emerge --oneshot --nodeps -p =app-office/openoffice-bin-1.1.4

These are the packages that I would merge, in order:

Calculating dependencies ...done!

[ebuild   R   ] app-office/openoffice-bin-1.1.4

Now you can remove -p (or --pretend) from arguments and re-run revdep-rebuild.

```

hat das was zu bedeuten?

----------

## mrsteven

Also die Meldungen wegen OpenOffice sind normal, wenn auch etwas nervig, weil er openoffice-bin beim revdep-rebuild immer neu installieren will.

----------

## c07

Was sagt denn das Folgende?

```
(cd /var/db/pkg/sys-kernel/genkernel-3.1.0k && ls -la . COUNTER)
```

Normalerweise sollte COUNTER eine Kopie von /var/cache/edb/counter zum Zeitpunkt des Emergens sein. Der richtige Wert sollte auch als LOG_COUNTER in environment.bz2 stehn.

Ich würd erst mal /var/db/pkg sichern. Wenn das Verzeichnis COUNTER leer ist, ist es wohl am sichersten, es dann zu löschen und als Datei mit dem korrekten Wert zu erzeugen (mit echo -n). Danach würd ich auf jeden Fall genkernel neu emergen (oder unmergen).

Entweder ist das ein Bug in Portage (dafür spricht, dass es mindestens 2 ähnliche Bugreports gibt) oder du hast ein Problem mit deinem Dateisystem. Ich würd vorsichtshalber mal ein fsck (von der Live-CD o.Ä. aus) machen.

----------

## calvin-gr

vielen dank für eure hilfe, jetzt funktioniert es wieder.

ich habe einfach COUNTER gelöscht und eine neue Datei mit dem selben namen und dem inhalt von /var/cache/edb/counter erzeugt.

wozu ist COUNTER eigentlich da?

----------

## c07

Wenn du PORT_LOGDIR gesetzt hast, werden da die Logs mit dem Wert vom Counter nummeriert. Also nichts Kritisches.

----------

## calvin-gr

achso, vielen dank.

----------

