Unreal Tournament fails to emerge, when it tries to run the installer, it complains about /bin/sh and b0rks, but pretends as though it installed sucessfully. Using offical installer fails too. /bin/sh works, tried to re-merge bash, 2.05b, emerges, but problem still occurs. Tried different enviroments, tried different methods of su, tried from xterm, and normal console. Reproducible: Always Steps to Reproduce: 1. emerge unreal-tournament 2. get line that reads: Uncompressing Unreal Tournament version 436 Linux install....................................................................... ut-install-436.run: ./setup.sh: /bin/sh: bad interpreter: Permission denied 3. Rinse and repeat Actual Results: Got output of (from terminal): main root # emerge unreal-tournament Calculating dependencies ...done! >>> emerge (1 of 1) app-games/unreal-tournament-436 to / >>> md5 ;-) ut-install-436.run >>> md5 ;-) IpDrv-436-Linux-08-20-02.zip >>> Unpacking source... >>> Unpacking IpDrv-436-Linux-08-20-02.zip to /var/tmp/portage/unreal-tournament-436/work >>> Source unpacked. >>> Install unreal-tournament-436 into /var/tmp/portage/unreal-tournament-436/image/ category app-games Verifying archive integrity...OK Uncompressing Unreal Tournament version 436 Linux install....................................................................... ut-install-436.run: ./setup.sh: /bin/sh: bad interpreter: Permission denied The program returned an error code (126) mv: cannot move `/var/tmp/portage/unreal-tournament-436/work/IpDrv.so' to `/var/tmp/portage/unreal-tournament-436/image//opt/unreal-tournament/System/IpDrv.so': No such file or directory /usr/sbin/ebuild.sh: line 84: cd: /var/tmp/portage/unreal-tournament-436/image//opt/unreal-tournament: No such file or directory ls: ./Maps/*.uz: No such file or directory rm: cannot remove `/var/tmp/portage/unreal-tournament-436/image//usr/bin/*': No such file or directory man: strip: >>> Completed installing into /var/tmp/portage/unreal-tournament-436/image/ >>> Merging app-games/unreal-tournament-436 to / --- /usr/ --- /usr/bin/ >>> /usr/bin/ut -> /opt/unreal-tournament/ut >>> /usr/bin/ucc -> /opt/unreal-tournament/ucc >>> Safely unmerging already-installed instance... <<< sym /usr/bin/ut <<< sym /usr/bin/ucc --- !empty dir /usr/bin --- !empty dir /usr >>> original instance of package unmerged safely. * You might want to install the bonus packs too. * Many servers on the internet use them, and the * majority of players do too. * Just run: emerge unreal-tournament-bonuspacks >>> Regenerating /etc/ld.so.cache... >>> app-games/unreal-tournament-436 merged. app-games/unreal-tournament selected: none protected: 436 omitted: none >>> clean: No packages selected for removal. >>> Regenerating /etc/ld.so.cache... >>> Auto-cleaning packages ... >>> No outdated packages were found on your system. * GNU info directory index is up-to-date. Expected Results: Should have gotten nice installer, got squat. Here's some portage info: Portage 2.0.47-r7 (default-x86-1.4, gcc-3.2.2, glibc-2.3.1-r2) ================================================================= System uname: 2.4.20-gentoo-r1 i686 AMD Duron(tm) Processor GENTOO_MIRRORS=" ftp://csociety-ftp.ecn.purdue.edu/pub/gentoo/" CONFIG_PROTECT="/etc /var/qmail/control /usr/share/config /usr/kde/2/share/config /usr/kde/3/share/config /usr/X11R6/lib/X11/xkb:/usr/kde/3.1/share/config:/usr/share/config" CONFIG_PROTECT_MASK="/etc/gconf /etc/env.d" PORTDIR="/usr/portage" DISTDIR="/usr/portage/distfiles" PKGDIR="/usr/portage/packages" PORTAGE_TMPDIR="/var/tmp" PORTDIR_OVERLAY="" USE="x86 oss 3dnow apm avi crypt cups encode gif jpeg libg++ libwww mikmod mmx mpeg ncurses nls pdflib png quicktime spell truetype xml2 xmms xv zlib directfb alsa gdbm berkdb slang readline arts aalib ggi java guile X sdl gpm tcpd pam ssl python imlib oggvorbis gnome gtk qt kde motif opengl mozilla ldap bonobo cdr dvd esd flash gd gphoto2 gtk2 gtkhtml imap jikes mbox oav perl pic samba snmp socks5 sse -svga tcltk tiff usb xface xml" COMPILER="gcc3" CHOST="i686-pc-linux-gnu" CFLAGS="-march=athlon -O3 -pipe -mmmx -msse -mfpmath=sse" CXXFLAGS="-march=athlon -O3 -pipe -mmmx -msse -mfpmath=sse" ACCEPT_KEYWORDS="x86" MAKEOPTS="-j2" AUTOCLEAN="yes" SYNC="rsync://rsync.gentoo.org/gentoo-portage" FEATURES="sandbox ccache" Bash, is up to date, hmm...
After some more tinkering, it turns out tcsh won't execute from /tmp. Furthermore, the ebuild doesn't seem to notice that the installer failed. Is there some bad setting in tcsh? And shouldn't the ebuild be able to notice?
Semi-Solution found: The installer tries to make executables in /tmp. Since tcsh doesn't execute stuff in /tmp (to protect from scrpt-kiddiez, most likely a default behavor), the installer fails to launch. Seeing as how portage works within /usr/tmp/portage, (to prevent overfilling of a non-separate /tmp partition), the option: --target /usr/tmp/portage/ut-436 should be placed on the end of sh ut-install-436 to insure that it is properly installed. Otherwise, tcsh will bork and quit, furthermore, it'll make sure that the install files are extracted to the standard portage install tmp. -Gamera2
you should be all set now: http://cvs.gentoo.org/cgi-bin/viewcvs.cgi/gentoo-x86/app-games/unreal-tournament/unreal-tournament-436.ebuild.diff?r1=1.7&r2=1.8
Nope, it's not a permission problem, tcsh won't execute things in /tmp, which is the installer's default tmp directory. Which also isn't correct, as portage is supposed to use /usr/tmp Like I said, adding the option: --target /usr/tmp/portage/ut-436 (replace /usr/tmp/portage with whatever exactly is appropriate for ebuilds) to the installer. I tried tinkering with permisions at /tmp, and it doesn't matter what it is, (shell script, self-contained executable, etc.) tcsh refuses to execute it. And all of the settings on /tmp are set to allow executions, it's just a matter of tcsh not wanting to. Hope that explains it a little better.
you're right ... i forgot about the rest of the bug :) i remember *now* you saying how to fix it properly
*now* you should be all set ;) http://cvs.gentoo.org/cgi-bin/viewcvs.cgi/gentoo-x86/app-games/unreal-tournament/unreal-tournament-436.ebuild.diff?r1=1.9&r2=1.10
Nope, you need to be a /little/ more specific. The target can't exsist before hand. The installer attempts to create one, and if it can't it panics. Sorry for all this trouble. Calculating dependencies ...done! >>> emerge (1 of 1) app-games/unreal-tournament-436 to / >>> md5 ;-) ut-install-436.run >>> md5 ;-) IpDrv-436-Linux-08-20-02.zip >>> Unpacking source... >>> Unpacking IpDrv-436-Linux-08-20-02.zip to /var/tmp/portage/unreal-tournament-436/work >>> Source unpacked. >>> Install unreal-tournament-436 into /var/tmp/portage/unreal-tournament-436/image/ category app-games Creating directory /var/tmp/portage/unreal-tournament-436/temp mkdir: cannot create directory `/var/tmp/portage/unreal-tournament-436/temp': File exists ut-install-436.run: line 122: Cannot create target directory: command not found ut-install-436.run: line 123: you should perhaps try option -target OtherDirectory: command not found !!! ERROR: app-games/unreal-tournament-436 failed. !!! Function src_install, Line 78, Exitcode 1 !!! (no error message)
I am getting the same error as Jason H reports above. Creating directory /var/tmp/portage/unreal-tournament-436/temp mkdir: cannot create directory `/var/tmp/portage/unreal-tournament-436/temp': File exists ut-install-436.run: line 122: Cannot create target directory: command not found ut-install-436.run: line 123: you should perhaps try option -target OtherDirectory: command not found !!! ERROR: app-games/unreal-tournament-436 failed. !!! Function src_install, Line 78, Exitcode 1 !!! (no error message)