ACE_TAO icon indicating copy to clipboard operation
ACE_TAO copied to clipboard

user(tao) group(tao) dependency blocks the installation of ACE+TAO packages

Open undergraver opened this issue 6 months ago • 2 comments

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!

undergraver avatar Jul 09 '25 11:07 undergraver

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

jwillemsen avatar Jul 09 '25 15:07 jwillemsen

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.

undergraver avatar Jul 09 '25 20:07 undergraver