[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
script.
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 ?
https://github.com/ChameleonGeek/ebin-dc
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
https://wiki.samba.org/index.php/Build_Samba_from_Source#Samba_Operating_System_Requirements
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