# [SOLVED] [stage3-armeb*2005.1] portage nicht aktualisierbar

## bacuh

Guten morgen!

Ich bin gerade dabei, mir ein Gentoo auf der NSLU2 nach diesem Howto aufzusetzen.

Die Stage ist stage3-armeb-uclibc-softfloat-2005.1 und der Portage-Snapshot von gestern. Habe gestern Abend noch ein emerge --sync angestoßen, um mir dann gleich die aktuellen Pakete für vixie-cron, dropbear und metalog einspielen zu können.

emerge portage sagt aber folgendes:

```

sluggy / # emerge -v --tree --ask portage                                                                

[...]

[blocks B     ] <sys-apps/util-linux-2.13 (is blocking sys-apps/coreutils-6.10-r2)

[blocks B     ] <dev-lang/python-2.3.6-r2 (is blocking app-admin/python-updater-0.5)

[blocks B     ] <sys-apps/portage-2.1.4_rc1 (is blocking app-shells/bash-3.2_p33)

[...]

```

Habe schon jeweils versucht, die kleinste benötigte und in meinem tree vorhanene Version von util-linux, portage und python zu emergen.

Funktioniert aber auch nicht:

```

sluggy / # emerge --tree --ask util-linux                                                                

[...]

[blocks B     ] sys-libs/ss (is blocking sys-libs/e2fsprogs-libs-1.41.3-r1)

[blocks B     ] <sys-fs/e2fsprogs-1.41 (is blocking sys-libs/e2fsprogs-libs-1.41.3-r1)

[blocks B     ] sys-libs/com_err (is blocking sys-libs/e2fsprogs-libs-1.41.3-r1)

[...]

```

```

sluggy / # emerge --tree --ask =python-2.4.4-r14                                                         

[...]

[blocks B     ] <sys-apps/util-linux-2.13 (is blocking sys-apps/coreutils-6.10-r2)

[blocks B     ] <sys-apps/portage-2.1.4_rc1 (is blocking app-shells/bash-3.2_p33)

[blocks B     ] <dev-lang/python-2.3.6-r2 (is blocking app-admin/python-updater-0.5)

[...]

```

usw.

Hat denn irgendwer eine Idee, wie ich hier weiterkommen könnte?

edit: Ich glaube zwar nicht, dass das einen Einfluss hat, aber noch habe ich nicht rebooted und bin in einer chroot-Umgebung.Last edited by bacuh on Fri Jan 30, 2009 11:17 am; edited 1 time in total

----------

## Finswimmer

Damit solltest du util-linux installieren können:

https://forums.gentoo.org/viewtopic-t-712898-highlight-utillinux.html

Ich hoffe, so kommst du raus aus der Kiste  :Smile: 

Evtl. mal sonst versuchen die Pakete (fast) ohne USE-Flag zu bauen.

Tobi

----------

## l3u

Ich hab vor ein paar Monaten Gentoo auf einer NSLU2 installiert. Leider sind sowohl das Howto, als auch die Stages veraltet.

Versuch einfach mal, die Blocker zu deinstallieren (sofern es nicht gerade Python ist ;-), ansonsten mit --nodeps --oneshot drüberbügeln. Frag mich nicht wie, aber es hat irgendwann geklappt, mittlerweile ist das Ding auf dem aktuellen Stand. Auch, wenn ich ein paar ebuilds per Hand patchen mußte (steht alles im Bugzilla).

Viel Glück & Spaß :-)

----------

## bacuh

 *l3u wrote:*   

> Versuch einfach mal, die Blocker zu deinstallieren (sofern es nicht gerade Python ist , ansonsten mit --nodeps --oneshot drüberbügeln.

 

Also, ich hoffe mal, das kann ich mir sparen.  :Sad: 

Momentan bügel ich noch den https://bugs.gentoo.org/show_bug.cgi?id=253914]Bug von util-linux aus. Ich hoffe, danach funktioniert das.

 *l3u wrote:*   

> Viel Glück & Spaß 

 

Spaß ist hier nicht in Sicht, bevor distcc läuft.  :Wink: 

BTW: Bringt MAKEOPTS="-j2" bei diesem System eigentlich Performance oder fährt mensch bei so einer schwachen Maschine besser ohne?

----------

## bacuh

Na toll.

Jetzt habe ich uclibc emerged und dann passiert das:

```
[...]

>>> /usr/bin/ldd

>>> /usr/bin/getent

--- /sbin/

>>> /sbin/ldconfig

>>> /lib/ld-uClibc.so.0 -> ld-uClibc-0.9.28.so

[uclibc-0.9.28.3] bash: can't resolve symbol '__uClibc_start_main'

!!! FAILED postinst: 1

```

Und egal, womit ich die bash füttere:

```
sluggy@portage# ls

ls: can't resolve symbol '__uClibc_start_main'

sluggy@portage # 
```

edit: Ist nicht ganz egal. cd und pwd funktionieren zum Beispiel.

Was zum Teufel ist das und vor allem: Was mache ich jetzt?

----------

## Finswimmer

Versuchen, die bash neu zu installieren, sodass sie gegen die neue UcLib gelinkt wird.

Tobi

----------

## bacuh

Emerge gehört aber auch zu den Dingen, die nicht funktionieren.

Gibt's eine andere Möglichkeit?

Die neue uclib ist übrigens nur in einem Slot.

----------

## bacuh

Ist es denn sicher, dass das Problem bei der bash liegt? Versuche ich nämlich, mich in einer zweiten ssh-Session in das Gentoo zu chrooten, dann kommt die selbe Meldung. Selbst wenn ich es mit busybox versuche:

```

root@sluggy:~$ chroot /mnt/gentoo/ /bin/busybox 

/bin/busybox: can't resolve symbol '__uClibc_start_main'

```

Wie gesagt, ich bin momentan nur per chroot im Gentoo, habe also "außen" ein funktionierendes System nur eben ohne portage. Lässt sich denn die bash auch händisch (und von außen) gegen die neue uclib linken bzw compilieren?

Ist mir gerade aufgefallen:

```

sluggy portage # ldconfig -p

[...]

   libblkid.so.1 (libc0) => /lib/libblkid.so.1

   libblkid.so (libc0) => /lib/libblkid.so

   libbfd.so (libc0) => /usr/armeb-softfloat-linux-uclibc/lib/libbfd.so

   libbfd-2.16.so (libc0) => /usr/armeb-softfloat-linux-uclibc/lib/libbfd-2.16.so

   ld-uClibc.so.0 (ELF) => /lib/ld-uClibc.so.0

```

Ich weiß ja nicht, was - und ob überhaupt - das zu bedeuten hat, aber das "(ELF)" sieht schon komisch aus, da es das einzige ist.

----------

## l3u

Ich würd so weit gehen, nochmal von Vorne anzufangen. Kannst ja den Inhalt des Datenträgers, auf dem gentzoo derzeit ist, vorsichtshalber mal sichern.

Also wenn du's hinkriegst, ne Cross-Toolchain für die NSLU2 zu bauen, dann sag mir, wie. Ich hab's bis heute nicht geschafft.

----------

## bacuh

Nochmal anfangen wollte ich sowieso. Dachte mir nur, ich warte noch ein bisschen, ob nicht vielleicht doch wer nen Lösungsansatz für mich hat. Backup mach ich mir keins, is ja eh kaputt, aber sobald ich wieder vor der uclibc stehe auf jeden Fall.  :Wink: 

Was meinst du mit Cross-Toolchain? Etwa weil ich distcc nutzen will? Das lässt doch vermuten, dass das geht, oder?

 *Quote:*   

> Note: The above is certainly needed when you want to use distcc to cross-compile on another host.

 

Übrigens: Ich hatte "-mtune=xscale" in den CFLAGS. Kann das damit zu tun haben?

----------

## bacuh

Neuer Versuch > Neue Probleme.

Diesmal habe ich es nicht mit dem portage-snapshot gemacht, sondern mein frisches /usr/portage vom Desktop rüberkopiert.

Jetzt habe ich dieses Promlem mit m4.

Also:

```

# emerge -a1 portage

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

Calculating dependencies  /usr/portage/eclass/python.eclass: line 177: syntax error near unexpected token `"${myroot}/${f}"'

/usr/portage/eclass/python.eclass: line 177: `      [[ -f "${myroot}/${f}" ]] && myfiles+=("${myroot}/${f}")'

!!! ERROR: sys-apps/portage-2.1.6.7 failed.

!!! Function inherit, Line 1444, Exitcode 1

!!! died sourcing /usr/portage/eclass/python.eclass in inherit()

!!! If you need support, post the topmost build error, NOT this status message.

aux_get(): (0) Error in sys-apps/portage-2.1.6.7 ebuild. (1)

               Check for syntax error or corruption in the ebuild. (--debug)

[usw. für alle anderen portage-ebuilds]

```

Ich vermute mal, dass das portage aus 2005.1 zu alt ist, um eine der Versionen in meinem tree zu installieren.

Ist das richtig?

Und wenn ja: Reicht es, ältere portage-ebuilds nach /usr/portage/sys-apps/ zu kopieren?

----------

## bacuh

Unglaublich! Ich hab's geschafft. :D

Damit Andere nicht mehr so lange rumprobieren müssen:

Ich bin Diesem Howto gefolgt. Vor "Installing the relevant system tools" gabs aber ein "emerge --sync". Das Problem ist jetzt, dass die Portage-Version aus der stage3 von 2005.1 zu alt ist, um sich selbst updaten zu können. So habe ich das Problem gelöst:

1) Das machen.

mit-krb5 lässt sich noch nicht installieren. Kommt später.

2) Soweit ich mich erinnere, wollte die aktuelle bash-Version nicht, also:

```
# emerge =bash-3.2_p17-r1
```

3) Dann die Packete, die "emerge -tav python" ausgibt, von unten her händisch installieren, bis nichts mehr geht. Dann müsste das ungefähr so aussehen:

```

# emerge -ta python                                                                                        

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

Calculating dependencies ...done!

[blocks B     ] <sys-apps/util-linux-2.13 (is blocking sys-apps/coreutils-6.10-r2)

[blocks B     ] <dev-lang/python-2.3.6-r2 (is blocking app-admin/python-updater-0.5)

[ebuild     U ] sys-apps/coreutils-6.10-r2 [5.2.1-r6]

[ebuild  N    ] app-admin/python-updater-0.5

[ebuild     U ]  sys-apps/portage-2.1.6.4 [2.0.51.22-r2]

[ebuild  NS   ] dev-lang/python-2.5.2-r7

[ebuild  NS   ]  sys-devel/automake-1.10.2

[ebuild     U ]  sys-devel/autoconf-2.63 [2.59-r6]

[ebuild     U ]   sys-devel/m4-1.4.11 [1.4.3]

```

Wenn irgendwas nicht geht, dann einfach so lange versuchen, eine frühere Version zu installieren bis es geht.

4) Da meine Version von Portage noch nicht mit einem lzma-Archiv klarkam, musste ich nachhelfen:

```

# emerge =m4-1.4.11

[...]

unpack m4-1.4.11.tar.lzma: file format not recognized. Ignoring.

>>> Source unpacked.

!!! ERROR: sys-devel/m4-1.4.11 failed.

[...]

# tar --lzma -xf /usr/portage/distfiles/m4-1.4.11.tar.lzma -C /var/tmp/portage/m4-1.4.11/work/

# ebuild /usr/portage/sys-devel/m4/m4-1.4.11.ebuild compile

# ebuild /usr/portage/sys-devel/m4/m4-1.4.11.ebuild install

# ebuild /usr/portage/sys-devel/m4/m4-1.4.11.ebuild qmerge

```

5)

```

# emerge mit-krb5

```

Sollte folgendes passieren

```

[...]

/usr/portage/distfiles/./krb5-1.6.3.tar.gz: Cannot open: No such file or directory

[...]

```

dann

```

# cd /usr/portage/distfiles

# tar xf krb5-1.6.3-signed.tar

# emerge mit-krb5

```

6) Nun ist python dran:

```

# emerge -1 --nodeps python

# python-updater

```

Python-updater wird es nicht alleine schaffen, deswegen müssen die entsprechenden Packete von Hand emerged werden.

7) Endlich:

Zweimal das Folgende ausführen.

```

# emerge -1 --nodeps portage

```

Dabei werden wohl diese beiden Fehler auftreten, macht aber nichts. Das wird später behoben.

```

[...]

>>> /usr/lib/portage/pym/output.py -> portage_compat_namespace.py

>>> /usr/lib/portage/pym/portage_checksum.py -> portage_compat_namespace.py

 * 

 * ERROR: sys-apps/portage-2.1.6.4 failed.

 * Call stack:

 *               ebuild.sh, line   49:  Called pkg_postinst

 *             environment, line 2391:  Called python_mod_optimize '/usr/lib/portage/pym'

 *             environment, line 2630:  Called diefunc 'python_mod_optimize' '2630' '0' 'python_mod_optimize should only be run in pkg_postinst()'

 *   isolated-functions.sh, line  147:  Called die

 * The specific snippet of code:

 *      die "${@}"

 *  The die message:

 *   python_mod_optimize 2630 0 python_mod_optimize should only be run in pkg_postinst()

 * 

 * If you need support, post the topmost build error, and the call stack if relevant.

 * The ebuild environment file is located at '/var/tmp/portage/portage-2.1.6.4/temp/environment'.

 * 

!!! FAILED postinst: 1

```

Und beim zweiten Mal (--verbose):

```

[...]

--- replaced obj /etc/dispatch-conf.conf

--- replaced dir /etc

 * Cleaning orphaned Python bytecode from /usr/lib/portage/pym ..

>>> Original instance of package unmerged safely.

 * Byte compiling python modules for python-2.5 .. ...                            [ ok ]

 * 

 * For help with using portage please consult the Gentoo Handbook

 * at http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=3

 * 

Segmentation fault

```

8)

uclibc updaten, da sich util-linux sonst nicht updaten lässt:

Jetzt sollte erstmal ein Backup gezogen werden. Die uclibc hat mir ein paar mal das System zerschossen.

Um zu verhindern, dass das passiert, habe ich alle Zeilen ab "pkg_postinst()" im uclibc-ebuild auskommentiert. Und dann:

```

# echo "sys-libs/uclibc uclibc-compat" >> /etc/portage/package.use

# echo "UCLIBC_CPU="ARM_XSCALE"" >> /etc/make.conf

# ebuild /usr/portage/sys-libs/uclibc/uclibc-0.9.28.3-r7.ebuild digest

# emerge =uclibc-0.9.28.3-r7

```

9) util-linux updaten

Dafür habe ich util-linux-2.14-uclibc.patch gebraucht.

```

# emerge util-linux

```

10) Und jetzt noch die nodeps updaten

Mein lzma hatte ein Segmentation Fault und zwischen der alten debianutils und coreutils gabs eine File-Collision, daher:

```

# emerge lzma-utils

# emerge --unmerge debianutils && emerge debianutils

# emerge python portage

```

Damit ist portage up-2-date und es kann wieder mit Installing the relevant system tools weitergehen.

Hoffe, das wird irgendwem helfen, von der uralten stage3 auf ein aktuelles System zu kommen.Last edited by bacuh on Wed Jan 28, 2009 2:48 pm; edited 8 times in total

----------

## bacuh

Damit mir das mit der uclibc vielleicht nicht nochmal passiert, versuche ich das jetzt lieber mal mit 0.9.30, auch wenn die unstable ist.

```

 * You really should consider setting UCLIBC_CPU

 * Otherwise, the build will be generic (read: slow).

 * Available CPU options:

GENERIC_ARM ARM610 ARM710 ARM7TDMI ARM720T ARM920T ARM922T ARM926T ARM10T ARM1136JF_S ARM1176JZ_S ARM1176JZF_S ARM_SA110 ARM_SA1100 ARM_XSCALE ARM_IWMMXT

```

Hier ist wohl ARM_XSCALE richtig. Die Frage ist nur, wo setzte ich die Variable. In /etc/make.conf oder im makefile von uclibc oder wo ganz anders?

Und:

```

 * Doing a scanelf in paths for bins containing the atexit symbol

 * You need to remerge the packages that contain the following files before you can remerge uclibc-0.9.30 without USE=uclibc-compat enabled.

[...]

```

Soll das denn jetzt nur heißen, dass ich USE="uclibc-compat" setzen sollte?

EDIT: Hat sich erledigt. UCLIBC_CPU="ARM_XSCALE" kommt nach /etc/make.conf und bei uclibc-compat gehts um Rückwärtskompatibilität.

----------

## bacuh

Also, uclibc macht - egal bei welcher Version - immer den gleichen Mist.

Das Problem ist allerdings anscheinend nicht die neue Version, sondern tritt erst bei der Deinstallation der Alten auf.

Hat vielleicht irgendwer noch eine Idee, was sich hier tun ließe oder ist irgnedwem schonmal ein solches Problem über den Weg gelaufen?

----------

## Max Steel

Zuerst uclibc installieren, dann alles gegen die neue kompilieren und erst im Anschluss die alte uclibc löschen, genauso wie mit glibc.

Sonst gibt es recht schnell Probleme.

----------

## bacuh

Ne, musste ich jetzt gar nicht.

Habe jetzt einfach mal pkg_postinst() im ebuild der uclibc auskommentiert und das Ding lief ohne Probleme durch.

Mal sehen, ob sich jetzt auch util-linux bauen lässt.

----------

## Max Steel

pkg_postinst? Das ist doch um das fertigcompilierte üauf System zu schreiben..,. ach ne falls es im Ebuild keine gibt wird ja eine Standard-routine genutzt.

----------

## bacuh

Das sorgt doch nicht dafür, dass die Dateien aus /tmp ins System geschrieben werden?

```

#pkg_postinst() {

#   [[ ${CTARGET} != ${CHOST} ]] && return 0

#   [[ ${CHOST} != *-uclibc* ]] && return 0

#

#   if [[ ! -e ${ROOT}/etc/TZ ]] ; then

#      ewarn "Please remember to set your timezone in /etc/TZ"

#      [[ ! -d ${ROOT}/etc ]] && mkdir -p "${ROOT}"/etc

#      echo "UTC" > "${ROOT}"/etc/TZ

#   fi

#

#   if [[ ${ROOT} == "/" ]] ; then

#      # update cache before reloading init

#      /sbin/ldconfig

#      # reload init ...

#      [[ -x /sbin/telinit ]] && /sbin/telinit U &> /dev/null

#   fi

#}

```

Zumindest liegt unter /lib jetzt die aktuelle uclibc.

----------

## Max Steel

Hmm, nicht? Ich dachte das sorgt dafür das die Dateien aus /var/tmp/portage/<cat>/<pack>/image aufs System, ${ROOT} um genau zu sein, geschrieben werden.

----------

## firefly

 *Max Steel wrote:*   

> Hmm, nicht? Ich dachte das sorgt dafür das die Dateien aus /var/tmp/portage/<cat>/<pack>/image aufs System, ${ROOT} um genau zu sein, geschrieben werden.

 

nein pkg_postinst ist ein hook, welches nach der Installation der dateien inst live system kopiert wurden  :Wink: 

Das kopieren der Dateien vom portage-temp verzeichnis ins live system kannst du nicht beeinflussen, nur welche Dateien ins image verzeichnis landen sollen kann ein ebuild über die pkg_install methode beeinflussen.

----------

## bacuh

So, damit ist das Problem gelöst. Vielleicht hilft der Thread ja irgendwem, das Selbe zu schaffen.

Danke an alle, die geholfen haben.

----------

