Subject : SunOS 4.1.X 상에서 NIS없이 DNS를 사용하는 방법

Solution Description:
=====================

On SunOS 4.1.X, how to use DNS without NIS (unsupported method)

When we try to ping or telnet by hostname, we always get an
unknown host error.  /etc/resolv.conf is in place, and nslookup
works fine.  How can we get DNS working?

SOLUTION SUMMARY:

This is the same solution as can be found in the Infodoc #3886:

MAKING A LIBC.SO for DNS without NIS
     This is a procedure that can be used to add name resolver
     routines into shared libc library in SunOS_4.1.

*****************************************************************
NOTE: The Sun supported method of using DNS is via NIS, however
      we understand the need for customers to be able to run DNS
      without NIS which is why we provide the following procedure.
      Customers should be warned that they use this method "At
      their own risk," and Sun support will not be able to help
      them with DNS related problems if they choose this method.
*****************************************************************                 
     Load "SHLIB_CUSTOM" either from SunInstall or from
     add_services.

     Be sure to first have the file /etc/resolv.conf
     properly configured.  This can be tested first with
     /usr/etc/nslookup.
-------------------------------------------------------------------------

1. Become super user:

        % su (if necessary)

2. Make a temporary directory:

        % cd /usr/lib/shlib.etc
        % mkdir tmp

3. Change to the "tmp" directory that you just made, extract the pic .o from 
   libc_pic.a and rm the file __.SYMDEF.  The reason why you needed to do two
   "mv" commands is that "ar" truncated filenames over 16 characters.

        % cd tmp
        % ar x ../libc_pic.a
        % rm __.SYMDEF
        % mv rpc_dtablesize. rpc_dtablesize.o
        % mv rpc_commondata. rpc_commondata.o
        % ar x /usr/lib/libresolv.a

   The libresolv.a (apparently) contains object modules that are
   position-independent, so they can be added to the libc_pic modules
   without fear.

4. Remove the old routine to do the hostname/addr resolution:

        % rm gethostent.o

5. Remove the libresolv module that contains `strncasecmp' (which is now
   in the main C library, so it is redundant):

        % rm strcasecmp.o

6. % cd ..

7. Copy lorder-sparc to lorder-sparc.orig  Edit the file lorder-sparc
   and remove the reference to `gethostent.o' and add the references
   to the resolver library routines by applying this patch:

                remove:        gethostent.o

                   add:         gethostnamadr.o 
                                sethostent.o 
                                res_query.o 
                                res_mkquery.o 
                                res_send.o 
                                res_debug.o 
                                res_comp.o 
           res_init.o


        % diff -rc2 lorder-sparc.orig lorder-sparc
                *** lorder-sparc.orig   Thu Feb  8 05:27:46 1990
                --- lorder-sparc        Mon Apr  9 12:58:59 1990
                ***************
*** 150,154 ****
                  getwd.o
                  getnetgrent.o
                ! gethostent.o           << REMOVE
                  ypxdr.o
                  ttyname.o
                --- 150,161 ----
                  getwd.o
    getnetgrent.o
                ! gethostnamadr.o        << ADD
                ! sethostent.o           << ADD
                ! res_query.o            << ADD
                ! res_mkquery.o          << ADD
                ! res_send.o             << ADD
                ! res_debug.o            << ADD
                ! res_comp.o             << ADD
                ! res_init.o             << ADD
                  ypxdr.o
                  ttyname.o


8. % make libc.so

9. You should have some libc.so.x.y.z built in the current directory.  Test
   this library before installing by setting the environment
   LD_LIBRARY_PATH to the current directory, for example:

        % setenv LD_LIBRARY_PATH `pwd`
        % your_favorite_test_cmd  (i.e. ping, ftp, telnet)

   Once you are satisfied that the new library works, install
   it with the following commands:

        % cp libc.so.x.y.z /usr/lib
        % ldconfig
        % unsetenv LD_LIBRARY_PATH

10. You are now running with the new library.  Verify this by doing a trace
    command of "date":

        % trace date

    The output should state that the new library is being used.


----------------------------------------------------------------------------

Revision History

작성일자 : 97.03.11
작성자 : 이민호

수정일자 :
수정자 :