📄 install
字号:
res_mkquery.o sethostent.o res_send.o res_debug.o nsap_addr.o res_comp.o res_data.o res_init.o strerror.o (Don't add the getnet* files if you removed them in step 10.) It isn't really kosher to hack the lorder-sparc file like this, but it isn't deadly either. This ordering was created by using lorder and tsort on libresolv_pic.a; it should be the best ordering of the new files.14. The Makefile supplied by Sun for building shared libraries, /usr/lib/shlib.etc/Makefile, has one problem when you run it as the super user if you don't have '.' in your path (and you shouldn't...). So edit it and modify the definition of "OBJSORT" to read: OBJSORT=./objsort In some versions of /usr/lib/shlib.etc/Makefile, you will also need to change the lines (there are two) which read ld -assert pure-text `${OBJSORT} lorder-sparc tmp` to read ld -assert pure-text `${OBJSORT} lorder-sparc tmp` -ldl The jumbo libc patch for 4.1.3 fixes this, but the jumbo libc patches for 4.1.3_U1 and 4.1.4 don't. (Why? I don't know...) If the shared library is built without -ldl, all subsequent compilations (except when using static linking) on the system will fail with "undefined symbol" errors for _dlopen, _dlclose, and _dlsym unless you add -ldl when linking. If you have *ever* modified your shared libc before (maybe for resolv+, maybe for other reasons) and you didn't add the -ldl to /usr/lib/shlib.etc/Makefile, you have probably been adding -ldl to every Makefile for every program you've compiled since then. This is obviously suboptimal. Fix your shared libc once and for all. The easiest way to fix these problems in /usr/lib/shlib.etc/Makefile is to apply (using the 'patch' program) the two patch files; $BINDSRC/shres/sunos/sun-Makefile.patch1 and $BINDSRC/shres/sunos/sun-Makefile.patch2. If you have the patched 4.1.3 version of the Makefile, the second patch will fail; this can safely be ignored.15. Now we can finally build the shared library. Type: make libc.so What kind of errors might you get? Here's a couple: a. It blows up on one of the .o files in tmp, saying that the object file is in an inconsistent state. SOLUTION: start over; you did something wrong when you compiled libresolv_pic.a in step 4, above. Make SURE you're using the libresolv_pic.a that was built in $BINDBUILD/shres/sunos, and not the "normal" libresolv.a built in $BINDBUILD/res. b. It lists hundreds of error lines about offsets or addresses being wrong in all your resolver .o files. SOLUTION: start over; you needed to specify "-pic" or "-fpic" to the C compiler when building shres/sunos/libresolv_pic.a. Make sure you're using libresolv_pic.a, and make sure that SHCC and PIC were properly defined in $BINDBUILD/Makefile.16. To build the System V shared libc, repeat steps 8-11, using 'libcs5_pic.a' instead of 'libc_pic.a', then 'make libcs5.so'. You'll need to delete the contents of the directory '/usr/lib/shlib.etc/tmp" first.17. If all goes well, you now have a "libc.so.x.y.z" in this directory (two, if you rebuilt the SysV shared library as well; the BSD one is libc.so.1.y.z, while the SysV one is libc.so.2.y.z). Test it (or them) out before installing it (or them) systemwide! You can do this by pointing the LD_LIBRARY_PATH environment variable to the current directory, then trying various networking commands. In csh or tcsh: setenv LD_LIBRARY_PATH `pwd` ftp another.host.com telnet someone.else.ca unsetenv LD_LIBRARY_PATH ping (or any other setuid/setgid program) may not use the new library if you test it this way, because LD_LIBRARY_PATH is ignored for security reasons if the real and effective user or group ids do not match. (If you test as root, ping will use the new library.) Make sure you have a valid /etc/resolv.conf, or it will not appear to work. If you have been using DNS via NIS in the past, you might not have a working resolv.conf file on the NIS clients. If anything in the library fails, you need to start section B over again. Maybe you accidentally used BIND's versions of mktemp.o and strpbrk.o; things just won't work with BIND's new versions of these files.18. When you are sure it's working OK, you can install it into the system library directory (you will need to be superuser to do this): su cd /usr/lib/shlib.etc cp libc.so.1.y.z /usr/lib chmod 755 /usr/lib/libc.so.1.y.z # for sysv shared library cp libc.so.2.y.z /usr/5lib chmod 755 /usr/5lib/libc.so.2.y.z # for both ldconfig Next you need to install the shared archive, which contains initialized global data. If you skip this step, executables compiled on your machine since the new library was installed will not contain that data. They still will be able to run (which is probably why this step has been missing from both the Internet and *Sun* instructions for years), as the data is replicated in the shared object. A few preliminary tests indicate missing this step can marginally slow down processes, although it necessarily a depends on the program and the machine in question. For more details on this, see $BINDSRC/shres/sunos/ISSUES. The numbers y and z must match the numbers in the shared object above. cd /usr/lib cp libc.sa.1.y libc.sa.1.y.z ranlib libc.sa.1.y.z cd /usr/5lib cp libc.sa.2.y libc.sa.2.y.z ranlib libc.sa.2.y.zIf you used makeshlib, you can delete the temporary directories created bythe script (/usr/lib/shlib.etc/tmp.s5 and /usr/lib/shlib.etc/tmp.ucb) now.19. You can prove that you're using the new library now, by watching the output of something like: trace date Look for the open() of libc.so.* and note the version number. You can also use ldd to check which shared libraries will be used by a dynamically linked program: # ldd /usr/ucb/telnet -lc.1 => /usr/lib/libc.so.1.x.y -ldl.1 => /usr/lib/libdl.so.1.0 The latest BIND resolver is now installed in your system's shared C library.20. Once you are fully confident of your new library, reboot your machine. Until you do, running processes will continue to use the old shared library.21. "make install" in $BINDBUILD to install the new resolver library, named, and header files. This will allow statically linked programs and programs that link directly to the resolver library (like sendmail) to be compiled against the BIND resolver (highly recommended).You should now read the first four items in shres/sunos/ISSUES.* "Differences between Sun's resolver and BIND's resolver" This explains the use of the "search" directive in resolv.conf files, and explains how to deal with the use of "localhost" and "loghost" in configurations.* "UDP checksums" This explains how to turn on UDP checksumming in your kernel to make DNS (and, not incidentally, NFS) more reliable.* "Modifying the static libc" You probably want to modify the nonshared system C library to contain the "strerror" routine for use when compiling statically-linked programs; this item explains how and why.* "RFC 1101 network names vs. /etc/networks" This explains how to set up your network names in the DNS so that programs such as netstat -r will display names, not numbers, by using the DNS. If you used Sun's getnetent.o in step 10, it does not apply.If you have problems compiling certain programs, or with other aspects ofyour system, after installing the BIND resolver, you should readshres/sunos/PROBLEMS.In particular:** If you are compiling GNU Emacs/XEmacs or Berkeley sendmail V8 ** you should read the entry in shres/sunos/PROBLEMS titled "undefined symbol_strerror when compiling -Bstatic". If this happens, either add -l44bsdto the link step, add strerror.o to /usr/lib/libc.a (as described inshres/sunos/ISSUES), or link dynamically instead of statically.** If you are compiling GNU Emacs or NCSA httpd **you should read the entry in shres/sunos/PROBLEMS titled ""parse error" oninet.h, nameser.h, resolv.h, netdb.h, bitypes.h". If you get these errorsfrom your cpp, you may choose to define the preprocessor symbol "BSD" to asmall numeric value (such as "42"), or you may wish to edit the headerfiles to remove the conditional statements.** If you are using Sun's "C2 security" shadowed passwords **you should read the entry in shres/sunos/PROBLEMS titled "login gives"hostname is bad for this system" errors (users can't log in)". This will explain how to diagnose (and cure) this problem.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -