# net/samba48 -> samba410 and ZEROCONF?



## `Orum (Sep 10, 2019)

I've been moving machines from Samba 4.8 -> 4.10, and noticed you can no longer disable both AVAHI and MDNSRESPONDER.  Is there a reason (e.g. changes upstream) we need one of these now?  It pulls in a bunch of ports from X11 that I'd rather not have on these headless servers.

If we're stuck with it, then so be it.  I'm mostly just curious what changed.

Oh, and while we're on the subject, is there a way to build/run it without Python 2.7?  Even with DEFAULT_VERSIONS+=python3=3.6 in /etc/make.conf and specifying `-DPY_FLAVOR=3.6` to make it still wants to build 2.7.  It looks to be related to devel/scons.


----------



## Wapcaplet (Sep 11, 2019)

I'm curious about the Zeroconf requirement as well.  For now, I chose mDNSResponder because it's much more lightweight (it doesn't bring in the X11 dependencies that Avahi does).  I don't need any Zeroconf stuff and would prefer to get rid of it.

I'm able to build Samba 4.10 without Python 2.7 using Poudriere under 12.0-RELEASE.  The only option changes I've made are to disable QUOTAS and select MDNSRESPONDER instead of AVAHI.  What options do you have selected that aren't the default choices?

You shouldn't need to put DEFAULT_VERSIONS+= python3=36 in /etc/make.conf because 3.6 is already the default for both python and python3 in /usr/ports/Mk/bsd.default-versions.mk.  I do have DEFAULT_VERSIONS+= samba=4.10 in my Poudriere equivalent of /etc/make.conf.


----------



## `Orum (Sep 12, 2019)

I'm not using Poudriere, but here are my options on machines that are just file servers (and not AD DCs):

```
===> The following configuration options are available for samba410-4.10.7:
     ADS=off: Active Directory client(implies LDAP)
     AD_DC=off: Active Directory Domain Controller
     AESNI=on: Accelerated AES crypto functions(amd64 only)
     CLUSTER=off: Clustering
     CUPS=off: CUPS printing system support
     DEBUG=off: Build with debugging support
     DEVELOPER=off: With developer framework(implies NTVFS)
     DOCS=off: Build and/or install documentation
     FAM=on: File Alteration Monitor
     GLUSTERFS=off: GlusterFS
     GPGME=off: GpgME
     LDAP=on: LDAP client
     MANDOC=off: Build manpages from DOCBOOK templates
     NTVFS=off: Build *DEPRECATED* NTVFS file server
     PROFILE=off: Profiling data
     QUOTAS=off: Disk quota
     SPOTLIGHT=off: Spotlight
     SYSLOG=off: Syslog logging support
     UTMP=off: UTMP accounting
====> GSSAPI Security API support: you have to select exactly one of them
     GSSAPI_BUILTIN=on: GSSAPI support via bundled Heimdal
     GSSAPI_MIT=off: GSSAPI support via security/krb5
====> Options available for the single ZEROCONF: you have to select exactly one of them
     AVAHI=off: Zeroconf support via Avahi
     MDNSRESPONDER=on: Zeroconf support via mDNSResponder
====> Options available for the radio DNS: you can only select none or one of them
     NSUPDATE=off: Use samba NSUPDATE utility for AD DC
     BIND911=off: Use Bind 9.11 as AD DC DNS server frontend
     BIND914=off: Use Bind 9.14 as AD DC DNS server frontend
```
I realized I don't need LDAP and I probably don't need FAM, so I may try to turn those off and see what happens.  Right now it seems to pull in python27 for this:

```
===>   cmake-3.15.2 depends on shared library: libjsoncpp.so - not found
===>   jsoncpp-1.8.1_7 depends on file: /usr/local/bin/scons - not found
===>   scons-3.0.1 depends on package: py27-setuptools>0 - not found
===>   py27-setuptools-41.2.0 depends on file: /usr/local/bin/python2.7 - not found
```


----------



## SirDice (Sep 12, 2019)

Wapcaplet said:


> I'm curious about the Zeroconf requirement as well.


Because the "old" windows network browsing doesn't work any more. The computer browser service on Windows depended on SMBv1.


----------



## `Orum (Sep 12, 2019)

It's still somewhat annoying as I never browse for shares.  They're all mapped from scripts.


----------



## SirDice (Sep 12, 2019)

Neither do I but Windows uses UPnP for this so it's reasonable to assume Samba tries to do the same. What I find annoying is that if you don't run mDNS or Avahi your logs are filled up with messages like these every ten minutes:

```
Sep  6 01:31:53 molly smbd[1074]: dnssd_clientstub ConnectToServer: connect()-> No of tries: 1
Sep  6 01:31:54 molly smbd[1074]: dnssd_clientstub ConnectToServer: connect()-> No of tries: 2
Sep  6 01:31:55 molly smbd[1074]: dnssd_clientstub ConnectToServer: connect()-> No of tries: 3
Sep  6 01:31:56 molly smbd[1074]: dnssd_clientstub ConnectToServer: connect() failed path:/var/run/mdnsd Socket:36 Err:-1 Errno:2 No such file or directory
```

I haven't found an option or switch to turn this off in the config.


----------



## obsigna (Sep 12, 2019)

SirDice said:


> Neither do I but Windows uses UPnP for this so it's reasonable to assume Samba tries to do the same. What I find annoying is that if you don't run mDNS or Avahi your logs are filled up with messages like these every ten minutes:
> 
> ```
> Sep  6 01:31:53 molly smbd[1074]: dnssd_clientstub ConnectToServer: connect()-> No of tries: 1
> ...


The switch is:
multicast dns register = no

Add this to smb4.conf.


----------



## Wapcaplet (Sep 12, 2019)

`Orum said:


> I'm not using Poudere, but here are my options on machines that are just file servers (and not AD DCs):


I just rebuilt Samba 4.10 using your config with Poudriere on my amd64 12.0-RELEASE builder, and only Python 3.6 is used.  CMake is not pulled in.  Could you post the complete contents of your /etc/make.conf file?


----------



## driesm (Sep 12, 2019)

FYI: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=240036


----------



## `Orum (Sep 12, 2019)

Wapcaplet said:


> CMake is not pulled in.  Could you post the complete contents of your /etc/make.conf file?


My understanding is Poudriere is for building your own pkg repo, which does _not_ ship build dependencies as machines grabbing binary packages don't need them. Maybe that's why you're not seeing them, or am I totally wrong on how Poudriere works?  Anyway, here's my make.conf on the machine:

```
% cat /etc/make.conf
# make.conf
OPTIONS_UNSET+=X11
KERNCONF=PYRITE
DEFAULT_VERSIONS+=python3=3.6
```
...and the only reason the python stuff was there was to try and build samba without python 2.7.  I haven't run `portmaster -s` yet to clear out build deps but I'm pretty sure that will (hopefully) axe 2.7, or at least until I have to build samba again.


----------



## Wapcaplet (Sep 12, 2019)

`Orum said:


> My understanding is Poudriere is for building your own pkg repo, which does _not_ ship build dependencies as machines grabbing binary packages don't need them. Maybe that's why you're not seeing them, or am I totally wrong on how Poudriere works?


You're correct that the build dependencies are not built and installed outside of the Poudriere jail, but Poudriere isn't even building CMake in the jail.  It never touches CMake on my system.

There's nothing in your /etc/make.conf that looks like it would cause the problem.  Can you capture the complete build log from Portmaster and upload it as a compressed attachment?  Update your ports tree first, as CMake is now at 3.15.3, and your log shows you're building 3.15.2.


----------



## `Orum (Sep 13, 2019)

It's odd that you'd have different build deps entirely.  I'm not going to update our production machines (as I only update once a month except for certain security considerations), but I'll fire up a VM when I have some time this weekend and presumably duplicate the circumstances.  Will log the whole thing within `script` so the curious can take a peek.


----------



## SirDice (Sep 13, 2019)

Poudriere specifically ignores the system's /etc/make.conf.


----------



## `Orum (Sep 13, 2019)

Sure, but I can't see much if anything in my minimal make that would cause cmake to be required for me and not him.  I did just have a thought though, in that my src.conf strips out a lot of stuff that I don't need/use.  Still not sure why that would pull in cmake, as I don't think anything I remove would suddenly make that a dependency.  However, I'm not well versed in the intricacies of UNIX-esque build environments or the fine details of every specific thing pulled with various src.conf options.


----------



## Wapcaplet (Sep 13, 2019)

SirDice said:


> Poudriere specifically ignores the system's /etc/make.conf.


`Orum is using Portmaster, not Poudriere, so his /etc/make.conf is being used.


----------

