user(tao) group(tao) dependency blocks the installation of ACE+TAO packages
Version
ACE 8.0.4 / TAO 4.0.4
Host machine and operating system
Linux, openSUSE 16.0, 64 bit
Target machine and operating system (if different from host)
Compiler name and version (including patch level)
The $ACE_ROOT/ace/config.h file
No change, built with rpmbuild -ta rpmbuild -ta ACE+TAO-src-8.0.4.tar.gz
The problem effects:
It affects installation of rpms dues to a requirement (user(tao), group(tao) that is provided already by the rpm packages.
Synopsis
leap16:/home/iulians/rpmbuild/RPMS/x86_64 # zypper install *.rpm
Refreshing service 'openSUSE'.
Loading repository data...
Reading installed packages...
'ace-kokyu = 0:8.0.4-1' is already installed.
No update candidate for 'ace-kokyu-8.0.4-1.x86_64'. The highest available version is already installed.
'ace-xml = 0:8.0.4-1' is already installed.
No update candidate for 'ace-xml-8.0.4-1.x86_64'. The highest available version is already installed.
'ace = 0:8.0.4-1' is already installed.
No update candidate for 'ace-8.0.4-1.x86_64'. The highest available version is already installed.
'mpc = 0:8.0.4-1' is already installed.
No update candidate for 'mpc-8.0.4-1.x86_64'. The highest available version is already installed.
'tao = 0:4.0.4-1' is already installed.
No update candidate for 'tao-4.0.4-1.x86_64'. The highest available version is already installed.
Resolving package dependencies...
6 Problems:
Problem: 1: nothing provides 'group(tao)' needed by the to be installed tao-cosconcurrency-4.0.4-1.x86_64
Problem: 2: nothing provides 'group(tao)' needed by the to be installed tao-cosevent-4.0.4-1.x86_64
Problem: 3: nothing provides 'group(tao)' needed by the to be installed tao-cosnaming-4.0.4-1.x86_64
Problem: 4: nothing provides 'group(tao)' needed by the to be installed tao-cosnotification-4.0.4-1.x86_64
Problem: 5: nothing provides 'group(tao)' needed by the to be installed tao-costrading-4.0.4-1.x86_64
Problem: 6: nothing provides 'group(tao)' needed by the to be installed tao-rtevent-4.0.4-1.x86_64
Problem: 1: nothing provides 'group(tao)' needed by the to be installed tao-cosconcurrency-4.0.4-1.x86_64
Solution 1: do not install tao-cosconcurrency-4.0.4-1.x86_64
Solution 2: break tao-cosconcurrency-4.0.4-1.x86_64 by ignoring some of its dependencies
Choose from above solutions by number or skip, retry or cancel [1/2/s/r/c/d/?] (c):
leap16:/home/iulians/rpmbuild/RPMS/x86_64 #
Description
This is somehow confusing as there are already rpm scripts doing this so packages that are providing this:
leap16:/home/iulians/rpmbuild/RPMS/x86_64 # rpm -i tao-cosconcurrency-4.0.4-1.x86_64.rpm
error: Failed dependencies:
group(tao) is needed by tao-cosconcurrency-4.0.4-1.x86_64
user(tao) is needed by tao-cosconcurrency-4.0.4-1.x86_64
leap16:/home/iulians/rpmbuild/RPMS/x86_64 # rpm -q --scripts -p tao-cosconcurrency-4.0.4-1.x86_64.rpm | head
preinstall scriptlet (using /bin/sh):
getent group tao >/dev/null || /usr/sbin/groupadd -r tao
getent passwd tao >/dev/null || \
/usr/sbin/useradd -r -g tao -d /etc/tao -s /sbin/nologin \
-c "TAO Services" tao
exit 0
# ================================================================
leap16:/home/iulians/rpmbuild/RPMS/x86_64 #
The package should be modified so that it looks it provides user(tao) and group(tao)
leap16:/home/iulians/rpmbuild/RPMS/x86_64 # rpm -q --provides tao-cosnotification-4.0.4-1.x86_64.rpm
config(tao-cosnotification) = 4.0.4-1
sysvinit(tao-cosnotification)
tao-cosnotification = 4.0.4-1
tao-cosnotification(x86-64) = 4.0.4-1
leap16:/home/iulians/rpmbuild/RPMS/x86_64 #
Running this command shows the scripts by which add this user and group:
/home/iulians/rpmbuild/RPMS/x86_64# ls | xargs -I {} sh -c "echo {} ; rpm -q --scripts -p {} | grep -C2 -E 'useradd|groupadd'"
These packages already do this:
- tao-cosconcurrency-4.0.4-1.x86_64.rpm
- tao-cosevent-4.0.4-1.x86_64.rpm
- tao-cosnaming-4.0.4-1.x86_64.rpm
- tao-cosnotification-4.0.4-1.x86_64.rpm
- tao-costrading-4.0.4-1.x86_64.rpm
- tao-rtevent-4.0.4-1.x86_64.rpm
But they are not mentioned as providing this; for example:
leap16:/home/iulians/rpmbuild/RPMS/x86_64 # rpm -q --provides -p tao-cosconcurrency-4.0.4-1.x86_64.rpm
config(tao-cosconcurrency) = 4.0.4-1
sysvinit(tao-cosconcurrency)
tao-cosconcurrency = 4.0.4-1
tao-cosconcurrency(x86-64) = 4.0.4-1
leap16:/home/iulians/rpmbuild/RPMS/x86_64 #
At the same time it requires, even if it provides it:
leap16:/home/iulians/rpmbuild/RPMS/x86_64 # rpm -q --requires -p tao-cosconcurrency-4.0.4-1.x86_64.rpm | grep "(tao)"
group(tao)
user(tao)
leap16:/home/iulians/rpmbuild/RPMS/x86_64 #
This problem was not seen with 8.0.2 / 4.0.2
/home/ # rpm -q --requires tao-cosconcurrency
/bin/bash
/bin/sh
/bin/sh
/bin/sh
/bin/sh
config(tao-cosconcurrency) = 4.0.2-1
libACE.so.8.0.2()(64bit)
libTAO.so.4.0.2()(64bit)
libTAO_AnyTypeCode.so.4.0.2()(64bit)
libTAO_CodecFactory.so.4.0.2()(64bit)
libTAO_CosConcurrency.so.4.0.2()(64bit)
libTAO_CosConcurrency_Serv.so.4.0.2()(64bit)
libTAO_CosConcurrency_Skel.so.4.0.2()(64bit)
libTAO_CosNaming.so.4.0.2()(64bit)
libTAO_PI.so.4.0.2()(64bit)
libTAO_PortableServer.so.4.0.2()(64bit)
libTAO_Svc_Utils.so.4.0.2()(64bit)
libTAO_Utils.so.4.0.2()(64bit)
libc.so.6()(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.34)(64bit)
libc.so.6(GLIBC_2.4)(64bit)
libgcc_s.so.1()(64bit)
libgcc_s.so.1(GCC_3.0)(64bit)
libm.so.6()(64bit)
libstdc++.so.6()(64bit)
libstdc++.so.6(CXXABI_1.3)(64bit)
libstdc++.so.6(CXXABI_1.3.9)(64bit)
libstdc++.so.6(GLIBCXX_3.4)(64bit)
logrotate
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(PayloadIsXz) <= 5.2-1
tao = 4.0.2
/home/ #
Any idea what change was made?
Thanks!
Not sure who build your RPMs, but sometimes I update the package on OpenSuSE build serivce, that uses https://github.com/DOCGroup/ACE_TAO/tree/master/ACE/rpmbuild as packaging files
I did those RPMS, with rpmbuild -ta <the tar.gz> and while on older versions it didn't do this, now it seems that some OS scripts most likely changed. It would be best to just to put "AutoReqProv: off" as it starts adding all sort of weird dependencies.
At least this is my team's experience on openSUSE Leap 16.0 (which is beta currently). We found a way to edit the .spec file by adding a line with Provides: user(tao) group(tao) to one package so that we don't get this problem anymore. I know it is not clean, but given the fact that before we updated some of our system this didn't happen (also tumbleweed now does the same) I can only assume we're getting some new configuration from SUSE.
Can you please let me know your thoughts in this case? I am not a rpm expert myself and I find it a little disturbing to have such changes.