# Errno 22 Invalid argument

## musv

In letzter Zeit hab ich sowohl auf meinem Notebook als auch auf meinem Desktoprechner (beide x86, einer PentiumIII, der andere AthlonXP) diverse Probleme, gewisse Sachen zu compilieren. 

Bei GoogleEarth sieht das z.B. so aus:

```

 emerge -u googleearth

Calculating dependencies... done!

>>> Verifying ebuild Manifests...

>>> Emerging (1 of 1) x11-misc/googleearth-4.2.198.2451 to /

 * GoogleEarthLinux.bin RMD160 ;-) ...                                                                                                                                                                                                                             [ ok ]

 * GoogleEarthLinux.bin SHA1 ;-) ...                                                                                                                                                                                                                               [ ok ]

 * GoogleEarthLinux.bin SHA256 ;-) ...                                                                                                                                                                                                                             [ ok ]

 * GoogleEarthLinux.bin size ;-) ...                                                                                                                                                                                                                               [ ok ]

 * checking ebuild checksums ;-) ...                                                                                                                                                                                                                               [ ok ]

 * checking auxfile checksums ;-) ...                                                                                                                                                                                                                              [ ok ]

 * checking miscfile checksums ;-) ...                                                                                                                                                                                                                             [ ok ]

 * checking GoogleEarthLinux.bin ;-) ...                                                                                                                                                                                                                           [ ok ]

>>> Unpacking source...

>>> Unpacking GoogleEarthLinux.bin to /var/tmp/portage/x11-misc/googleearth-4.2.198.2451/work

2586+1 Datensätze ein

22502+1 Datensätze aus

23042409 Bytes (23 MB) kopiert, 12,0303 s, 1,9 MB/s

bzip2: (stdin): trailing garbage after EOF ignored

>>> Source unpacked.

>>> Compiling source in /var/tmp/portage/x11-misc/googleearth-4.2.198.2451/work ...

>>> Source compiled.

>>> Test phase [not enabled]: x11-misc/googleearth-4.2.198.2451

>>> Install googleearth-4.2.198.2451 into /var/tmp/portage/x11-misc/googleearth-4.2.198.2451/image/ category x11-misc

Installing mimetypes...

Installing desktop menu entries...

Installing desktop icon...

 * Applying mime-magic.patch ...                                                                                                                                                                                                                                   [ ok ]

>>> Completed installing googleearth-4.2.198.2451 into /var/tmp/portage/x11-misc/googleearth-4.2.198.2451/image/

* checking 1691 files for package collisions

1000 files checked ...

 * This package will overwrite one or more files that may belong to other

 * packages (see list below). Add "collision-protect" to FEATURES in

 * make.conf if you would like the merge to abort in cases like this. You

 * can use a command such as `portageq owners / <filename>` to identify

 * the installed package that owns a file. If portageq reports that only

 * one package owns a file then do NOT file a bug report. A bug report is

 * only useful if it identifies at least two or more packages that are

 * known to install the same file(s). If a collision occurs and you can

 * not explain where the file came from then you should simply ignore the

 * collision since there is not enough information to determine if a real

 * problem exists. Please do NOT file a bug report at

 * http://bugs.gentoo.org unless you report exactly which two packages

 * install the same file(s). Once again, please do NOT file a bug report

 * unless you have completely understood the above message.

 * 

 * Detected file collision(s):

 * 

 *      /opt/googleearth/libevllpro.so

 *      /opt/googleearth/lib *      /opt/googleearth/lang/cs.qm

 *      /opt/googleearth/lang/ko.qm

 *      /opt/googleearth/lang/nl.qm

 *      /opt/googleearth/lang/pl.qm

 *      /opt/googleearth/lang/pt-BR.qm

 *      /opt/googleearth/lang/pt.qm

 *      /opt/googleearth/lang/qt_zh-Hant.qm

 *      /opt/googleearth/lang/ru.qm

 *      /opt/googleearth/lang/zh-Hant.qm

>>> Merging x11-misc/googleearth-4.2.198.2451 to /

--- /opt/

--- /opt/googleearth/

>>> /opt/googleearth/ImporterUISettings.ini

>>> /opt/googleearth/PCOptimizations.ini

>>> /opt/googleearth/drivers.ini

>>> /opt/googleearth/googleearth

>>> /opt/googleearth/googleearth-bin

--- /opt/googleearth/kvw/

>>> /opt/googleearth/kvw/default_lt.kvw

--- /opt/googleearth/lang/

>>> /opt/googleearth/lang/cs.qm

>>> /opt/googleearth/lang/de.qm

>>> /opt/googleearth/lang/en.qm

>>> /opt/googleearth/lang/es.qm

>>> /opt/googleearth/lang/fr.qm

>>> /opt/googleearth/lang/it.qm

>>> /opt/googleearth/lang/ja.qm

>>> /opt/googleearth/lang/ko.qm

>>> /opt/googleearth/lang/nl.qm

>>> /opt/googleearth/lang/pl.qm

>>> /opt/googleearth/lang/pt-BR.qm

>>> /opt/googleearth/lang/pt.qm

>>> /opt/googleearth/lang/qt_de.qm

>>> /opt/googleearth/lang/qt_en.qm

>>> /opt/googleearth/lang/qt_es.qm

>>> /opt/googleearth/lang/qt_fr.qm

>>> /opt/googleearth/lang/qt_it.qm

>>> /opt/googleearth/lang/qt_ja.qm

>>> /opt/googleearth/lang/qt_pt-br.qm

>>> /opt/googleearth/lang/qt_zh-Hant.qm

>>> /opt/googleearth/lang/ru.qm

>>> /opt/googleearth/lang/zh-Hant.qm

>>> /opt/googleearth/libIGAttrs.so

>>> /opt/googleearth/libIGCollision.so

>>> /opt/googleearth/libIGCore.so

>>> /opt/googleearth/libIGDisplay.so

>>> /opt/googleearth/libIGExportCommon.so

>>> /opt/googleearth/libIGGfx.so

>>> /opt/googleearth/libIGGui.so

>>> /opt/googleearth/libIGMath.so

>>> /opt/googleearth/libIGOpt.so

>>> /opt/googleearth/libIGSg.so

>>> /opt/googleearth/libIGUtils.so

>>> /opt/googleearth/libalchemyext.so

>>> /opt/googleearth/libauth.so

>>> /opt/googleearth/libbase.so

>>> /opt/googleearth/libbasicIngest.so

>>> /opt/googleearth/libcollada.so

>>> /opt/googleearth/libcommon.so

>>> /opt/googleearth/libcomponent.so

>>> /opt/googleearth/libevll.so

>>> /opt/googleearth/libevllpro.so

>>> /opt/googleearth/libflightsim.so

>>> /opt/googleearth/libframework.so

>>> /opt/googleearth/libfusion.so

>>> /opt/googleearth/libgeobase.so

>>> /opt/googleearth/libgoogleearth.so

Traceback (most recent call last):

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

    retval = emerge_main()

  File "/usr/bin/emerge", line 6565, in emerge_main

    myopts, myaction, myfiles, spinner)

  File "/usr/bin/emerge", line 6024, in action_build

    retval = mergetask.merge(pkglist, favorites, mtimedb)

  File "/usr/bin/emerge", line 3869, in merge

    prev_mtimes=ldpath_mtimes)

  File "/usr/lib/portage/pym/portage.py", line 4125, in doebuild

    vartree=vartree, prev_mtimes=prev_mtimes)

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

    mydbapi=mydbapi, prev_mtimes=prev_mtimes)

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

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

  File "/usr/lib/portage/pym/portage.py", line 8177, in treewalk

    if self.mergeme(srcroot,destroot,outfile,secondhand,"",cfgfiledict,mymtime):

  File "/usr/lib/portage/pym/portage.py", line 8461, in mergeme

    join(offset, x), cfgfiledict, thismtime):

  File "/usr/lib/portage/pym/portage.py", line 8461, in mergeme

    join(offset, x), cfgfiledict, thismtime): flightsim.so

  File "/usr/lib/portage/pym/portage.py", line 8465, in mergeme

    mymd5=portage_checksum.perform_md5(mysrc,calc_prelink=1)

  File "/usr/lib/portage/pym/portage_checksum.py", line 114, in perform_md5

    return perform_checksum(x, "MD5", calc_prelink)[0]

  File "/usr/lib/portage/pym/portage_checksum.py", line 225, in perform_checksum

    myhash, mysize = hashfunc_map[hashname](myfilename)

  File "/usr/lib/portage/pym/portage_checksum.py", line 91, in md5hash

    return fchksum.fmd5t(filename)

IOError: [Errno 22] Invalid argument: '/var/tmp/portage/x11-misc/googleearth-4.2.198.2451/image/opt/googleearth/libgooglesearch.so'

```

Selbiges Problem kommt auch bei python, vice, den win32codecs, sqlite und diversen anderen Paketen. Beim KDE-Update am Wochenende von 3.5.7 auf 3.5.8 lief eigentlich alles durch bis auf kdevelop. Ist also nicht genau spezifizierbar, warum manche Pakete abbrechen und manche durchlaufen. Merkwürdig ist ja auch, daß die Pakete erst beim Installieren scheitern. 

Bisherige Korrekturversuche:

Python neu mergen: Klappt nicht, da Fehler siehe oben.

python-updater: meint, daß alles in Ordnung ist

gentoolkit neu gemerged: Bringt keine Veränderung

portage neu gemerged: Bringt ebenfalls keine Veränderung

revdep-rebuild: Meint auch, alles sei ok.

Hatte dann irgendwo hier im Forum gelesen, daß jemand anderes ein ähnliches Problem hatte. Der sollte mal das Dateisystem checken. Das ist ok bei mir. Außerdem treten die Fehler auf beiden Rechnern bei denselben Paketen auf.

----------

## AmonAmarth

öhm. schuß ins blaue: festplatte voll?!?!

ansonsten bin ich auch gerate ratlos...

----------

## musv

```
 df -h

Dateisystem          Größe Benut  Verf Ben% Eingehängt auf

/dev/sda3              45G   26G   20G  57% /

```

Daran kann's nicht liegen.

----------

## Inte

Vielleicht sind bei irgendwelchen abgebrochenen Deinstallationen (emerge -C) Dateien übrig geblieben.

Das portage feature "collision protect" verhindert das Überschreiben von bereits vorhandenen Dateien, die nicht zu diesem ebuild gehören.

1. Prüfe, ob die Dateien zu mehr als einem Paket gehören mit: equery b DATEINAME

2. Wenn die Datei nur zu einem Paket gehört, dann lösch sie einfach.

3. mach solange bei 1. weiter, bis keine Dateien zu mehr Installation verhindern

Ausnahme: Falls eine Datei zu mehr als einem ebuild gehört, dann schreib 'nen detailierten Bugreport. ABER nur dann, wenn Du SICHER weisst, welche beiden ebuild daran Schuld sind:

```
 * A bug report is

 * only useful if it identifies at least two or more packages that are

 * known to install the same file(s). If a collision occurs and you can

 * not explain where the file came from then you should simply ignore the

 * collision since there is not enough information to determine if a real

 * problem exists. Please do NOT file a bug report at

 * http://bugs.gentoo.org unless you report exactly which two packages

 * install the same file(s). Once again, please do NOT file a bug report

 * unless you have completely understood the above message.
```

Falls Dir das zu mühsam ist, dann entfern einfach "collision protect" in der /etc/make.conf aus den FEATURES. Dann ignoriert portage bereits vorhandene Dateien und überschreibt diese.

Oder aktivier es nur für den einen emerge-Vorgang: $ FEATURES="-collision-protect" emerge googleearth

EDIT: blasphemisches Zeug entfernt.  :Wink: 

----------

## Necoro

@Inte: wie du an seinem Code siehst, hat er "collision-protect" NICHT aktiviert  :Smile:  (da es weiter emerged und nur die Fehlermeldung druckt) ... das eigentliche problem ist das unten

----------

## musv

 *Necoro wrote:*   

> @Inte: wie du an seinem Code siehst, hat er "collision-protect" NICHT aktiviert  

 

Genauso ist es. Die Warnmeldung mit "collision-protect" taucht übrigens auch erst seit ein paar Wochen auf. Davor hab ich davon noch nie was mitbekommen. Warum sollte ich auch alte Dateien behalten wollen, wenn ich ein Update ausführ?

----------

## Inte

Ohh man ... wieder zu lange an der Kiste gesessen, danke Necoro  :Embarassed: 

 *musv wrote:*   

> Warum sollte ich auch alte Dateien behalten wollen, wenn ich ein Update ausführ?

 Bei 'nem Update überschreiben ist eine Sache. Die collision-Meldung kommt ja, weil angeblich einem Paket (ungleich dem, das gerade installiert wird) diese Datei gehören soll. Irgendwas ist inkonsistent. Einen Zusammenhang zu Deinem ursprünglichen Fehler kann ich dennoch nicht erkennen. (Auch wenn ich das vorhin so formuliert und gemeint habe)  :Wink: 

----------

