# problema installazione "com_err" [Risolto]

## ckx3009

in seguito a una corruzione del filesystem sull'hard disk, ho avuto alcune perdite tra i files, nulla di apparentemente serio, dato che il sistema parte e tutto il resto.

tuttavia non riesco piu' a riemergere com_err, il quale mi e' necessario perche' a quanto pare si e' leggemente danneggiato e non fa piu' partire qualche applicazione.

il problema riguarda lo spostamento dalla cartella temporanea alla posizione definitiva, per il resto compila perfettamente. 

normalmente uso portage 2.2, ma pensando a un problema di quest'ultimo, ho provato a rifare l'installazione anche con portage 2.1 stabile, il risultato e' lo stesso.

poi pensando a una corruzione di portage, ho anche provato a scompattare lo snapshot di portage stesso, ma visto che non risolveva nulla, ho rimesso il 2.2.

questo e' quello che dice emerge alla fine della compilazione:

```
>>> Completed installing com_err-1.40.9 into /var/tmp/portage/sys-libs/com_err-1.40.9/image/

 * QA Notice: Pre-stripped files found:

 * /var/tmp/portage/sys-libs/com_err-1.40.9/image/lib/libcom_err.so.2.1

strip: /bin/true --strip-unneeded -R .comment

   usr/lib/libcom_err.a

ecompressdir: bzip2 -9 /usr/share/man

>>> Installing sys-libs/com_err-1.40.9

Traceback (most recent call last):

  File "/usr/bin/emerge", line 18, in <module>

    retval = _emerge.emerge_main()

  File "//usr/lib/portage/pym/_emerge/__init__.py", line 14063, in emerge_main

    myopts, myaction, myfiles, spinner)

  File "//usr/lib/portage/pym/_emerge/__init__.py", line 13121, in action_build

    retval = mergetask.merge()

  File "//usr/lib/portage/pym/_emerge/__init__.py", line 9570, in merge

    rval = self._merge()

  File "//usr/lib/portage/pym/_emerge/__init__.py", line 9828, in _merge

    self._main_loop()

  File "//usr/lib/portage/pym/_emerge/__init__.py", line 9960, in _main_loop

    self._poll_loop()

  File "//usr/lib/portage/pym/_emerge/__init__.py", line 8522, in _poll_loop

    handler(f, event)

  File "//usr/lib/portage/pym/_emerge/__init__.py", line 2183, in _output_handler

    self.wait()

  File "//usr/lib/portage/pym/_emerge/__init__.py", line 1637, in wait

    self._wait_hook()

  File "//usr/lib/portage/pym/_emerge/__init__.py", line 1710, in _wait_hook

    self._exit_listener_stack.pop()(self)

  File "//usr/lib/portage/pym/_emerge/__init__.py", line 2907, in _post_phase_exit

    self.wait()

  File "//usr/lib/portage/pym/_emerge/__init__.py", line 1637, in wait

    self._wait_hook()

  File "//usr/lib/portage/pym/_emerge/__init__.py", line 1710, in _wait_hook

    self._exit_listener_stack.pop()(self)

  File "//usr/lib/portage/pym/_emerge/__init__.py", line 1942, in _task_exit_handler

    self.wait()

  File "//usr/lib/portage/pym/_emerge/__init__.py", line 1637, in wait

    self._wait_hook()

  File "//usr/lib/portage/pym/_emerge/__init__.py", line 1710, in _wait_hook

    self._exit_listener_stack.pop()(self)

  File "//usr/lib/portage/pym/_emerge/__init__.py", line 1893, in _default_final_exit

    return self.wait()

  File "//usr/lib/portage/pym/_emerge/__init__.py", line 1637, in wait

    self._wait_hook()

  File "//usr/lib/portage/pym/_emerge/__init__.py", line 1710, in _wait_hook

    self._exit_listener_stack.pop()(self)

  File "//usr/lib/portage/pym/_emerge/__init__.py", line 2545, in _build_exit

    self.wait()

  File "//usr/lib/portage/pym/_emerge/__init__.py", line 1637, in wait

    self._wait_hook()

  File "//usr/lib/portage/pym/_emerge/__init__.py", line 1710, in _wait_hook

    self._exit_listener_stack.pop()(self)

  File "//usr/lib/portage/pym/_emerge/__init__.py", line 3560, in _ebuild_exit

    self.wait()

  File "//usr/lib/portage/pym/_emerge/__init__.py", line 1637, in wait

    self._wait_hook()

  File "//usr/lib/portage/pym/_emerge/__init__.py", line 1710, in _wait_hook

    self._exit_listener_stack.pop()(self)

  File "//usr/lib/portage/pym/_emerge/__init__.py", line 9808, in _build_exit

    self._schedule()

  File "//usr/lib/portage/pym/_emerge/__init__.py", line 8435, in _schedule

    return self._schedule_tasks()

  File "//usr/lib/portage/pym/_emerge/__init__.py", line 9968, in _schedule_tasks

    if q.schedule():

  File "//usr/lib/portage/pym/_emerge/__init__.py", line 8327, in schedule

    task.start()

  File "//usr/lib/portage/pym/_emerge/__init__.py", line 1618, in start

    self._start()

  File "//usr/lib/portage/pym/_emerge/__init__.py", line 3636, in _start

    self.returncode = self.merge.merge()

  File "//usr/lib/portage/pym/_emerge/__init__.py", line 3603, in merge

    retval = self._install_task.install()

  File "//usr/lib/portage/pym/_emerge/__init__.py", line 2629, in install

    rval = merge.execute()

  File "//usr/lib/portage/pym/_emerge/__init__.py", line 2966, in execute

    blockers=self.find_blockers)

  File "//usr/lib/portage/pym/portage/__init__.py", line 5975, in merge

    mydbapi=mydbapi, prev_mtimes=prev_mtimes)

  File "//usr/lib/portage/pym/portage/dbapi/vartree.py", line 3541, in merge

    mydbapi=mydbapi, prev_mtimes=prev_mtimes)

  File "//usr/lib/portage/pym/portage/dbapi/vartree.py", line 3549, in _merge

    cleanup=cleanup, mydbapi=mydbapi, prev_mtimes=prev_mtimes)

  File "//usr/lib/portage/pym/portage/dbapi/vartree.py", line 2818, in treewalk

    retval = self._security_check(others_in_slot)

  File "//usr/lib/portage/pym/portage/dbapi/vartree.py", line 2661, in _security_check

    file_paths.update(dblnk.getcontents())

  File "//usr/lib/portage/pym/portage/dbapi/vartree.py", line 1745, in getcontents

    myc = open(contents_file,"r")

IOError: [Errno 20] Not a directory: '/var/db/pkg/sys-libs/com_err-1.40.9/CONTENTS'

```

ho visto che ci sono 2 bug aperti su un qualcosa che apparentemente assomiglia al mio problema. tuttavia non mi pare che ci sia una soluzione valida per me.

e' molto apprezzato ogni possibile consiglio  :Razz: 

grazie in anticipoLast edited by ckx3009 on Thu Nov 13, 2008 11:05 am; edited 1 time in total

----------

## funkoolow

uhm, com_err non è uno dei due pacchetti in attesa di bugsolving per la faccenda legata all'inclusione in e2fsprogs? non so, magari c'entra qualcosa...

----------

## ckx3009

spero di no, e non dovrebbe dato che ho mascherato i pacchetti che avevano tra le dipendenze la versione successiva alla 1.40.9 che e' quella che ho tentato di rimettere. ho anche provato con la versione 1.40.11 ma da praticamente lo stesso risultato.

----------

## ckx3009

spinto dalla disperazione ho provato anche a disinstallare com_err e questo e' il ( lol ) risultato:

```
# emerge -Ca com_err

>>> These are the packages that would be unmerged:

 sys-libs/com_err

    selected: 1.40.9

   protected: none

     omitted: none

>>> 'Selected' packages are slated for removal.

>>> 'Protected' and 'omitted' packages will not be removed.

Would you like to unmerge these packages? [Yes/No] y

>>> Waiting 5 seconds before starting...

>>> (Control-C to abort)...

>>> Unmerging in: 5 4 3 2 1

>>> Unmerging sys-libs/com_err-1.40.9...

Traceback (most recent call last):

  File "/usr/bin/emerge", line 18, in <module>

    retval = _emerge.emerge_main()

  File "//usr/lib/portage/pym/_emerge/__init__.py", line 14017, in emerge_main

    mtimedb["ldpath"], ordered=ordered):

  File "//usr/lib/portage/pym/_emerge/__init__.py", line 10852, in unmerge

    scheduler=scheduler)

  File "//usr/lib/portage/pym/portage/__init__.py", line 5985, in unmerge

    ldpath_mtimes=ldpath_mtimes)

  File "//usr/lib/portage/pym/portage/dbapi/vartree.py", line 1867, in unmerge

    slot = self.vartree.dbapi.aux_get(self.mycpv, ["SLOT"])[0]

  File "//usr/lib/portage/pym/portage/dbapi/vartree.py", line 1079, in aux_get

    self._aux_get(mycpv, aux_keys, st=mydir_stat)):

  File "//usr/lib/portage/pym/portage/dbapi/vartree.py", line 1104, in _aux_get

    raise KeyError(mycpv)

KeyError: 'sys-libs/com_err-1.40.9'

```

insomma...non si vuole nemmeno disinstallare  :Neutral: 

edit:

ho provato or ora a scaricare lo stage3, lo snapshot di portage, scompattarli in una cartella e chrootare. da li' emerge tutto senza alcun problema.

ho provato anche a emergere l'ultima versione di portage 2.2 come ho sulla gentoo "normale", in quella in chroot, poi ho copiato la /usr/lib/portage della chroot nella "normale" ma non e' cambiato nulla di nulla.

potrei provare a risolvere sovrascrivendo qualche file o cartella? se si, quale o quali?

----------

## djinnZ

python-updater  :Wink: 

----------

## ckx3009

python-updater ha la pretesa di ricompilare com_err come prima cosa.

quindi nulla da fare  :Neutral: 

edit: tra l'altro eix dice che com_err e' installato, ma emerge dice:

[ebuild  N    ] sys-libs/com_err-1.40.9  USE="nls" 0 kB

quindi secondo lui non e' installato. 

-.-*

----------

## djinnZ

eix si basa sulla sua cache ma vista la situazione mi pare che non sia il caso di rigenerarla (rischi che smetta di funzionare).

Mi pare un problema di python che si è sommato al problema di com_err ed ss (non è possibile che python-updater voglia com_err, deve essere la dipendenza di qualche pacchetto parte del python).

Prova se così riesci ad uscire dall'empasse:

se non è installato emergi con -1 ext2libs o come diavolo si chiama (se non erro ha una sua versione dedicata delle librerie in questione), maschera l'installazione di com_err ed ss con package.provided, lancia python-updater e ricavati solo la lista dei pacchetti da ricompilare e prova maulamente.

In alternativa potresti provare a ricavarti com_err da thinderbox o come diavolo si chiama ed installarlo con emerge -K.

Esattamente cosa vorresti ricompilare tra revdep-rebuild e python-updater?

----------

## ckx3009

ora provo con i tuoi suggerimenti.

revdep-rebuild dice che non c'e' nulla da ricompilare.

python-updater invece dice che vuole nell'ordine: com_err, tunepimp, boost e vte

edit:

e2fsprogs-libs (se e' questo quello che dicevi) non si installa per quel famoso problema di dipendenze e blocchi di cui c'e' un post poco piu' in basso. anche dandogli quello che vuole nel package.provided trova delle collisioni nei files.

invece se si tratta solo di e2fsprogs, si installa normalmente.

ora sto rieseguendo python-updater e vedo che pacchetti installa

riedit:

python-updater ha riemerso boost e vte e ci ha messo ss come dipendenza di una delle 2

ho provato a riemergere com_err ma il risultato rimane lo stesso.

----------

## ckx3009

risolto eliminando /var/db/pkg/sys-libs/com_err-1.40.9. com_err non era installato, anche se lui pensava che lo fosse.

----------

