[MDEV-29690] file conflict in RPM packages Created: 2022-10-03  Updated: 2022-12-02  Resolved: 2022-12-02

Status: Closed
Project: MariaDB Server
Component/s: Packaging, Platform RedHat
Affects Version/s: 10.7.7
Fix Version/s: N/A

Type: Bug Priority: Major
Reporter: Timofey Turenko Assignee: Sergei Golubchik
Resolution: Not a Bug Votes: 0
Labels: None


 Description   

Reproducible with qemu/libvirt RHEL8 and GCP machines

git clone https://github.com/MariaDB/server.git
mv server server_very_long_name_to_avoid_rpm_bug
cd server_very_long_name_to_avoid_rpm_bug/
git checkout 10.7
git submodule update --init --recursive
cmake . -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER=g++ -DPLUGIN_TOKUDB=NO -DPLUGIN_MROONGA=NO -DPLUGIN_SPIDER=NO -DPLUGIN_OQGRAPH=NO -DPLUGIN_PERFSCHEMA=YES -DPLUGIN_SPHINX=NO  -DRPM=ON && make  package

[vagrant@default server_very_long_name_to_avoid_rpm_bug]$ sudo rpm -i MariaDB-devel-10.7.7-1.el8.x86_64.rpm MariaDB-shared-10.7.7-1.el8.x86_64.rpm MariaDB-common-10.7.7-1.el8.x86_64.rpm 
	file /etc/my.cnf from install of MariaDB-common-10.7.7-1.el8.x86_64 conflicts with file from package mariadb-connector-c-config-3.1.11-2.el8_3.noarch
	file /etc/my.cnf.d from install of MariaDB-shared-10.7.7-1.el8.x86_64 conflicts with file from package mariadb-connector-c-config-3.1.11-2.el8_3.noarch
	file /usr/lib64/libmariadb.so.3 from install of MariaDB-shared-10.7.7-1.el8.x86_64 conflicts with file from package mariadb-connector-c-3.1.11-2.el8_3.x86_64
	file /usr/share/man/man3 from install of MariaDB-devel-10.7.7-1.el8.x86_64 conflicts with file from package filesystem-3.8-6.el8.x86_64

Does Buildbot machines have a user with root privileges?

Build with `sudo make package` generate proper packages:

sudo make package
sudo rpm -i MariaDB-devel-10.7.7-1.el8.x86_64.rpm MariaDB-shared-10.7.7-1.el8.x86_64.rpm MariaDB-common-10.7.7-1.el8.x86_64.rpm 
[vagrant@default server_very_long_name_to_avoid_rpm_bug]$ rpm -qa | grep -i maria
MariaDB-common-10.7.7-1.el8.x86_64
MariaDB-devel-10.7.7-1.el8.x86_64
MariaDB-shared-10.7.7-1.el8.x86_64

Previously there was the bug MDEV-22813 and fix https://github.com/MariaDB/server/commit/7337abd2f7b0104f2a6c862c1829ac3a034d89a2#diff-b34a4a2b95c6341e79aef8cb1043e66dd672ee00df1382a13582c04e99c08beeR125



 Comments   
Comment by Sergei Golubchik [ 2022-10-05 ]

I cannot repeat it, please, provide a how-to-repeat procedure

Comment by Timofey Turenko [ 2022-10-07 ]

1. Create an empty machine (I tried with GCP and libvirt/qemu, RHEL8, Rocky Linux 8)

2. configure additional repos:

rhel/centos `sudo dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm`
rocky/alma 9 `sudo dnf config-manager --set-enabled crb`

3.

sudo dnf -y groupinstall 'Development Tools'
 
sudo dnf -y install curl   expect  gdb  git  lsof  net-tools  rsync  socat  sudo  wget  valgrind bison   boost-program-options  boost-devel  bzip2-devel  check-devel  checkpolicy  ccache  clang  cmake  curl-devel  gnutls-devel  java-1.8.0-openjdk  java-1.8.0-openjdk-devel  jemalloc  jemalloc-devel  krb5-devel  libaio  libaio-devel  libasan  libcurl-devel  libevent-devel  libffi-devel  libgcrypt-devel  libpmem-devel  libxml2-devel  lzo-devel  mhash-devel  ncurses-devel  openssl-devel  unixODBC-devel  pam-devel  patch  perl-CPAN  perl-DBD-MySQL  perl-DBI  perl-Time-HiRes  perl-XML-LibXML  perl-XML-Simple  readline-devel  redhat-rpm-config  rpmdevtools  systemd-devel  unixODBC  valgrind-devel  wget  which  yum-utils Judy  cracklib  kernel-headers  lz4-devel  perl-Getopt-Long  perl-Memoize.noarch  policycoreutils python3-devel  python3-pip   redhat-lsb-core
 
git clone https://github.com/MariaDB/server.git
mv server server_very_long_name_to_avoid_rpm_bug
cd server_very_long_name_to_avoid_rpm_bug/
git checkout 10.7
git submodule update --init --recursive
 
cmake . -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER=g++ -DPLUGIN_TOKUDB=NO -DPLUGIN_MROONGA=NO -DPLUGIN_SPIDER=NO -DPLUGIN_OQGRAPH=NO -DPLUGIN_PERFSCHEMA=YES -DPLUGIN_SPHINX=NO  -DRPM=ON && make  package
 
sudo rpm -i MariaDB-devel-10.7.7-1.el8.x86_64.rpm MariaDB-shared-10.7.7-1.el8.x86_64.rpm MariaDB-common-10.7.7-1.el8.x86_64.rpm 

Comment by Sergei Golubchik [ 2022-12-02 ]

When you build RPM packages, you should take the correct command line from the knowledge base (e.g. https://mariadb.com/kb/en/building-rpm-packages-from-source/) or from an actually working build (e.g. https://buildbot.askmonty.org/buildbot/builders/kvm-rpm-rocky84-amd64/builds/2434/steps/compile/logs/stdio).

In particular, -DRM=ON builds packages for the Linux distribution "ON", whatever it is. If you want packages that work on Rocky 8, you need to specify -DRPM=rocky8.

That won't make your rpm -i to work, because rpm doesn't resolve dependencies. It'll say

error: Failed dependencies:
        mariadb-connector-c is obsoleted by MariaDB-shared-10.7.8-1.el8.x86_64
        mariadb-connector-c-config is obsoleted by MariaDB-shared-10.7.8-1.el8.x86_64

But if you'll use dnf, it'll work:

================================================================================
 Package              Architecture Version             Repository          Size
================================================================================
Installing:
 MariaDB-common       x86_64       10.7.8-1.el8        @commandline        90 k
 MariaDB-devel        x86_64       10.7.8-1.el8        @commandline       1.4 M
 MariaDB-shared       x86_64       10.7.8-1.el8        @commandline       125 k
     replacing  mariadb-connector-c.x86_64 3.1.11-2.el8_3
     replacing  mariadb-connector-c-config.noarch 3.1.11-2.el8_3
 
Transaction Summary
================================================================================
Install  3 Packages

Generated at Thu Feb 08 10:10:33 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.