Name: samba Version: 4.23.3 Release: 7%{?dist} Summary: Server and client for SMB/CIFS and Active Directory License: GPL-3.0-or-later AND LGPL-3.0-or-later URL: https://www.samba.org Source0: %{name}-%{version}.tar.gz # ==== Build feature toggles =============================================== # habilite/desabilite com: rpmbuild ... --with/--without ad_dc %bcond_without ad_dc %bcond_without cups %bcond_without pam %bcond_without snapper %bcond_with check # ==== Core BuildRequires ================================================== BuildRequires: gcc gcc-c++ make BuildRequires: python3 python3-devel BuildRequires: pkgconf pkgconf-m4 pkgconf-pkg-config BuildRequires: redhat-rpm-config BuildRequires: zlib-devel BuildRequires: gnutls-devel >= 3.4.7 BuildRequires: libtasn1-devel BuildRequires: popt-devel BuildRequires: readline-devel BuildRequires: jansson-devel BuildRequires: libarchive-devel BuildRequires: avahi-devel BuildRequires: dbus-devel BuildRequires: ncurses-devel BuildRequires: perl-Parse-Yapp BuildRequires: flex BuildRequires: bison # Docbook / man pages BuildRequires: docbook-style-xsl # ACL / xattr BuildRequires: libacl-devel BuildRequires: libattr-devel # PIDL/IDL, misc BuildRequires: glib2-devel # Bindings Python para libs samba BuildRequires: python3-talloc BuildRequires: python3-tdb BuildRequires: python3-tevent BuildRequires: python3-ldb BuildRequires: python3-markdown BuildRequires: python3-dns # Libs C obrigatórias BuildRequires: libtalloc BuildRequires: libtalloc-devel BuildRequires: libtevent BuildRequires: libtevent-devel # MIT Kerberos (AD DC com MIT; fileserver com MIT) %if %{with ad_dc} BuildRequires: krb5-devel BuildRequires: krb5-server BuildRequires: krb5-workstation %endif # Opcionais úteis %if %{with cups} BuildRequires: cups-devel %endif %if %{with pam} BuildRequires: pam-devel %endif BuildRequires: gpgme-devel BuildRequires: libbsd-devel BuildRequires: openldap-devel BuildRequires: openssl-devel BuildRequires: libxslt BuildRequires: keyutils-libs-devel BuildRequires: libunwind-devel BuildRequires: libuuid-devel BuildRequires: libpcap-devel BuildRequires: lmdb-devel BuildRequires: python3-markdown # Para macros systemd BuildRequires: systemd-rpm-macros # ==== Selftests (opcionais; habilite com --with check) ==================== %if %{with check} BuildRequires: bash BuildRequires: python3-iso8601 BuildRequires: python3-cryptography BuildRequires: python3-pyasn1 %endif # ==== Runtime (segundo doc do Samba – libs para rodar) ==================== # Mandatory: Requires: python3 Requires: perl Requires: acl Requires: attr Requires: gnutls >= 3.4.7 Requires: zlib # LDB/Python LDB da base (para evitar conflito com sssd/libldb.so.2) Requires: libldb >= 2.11.0 Requires: python3-ldb >= 2.11.0 # Kerberos (MIT) – recomendado em AD DC / membro Requires: krb5-libs Requires: krb5-workstation # Outros opcionais recomendados na doc do Samba Requires: libblkid Requires: dbus-libs Requires: jansson Requires: readline Requires: libbsd Requires: libxslt Requires: pam Requires: cups Requires: openldap Requires: python3-markdown Requires: python3-dns Requires: patch Requires: gpgme Requires: python3-gpg Requires: flex Requires: systemd Requires: libtalloc Requires: libtevent # scriptlets systemd Requires(post): systemd Requires(preun): systemd Requires(postun): systemd # ==================================================================== # Replacement dos pacotes Samba da distro (NÃO mexe mais com libldb) # ==================================================================== # O pacote samba ONBIT substitui apenas os pacotes Samba da distro. # A pilha libldb/python3-ldb/python3-tdb continua sendo a da base. Conflicts: samba Conflicts: samba-common Conflicts: samba-common-libs Conflicts: samba-client-libs Conflicts: libwbclient Obsoletes: samba < %{version} Obsoletes: samba-common < %{version} Obsoletes: samba-common-libs < %{version} Obsoletes: samba-client-libs < %{version} Obsoletes: libwbclient < %{version} Provides: samba-common = %{version}-%{release} Provides: samba-common-libs = %{version}-%{release} Provides: samba-client-libs = %{version}-%{release} Provides: libwbclient = %{version}-%{release} %description Samba provides SMB/CIFS file and print services and can act as an Active Directory domain controller. Several utilities (e.g. samba-tool) and the build system are written in Python 3.x. # ==================================================================== # PREP # ==================================================================== %prep %autosetup -n %{name}-%{version} # ==================================================================== # BUILD # ==================================================================== %build ./configure \ --prefix=/usr \ --exec-prefix=/usr \ --libdir=%{_libdir} \ --sbindir=%{_sbindir} \ --sysconfdir=/etc \ --mandir=/usr/share/man \ --enable-fhs \ --bundled-libraries=cmocka make # ==================================================================== # INSTALL # ==================================================================== %install rm -rf %{buildroot} make install DESTDIR=%{buildroot} # NÃO REMOVER libs privadas do Samba / LDB em %{_libdir}/samba, # pois o pacote da base usa sua própria libldb; aqui estamos # usando libldb da base para o sistema (Requires: libldb/python3-ldb). # Apenas remover manpage de talloc (conflito com libtalloc-devel do sistema) rm -f %{buildroot}%{_mandir}/man3/talloc.3* || true # Remover ferramentas ldb que conflitam com ldb-tools da base rm -f %{buildroot}%{_bindir}/ldbadd \ %{buildroot}%{_bindir}/ldbdel \ %{buildroot}%{_bindir}/ldbedit \ %{buildroot}%{_bindir}/ldbmodify \ %{buildroot}%{_bindir}/ldbrename \ %{buildroot}%{_bindir}/ldbsearch || true rm -f %{buildroot}%{_mandir}/man1/ldbadd.1* \ %{buildroot}%{_mandir}/man1/ldbdel.1* \ %{buildroot}%{_mandir}/man1/ldbedit.1* \ %{buildroot}%{_mandir}/man1/ldbmodify.1* \ %{buildroot}%{_mandir}/man1/ldbrename.1* \ %{buildroot}%{_mandir}/man1/ldbsearch.1* || true # Remover bindings Python que conflitam com python3-{talloc,tevent,ldb,tdb} da base rm -f %{buildroot}/usr/lib64/python3.9/site-packages/talloc*.so \ %{buildroot}/usr/lib64/python3.9/site-packages/tevent*.so \ %{buildroot}/usr/lib64/python3.9/site-packages/ldb*.so \ %{buildroot}/usr/lib64/python3.9/site-packages/tdb*.so \ %{buildroot}/usr/lib64/python3.9/site-packages/__pycache__/_ldb_text* \ %{buildroot}/usr/lib64/python3.9/site-packages/__pycache__/_tdb_text* \ %{buildroot}/usr/lib64/python3.9/site-packages/__pycache__/tevent* || true # Instala unidade systemd para AD DC install -d %{buildroot}%{_unitdir} cat > %{buildroot}%{_unitdir}/samba-ad-dc.service << 'EOF' [Unit] Description=Samba Active Directory Domain Controller After=network.target remote-fs.target nss-lookup.target [Service] Type=forking Environment=PATH=/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin ExecStart=/usr/sbin/samba -D PIDFile=/run/samba/samba.pid ExecReload=/bin/kill -HUP $MAINPID [Install] WantedBy=multi-user.target EOF # Manifesto: arquivos do pacote principal find %{buildroot} -mindepth 1 \( -type f -o -type l -o -type d \) \ | sed "s|^%{buildroot}||" \ | grep -vE '^/$|^%{_sbindir}$|^/usr$|^/usr/bin$|^/usr/lib$|^/usr/lib64$' \ | grep -vE '^/usr/lib/debug/|^/usr/lib/.build-id/|^%{_mandir}/' \ | sort -u > %{_builddir}/filelist.manifest # ==================================================================== # POST / PREUN / POSTUN # ==================================================================== %post # Ativa/atualiza serviço systemd %systemd_post samba-ad-dc.service # Cria um smb.conf básico na primeira instalação (não sobrescreve) if [ ! -f %{_sysconfdir}/samba/smb.conf ]; then mkdir -p %{_sysconfdir}/samba cat > %{_sysconfdir}/samba/smb.conf <<'EOF' [global] workgroup = TESTE realm = TESTE.NET netbios name = SERVER server string = Domain Controller (DC) TESTE.NET - Samba %v server role = active directory domain controller disable netbios = yes smb ports = 445 dns proxy = no server min protocol = SMB3 # === Configurações de Log e Desempenho (Padrão) === log file = /var/log/samba/log.%m max log size = 10000 log level = 3 # Otimização de I/O use sendfile = yes aio read size = 1024 aio write size = 1024 # homes = /home/%U # read only = no EOF fi %preun %systemd_preun samba-ad-dc.service %postun %systemd_postun_with_restart samba-ad-dc.service # ==================================================================== # CHECK # ==================================================================== %check %if %{with check} # Selftests desabilitados por padrão; habilite com --with check true %endif # ==================================================================== # FILES # ==================================================================== %files -f %{_builddir}/filelist.manifest %license COPYING %doc README* %dir %{_sysconfdir}/samba %config(noreplace) %ghost %{_sysconfdir}/smb.conf %{_unitdir}/samba-ad-dc.service # ==================================================================== # CHANGELOG # ==================================================================== %changelog * Wed Nov 19 2025 Guilherme Suzin - 4.23.3-7 - Removidos Requires desnecessários (glusterfs-* e grande lista de -devel) - Runtime Requires agora seguem a documentação oficial do Samba - Parado de substituir libldb/python3-ldb do sistema (sem Conflicts/Obsoletes para libldb*) - Restaurados Requires para libldb/python3-ldb da base (evita quebra de sssd-common) - Mantido replacement apenas para pacotes samba*, libwbclient - Mantido serviço systemd samba-ad-dc.service e smb.conf básico em /etc/samba