[Samba] Samba compilation issue

Gaiseric Vandal gaiseric.vandal at gmail.com
Sat May 19 06:03:06 MDT 2012


I don’t know if installing Samba in an alternate path could cause an issue
with dependencies.  But It doesn’t seem like it.    If “smbd –V” works then
I would think this is not an issue.     So it The “testparm –v “ command
should also let you verify that the password file, private directory, and
locks directory are correct.     You may also want to increase the log level
to 10 to see if samba will tell you why it is quitting.       Or maybe run
the “/opt/usr/local/samba/sbin/smbd –F –d 10” command.    You may also want
to try running “truss /opt/usr/local/samba/sbin/smbd” to see if that shows
you anything.  

 

Does /opt/usr/local/samba/sbin/nmbd  or /opt/usr/local/samba/sbin/winbind
run ? 

 

 

 

From: prabu.murugan at emc.com [mailto:prabu.murugan at emc.com] 
Sent: Saturday, May 19, 2012 5:32 AM
To: gaiseric.vandal at gmail.com
Cc: samba at lists.samba.org
Subject: RE: Samba compilation issue

 

When we install as a package we do it under /opt and compilation under
/usr/local.

Log directory (/opt/usr/local/samba/log) is empty L. /var/samba/log contains
logs for oracle samba.

These are standalone servers. hardware is Sunfire V490.

 

Created softlink to gnu ld file. Still same error.

Not sure why libtalloc is still considered when we run “./configure
--enable-external-libtalloc=no --with-libtalloc=no”.

Am I missing something here?

 

Thanks,

Prabu

 

From: Gaiseric Vandal [mailto:gaiseric.vandal at gmail.com] 
Sent: Friday, May 18, 2012 10:42 PM
To: Murugan, Prabu
Cc: samba at lists.samba.org
Subject: Re: Samba compilation issue

 


When you installed samba did you specify an alternate path?  I don't
understand why it is in /opt/usr/local....

Since you can at least run it with -V, it  indicates that the binary and the
library paths are good.  You may want to look at your samba log files
(/var/samba/logs and /var/log/samba )   to see if there is some other issue
- maybe with your config files, local cache or locks, or local db files.  



gcc will be harddwired to use /usr/ccs/bin/ld.   

You can try the following
    #mv /usr/ccs/bin/ld /usr/ccs/bin/ld.bak
    #ln -s /usr/local/bin/ld /usr/ccs/bin/ld

This is not generally a good idea BUT it might help identify if your linker
is a problem.



Are these standalone servers or domain members or domain controllers?


On 05/18/12 13:02, prabu.murugan at emc.com wrote: 

smbd -V is showing the version.

bash-3.2# /opt/usr/local/samba/sbin/smbd -V

Version 3.4.2

 

ld is picking from /usr/local/bin/ld

bash-3.2# which ld

/usr/local/bin/ld

bash-3.2# /usr/local/bin/ld --version

GNU ld (GNU Binutils) 2.21.

 

I don’t remember whether it gave error regarding dependencies while
installing 3.4.2. But I installed all the dependencies as a prerequisite.

 

Thanks,

Prabu

 

From: Gaiseric Vandal [mailto:gaiseric.vandal at gmail.com] 
Sent: Friday, May 18, 2012 10:25 PM
To: Murugan, Prabu; Samba
Subject: Re: Samba compilation issue

 


your configure syntax looks correct

One major issue I ran into was the "ld" (linker) command.   Gcc on Solaris
(either from sun "freeware" tools cd or from www.sunfreeware.com) was built
with /usr/ccs/bin/ld -  which is an old version.   A lot of software expects
gnu ld or at least a newer version of ld.  I could sometimes force stuff by
sym linking /usr/ccs/bin/ld to /usr/local/bin/ld  or /usr/sfw/bin/gld.  


/opt/usr/local/samba/sbin/smbd -V   didn't show any output?

Does "/usr/sbin/smbd -V"  show output (that would be the sun/oracle version.
Probably not relevant if it does work.)


When you installed samba from sunfreeware did it warn about any missing
dependencies?





On 05/18/12 12:36, prabu.murugan at emc.com wrote: 

I ran

./configure --enable-external-libtalloc=no --with-libtalloc=no

Issue is same.

Above command is fine?

 

I compiled talloc 1.3.0. still make gives the same error. I have attached
output of make errors.

 

Reinstalling 3.4.2   didn’t helpL.

 

Thanks,

Prabu

 

From: Gaiseric Vandal [mailto:gaiseric.vandal at gmail.com] 
Sent: Friday, May 18, 2012 9:22 PM
To: Murugan, Prabu
Subject: Re: Samba compilation issue

 

Your configure options  (./configure --help) include


  --enable-external-libtalloc
                          Enable external talloc [default=auto]

      --with-libtalloc
                        Build the libtalloc shared library (default=yes if
shared libs supported)


You should be able to set to "=no"

Or try building talloc 1.3.x with Samba 3.4.x.

Do either of the following work?

    /opt/usr/local/samba/sbin/smbd -V   
     /opt/usr/local/samba/sbin/smbd -b   
     /opt/usr/local/samba/testparm -v  -s /opt/usr/local/samba/lib/smb.conf


You may want to have /opt/usr/local/samba/lib/ at the beginning of your
LD_LIBRARY_PATH.

You may want to reinstall the Sunfreeware version of samba 3.4.2  if you
need to get samba up and running quickly on this machine.




    




On 05/18/12 10:31, prabu.murugan at emc.com wrote: 

Yes the 3.5.10 is from Sun/Oracle.

 

How to disable talloc while running ./configure?

 

Smbd –F doesn’t give any error.

bash-3.2# LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/usr/local/samba/lib/

bash-3.2# /opt/usr/local/samba/sbin/smbd -F -s
/opt/usr/local/samba/lib/smb.conf

bash-3.2# ps -ef |grep smbd

    root  7201  7167   0 19:32:20 pts/1       0:00 grep smbd

 

bash-3.2# which pkg-config

/bin/pkg-config

bash-3.2# /bin/pkg-config --version

0.15.0

 

When I try to compile talloc-2.0.7. I get this error.

 

Waf: Entering directory `/usr/local/talloc-2.0.7/bin'

[15/28] Compiling lib/replace/test/testsuite.c

../lib/replace/test/testsuite.c:52: error: syntax error before
"torture_local_replace"

../lib/replace/test/testsuite.c:52: warning: data definition has no type or
storage class

../lib/replace/test/testsuite.c:1058: error: syntax error before
"torture_local_replace"

../lib/replace/test/testsuite.c: In function `torture_local_replace':

../lib/replace/test/testsuite.c:1060: error: `bool' undeclared (first use in
this function)

../lib/replace/test/testsuite.c:1060: error: (Each undeclared identifier is
reported only once

../lib/replace/test/testsuite.c:1060: error: for each function it appears
in.)

../lib/replace/test/testsuite.c:1060: error: syntax error before "ret"

../lib/replace/test/testsuite.c:1061: error: `ret' undeclared (first use in
this function)

Waf: Leaving directory `/usr/local/talloc-2.0.7/bin'

Build failed:  -> task failed (err #1):

        {task: cc testsuite.c -> testsuite_3.o}

make: Fatal error: Command failed for target `all'

 

Thanks,

Prabu

 

From: Gaiseric Vandal [mailto:gaiseric.vandal at gmail.com] 
Sent: Friday, May 18, 2012 6:57 PM
To: Murugan, Prabu
Cc: samba at lists.samba.org
Subject: Re: Samba compilation issue

 

This is a lot to keep track off. 

So the 3.5.10 is from Sun/Oracle?

I see on sunfreeware.com that 3.4.2 is still their latest version.  But I
thought it would have installed in /usr/local/.  If you moved renamed the
directory, you may need to update your LD_LIBRARY_PATH.   You may want to
try running smbd with "-F"  (foreground) instead of "-D"  and see if that
provides more errors.

What does "which pkg-config" show on each machine?  I see there is a
sunfreeware.com version of pkg-config.  The latest sun/oracle one is 0 .15
which the one one sunfreeware.com is 0.25.  


FYI when I compile samba I will usually compile in /usr/local/samba-version.
Once I have it compiled I can delete or rename the previous version and then
symlink /usr/local/samba to the new version.


Can you do "make talloc" from with in the samba source code directory to
build, in advance, the talloc that is bundled in?    Or can you just disable
talloc when you configure?  Although I would be interested if you then get
warnings that tdb is unavailable.  





On 05/18/12 08:52, prabu.murugan at emc.com wrote: 

I am on Sun SPARC system.

On the non-working machine default package is 3.5.10. Till now it was
running with 3.4.2 (SMCsamba). Wrongly mentioned as 3.5.3. 

I set “set ngroups_max=32” in /etc/system and rebooted. 

Then installed gcc 3.4.6. few more lines added to the error.

 

./Configure Error:

bash-3.2# more config.err

configure: WARNING: $PATH contains /usr/ucb - build errors may follow

Package talloc was not found in the pkg-config search path.

Perhaps you should add the directory containing `talloc.pc'

to the PKG_CONFIG_PATH environment variable

No package 'talloc' found

make: Warning: Ignoring DistributedMake -v option

make: Warning: Ignoring DistributedMake -o option

make: Fatal error: No dmake output dir argument after -o flag

 

 

Another issue is. Until we fix we are planning to use 3.4.2. It is also not
starting now L.

Command ” ldd -r /opt/usr/local/samba/sbin/smbd” doesn’t report any error.

bash-3.2# /etc/init.d/samba.server.opt start

BASE=/opt/usr/local/samba

+ [ ! -d /usr/bin ]

+ [ ! -d /opt/usr/local/samba/log ]

+ echo Starting SMBD

Starting SMBD

+ /opt/usr/local/samba/sbin/smbd -D -s /opt/usr/local/samba/lib/smb.conf

+ echo Starting NMBD

Starting NMBD

+ /opt/usr/local/samba/sbin/nmbd -D -s /opt/usr/local/samba/lib/smb.conf

 

 

Thanks,

Prabu

 

From: Gaiseric Vandal [mailto:gaiseric.vandal at gmail.com] 
Sent: Friday, May 18, 2012 4:51 PM
To: Murugan, Prabu; samba at lists.samba.org
Subject: RE: Samba compilation issue

 

http://www.samba.org/ftp/talloc/  -  has talloc 1.3.x not 1.0.x (my
mistake.) 

 

 

For the non working machine -  which package are you using for 3.4.2?
SMCsamba is the package from Sunfreeware.com.    I am unclear if you
non-working has 3.4.2 or 3.5.3.   SUNWsmb*  packages are from Sun/Oracle.

 

I am also guessing that on the working machine you have gcc from sunfreeware
(based on the /usr/local path.)   Depending on how your LD_LIBRARY_PATH was
set and which gcc you were using, the SMCsamba packages could have provided
some required libraries when building software.   My guess is that samba
3.5.x uses a newer libtalloc than 3.4.x and that was causing some of the
problems.    Although LD_LIBRARY_PATH and PKG_CONFIG_PATH should have let
you specify the version you wanted.  I wonder if the “wrong” gcc isn’t
picking it up correctly-   so using the same gcc as the working machine may
matter.    

 

 

Are you on a  sparc or x86_64 system?   I believe that sunfreeware gcc on
sparc compiles 64-bit by default but on x86_64 will compile 32-bit by
default (even on a 64-bit machine.)   

 

 

I still think the simplest thing is to just use the latest Sun/Oracle samba
and skip compiling.  You should be able to download the Samba patches from
Oracle without having to install the full patch cluster.  

 

PS.   I noticed that samba 3.4.x and higher enforce the Solaris NGROUPS_MAX
parameter.     You probably want to have set “ngroups_max=32” in
/etc/system-  otherwise default is 16.  If you have the latest kernel
patches (147440-10 or 147441-10 as of 2-3 months ago) you can set this even
higher.  

 

 

 

 

 

From: prabu.murugan at emc.com [mailto:prabu.murugan at emc.com] 
Sent: Friday, May 18, 2012 12:25 AM
To: gaiseric.vandal at gmail.com; samba at lists.samba.org
Subject: RE: Samba compilation issue

 

Thanks a lot for your reply. I was going crazy because of this issue.

 

Let me answer your questions.

Can you cat talloc.pc-  make sure the config file shows the correct path.

>>>bash-3.2# more /usr/local/samba-extras/lib/pkgconfig/talloc.pc

prefix=/usr/local/samba-extras

exec_prefix=${prefix}

libdir=${prefix}/lib

includedir=${prefix}/include

Name: talloc

Description: A hierarchical pool based memory system with destructors

Version: 2.0.7

Libs: -Wl,-rpath,/usr/local/samba-extras/lib -L${libdir} -ltalloc

Cflags: -I${includedir}

URL: http://talloc.samba.org/

I wonder what the significant difference is between your two solaris 10
machines.  Which gcc are you using.  Do either of them have the sunfreeware
versions of samba?  Or the sun bundled versions of samba.   Maybe one
machine already has libtalloc installed.    What does "pkginfo | grep -i
samba" show?  I think samba 3.0x. binaries from Sun/Oracle may have been in
/usr/sfw/bin not /usr/bin.
>>>>On the working server /usr/local/bin/gcc version is 3.4.6. Here /bin/gcc
is 3.4.3. path and version are different.

Non working machine

bash-3.2# pkginfo | grep -i samba

application SMCsamba                         samba è 3.5.3

system      SUNWsmbaS                        samba - A Windows SMB/CIFS
fileserver for UNIX (Source)

system      SUNWsmbac                        samba - A Windows SMB/CIFS
fileserver for UNIX (client)

system      SUNWsmbar                        samba - A Windows SMB/CIFS
fileserver for UNIX (Root)

system      SUNWsmbau                        samba - A Windows SMB/CIFS
fileserver for UNIX (Usr)

 

Working machine

bash-3.00# pkginfo |grep samba

application SMCsamba                         samba   è 3.0.24

system      SUNWsmbac                        samba - A Windows SMB/CIFS
fileserver for UNIX (client) è

system      SUNWsmbar                        samba - A Windows SMB/CIFS
fileserver for UNIX (Root)

system      SUNWsmbau                        samba - A Windows SMB/CIFS
fileserver for UNIX (Usr)

system      samba                            SMB based file/printer sharing


What is the current version of samba you are running.  Did you compile that
or is if from a package?  Is the current version in the PKG_CONFIG_PATH or
LD_LIBRARY_PATH when compiling the new one?

>>>Working machine we were compiled samba 3.0.21b. now compiled 3.4.17. Non
working machine current version 3.4.2(as package, not from source code)
since 3.0.21b was not getting compiled.

Working machine OS is Solaris 10_update 5. Non-working machine is latest OS
Solaris 10_update 10.

 

PS The samba 3.4.17 source code includes talloc.  But it might be 1.0.x
Maybe try downloading and compiling 1.0.x instead.       And I would try
building it into the same directory that you are building the rest of samba.

>>>I don’t see 1.0.x under http://www.samba.org/ftp/talloc/. So I tried with
2.0.7.
bash-3.2# pwd

/usr/local/talloc-2.0.7

bash-3.2# ./configure --prefix=/usr/local/samba-3.4.17/source/

 

Is the current version in the PKG_CONFIG_PATH or LD_LIBRARY_PATH when
compiling the new one? 

>>>No they are not included in the new one.

bash-3.2# echo $LD_LIBRARY_PATH

/usr/local/samba-extras/lib/

bash-3.2# echo $PKG_CONFIG_PATH

/usr/local/samba-extras/lib/pkgconfig/

 

3.4.2 were under /usr/local/samba/. I moved as /usr/local/samba-3.4.2.

 

Thanks,

Prabu

 

From: Gaiseric Vandal [mailto:gaiseric.vandal at gmail.com] 
Sent: Friday, May 18, 2012 3:52 AM
To: Murugan, Prabu; Samba
Subject: Re: Samba compilation issue

 

On 05/17/12 18:18, Gaiseric Vandal wrote: 

On 05/17/12 11:15, prabu.murugan at emc.com wrote: 

Hi,

As a security concern we are upgrading samba to 3.4.17. 

I tried all possible option to compile samba 3.4.17 on Solaris 10_U10. But
it is not going through. 

 

User requirement is to compile samba 3.4.17 to support their application.
3.4.17 is working on Solaris 9 and Solaris 10_U5. But not on Solaris 10_U10.

./configure and make gives error related to talloc. I have set the
PKG_CONFIG_PATH. Still the error is same. 

 

I tried the solution provided by you on URL
http://lists.samba.org/archive/samba/2010-June/156711.html

Can you help me with this issue.

 

bash-3.2# pwd

/usr/local/samba-3.4.17/source3

bash-3.2# more config.err

Package talloc was not found in the pkg-config search path.

Perhaps you should add the directory containing `talloc.pc'

to the PKG_CONFIG_PATH environment variable

No package 'talloc' found

 

bash-3.2# echo $LD_LIBRARY_PATH

/usr/local/samba-extras/lib/

bash-3.2# echo $PKG_CONFIG_PATH

/usr/local/samba-extras/lib/pkgconfig/

 

bash-3.2# ls -l /usr/local/samba-extras/lib/pkgconfig/

total 6

-rw-r--r--   1 root     root         334 May 16 19:13 pytalloc-util.pc

-rw-r--r--   1 root     root         324 May 16 19:13 talloc.pc

-rw-r--r--   1 root     root         277 May 16 19:17 tdb.pc

 

bash-3.2# ls -l /usr/local/samba-extras/lib/

total 188

lrwxrwxrwx   1 root     root          25 May 16 19:14 libpytalloc-util.so ->
libpytalloc-util.so.2.0.7

lrwxrwxrwx   1 root     root          25 May 16 19:14 libpytalloc-util.so.2
-> libpytalloc-util.so.2.0.7

-rw-r--r--   1 root     root        9412 May 16 19:14
libpytalloc-util.so.2.0.7

lrwxrwxrwx   1 root     root          18 May 16 19:14 libtalloc.so ->
libtalloc.so.2.0.7

lrwxrwxrwx   1 root     root          18 May 16 19:14 libtalloc.so.2 ->
libtalloc.so.2.0.7

-rw-r--r--   1 root     root       79556 May 16 19:14 libtalloc.so.2.0.7

drwxr-xr-x   2 root     root         512 May 16 19:19 pkgconfig

drwxr-xr-x   3 root     root         512 May 16 19:14 python2.6

 

Thanks,

Prabu


I see on  http://www.samba.org/ftp/talloc/  that there is both talloc 1.3.x
and talloc 2.0.x.    I am looking through some of my old builds and my old
build notes.   With samba I seem to have compiled talloc 2.0.x separately (I
have the pkgconfig files.)     I think samba 3.4.x I have just compiled with
out talloc.     


Can you cat talloc.pc-  make sure the config file shows the correct path.


I wonder what the significant difference is between your two solaris 10
machines.  Which gcc are you using.  Do either of them have the sunfreeware
versions of samba?  Or the sun bundled versions of samba.   Maybe one
machine already has libtalloc installed.    What does "pkginfo | grep -i
samba" show?  I think samba 3.0x. binaries from Sun/Oracle may have been in
/usr/sfw/bin not /usr/bin.

What is the current version of samba you are running.  Did you compile that
or is if from a package?  Is the current version in the PKG_CONFIG_PATH or
LD_LIBRARY_PATH when compiling the new one?







PS The samba 3.4.17 source code includes talloc.  But it might be 1.0.x
Maybe try downloading and compiling 1.0.x instead.       And I would try
building it into the same directory that you are building the rest of samba.

 

 

 

 



More information about the samba mailing list