2

I am trying to build an RPM on Centos 7. I am making a wildfly application into RPM using below SPEC file.

Name:           wildfly
Version:        16.0.0.Final
Release:        1%{?dist}
Summary:        WildFly Application Server
Group:          System Environment/Daemons
License:        LGPL 2.1           
Source0:        %{name}-%{version}.tar.gz

Requires(pre):  shadow-utils
Requires:   java >= 1.7.0
#Requires:  /etc/init.d/functions
Provides:   wildfly

%undefine _missing_build_ids_terminate_build
%define __arch_install_post QA_SKIP_RPATHS=2 %{__arch_install_post} 
%define __jar_repack 0

%description
WildFly Application Server packaged from the binary distribution.

%prep
%setup -q -n wildfly-%{version}


%install
mkdir -p %{buildroot}/opt/wildfly
cp -R . %{buildroot}/opt/wildfly

mkdir -p %{buildroot}/var/log/wildfly
mkdir -p %{buildroot}/var/run/wildfly

#%post
#alternatives --install /etc/alternatives/wildfly wildfly /opt/wildfly 100

#%postun
#alternatives --remove wildfly /opt/wildfly

%files
%defattr(-,root,root,0755)

%files
%defattr(-,root,root,0755)
%dir /opt/wildfly
/opt/wildfly/appclient
/opt/wildfly/bin
/opt/wildfly/domain
/opt/wildfly/jboss-modules.jar
/opt/wildfly/modules
%attr(-,wildfly,wildfly) /opt/wildfly/standalone
/opt/wildfly/welcome-content
%dir /var/log/wildfly
%dir /var/run/wildfly

%doc /opt/wildfly/copyright.txt
%doc /opt/wildfly/LICENSE.txt
%doc /opt/wildfly/README.txt
%doc /opt/wildfly/docs


%changelog
* Wed Nov  24 2021 
- First version being packaged

On building, i noticed that it is taking certain dependencies which i didn't defined in SPEC file.

Requires: /bin/bash /bin/sh libaio.so.1 libaio.so.1()(64bit) libaio.so.1(LIBAIO_0.1) libaio.so.1(LIBAIO_0.1)(64bit) libaio.so.1(LIBAIO_0.4) libaio.so.1(LIBAIO_0.4)(64bit) libc.so.1()(64bit) libc.so.1(SUNW_0.7)(64bit) libc.so.1(SUNW_0.9)(64bit) libc.so.6 libc.so.6()(64bit) libc.so.6(GLIBC_2.0) libc.so.6(GLIBC_2.1.3) libc.so.6(GLIBC_2.10) libc.so.6(GLIBC_2.10)(64bit) libc.so.6(GLIBC_2.2) libc.so.6(GLIBC_2.2.5)(64bit) libdl.so.1()(64bit) libdl.so.1(SUNW_0.7)(64bit) libdl.so.2 libdl.so.2()(64bit) libdl.so.2(GLIBC_2.0) libdl.so.2(GLIBC_2.1) libdl.so.2(GLIBC_2.2.5)(64bit) libgcc_s.so.1()(64bit) rtld(GNU_HASH) 

So when I try to install this RPM on Centos 7 machine, it throws the following error.

sudo rpm -ivh wildfly-16.0.0.Final-1.el7.x86_64.rpm
error: Failed dependencies:
        libaio.so.1 is needed by wildfly-16.0.0.Final-1.el7.x86_64
        libaio.so.1()(64bit) is needed by wildfly-16.0.0.Final-1.el7.x86_64
        libaio.so.1(LIBAIO_0.1) is needed by wildfly-16.0.0.Final-1.el7.x86_64
        libaio.so.1(LIBAIO_0.1)(64bit) is needed by wildfly-16.0.0.Final-1.el7.x86_64
        libaio.so.1(LIBAIO_0.4) is needed by wildfly-16.0.0.Final-1.el7.x86_64
        libaio.so.1(LIBAIO_0.4)(64bit) is needed by wildfly-16.0.0.Final-1.el7.x86_64
        libc.so.1()(64bit) is needed by wildfly-16.0.0.Final-1.el7.x86_64
        libc.so.1(SUNW_0.7)(64bit) is needed by wildfly-16.0.0.Final-1.el7.x86_64
        libc.so.1(SUNW_0.9)(64bit) is needed by wildfly-16.0.0.Final-1.el7.x86_64
        libc.so.6 is needed by wildfly-16.0.0.Final-1.el7.x86_64
        libc.so.6(GLIBC_2.0) is needed by wildfly-16.0.0.Final-1.el7.x86_64
        libc.so.6(GLIBC_2.1.3) is needed by wildfly-16.0.0.Final-1.el7.x86_64
        libc.so.6(GLIBC_2.10) is needed by wildfly-16.0.0.Final-1.el7.x86_64
        libc.so.6(GLIBC_2.2) is needed by wildfly-16.0.0.Final-1.el7.x86_64
        libdl.so.1()(64bit) is needed by wildfly-16.0.0.Final-1.el7.x86_64
        libdl.so.1(SUNW_0.7)(64bit) is needed by wildfly-16.0.0.Final-1.el7.x86_64
        libdl.so.2 is needed by wildfly-16.0.0.Final-1.el7.x86_64
        libdl.so.2(GLIBC_2.0) is needed by wildfly-16.0.0.Final-1.el7.x86_64
        libdl.so.2(GLIBC_2.1) is needed by wildfly-16.0.0.Final-1.el7.x86_64

How can I solve the above dependencies issue. I already installed

sudo yum install libaio -y

Still dependencies issues are coming. Please help.

  • When an application uses a library, then it is automatically added as a dependency. See https://rpm-software-management.github.io/rpm/manual/more_dependencies.html chapter automatic dependencies – msuchy Dec 02 '21 at 13:49
  • how can I install these dependencies manually?? without these i am not able to install rpm. I searched, but only two packages i got. `yum install libaio glibc.i686` .After this also i have few dependencies left. Can you please help me?? – Bruce wayne - The Geek Killer Dec 03 '21 at 07:22
  • `libaio.so.1 is needed bywildfly-16.0.0.Final-1.el7.x86_64 libaio.so.1(LIBAIO_0.1) is needed bywildfly-16.0.0.Final-1.el7.x86_64 libaio.so.1(LIBAIO_0.4) is needed bywildfly-16.0.0.Final-1.el7.x86_64 libc.so.1()(64bit) is needed bywildfly-16.0.0.Final-1.el7.x86_64 libc.so.1(SUNW_0.7)(64bit) is needed bywildfly-16.0.0.Final-1.el7.x86_64 libc.so.1(SUNW_0.9)(64bit) is needed bywildfly-16.0.0.Final-1.el7.x86_64 libdl.so.1()(64bit) is needed bywildfly-16.0.0.Final-1.el7.x86_64 libdl.so.1(SUNW_0.7)(64bit) is needed bywildfly-16.0.0.Final-1.el7.x86_64` – Bruce wayne - The Geek Killer Dec 03 '21 at 07:25
  • libc.so.1()(64bit) libc.so.1(SUNW_0.7)(64bit) libc.so.1(SUNW_0.9)(64bit) libdl.so.1()(64bit) libdl.so.1(SUNW_0.7)(64bit) these many are left now – Bruce wayne - The Geek Killer Dec 03 '21 at 10:23

1 Answers1

0

You need to package libaio.so.1 in your RPM as well, and fix the RPATHs to find it. Don't use QA_SKIP_RPATHS unless you know what you're doing - they're there for a reason!

The libc and libdl problems imply you're not using the system compilers and have your own toolchain installed; that's going to be another problem. Is there a reason you can't use the stock gcc?

Further examination makes it look like you're trying to make a "fancy tarball" RPM and not doing the actual compilation with rpmbuild, which can lead to more problems - where did the binaries come from? Another CentOS box, or a different distribution? The SUNW tag in particular worries me.

Aaron D. Marasco
  • 6,506
  • 3
  • 26
  • 39