Freebsd Problems
brian
Join Date: 2003-01-26 Member: 12830Members
<div class="IPBDescription">Version 4.6.2</div> Dear All;
First I ran ns 1.03 on my freebsd 4.6.2 server without any problems:
I tried upgrading to ns 1.04 and got the following errors:
Loadlibrary failed on/usr/home/deadman/hlds_l3ns/ns/dlls//ns_i386.so: libstdc++-libc6.2-2.so.3: cannot open shared object files: no such file or directory
Host error : couldn’t get dll api from /usr/home/deadman/hlds_l3ns/ns/dlls//ns_i386.so!
Fatal error (shutting down) host_error: couldn’t get dll api from /usr/home/deadman/hlds_l3ns/ns/dlls//ns_i386.so
I took the advice of another poster and performed the following though I already had the first file on my system. The second file libstdc++-libc6.2-2.so.3 is not on my system
1st - get "libstdc++-2-libc6.1-1-2.9.0.so"
2nd- install it to "/usr/compat/linux/usr/lib" directory
3rd - change dir to "/usr/compat/linux/usr/lib"
last- make synboliclink.
exmaple... "$ ln -s libstdc++-2-libc6.1-1-2.9.0.so libstdc++-libc6.2-2.so.3"
That made the one erro go away but created a new erropr that prevents the server from loading:
I don't use adminmod or anything else at this point just ns:
Loadlibrary failed on/usr/home/deadman/hlds_l3ns/ns/dlls//ns_i386.so: libstdc++-libc6.2-2.so.3: undefined symbol: _start_cp_handler
Host error : couldn’t get dll api from /usr/home/deadman/hlds_l3ns/ns/dlls//ns_i386.so!
Fatal error (shutting down) host_error: couldn’t get dll api from /usr/home/deadman/hlds_l3ns/ns/dlls//ns_i386.so
Any help?
Sincerely
Brian
Ps I think I had to do this once before to get adminmod to work by adding the needed library back in. I think I need to get the correct rpm from redhat; if anyone knows what that one is pleaset tell me and make changes to vceratin files to get it to see the new rpm containing the libstdc++-libc6.2-2.so.3 library.
First I ran ns 1.03 on my freebsd 4.6.2 server without any problems:
I tried upgrading to ns 1.04 and got the following errors:
Loadlibrary failed on/usr/home/deadman/hlds_l3ns/ns/dlls//ns_i386.so: libstdc++-libc6.2-2.so.3: cannot open shared object files: no such file or directory
Host error : couldn’t get dll api from /usr/home/deadman/hlds_l3ns/ns/dlls//ns_i386.so!
Fatal error (shutting down) host_error: couldn’t get dll api from /usr/home/deadman/hlds_l3ns/ns/dlls//ns_i386.so
I took the advice of another poster and performed the following though I already had the first file on my system. The second file libstdc++-libc6.2-2.so.3 is not on my system
1st - get "libstdc++-2-libc6.1-1-2.9.0.so"
2nd- install it to "/usr/compat/linux/usr/lib" directory
3rd - change dir to "/usr/compat/linux/usr/lib"
last- make synboliclink.
exmaple... "$ ln -s libstdc++-2-libc6.1-1-2.9.0.so libstdc++-libc6.2-2.so.3"
That made the one erro go away but created a new erropr that prevents the server from loading:
I don't use adminmod or anything else at this point just ns:
Loadlibrary failed on/usr/home/deadman/hlds_l3ns/ns/dlls//ns_i386.so: libstdc++-libc6.2-2.so.3: undefined symbol: _start_cp_handler
Host error : couldn’t get dll api from /usr/home/deadman/hlds_l3ns/ns/dlls//ns_i386.so!
Fatal error (shutting down) host_error: couldn’t get dll api from /usr/home/deadman/hlds_l3ns/ns/dlls//ns_i386.so
Any help?
Sincerely
Brian
Ps I think I had to do this once before to get adminmod to work by adding the needed library back in. I think I need to get the correct rpm from redhat; if anyone knows what that one is pleaset tell me and make changes to vceratin files to get it to see the new rpm containing the libstdc++-libc6.2-2.so.3 library.
Comments
To upgrade:
update your ports tree (read handbook at <a href='http://www.freebsd.org/' target='_blank'>http://www.freebsd.org/</a> for details if unfamiliar with process, section 4.5.1, CVSup method. PM me if you have troubles).
pkg_delete linux_base-7.x.x (your version here)
cd /compat
rm -rf linux (nuke any old, extra stuff)
cd /usr/ports/emulators/linux_base
make install
libstdc++-libc6.2-2.so.3 is in at least 7.1.1+
waydaminute...it doesn't appear in 7.1.2...lemme figure out what's going on here...
<!--c1--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>CODE</b> </td></tr><tr><td id='CODE'><!--ec1-->--- Makefile.orig Mon Jan 27 15:05:00 2003
+++ Makefile Mon Jan 27 17:16:41 2003
@@ -79,7 +79,7 @@
RPM_SETSERIAL= setserial-2.17-2.i386.rpm
RPM_SETUP= setup-2.4.7-1.noarch.rpm
RPM_XFREE86_LIBS= XFree86-libs-4.0.3-5.i386.rpm
-UPDATES+= libstdc++-2.96-112.7.1.i386.rpm
+UPD_SET2+= libstdc++-2.96-112.7.1.i386.rpm
.else
RPM_BZIP2= bzip2-1.0.1-4.alpha.rpm
RPM_FREETYPE= freetype-2.0.1-5.alpha.rpm
<!--c2--></td></tr></table><span class='postcolor'><!--ec2-->
Apply that to the port's Makefile before your <b>make install</b>. That'll get you a working libstdc++-libc6.2-2.so.3
*edit* FreeBSD PR: <a href='http://www.freebsd.org/cgi/query-pr.cgi?pr=ports/47573' target='_blank'>http://www.freebsd.org/cgi/query-pr.cgi?pr=ports/47573</a> (excuse the line-wrapping)
Thanks for the help. I'll wait for you to check it out.
Brian
Thanks but don't you also have to edit the distroinfo.i386 file as well?
Brian
Everytime I try and do a cvsup I end up crashing the server or something. Corrupting it. Is there any other way. can I just add in the new linux compatiblity port?
Brian
distinfo.i386 is already correct. However, pkg-plist.i386 needs updating (only relevant for uninstalling the port, really). Thanks for mentioning those misc. files.
<!--c1--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>CODE</b> </td></tr><tr><td id='CODE'><!--ec1-->--- pkg-plist.i386.orig Mon Jan 27 18:16:19 2003
+++ pkg-plist.i386 Mon Jan 27 18:17:25 2003
@@ -467,7 +467,9 @@
usr/lib/libslang.so.1
usr/lib/libslang.so.1.4.2
usr/lib/libstdc++-2-libc6.1-1-2.9.0.so
+usr/lib/libstdc++-3-libc6.2-2-2.10.0.so
usr/lib/libstdc++-libc6.1-1.so.2
+usr/lib/libstdc++-libc6.2-2.so.3
usr/lib/libstdc++.so.2.7.2
usr/lib/libstdc++.so.2.7.2.8
usr/lib/libstdc++.so.2.8
<!--c2--></td></tr></table><span class='postcolor'><!--ec2-->
I tried just editing my existing makefile in the linux_base directory and it does nothing when I type make install. Is doing the cvsup thing a must, because if so I just mite as well do an install of 4.7 because again I've had absolutely no luck with cvsup even with textbook examples. My kernel either won't compile or I corrupt the system some how.
Brian
PS I'm no expert to freebsd so if you could take the time to spell things out for me I would be grateful
Really? What happens?
There are pre-built packages of some ports. Let me see if the linux_base-7.1_2 one exists, and if it's correct.
I'm working with the set of ports that came with 4.6.2. It has linux_base-7. However, I had to modified linux_base to support clanmod on another server. I had to add in a newer version glibc to support clanmod. It crashes a lot when it gets to glibc saying it's not compatible.
Brian
The prebuilt linux_base package is missing the library. I might be able to fix it, but lets try this first:
(cvsup'ing the ports tree and cvsup'ing the kernel+world sources are different tasks, each with its own supfile)
If your linux_base Makefile has this at the top:
PORTNAME= linux_base
PORTVERSION= 7.1
PORTREVISION= 2
then that port is current, and you don't need to update it via cvsup; skip a paragraph. If it's not current, do this as root:
cp /usr/share/examples/cvsup/ports-supfile /root
cd /root
fire up your favorite editor and open ports-supfile
change: *default host=CHANGE_THIS.FreeBSD.org
to: *default host=cvsup3.FreeBSD.org
(try some other servers if that one is busy or slow. cvsup2, cvsup6, etc.)
save and exit your editor
cvsup -g -L 2 ports-supfile
You should get some output. It'll connect, then sit for a built while it calculates a few things, then text should start streaming by as it updates ports.
If your ports tree is old, this can take a while. If you do it once a week or so, it goes fairly fast. Many people write a cron job to do it nightly.
once the cvsup is done (if you needed to run it)
cd /usr/ports/emulators/linux_base
Edit the Makefile, changing the line that my patch above shows.
Edit the pkg-plist.i386 if you want.
make clean
make install
That should do it. If anything fails on you, copy the output if you can.
I've been hackin gthe makefile tryinmg to get it to run taking out stuff that crashes and that I don't think I need.
Right now I'm getting the following error:
compat-libstdc++-6.2-2.9.0.14.i386.rpm
file /usr/lib/libstdc++-2-libc6.1-1-2.9.0.so from install of compat-libstdc++-6.2-2.9.0.14 conflicst with file from package libstdc++-2.9.0-24
file /usr/lib/libstdc++.so.2.9.dummy from install of compat-libstdc++-6.2-2.9.0.14 conflicts with file from package libstdc++2.9.0.-24
brian
Yeah, I'd blow away your old linux_base install, and start fresh. pkg_delete, and rm the /compat/linux directory.
The port I'm working with is named just 'linux_base'. It contains version 7. There's another port 'linux_base-6', which has the version 6 branch. You'll definitely need to update your port to get the current version of linux_base.
linux_base is 6.1 portrevision 1
Brian
Right now I'm getting the following error:
compat-libstdc++-6.2-2.9.0.14.i386.rpm
file /usr/lib/libstdc++-2-libc6.1-1-2.9.0.so from install of compat-libstdc++-6.2-2.9.0.14 conflicst with file from package libstdc++-2.9.0-24
file /usr/lib/libstdc++.so.2.9.dummy from install of compat-libstdc++-6.2-2.9.0.14 conflicts with file from package libstdc++2.9.0.-24
brian <!--QuoteEnd--> </td></tr></table><span class='postcolor'> <!--QuoteEEnd-->
You should only need to make the one Makefile change to get it to build correctly. Make sure you've pkg_delete'd any old installs of linux_base; they'll be listed in /var/db/pkg. Then, to make sure you're starting completely clean, rm -rf /compat/linux. If you're working in the directory 'linux_base-7' as above, you definitely won't be getting 7.1_2, so you'll need to cvsup.
I'm gettiong a little bit confused.
First you want me to cvsup then delete or delete then cvsup. I imagine it's delete, then cvsup. What & where should I delete?
All the linux_base directories under ports, and then all the linux- packages under /var/db/pkg as well as compat linux that whole set of directoies?
Then do cvsup and install all tthe new ports collection. What's this aboput not egtting 7.1.2?
brian
PS thanks a lot for your help
pss it's downloading the ports right now sjhouldn't have to much more to go,
/usr/ports is just a collection of makefiles and patches that build a particular piece of software. The 'make install' procedure will handle downloading, configuring, building, and installing each piece. When new versions of software come out, the ports tree must be updated to reflect that. That's what cvsup is for. Otherwise, the Makefile will fetch foo-2 insteadl of foo-3, etc.
When you install a port, all the details of that installation are recorded in /var/db/pkg. All that's in there is a list of installed files, and a few other things. When you want to remove a package, you 'pkg_delete name_found_in_var_db_pkg'. Probably something like 'pkg_delete linux_base-6.1.1'.
Without any other linux packages installed, pkg_delete'ing your linux_base should leave you with an empty /compat/linux. However, since you installed a newer library, that will probably be left over. That's why I recommend 'rm -rf /compat/linux', to clean out everything old.
The order of cvsup and pkg_delete is not important. pkg_delete only works with what's listed in /var/db/pkg, while cvsup stays in /usr/ports.
The 'not getting 7.1_2' part was if you reinstalled linux_base without doing a cvsup first. Since your ports directory layout is different than mine, I know that you have an older linux_base port skeleton. If you cvsup, you'll get the most current port available.
A good habit is to 'make clean' before you 'make install'. If you've worked with that port before, the 'make clean' will remove any old build pieces that are laying about. 'make distclean' is even more thorough, but it will force a re-download of any package files, which is hardly ever necessary.
Again thanks; I did make clean, and then make install. However, I did get version 7.1..2 and it already has the patch:
UPDATES+= libstdc++-2.96-112.7.1.i386.rpm
SO I didn't want to change anything really since it was already there
Was I correct in not changing anything?
Brian
Still get teh same errors. Am going to try your patch and see if that helps. EVen when I try and do the symbolic link itr doesn'tr work I getthe same 2 errors.
brian
Thanks but no luck; same 2 errors. I'm going to bed so maybe we could take this up Tuesday. Maybe I do what we spoke about as I don't know what's wrong either. Any ideas would be welcome. I mite jusyt have to upgrade to 4.7 but I don't see how that will help unless other people are getting it run without problems.
brian
You need to be more verbose. = > got it. Again thanks couldn'tt have done it without you. I didn't delet the first couple of lines in the makefile, just assumed you wanted me to leave them in.
Brian
UPDATES+= libstdc++-2.96-112.7.1.i386.rpm
SO I didn't want to change anything really since it was already there
Was I correct in not changing anything? <!--QuoteEnd--> </td></tr></table><span class='postcolor'> <!--QuoteEEnd-->
That's the bug right there. Instead of 'UPDATES', it should say 'UPD_SET2'
this package contains
/usr/lib/libg++.so.2.7.2.8
/usr/lib/libstdc++-2-libc6.1-1-2.9.0.so
/usr/lib/libstdc++.so.2.7.2.8
/usr/lib/libstdc++.so.2.8.0
/usr/lib/libstdc++.so.2.9.dummy
pretty weird that it contains libc6.1.1 when it adverts 6.2.2...
this package contains
/usr/lib/libg++.so.2.7.2.8
/usr/lib/libstdc++-2-libc6.1-1-2.9.0.so
/usr/lib/libstdc++.so.2.7.2.8
/usr/lib/libstdc++.so.2.8.0
/usr/lib/libstdc++.so.2.9.dummy
pretty weird that it contains libc6.1.1 when it adverts 6.2.2... <!--QuoteEnd--> </td></tr></table><span class='postcolor'> <!--QuoteEEnd-->
The RPMs come from RedHat...don't ask me, ask the messed up release engineers over there <!--emo&:)--><img src='http://www.unknownworlds.com/forums/html/emoticons/smile.gif' border='0' style='vertical-align:middle' alt='smile.gif'><!--endemo-->
install the linux_base from ports
and hlds_l, and hlserver-ns
now goto /usr/ports/distfiles/rpm
fetch <a href='http://rpmfind.net//linux/RPM/redhat/8.0/i386/compat-libstdc++-7.3-2.96.110.i386.html' target='_blank'>http://rpmfind.net//linux/RPM/redhat/8.0/i...6.110.i386.html</a>
rpm -i compat-libstdc++-7.3-2.96.110.i386.html --ignoreos --force --root /usr/compat/linux
now you shouldn't have any problems starting your server :o)
i'll see if i cant get some running stats from my server and see how the performance is with 14 players...
Something must've changed between your version and 4.7 <!--emo&:(--><img src='http://www.unknownworlds.com/forums/html/emoticons/sad.gif' border='0' style='vertical-align:middle' alt='sad.gif'><!--endemo-->
The *port* was broken at some recent point. It doesn't matter what your FreeBSD version is; the ports tree is an indepedent entity. If your ports tree is more recent than when linux_base was broken (whatever date that is; haven't bothered to check the CVS commits), you just need to make a few quick changes. 30 seconds with a text editor.
Sorry if I seem testy, but damn, all the info is in this thread. I took the time to isolate the exact problem, contact the port maintainer, and then submit a FreeBSD PR including patches.