Hello,
I'm trying to build the rpm packages for 389 directory server from source on an Oracle Linux 9 x64 server following the instructions from the page: https://www.port389.org/docs/389ds/development/building.html I have zero experience in building rpms.
The steps that i followed are: 1) download source tarball (either 389-ds-base-2.5.2.tar.bz2 https://github.com/389ds/389-ds-base/releases/download/389-ds-base-2.5.2/389-ds-base-2.5.2.tar.bz2 and 389-ds-base-2.4.6.tar.bz2 https://github.com/389ds/389-ds-base/releases/download/389-ds-base-2.4.6/389-ds-base-2.4.6.tar.bz2) 2) untar tarball (in folder /usr/local/src/) 3) install dependencies with the command: dnf install `grep "^BuildRequires" rpm/389-ds-base.spec.in | awk '{print $2}' | sed -e "s/%{python3_pkgversion}/3/"`
4) Try to make the rpms with the command: SKIP_AUDIT_CI=1 make -f rpm.mk rpms
After running the above command, the compiles finished successfully but the rpm building fails. The error is the following: -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- .... ============================================================================ Testsuite summary for dirsrv 1.0 ============================================================================ # TOTAL: 1 # PASS: 1 # SKIP: 0 # XFAIL: 0 # FAIL: 0 # XPASS: 0 # ERROR: 0 ============================================================================ make[4]: Leaving directory '/usr/local/src/389-ds-base-2.4.6/rpmbuild/BUILD/389-ds-base-2.4.6' make[3]: Nothing to be done for 'check-local'. make[3]: Leaving directory '/usr/local/src/389-ds-base-2.4.6/rpmbuild/BUILD/389-ds-base-2.4.6' make[2]: Leaving directory '/usr/local/src/389-ds-base-2.4.6/rpmbuild/BUILD/389-ds-base-2.4.6' make[1]: Leaving directory '/usr/local/src/389-ds-base-2.4.6/rpmbuild/BUILD/389-ds-base-2.4.6' + RPM_EC=0 ++ jobs -p + exit 0 Processing files: 389-ds-base-2.4.6-202408240939.el9.x86_64 error: File must begin with "/": %{bash_completions_dir}/ds-replcheck Executing(%doc): /bin/sh -e /var/tmp/rpm-tmp.Cs058a + umask 022 + cd /usr/local/src/389-ds-base-2.4.6/rpmbuild/BUILD + cd 389-ds-base-2.4.6 + DOCDIR=/usr/local/src/389-ds-base-2.4.6/rpmbuild/BUILDROOT/389-ds-base-2.4.6-202408240939.el9.x86_64/usr/share/doc/389-ds-base + export LC_ALL=C + LC_ALL=C + export DOCDIR + /usr/bin/mkdir -p /usr/local/src/389-ds-base-2.4.6/rpmbuild/BUILDROOT/389-ds-base-2.4.6-202408240939.el9.x86_64/usr/share/doc/389-ds-base + cp -pr LICENSE /usr/local/src/389-ds-base-2.4.6/rpmbuild/BUILDROOT/389-ds-base-2.4.6-202408240939.el9.x86_64/usr/share/doc/389-ds-base + cp -pr LICENSE.GPLv3+ /usr/local/src/389-ds-base-2.4.6/rpmbuild/BUILDROOT/389-ds-base-2.4.6-202408240939.el9.x86_64/usr/share/doc/389-ds-base + cp -pr LICENSE.openssl /usr/local/src/389-ds-base-2.4.6/rpmbuild/BUILDROOT/389-ds-base-2.4.6-202408240939.el9.x86_64/usr/share/doc/389-ds-base + cp -pr README.jemalloc /usr/local/src/389-ds-base-2.4.6/rpmbuild/BUILDROOT/389-ds-base-2.4.6-202408240939.el9.x86_64/usr/share/doc/389-ds-base + RPM_EC=0 ++ jobs -p + exit 0 Executing(%license): /bin/sh -e /var/tmp/rpm-tmp.Mp5ir0 + umask 022 + cd /usr/local/src/389-ds-base-2.4.6/rpmbuild/BUILD + cd 389-ds-base-2.4.6 + LICENSEDIR=/usr/local/src/389-ds-base-2.4.6/rpmbuild/BUILDROOT/389-ds-base-2.4.6-202408240939.el9.x86_64/usr/share/licenses/389-ds-base + export LC_ALL=C + LC_ALL=C + export LICENSEDIR + /usr/bin/mkdir -p /usr/local/src/389-ds-base-2.4.6/rpmbuild/BUILDROOT/389-ds-base-2.4.6-202408240939.el9.x86_64/usr/share/licenses/389-ds-base + cp -pr COPYING.jemalloc /usr/local/src/389-ds-base-2.4.6/rpmbuild/BUILDROOT/389-ds-base-2.4.6-202408240939.el9.x86_64/usr/share/licenses/389-ds-base + RPM_EC=0 ++ jobs -p + exit 0
RPM build errors: File must begin with "/": %{bash_completions_dir}/ds-replcheck make: *** [rpm.mk:140: rpms] Error 1 [root@dsdev 389-ds-base-2.4.6]# --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
The same error occur with the 2.5.2 version of the sources. At first the procedure ended with a different error, but i manage to overcome it by installing the rpm-build package.
Regards, Antonis Kopsaftis
Hello,
Problem solved after installing the following packages(especially the epel-rpm-macros): 1) rpmdevtools 2) rpmlint 3) epel-rpm-macros
I would also like to ask you opinion of which 389DS version to choose for a production environment (a two-node multimaster cluster with 130.000 users mainly used for authentication). The last 4 months i am doing tests on a stage two-node cluster based on Oracle Linux 9 and 389ds 2.2.9-2 from the copr repository. The testing environment seems to run without any problems, but as the copr repo does not seem to be updated regularly , i decided to try to create my own rpms from source.
As most of the LTS distros (Oracle linux 9 & ubuntu noble LTS) choose to use the 2.4.x version i thinking of using 2.4.6 or maybe 2.5.2. Debian stable is using 2.3.1 (with the last package update to be Jun 2023) which is pretty old.
Regards, Antonis Kopsaftis
PS: I cannot use the standard 389-ds packages that comes with OL8 or OL9 distro as the cockpit-389-ds package is not included.
On 24/8/2024 1:11 μ.μ., Antonis Kopsaftis wrote:
Hello,
I'm trying to build the rpm packages for 389 directory server from source on an Oracle Linux 9 x64 server following the instructions from the page: https://www.port389.org/docs/389ds/development/building.html I have zero experience in building rpms.
The steps that i followed are:
- download source tarball (either 389-ds-base-2.5.2.tar.bz2
https://github.com/389ds/389-ds-base/releases/download/389-ds-base-2.5.2/389-ds-base-2.5.2.tar.bz2 and 389-ds-base-2.4.6.tar.bz2 https://github.com/389ds/389-ds-base/releases/download/389-ds-base-2.4.6/389-ds-base-2.4.6.tar.bz2) 2) untar tarball (in folder /usr/local/src/) 3) install dependencies with the command: dnf install `grep "^BuildRequires" rpm/389-ds-base.spec.in | awk '{print $2}' | sed -e "s/%{python3_pkgversion}/3/"`
- Try to make the rpms with the command: SKIP_AUDIT_CI=1 make -f
rpm.mk rpms
After running the above command, the compiles finished successfully but the rpm building fails. The error is the following:
....
Testsuite summary for dirsrv 1.0
# TOTAL: 1 # PASS: 1 # SKIP: 0 # XFAIL: 0 # FAIL: 0 # XPASS: 0
# ERROR: 0
make[4]: Leaving directory '/usr/local/src/389-ds-base-2.4.6/rpmbuild/BUILD/389-ds-base-2.4.6' make[3]: Nothing to be done for 'check-local'. make[3]: Leaving directory '/usr/local/src/389-ds-base-2.4.6/rpmbuild/BUILD/389-ds-base-2.4.6' make[2]: Leaving directory '/usr/local/src/389-ds-base-2.4.6/rpmbuild/BUILD/389-ds-base-2.4.6' make[1]: Leaving directory '/usr/local/src/389-ds-base-2.4.6/rpmbuild/BUILD/389-ds-base-2.4.6'
- RPM_EC=0
++ jobs -p
- exit 0
Processing files: 389-ds-base-2.4.6-202408240939.el9.x86_64 error: File must begin with "/": %{bash_completions_dir}/ds-replcheck Executing(%doc): /bin/sh -e /var/tmp/rpm-tmp.Cs058a
- umask 022
- cd /usr/local/src/389-ds-base-2.4.6/rpmbuild/BUILD
- cd 389-ds-base-2.4.6
DOCDIR=/usr/local/src/389-ds-base-2.4.6/rpmbuild/BUILDROOT/389-ds-base-2.4.6-202408240939.el9.x86_64/usr/share/doc/389-ds-base
- export LC_ALL=C
- LC_ALL=C
- export DOCDIR
- /usr/bin/mkdir -p
/usr/local/src/389-ds-base-2.4.6/rpmbuild/BUILDROOT/389-ds-base-2.4.6-202408240939.el9.x86_64/usr/share/doc/389-ds-base
- cp -pr LICENSE
/usr/local/src/389-ds-base-2.4.6/rpmbuild/BUILDROOT/389-ds-base-2.4.6-202408240939.el9.x86_64/usr/share/doc/389-ds-base
- cp -pr LICENSE.GPLv3+
/usr/local/src/389-ds-base-2.4.6/rpmbuild/BUILDROOT/389-ds-base-2.4.6-202408240939.el9.x86_64/usr/share/doc/389-ds-base
- cp -pr LICENSE.openssl
/usr/local/src/389-ds-base-2.4.6/rpmbuild/BUILDROOT/389-ds-base-2.4.6-202408240939.el9.x86_64/usr/share/doc/389-ds-base
- cp -pr README.jemalloc
/usr/local/src/389-ds-base-2.4.6/rpmbuild/BUILDROOT/389-ds-base-2.4.6-202408240939.el9.x86_64/usr/share/doc/389-ds-base
- RPM_EC=0
++ jobs -p
- exit 0
Executing(%license): /bin/sh -e /var/tmp/rpm-tmp.Mp5ir0
- umask 022
- cd /usr/local/src/389-ds-base-2.4.6/rpmbuild/BUILD
- cd 389-ds-base-2.4.6
LICENSEDIR=/usr/local/src/389-ds-base-2.4.6/rpmbuild/BUILDROOT/389-ds-base-2.4.6-202408240939.el9.x86_64/usr/share/licenses/389-ds-base
- export LC_ALL=C
- LC_ALL=C
- export LICENSEDIR
- /usr/bin/mkdir -p
/usr/local/src/389-ds-base-2.4.6/rpmbuild/BUILDROOT/389-ds-base-2.4.6-202408240939.el9.x86_64/usr/share/licenses/389-ds-base
- cp -pr COPYING.jemalloc
/usr/local/src/389-ds-base-2.4.6/rpmbuild/BUILDROOT/389-ds-base-2.4.6-202408240939.el9.x86_64/usr/share/licenses/389-ds-base
- RPM_EC=0
++ jobs -p
- exit 0
RPM build errors: File must begin with "/": %{bash_completions_dir}/ds-replcheck make: *** [rpm.mk:140: rpms] Error 1 [root@dsdev 389-ds-base-2.4.6]#
The same error occur with the 2.5.2 version of the sources. At first the procedure ended with a different error, but i manage to overcome it by installing the rpm-build package.
Regards, Antonis Kopsaftis
--
Antonis Kopsaftis wrote:
Hello,
I'm trying to build the rpm packages for 389 directory server from source on an Oracle Linux 9 x64 server following the instructions from the page: https://www.port389.org/docs/389ds/development/building.html I have zero experience in building rpms.
The steps that i followed are:
- download source tarball (either 389-ds-base-2.5.2.tar.bz2
https://github.com/389ds/389-ds-base/releases/download/389-ds-base-2.5.2/389-ds-base-2.5.2.tar.bz2 and 389-ds-base-2.4.6.tar.bz2 https://github.com/389ds/389-ds-base/releases/download/389-ds-base-2.4.6/389-ds-base-2.4.6.tar.bz2) 2) untar tarball (in folder /usr/local/src/) 3) install dependencies with the command: dnf install `grep "^BuildRequires" rpm/389-ds-base.spec.in | awk '{print $2}' | sed -e "s/%{python3_pkgversion}/3/"`
- Try to make the rpms with the command: SKIP_AUDIT_CI=1 make -f rpm.mk
rpms
After running the above command, the compiles finished successfully but the rpm building fails. The error is the following:
....
Testsuite summary for dirsrv 1.0
# TOTAL: 1 # PASS: 1 # SKIP: 0 # XFAIL: 0 # FAIL: 0 # XPASS: 0
# ERROR: 0
make[4]: Leaving directory '/usr/local/src/389-ds-base-2.4.6/rpmbuild/BUILD/389-ds-base-2.4.6' make[3]: Nothing to be done for 'check-local'. make[3]: Leaving directory '/usr/local/src/389-ds-base-2.4.6/rpmbuild/BUILD/389-ds-base-2.4.6' make[2]: Leaving directory '/usr/local/src/389-ds-base-2.4.6/rpmbuild/BUILD/389-ds-base-2.4.6' make[1]: Leaving directory '/usr/local/src/389-ds-base-2.4.6/rpmbuild/BUILD/389-ds-base-2.4.6'
- RPM_EC=0
++ jobs -p
- exit 0
Processing files: 389-ds-base-2.4.6-202408240939.el9.x86_64 error: File must begin with "/": %{bash_completions_dir}/ds-replcheck Executing(%doc): /bin/sh -e /var/tmp/rpm-tmp.Cs058a
- umask 022
- cd /usr/local/src/389-ds-base-2.4.6/rpmbuild/BUILD
- cd 389-ds-base-2.4.6
DOCDIR=/usr/local/src/389-ds-base-2.4.6/rpmbuild/BUILDROOT/389-ds-base-2.4.6-202408240939.el9.x86_64/usr/share/doc/389-ds-base
- export LC_ALL=C
- LC_ALL=C
- export DOCDIR
- /usr/bin/mkdir -p
/usr/local/src/389-ds-base-2.4.6/rpmbuild/BUILDROOT/389-ds-base-2.4.6-202408240939.el9.x86_64/usr/share/doc/389-ds-base
- cp -pr LICENSE
/usr/local/src/389-ds-base-2.4.6/rpmbuild/BUILDROOT/389-ds-base-2.4.6-202408240939.el9.x86_64/usr/share/doc/389-ds-base
- cp -pr LICENSE.GPLv3+
/usr/local/src/389-ds-base-2.4.6/rpmbuild/BUILDROOT/389-ds-base-2.4.6-202408240939.el9.x86_64/usr/share/doc/389-ds-base
- cp -pr LICENSE.openssl
/usr/local/src/389-ds-base-2.4.6/rpmbuild/BUILDROOT/389-ds-base-2.4.6-202408240939.el9.x86_64/usr/share/doc/389-ds-base
- cp -pr README.jemalloc
/usr/local/src/389-ds-base-2.4.6/rpmbuild/BUILDROOT/389-ds-base-2.4.6-202408240939.el9.x86_64/usr/share/doc/389-ds-base
- RPM_EC=0
++ jobs -p
- exit 0
Executing(%license): /bin/sh -e /var/tmp/rpm-tmp.Mp5ir0
- umask 022
- cd /usr/local/src/389-ds-base-2.4.6/rpmbuild/BUILD
- cd 389-ds-base-2.4.6
LICENSEDIR=/usr/local/src/389-ds-base-2.4.6/rpmbuild/BUILDROOT/389-ds-base-2.4.6-202408240939.el9.x86_64/usr/share/licenses/389-ds-base
- export LC_ALL=C
- LC_ALL=C
- export LICENSEDIR
- /usr/bin/mkdir -p
/usr/local/src/389-ds-base-2.4.6/rpmbuild/BUILDROOT/389-ds-base-2.4.6-202408240939.el9.x86_64/usr/share/licenses/389-ds-base
- cp -pr COPYING.jemalloc
/usr/local/src/389-ds-base-2.4.6/rpmbuild/BUILDROOT/389-ds-base-2.4.6-202408240939.el9.x86_64/usr/share/licenses/389-ds-base
- RPM_EC=0
++ jobs -p
- exit 0
RPM build errors: File must begin with "/": %{bash_completions_dir}/ds-replcheck make: *** [rpm.mk:140: rpms] Error 1 [root@dsdev 389-ds-base-2.4.6]#
You are missing this macro: %bash_completions_dir %{_datadir}/bash-completion/completions
where
%_datadir %{_prefix}/share
You might be able to skip the file altogether but you'll miss out on the tab completion in the tooling which is quite nice.
YMMV.
rob
389-users@lists.fedoraproject.org