Install on ubuntu 10.4

Help
2010-05-24
2013-04-25
  • Luis Franco
    Luis Franco
    2010-05-24

    Hi. I am trying to install dacs on a ubuntu 10.4.
    I have installed apache development files, apr and expat but compile shows this errors:
    #./configure -prefix=/usr/local/dacs  -disable-shared -enable-static -enable-passwd-auth    -disable-bdb -with-apache=/etc/apache2    -with-expat=/usr -with-apxs=/usr/bin/apxs2  -with-apache-apr=/usr/include/apr-1.0
    #make

    gcc -Wall -fno-strict-aliasing  -Wno-unused -Wno-pointer-sign -fPIC   -I. -I../include -I/usr/include -I/usr/include -I/usr/kerberos/include   -I`/usr/bin/apxs2 -q INCLUDEDIR` -I/usr/bin/include/apr-1   \
    -o version.o -c version.c
    In file included from version.c:59:
    /usr/include/apache2/ap_release.h:25:41: error: apr_general.h: No such file or directory
    version.c: In function ‘dacs_component_versions’:
    version.c:63: warning: implicit declaration of function ‘APR_STRINGIFY’
    version.c:63: error: expected ‘)’ before string constant
    make: ***  Error 1

    I have tried to solve this making a symbolic link like this:
    #ln -s /usr/include/apr-1.0/ /usr/bin/include/apr-1/

    and adding this variables:
    export APACHE_INCLUDES=/usr/include/apache2
    export APR_INCLUDES=/usr/include/apr-1.0

    but nothing works.

    Any ideas?

    regards

     
  • Barry Brachman
    Barry Brachman
    2010-05-24

    Hi -

    I think you must be very close…
    It's not finding apr_general.h, which (based on your flags) I would expect to see in
    /usr/bin/include/apr-1/apr_general.h or /usr/include/apr-1.0/apr_general.h
    Is it in either of those places?  If not, can you use 'find' or 'locate' to find out where
    apr_general.h is?

    Also, which version of Apache are you using?  (e.g., httpd -version)

    Different Linux distributions sometimes install Apache differently, and this can make building DACS a little harder.
    Having multiple versions of Apache installed on the same host can also cause problems.
    I know it's something most people want to avoid if possible, but rebuilding and installing a separate, clean version
    of Apache according to the DACS dacs.install(7) instructions should get you going faster… you can sort out the problem
    building against the Ubuntu version later, if you want.

    Hope this helps,
    Barry

     
  • Luis Franco
    Luis Franco
    2010-05-24

    Thank you for your help Barry,

    apr_general.h is located in /usr/include/apr-1.0/ and I am using Apache 2.2. Theoretically it should work but …. ;(
    I would prefer to avoid installing a new version of apache. It' s harder to maintain  and give a lot of headaches.
    If I get dacs working on a ubuntu distribution I will post here a little guide to help people with the same problem.

    Luis

     
  • Barry Brachman
    Barry Brachman
    2010-05-24

    OK, here is something to try.

    Edit src/defs.mk and look around line 75 for something like:
      apache_apr = -I/usr/bin/include/apr-1
    Add another directory for gcc to include:
      apache_apr = -I/usr/bin/include/apr-1 -I/usr/include/apr-1.0
    (Also make the same change to src/defs.mk.in if you don't want to lose the change when you run configure.)
    This should force gcc to also look in /usr/include/apr-1.0, which is where you say apr_general.h is.
    I guess you should also double check the permissions on that directory and its files.

    If this solves the problem, we will try to improve this build issue in the next release.

    Barry

     
  • Luis Franco
    Luis Franco
    2010-05-26

    Thank you for your help Barry,

    it works!. But now I have another problem when I execute "make":
    gcc -Wall -fno-strict-aliasing  -Wno-unused -Wno-pointer-sign -fPIC   -I. -I../include -I/usr/include -I/usr/include -I/usr/kerberos/include   -I`/usr/bin/apxs2 -q INCLUDEDIR` -I/usr/bin/include/apr-1 -I/usr/include/apr-1.0   \
    -o version.o -c version.c
    In file included from /usr/include/apr-1.0/apr_general.h:28,
                     from /usr/include/apache2/ap_release.h:25,
                     from version.c:59:
    /usr/include/apr-1.0/apr.h: In function ‘dacs_component_versions’:
    /usr/include/apr-1.0/apr.h:289: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘apr_off_t’
    /usr/include/apr-1.0/apr.h:289: error: ‘apr_off_t’ undeclared (first use in this function)
    /usr/include/apr-1.0/apr.h:289: error: (Each undeclared identifier is reported only once
    /usr/include/apr-1.0/apr.h:289: error: for each function it appears in.)
    make: ***  Error 1

    I have been looking for information about this issue and it seems that apr needs some flags to compile properly, but I am still studying the problem.

    Thank you again

     
  • This is a bit hard to figure out without having access to your include files… what does line 289 of
    /usr/include/apr-1.0/apr.h look like?
    The versions of apr.h that I have have this definition near line 289:
      typedef  off_t           apr_off_t;
    So my best guess is that off_t is not being defined, though
    I don't know why that should be.

    The definition of both off_t and apr_off_t in version.c is unimportant, so if that is indeed
    the problem you may be able to fix the error by defining off_t in version.c just before this line:
       #include <ap_release.h>
    Like so:
      typedef long int off_t;
      #include <ap_release.h>

    If that still doesn't work, perhaps you should contact me by email (send your apr.h) and we can
    continue this offline.

    Barry

     
  • Luis Franco
    Luis Franco
    2010-05-27

    Thank you again Barry,

    You are invited to a beer the next time you come to Spain, ;).

    Unfortunately, adding "typedef long int off_t;" to version.c didn't work. I think I must set compilation flags properly to solve the problem.
    I found two promising links: one and two but I haven't yet solved the error.

     
  • Barry Brachman
    Barry Brachman
    2010-05-27

    You might be on the right track regarding the 32/64 bit file functions.
    Also take a look at the man page for lseek64(3) and feature_test_macros(7).

    It is also possible that there is something wrong with your current install of Apache…
    I would still encourage you to try to work with a separate, clean install as described in
    the DACS documentation - it might save you a lot of time.

    Barry

    P.S.
    I visited Barcelona many years ago and enjoyed it very much.

     
  • Luis Franco
    Luis Franco
    2010-05-27

    I will take a look to those man pages.
    I don't like the idea of a fresh install because I prefer to use the Apache packages provides by the distribution. Now I am running a pair of ubuntu ad debian servers and I would like to get dacs working on them. If I can get that I will post int this forum a little "How to" to help ubuntu, debian and dacs users.

    Luis

     
  • Luis Franco
    Luis Franco
    2010-05-28

    Solved!
    I added these lines at the start of version.c:
    #define LINUX 2
    #define _REENTRANT
    #define _GNU_SOURCE
    #define _LARGEFILE64_SOURCE

    These parameters are the output of :
    $ apr-config -cppflags

    After do that I could install and output only shows these errors:
        Error reading ACL index
        Could not get ACL list
        file:///usr/local/dacs/acls: No such file or directory

    I couldn't take a look on it but I think it's just a problem with the path of a file.

     
  • Barry Brachman
    Barry Brachman
    2010-05-28

    Thanks for figuring that out, Luis.
    We will try to add that fix to the next release if there is time, or at least document it.

    As for the installation error, I think you are right - there is a path problem.
    /usr/local/dacs/acls should be a directory and should exist.
    I suggest you look at dacs.quick(7), which is a tutorial designed to get you going
    quickly.

    If you run into more problems, feel free to post here.

    Thanks again for your solution!
    Barry