You are viewing a plain text version of this content. The canonical link for it is here.
Posted to bugs@httpd.apache.org by bu...@apache.org on 2002/05/07 05:03:34 UTC

DO NOT REPLY [Bug 8849] New: - make install errors as root on NFS shares

DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=8849>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=8849

make install errors as root on NFS shares

           Summary: make install errors as root on NFS shares
           Product: Apache httpd-1.3
           Version: 1.3.23
          Platform: Sun
        OS/Version: Other
            Status: NEW
          Severity: Normal
          Priority: Other
         Component: Build
        AssignedTo: bugs@httpd.apache.org
        ReportedBy: Greg.Robinson@dsto.defence.gov.au


I usually compile programs as myself, and then install as root.
The make install script re-directs output to temporary files in the
apache src directory, but this fails as root cannont write to that
disk (it is NFS sharred without root permission).

eg:

...

mkdir /opt/local/apache/proxy
./src/helpers/PrintPath: pp.t.15350: cannot create
./src/helpers/PrintPath: pp.t.15357: cannot create
chown nobody /opt/local/apache/proxy
chgrp nobody /opt/local/apache/proxy
<=== [mktree]
===> [programs: Installing Apache httpd program and shared objects]
./src/helpers/install.sh -c -m 755 ./src/httpd /opt/local/apache/bin/httpd
./src/helpers/install.sh -c -m 644 ./src/support/httpd.8
/opt/local/apache/man/man8/httpd.8
touch: cannot change times on src/.apaci.install.conf
*** Error code 1 (ignored)
<=== [programs]
===> [support: Installing Apache support programs and scripts]
./src/helpers/install.sh -c -m 755 -s ./src/support/ab /opt/local/apache/bin/ab

...


I have made 2 context diff's and they have worked for me.
Note, there is at least 1 more redirection in Makefile.tmpl which I
did not correct, as there was no error for it.  You'll get the
general idea from my patch.

*** PrintPath   Tue May  7 11:53:35 2002
--- PrintPath.apache    Thu Apr 22 00:00:26 1999
***************
*** 70,76 ****
          s/:$/:./
          s/:/ /g' `
      # Here is how we test to see if test/[] can handle -x
!     testfile="/tmp/pp.t.$$"
  
      cat > $testfile <<ENDTEST
  #!/bin/sh
--- 70,76 ----
          s/:$/:./
          s/:/ /g' `
      # Here is how we test to see if test/[] can handle -x
!     testfile="pp.t.$$"
  
      cat > $testfile <<ENDTEST
  #!/bin/sh





2nd patch:

*** Makefile.tmpl.apache        Thu Mar 14 07:35:27 2002
--- Makefile.tmpl       Tue May  7 12:26:37 2002
***************
*** 85,90 ****
--- 85,91 ----
  CP              = cp
  LN              = ln
  RM              = rm -f
+ TMP           = /tmp
  MKDIR           = $(TOP)/$(AUX)/mkdir.sh
  INSTALL         = $(TOP)/$(AUX)/install.sh -c
  IFLAGS_PROGRAM  = @IFLAGS_PROGRAM@
***************
*** 232,238 ****
                install-mktree install-programs $(install-support) \
                install-include install-data install-config
        -@$(RM) $(SRC)/.apaci.install.tmp
!       -@$(RM) $(SRC)/.apaci.install.conf
        -@if [ ".$(QUIET)" != .1 ]; then \
                if [ ".$(TARGET)" = .httpd ]; then \
                        apachectl='apachectl'; \
--- 233,239 ----
                install-mktree install-programs $(install-support) \
                install-include install-data install-config
        -@$(RM) $(SRC)/.apaci.install.tmp
!       -@$(RM) $(TMP)/.apaci.install.conf
        -@if [ ".$(QUIET)" != .1 ]; then \
                if [ ".$(TARGET)" = .httpd ]; then \
                        apachectl='apachectl'; \
***************
*** 321,327 ****
                fi; \
        fi
        $(INSTALL_DATA) $(TOP)/$(SRC)/support/httpd.8
$(root)$(mandir)/man8/$(TARGET).8
!       -@$(RM) $(SRC)/.apaci.install.conf; touch $(SRC)/.apaci.install.conf
        -@if [ ".`grep '^[      ]*SharedModule'
$(TOP)/$(SRC)/Configuration.apaci`" != . ]; then \
                for mod in `egrep '^[   ]*SharedModule'
$(TOP)/$(SRC)/Configuration.apaci |\
                        sed -e 's/^[    ]*SharedModule[         ]*//'`; do \
--- 322,328 ----
                fi; \
        fi
        $(INSTALL_DATA) $(TOP)/$(SRC)/support/httpd.8
$(root)$(mandir)/man8/$(TARGET).8
!       -@$(RM) $(TMP)/.apaci.install.conf; touch $(TMP)/.apaci.install.conf
        -@if [ ".`grep '^[      ]*SharedModule'
$(TOP)/$(SRC)/Configuration.apaci`" != . ]; then \
                for mod in `egrep '^[   ]*SharedModule'
$(TOP)/$(SRC)/Configuration.apaci |\
                        sed -e 's/^[    ]*SharedModule[         ]*//'`; do \
***************
*** 330,347 ****
                        $(INSTALL_DSO) $(TOP)/$(SRC)/$${mod}
$(root)$(libexecdir)/$${file}; \
                        name=`$(TOP)/$(AUX)/fmn.sh $(TOP)/$(SRC)/$${mod}`; \
                        echo dummy | awk '{ printf("LoadModule %-18s %s\n",
modname, modpath); }' \
!                       modname="$${name}"
modpath="$(libexecdir_relative)$${file}" >>$(SRC)/.apaci.install.conf; \
                done; \
!               echo "" >>$(SRC)/.apaci.install.conf; \
!               echo "#  Reconstruction of the complete module list from all
available modules" >>$(SRC)/.apaci.install.conf; \
!               echo "#  (static and shared ones) to achieve correct module
execution order." >>$(SRC)/.apaci.install.conf; \
!               echo "#  [WHENEVER YOU CHANGE THE LOADMODULE SECTION ABOVE
UPDATE THIS, TOO]" >>$(SRC)/.apaci.install.conf; \
!               echo "ClearModuleList" >>$(SRC)/.apaci.install.conf; \
                egrep "^[       ]*(Add|Shared)Module" $(SRC)/Configuration.apaci
|\
                sed     -e 's:SharedModule:AddModule:' \
                        -e 's:modules/[^/]*/::' \
                        -e 's:[     ]lib: mod_:' \
!                       -e 's:\.[soam].*$$:.c:' >>$(SRC)/.apaci.install.conf; \
        fi
        @echo "<=== [programs]"
  
--- 331,348 ----
                        $(INSTALL_DSO) $(TOP)/$(SRC)/$${mod}
$(root)$(libexecdir)/$${file}; \
                        name=`$(TOP)/$(AUX)/fmn.sh $(TOP)/$(SRC)/$${mod}`; \
                        echo dummy | awk '{ printf("LoadModule %-18s %s\n",
modname, modpath); }' \
!                       modname="$${name}"
modpath="$(libexecdir_relative)$${file}" >>$(TMP)/.apaci.install.conf; \
                done; \
!               echo "" >>$(TMP)/.apaci.install.conf; \
!               echo "#  Reconstruction of the complete module list from all
available modules" >>$(TMP)/.apaci.install.conf; \
!               echo "#  (static and shared ones) to achieve correct module
execution order." >>$(TMP)/.apaci.install.conf; \
!               echo "#  [WHENEVER YOU CHANGE THE LOADMODULE SECTION ABOVE
UPDATE THIS, TOO]" >>$(TMP)/.apaci.install.conf; \
!               echo "ClearModuleList" >>$(TMP)/.apaci.install.conf; \
                egrep "^[       ]*(Add|Shared)Module" $(SRC)/Configuration.apaci
|\
                sed     -e 's:SharedModule:AddModule:' \
                        -e 's:modules/[^/]*/::' \
                        -e 's:[     ]lib: mod_:' \
!                       -e 's:\.[soam].*$$:.c:' >>$(TMP)/.apaci.install.conf; \
        fi
        @echo "<=== [programs]"
  

Basically, replace the locations of > .apaci.install.conf with
> /tmp/.apaci.install.conf.

The workaround is, of course, to move the apache source tree to a root
writable directory, like /var/tmp, and install from there.

gcc: gcc version 2.95.2 19991024 (release)
Solaris 2.8 2/02.  Latest recommended patches.
configured with:
./configure --prefix=/opt/local/apache --exec-prefix=/opt/local/apache
--enable-module=so

---------------------------------------------------------------------
To unsubscribe, e-mail: bugs-unsubscribe@httpd.apache.org
For additional commands, e-mail: bugs-help@httpd.apache.org