[Samba] Provisioning fails - Codebase question

michael at chameleonoriginals.com michael at chameleonoriginals.com
Thu Feb 13 01:02:13 UTC 2020

On 2020-02-12 07:48, Rowland penny via samba wrote:
> On 12/02/2020 01:36, michael at chameleonoriginals.com wrote:
>> I've been following the whole process outlined at 
>> https://wiki.samba.org/index.php/Build_Samba_from_Source.  Of course, 
>> I've run update/upgrade.  I have already downloaded and executed the 
>> bootstrap script for Ubuntu 18.04 from the page you mention.  After 
>> this, ./configure starts with a large number of "NOT FOUND" warnings.  
>> I traced those items down and installed them after the bootstrap.  
>> Those unmentioned dependencies are included in the script I'm using to 
>> create and repeat the process when it fails.
> Can you supply a list of the extra dependencies you installed, it is
> my understanding that the packages in the bootstrap scripts are all
> that is required to build Samba
I need to trace back through my notes, but think I may have misspoken 
per the most recent strategy.  Since this is part of a much larger 
process, there are several stages where software is installed.  Once I 
started using the bootstrap, I removed the "second set" of dependencies, 
but believe that a couple of dependencies remain in the pre-bootstrap 
install list.  In version 40+, I admit that the script needs some TLC 
and reorganizing.
>>>> After nearly two hours of apparent success in the compile process, 
>>>> it completely blows up with a huge number of "libsamba-passdb.so: 
>>>> <different function names> has been removed - please update major 
>>>> version"
>>> No real idea about this, perhaps missing dependencies leading to 
>>> something not being built.
>> libsamba-passdb.so is part of the samba source downloaded for the 
>> build process.  The error implies (to me) that one or more of the 
>> source files wasn't properly updated (I'd assume libsamba-passdb.so or 
>> files it depends upon) in the source package.  But I acknowledge that 
>> I'm a total noob at building from source.
> My understanding is that you download the Samba tarball, unpack it and
> cd into the directory created, then, as a normal user, run
> './configure', then 'make'. If everything finishes successfully, you
> then run 'make install' as root, and all of Samba is installed into
> /usr/local/samba. This all depends on the required dependencies being
> installed. If there is a version of Samba installed, you need to
> ensure that the Samba binaries etc in /usr/local/samba are used before
> the distro binaries by altering the environment PATH.

My script is intended to be the first thing performed on the first boot 
of a newly imaged EspressoBin.  I have several warnings in my repo that 
ANY initial configuration steps may prevent success.  The kernel and OS 
build scripts in the repo place a single preconfiguration script in the 
home directory of root, which enables DHCP networking, installs wget, 
then downloads and executes the larger configuration script (which is 
still in process).  Nothing but the Ubuntu baseline software is 
installed before running the script (so Samba definitely is not 
installed).  The user does NOTHING before executing the preconfiguration 

You seem to have made a bit of effort to explicitly separate running 
./config and make as a NORMAL user, then make install as ROOT.  I know 
that it is a terrible practice to run everything as root, but since root 
is the only user on a first-boot EspressoBin and I am trying to make 
this process as efficient as possible, the script runs everything as 
root.  Am I missing something esoteric, where running all as root would 
induce a failure other than a faux-pas?  Remember, this script is meant 
so that absolute Linux beginners can start working with the EBin and 
Linux without having to stumble through lots of terminal commands.

At the end of the configuration process, the script will assign root a 
password and add a non-root sudo user, so that the user can start 
following proper Linux etiquette by NOT logging in as root.

"libsamba-passdb.so: symbol <one of ~50 symbols> has been removed - 
please update major version" is still the 2x4 to the forehead, at step 
4200 of (2 hours into) the make process.  Bumping down to Samba 4.11.5 
gives a cleaner error output, but a failure nonetheless.

Samba documentation unfortunately fits the mold of most geek 
documentation.  As I describe it, a new user spends days researching an 
issue and gets the idea that he might need to use a tiger.  He looks up 
"tiger" in the documentation and it is defined as "a large cat."  He 
looks up "cat" and it says "see tiger."  I checked the suggested 
reference associated with this error 
(https://wiki.samba.org/index.php/Waf#ABI_Checking).  Nowhere in this 
document does it describe what an ABI is, so there is no way for me to 
know if I am inadvertently changing one :)  I don't know what an ABI is 
at the moment, but as a programmer, my gut tells me that "symbol xxx has 
been removed - please update major version" is an alert that one or more 
source files in the package I downloaded is out of date.  With this in 
mind, I fear that following the recommended step of running ./config 
with "--abi-check-disable" will still result in a build failure, or 
worse, embed a landmine in the installation...libsamba-passdb 
immediately stands out to me as the Samba library's password database, 
which is no trivial or peripheral matter.

>>>> I will be stepping back a few releases for the next attempt, but am 
>>>> wondering if you could point me to a "build from source for dummies" 
>>>> that doesn't fit the standard mold by speaking as if the user has 
>>>> done so for years?
>>> Not really, I haven't built Samba for sometime, but it was very 
>>> simple, install the correct dependencies, run (as a normal user) 
>>> './configure', followed by 'make', followed by (as root) 'make 
>>> install'. This should lead to all of Samba being installed in 
>>> /usr/local/samba
>> Everything is run as root (the only user on a first-boot 
>> EspressoBin).  This is part of a bash script-package repo I'm building 
>> on GitHub, which will allow a total Linux noob to take an EspressoBin 
>> straight out of the box and then configure it as one of multiple 
>> configurations.
> Can you provide a link to your github page ?
     preconfig.sh can be copied and pasted into the EspressoBin terminal, 
or is added to root's home directory in the OS image if the user used 
the kernel.sh script to build the kernel and OS image.  For the 
EspressoBin to run as a DC, the user MUST build a kernel enabling POSIX 
ACLs and filesystem security.  kernel.sh just makes it easy for noobs.
     sysconfig.sh is the script which is generating my questions.  The 
line after removing bootstrap.sh was previously used to install the 
dependencies, and is a merge of the list on 
and the dependencies identified as missing during initial ./configure 
runs.  Since I am actively working on this, the line number in the 
script (currently line 74) may change, but I'll leave it commented in 
the script until I get a successful build.  Note that the final complete 
sysconfig script that installs and configures other software (not on 
GitHub yet) is >1K lines so far.

My "ebin-kodi" repo offers the ability to configure the EBin as a Samba 
Fileserver and/or install other optional software.  It is based on 
Ubuntu 16.04 and uses Ubuntu repos.  The ebin-dc will replace ebin-kodi, 
since it will offer Ubuntu 18.04 and (hopefully) Samba fileserver or 
Samba AD DC.
> Rowland

More information about the samba mailing list