# Selbst bei glibc Update abgebrochen -> nix geht mehr

## Finswimmer

Hi!

Ich habe meinen Server upgedatet.

Da er dann 350 Locales bauen wollte, habe ich abgebrochen, die locales.gen verändert, dann über ebuild .... merge fortgesetzt.

Leider kommt nun immer:

```
-- !empty dir /etc

[Errno 2] No such file or directory:

   /bin/bash -c /usr/lib/portage/bin/ebuild.sh postrm

!!! FAILED postrm: 1

server ~ # ebuild /usr/portage/sys-libs/glibc/glibc-2.4-r3.ebuild install

-bash: /usr/sbin/ebuild: /usr/bin/python: bad interpreter: No such file or directory

server ~ # emerge --help

-bash: /usr/bin/emerge: /usr/bin/python: bad interpreter: No such file or directory

server ~ # nano

-bash: /usr/bin/nano: No such file or directory

server ~ # source

-bash: source: filename argument required

source: usage: source filename [arguments]

server ~ # source /etc/portage/

server ~ # source /etc/profile

-bash: /bin/grep: No such file or directory

root@server ~ # source /etc/profile

-bash: /bin/grep: No such file or directory

root@server ~ # emerge

```

Habe auf meinem anderen Rechner schon ne glibc (Binärpaket) gebaut, und auf den PC kopiert...

Kann ich nun, ohne Neustart, die glibc dort wieder entpacken?

Danke

Tobi

----------

## Anarcho

Hast du etwa FEATURES=-sandbox gesetzt?

Normalerweise kannst du jeden merge problemlos abbrechen ohne Probleme zu bekommen.

Und ja, du kannst das einfach im Betrieb entpacken und solltest es dringend vor dem Neustart machen! Aber es kann ja sein das tar auch nicht mehr funktioniert. In dem Fall solltest du dir ein static tar runterladen (und ein static bzip2...)

----------

## .maverick

Das kannst du dir auch selbst bauen:

```
USE="static bzip2" emerge -B tar
```

----------

## Finswimmer

Hi!

Wie denn? 

Kein Kommando geht mehr....

Wo bekomme ich denn ne stable tar Version her?

Evtl kann ich es über Netzwerk einspielen.

Tobi

----------

## Finswimmer

 *.maverick wrote:*   

> Das kannst du dir auch selbst bauen:
> 
> ```
> USE="static bzip2" emerge -B tar
> ```
> ...

 

Danke, ich teste es mal

Tobi

----------

## Finswimmer

so nun geht vieles wieder, aber:

```
server ~ # emerge

Illegal instruction

```

Ich werd dann wohl noch nen static portage bauen, den dann verwenden, und dann glibc neu bauen...

EDIT: Geht nicht, Fehler bleibt bestehen

Tobi

----------

## beejay

 *Finswimmer wrote:*   

> so nun geht vieles wieder, aber:
> 
> ```
> server ~ # emerge
> 
> ...

 

Besteht unter Umständen die Möglichkeit defekten Arbeitsspeichers?

Wie sagte damals schon Dragoslach Stepanowitz: "Is der Speicher recht verbooche, komme vom Kombjuder nurnoch Klooche." (oder so ähnlich)

----------

## Finswimmer

Ich glaube, die glibc, die ich von meinem Rechner habe, kommt nicht mit emerge zurecht.

Es sind unterschiedliche CFLAGS...

Kann ich irgendwie meine glibc mit den gleichen CFLAGS bauen, wie von meinem Server?

server stage # grep cflags /etc/make.conf

CFLAGS="-O2 -march=athlon"

CXXFLAGS="${CFLAGS}"

[17:27:05]|[tobi@tobi-rechner]|~$grep cflags /etc/make.conf

# For optimal performance, enable a CFLAGS setting appropriate for your CPU

#CFLAGS="-mcpu=athlon-xp -O3 -pipe"

#CFLAGS="-O3 -mtune=athlon-xp -Wl"

CFLAGS="-march=athlon-xp -O2 -pipe -fomit-frame-pointer"

Tobi

----------

## Anarcho

make.conf ändern

emerge --buildpkgonly glibc

make.conf wieder zurück ändern

----------

## Finswimmer

Bin mitten dabei.  :Smile: 

Die Idee hatte ich kurz vor dir  :Wink: 

Hoffentlich gehts dann...

Tobi

----------

## Finswimmer

So...Alles geschafft, aber wie kam es zu dem Problem?

```
server ~ # emerge --info

Portage 2.1.1_rc1-r2 (default-linux/x86/2006.1/desktop, gcc-4.1.1, glibc-2.4-r3, 2.6.17-gentoo-r4 i686)

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

System uname: 2.6.17-gentoo-r4 i686 AMD Athlon(tm) Processor

Gentoo Base System version 1.12.4

Last Sync: Thu, 31 Aug 2006 07:00:01 +0000

distcc 2.18.3 i686-pc-linux-gnu (protocols 1 and 2) (default port 3632) [disabled]

app-admin/eselect-compiler: [Not Present]

dev-lang/python:     2.4.3-r1

dev-python/pycrypto: 2.0.1-r5

dev-util/ccache:     [Not Present]

dev-util/confcache:  [Not Present]

sys-apps/sandbox:    1.2.17

sys-devel/autoconf:  2.13, 2.59-r7

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

sys-devel/binutils:  2.16.1-r3

sys-devel/gcc-config: 1.3.13-r3

sys-devel/libtool:   1.5.22

virtual/os-headers:  2.6.11-r2

ACCEPT_KEYWORDS="x86"

AUTOCLEAN="yes"

CBUILD="i686-pc-linux-gnu"

CFLAGS="-O2 -march=athlon"

CHOST="i686-pc-linux-gnu"

CONFIG_PROTECT="/etc"

CONFIG_PROTECT_MASK="/etc/env.d /etc/gconf /etc/revdep-rebuild /etc/terminfo"

CXXFLAGS="-O2 -march=athlon"

DISTDIR="/usr/portage/distfiles"

FEATURES="autoconfig distlocks metadata-transfer parallel-fetch sandbox sfperms strict"

GENTOO_MIRRORS="http://www.gigaload.org/gentoo.org/ ftp://ftp-stud.fht-esslingen.de/pub/Mirrors/gentoo/  http://gd.tuwien.ac.at/opsys/linux/gentoo/ http://linux.rz.ruhr-uni-bochum.de/download/gentoo-mirror/ ftp://linux.rz.ruhr-uni-bochum.de/gentoo-mirror/ http://gd.tuwien.ac.at/opsys/linux/gentoo/ ftp://ftp.easynet.nl/mirror/gentoo/ http://ftp.easynet.nl/mirror/gentoo/"

LC_ALL="de_DE@euro"

LINGUAS=""

MAKEOPTS="-j4"

PKGDIR="/usr/portage/packages"

PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --delete-after --stats --timeout=180 --exclude='/distfiles' --exclude='/local' --exclude='/packages'"

PORTAGE_TMPDIR="/var/tmp"

PORTDIR="/usr/portage"

PORTDIR_OVERLAY="/usr/local/portage"

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

USE="x86 3dnow alsa avi berkdb bitmap-fonts cairo cdr cli crypt cups dbus directfb dlloader dri dvd dvdr dvdread eds elibc_glibc emboss encode esd fam fbcon fbdev firefox foomaticdb fortran gdbm gpm gstreamer hal imlib input_devices_lirc isdnlog kde kernel_linux ldap libg++ lirc lirc_devices_pctv mad matrox mikmod mmx mp3 mpeg ncurses nls nptl nptlonly ogg pam pcre pdflib perl png ppds pppd python qt3 qt4 quicktime readline reflection samba session spell spl sse ssl sysfs tcpd truetype-fonts type1-fonts udev unicode usb userland_GNU video_cards_matrox vorbis win32codecs xml xorg zlib"

Unset:  CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LANG, LDFLAGS, PORTAGE_RSYNC_EXTRA_OPTS

```

Tobi

----------

## SinoTech

Kann dir zwar nicht sagen wie es zu dem Problem gekommen ist, aber für den Fall das nochmal sowas passiert, bekommst du fehlende Kommandos von "busybox". Du musst nur den gewünschten Befehl als Parameter angeben.

```

$ busybox ls -l

-r--------    1 sinotech wheel     4663062 Apr 27 21:37 6200_2001.bmp

drwx---r-x    4 sinotech wheel         960 Jun 23 19:55 Background

-rw-r--r--    1 sinotech wheel       59539 Jul 15  2005 DB_AMILO_M7400_FB2I_DE-06-2004[1].pdf

drwx------    4 sinotech wheel         368 Apr 22 23:07 Desktop

drwx------    4 sinotech wheel         136 Sep 14  2005 Desktop1

drwxr-xr-x   15 sinotech wheel         864 Sep  3 00:16 Documents

[...]

```

Um nicht immer "busybox" mitangeben zu müssen, kannst du dir auch einen link mit dem Namen des gewünschten Befehls anlegen.

```

$ ln -s /bin/busybox /usr/bin/ls

```

Danach hast du wieder ein funktionierendes "ls".

Befehle die Busybox unterstützt (u.a. ls, ln, tar, ...), bekommst indem du busybox ohne Parameter ausführst

```

$ busybox

[...]

Currently defined functions:

        [, [[, addgroup, adduser, adjtimex, ar, arping, ash, awk, basename, bb, bbconfig, bunzip2, busybox, bzcat, cal, cat, chattr, chgrp, chmod,

        chown, chroot, chvt, clear, cmp, comm, cp, cpio, crond, cut, date, dd, deallocvt, delgroup, deluser, devfsd, df, dirname, dmesg, dnsd, dos2unix,

        dpkg-deb, du, dumpkmap, dumpleases, e2fsck, e2label, echo, egrep, eject, env, ether-wake, expr, fakeidentd, false, fbset, fdflush, fdformat,

        fdisk, fgrep, find, findfs, free, freeramdisk, fsck, fsck.ext2, fsck.ext3, fsck.minix, fuser, getopt, getty, grep, gunzip, gzip, halt, hdparm,

        head, hexdump, hostid, hostname, httpd, hwclock, id, ifconfig, ifdown, ifup, init, insmod, install, ip, ipaddr, ipcrm, ipcs, iplink, iproute,

        iptunnel, kill, killall, klogd, last, length, less, linux32, linux64, linuxrc, ln, loadfont, loadkmap, logger, login, logread, losetup, ls,

        lsattr, lsmod, lzmacat, makedevs, md5sum, mdev, mesg, mkdir, mke2fs, mkfifo, mkfs.ext2, mkfs.ext3, mkfs.minix, mknod, mkswap, mktemp, modprobe,

        more, mount, mountpoint, mt, mv, nameif, nc, netstat, nice, nohup, nslookup, openvt, passwd, patch, pidof, ping, ping6, pipe_progress, pivot_root,

        poweroff, printenv, printf, ps, pwd, rdate, readlink, readprofile, realpath, reboot, renice, reset, rm, rmdir, rmmod, route, run-parts, runlevel,

        rx, sed, seq, setarch, setconsole, setkeycodes, setsid, sh, sha1sum, sleep, sort, start-stop-daemon, stat, strings, stty, su, sum, swapoff,

        swapon, switch_root, sync, sysctl, syslogd, tail, tar, tee, telnet, telnetd, test, time, top, touch, tr, traceroute, true, tty, tune2fs,

        udhcpc, udhcpd, umount, uname, uncompress, uniq, unix2dos, unlzma, unzip, uptime, usleep, vconfig, vi, vlock, watch, watchdog, wc, wget,

        which, who, whoami, xargs, yes, zcat, zcip

```

Damit bekommst du zwar kein funktionierendes "emerge", aber wenigstens die normalen Systembefehle funktionieren so wieder.

Das also nur kurz nebenbei  :Smile: 

Mfg

Sino

----------

## Finswimmer

Wow. Das muss ich mir merken.

Und busybox geht immer, auch ohne glibc gcc und den ganzen Kram, den man kaputt machen könnte?

Tobi

----------

## SinoTech

 *Finswimmer wrote:*   

> Wow. Das muss ich mir merken.
> 
> [...]
> 
> 

 

Das dacht ich mir auch als ich es das erste mal gehört habe  :Smile: 

 *Finswimmer wrote:*   

> 
> 
> [...]
> 
> Und busybox geht immer, auch ohne glibc gcc und den ganzen Kram, den man kaputt machen könnte?
> ...

 

Soweit ich weiß wurde es extra für solche Situationen ins Profile aufgenommen  :Smile:  ("busybox" muss in dem Fall natürlich mit dem USE-Flag "static" kompiliert werden).

Mfg

Sino

----------

## mv

 *SinoTech wrote:*   

> ("busybox" muss in dem Fall natürlich mit dem USE-Flag "static" kompiliert werden).

 

Wenn ich das .ebuild richtig interpretiere, ist das etwas anders:

Ohne das useflag "static" erhält man trotzdem ein statisch gelinktes busybox, allerdings unter dem Namen /bin/bb; mit useflags "static" ist das einfach ein Link auf das statische /bin/busybox. Das erscheint mir reichlich wenig durchdacht: Ohne useflag "static" (was wohl die meisten Leute nicht benutzen, da es natürlich normalerweise aus ist, und nirgends eine dicke Warnung bzgl. busybox steht, über das man ohnehin kaum etwas erfährt) hat man also zusätzlich ein nicht-statisches /bin/busybox - man verschwendet also einfach Plattenplatz für ein vollkommen nutzloses (da als /bin/bb statisch vorhandenes) Binary.

Mir leuchtet zwar ein, dass /bin/bb in jedem Fall vorhanden sein soll (vermutlich wird genkernel o.ä. es benötigen, und für den Rettungsfall ist es ja auch unbezahlbar), aber dann sollte man einfach das Useflag "static" aus dem .ebuild entfernen (oder die nicht-statische zusätzliche Variante höchsten mit einem extra-Newsflag bauen, aber nicht ein Useflag nehmen, das bei 99% aller User per Default "falsch" gesetzt ist).

----------

