I am trying to deploy a rather large rpm project via rpm on CentOS-7, but when I run "rpm -i rpm-project-1.0.0-1.0.0.x86_64" I get this output:
error: Failed dependencies:
ld-linux-aarch64.so.1()(64bit) is needed by rpm-project-1.0.0-1.0.0.x86_64
ld-linux-aarch64.so.1(GLIBC_2.17)(64bit) is needed by rpm-project-1.0.0-1.0.0.x86_64
libXss.so.1()(64bit) is needed by rpm-project-1.0.0-1.0.0.x86_64
libatk-bridge-2.0.so.0()(64bit) is needed by rpm-project-1.0.0-1.0.0.x86_64
libatspi.so.0()(64bit) is needed by rpm-project-1.0.0-1.0.0.x86_64
libgcc_s.so.1(GCC_3.5) is needed by rpm-project-1.0.0-1.0.0.x86_64
libgdk-3.so.0()(64bit) is needed by rpm-project-1.0.0-1.0.0.x86_64
libgtk-3.so.0()(64bit) is needed by rpm-project-1.0.0-1.0.0.x86_64
libpthread.so.0(GLIBC_2.17)(64bit) is needed by rpm-project-1.0.0-1.0.0.x86_64
libstdc++.so.6(CXXABI_ARM_1.3.3) is needed by rpm-project-1.0.0-1.0.0.x86_64
I know it is not a problem with my machine, because it successfully installs another project rpm I have made previously. Some of the dependency failures are on packages which are already installed, and some of them are packages which are not found by yum. For example, I have tried to install ld-linux-aarch64.so.1()(64bit) several different ways, even running a yum search on ‘ld’ and ‘linux’ and have not found any output. I am also confused by some packages trying to aske for extra details in their perentheses. ‘libstdc++.so.6(CXXABI_ARM_1.3.3)’ seems to be asking for libstdc++.so.6, which is part of libstdc++ but I can’t find any details on CXXABI_ARM_1.3.3, or what it means, or why it wants it, or where it gets the request for it. I do know that a lot of these dependencies are part of the ‘Development Tools’ group, which I have already installed, both individually, and through yum groupinstall. ‘libatk-bridge-2.0.so.0()(64bit)’ does not seem to exist either. I have tried using rpm-builder from npm and straight up making a .spec file and running rpm-build. here is the Specfile I have made:
Name: project
Version: 1.0.0
Release: 1.0.0
Summary: No summary
License: OTHERLICENSE
BuildArch: x86_64
Vendor: Vendor
Group: Development/Tools
%description
No description
%build
./../BUILDROOT/builder.pl
%files
"/build/project-cli/bin/run"
"/build/project-cli/bin/run.cmd"
"/build/project-cli/build/linux/project"
"/build/project-cli/build/linux/project.gz"
"/build/project-cli/build/build.js"
"/build/project-cli/build/build.sh"
"/build/project-cli/build/release.sh"
"/build/project-cli/LICENSE"
"/build/project-cli/node_modules/*"
"/build/project-cli/project-core/build"
"/build/project-cli/project-core/doc"
"/build/project-cli/project-core/LICENSE"
"/build/project-cli/project-core/node_modules"
"/build/project-cli/project-core/project-cluster-api"
"/build/project-cli/project-core/package-lock.json"
"/build/project-cli/project-core/package.json"
"/build/project-cli/project-core/src"
"/build/project-cli/package-lock.json"
"/build/project-cli/package.json"
"/build/project-cli/README.md"
"/build/project-cli/src/commands"
"/build/project-cli/src/hooks"
"/build/project-web-api/build/build.js"
"/build/project-web-api/build/build.sh"
"/build/project-web-api/build/linux"
"/build/project-web-api/build/release.sh"
"/build/project-web-api/config.js"
"/build/project-web-api/docs/endpoints"
"/build/project-web-api/docs/objects.md"
"/build/project-web-api/docs/util.md"
"/build/project-web-api/index.js"
"/build/project-web-api/node_modules/*"
"/build/project-web-api/project-core/build"
"/build/project-web-api/project-core/doc"
"/build/project-web-api/project-core/LICENSE"
"/build/project-web-api/project-core/node_modules"
"/build/project-web-api/project-core/project-cluster-api"
"/build/project-web-api/project-core/package-lock.json"
"/build/project-web-api/project-core/package.json"
"/build/project-web-api/project-core/src"
"/build/project-web-api/package-lock.json"
"/build/project-web-api/package.json"
"/build/project-web-api/passport/auth.js"
"/build/project-web-api/passport/index.js"
"/build/project-web-api/passport/strategies.js"
"/build/project-web-api/README.md"
"/build/project-web-api/restart.sh"
"/build/project-web-api/routes/clusters.routes.js"
"/build/project-web-api/routes/credentials.routes.js"
"/build/project-web-api/routes/jobs.routes.js"
"/build/project-web-api/routes/license.routes.js"
"/build/project-web-api/routes/moab.routes.js"
"/build/project-web-api/routes/providers.routes.js"
"/build/project-web-api/routes/stacks.routes.js"
"/build/project-web-api/routes/users.routes.js"
"/build/project-web-api/restart.sh"
"/build/project-web-api/server.cert"
"/build/project-web-api/server.key"
"/build/project-web-api/start.sh"
"/build/project-web-api/stop.sh"
"/build/project-web-api/util/clusters.js"
"/build/project-web-api/util/credential.js"
"/build/project-web-api/util/email.js"
"/build/project-web-api/util/error.js"
"/build/project-web-api/util/files.js"
"/build/project-web-api/util/jobs.js"
"/build/project-web-api/util/managers"
"/build/project-web-api/util/project.js"
"/build/project-web-api/util/scripts"
"/build/project-web-ui/build/asset-manifest.json"
"/build/project-web-ui/build/assets"
"/build/project-web-ui/build/electron.js"
"/build/project-web-ui/build/favicon.ico"
"/build/project-web-ui/build/index.html"
"/build/project-web-ui/build/manifest.json"
"/build/project-web-ui/build/material-ui-static"
"/build/project-web-ui/build/precache-manifest.bf51f30dad406a5bf8d839d729041248.js"
"/build/project-web-ui/build/service-worker.js"
"/build/project-web-ui/build/static"
"/build/project-web-ui/jsconfig.json"
"/build/project-web-ui/node_modules/*"
...
there is more but I am out of characters. I had to shorten a lot of things here.
If I try to squeeze in an %install script as well the %build script, it fails to find the install script and further testing has revealed that the directory is being wiped when the build script finishes. This is all context, and I can provide more if it is needed, but the thing I am actually trying to fix is that the rpm will not install after being built. I don’t have anyone around to show me how to do this, or anyone to explain how rpms are supposed to do what they usually do, which is output working binaries and services when you install them (as I understand) so as well as helping me solve this bug, any general knowledge about rpms would also be greatly appreciated.
2
Answers
I managed to solve this myself. The answer was very simple. I needed to fully build and install the project using non-rpm methods, then do the rpm build process. This made the rpm stop asking for stuff that I didn't have access to. I'm not sure why, but simply installing the project in other ways allowed me to generate a working rpm.
The files you mentioned in particular (
ld-linux-aarch64.so.1()(64bit)
andlibstdc++.so.6(CXXABI_ARM_1.3.3)
) are ARM and not x86_64. I’m assuming you’ve bundled up something else, so the RPM dependency generator is finding these.so
files and assuming you need them to deploy. More likely, they’re a payload that you are serving up or something, so don’t need to be executable.You need to find them and tell
rpmbuild
not to scan them. For example, if they are in a subdirectory/srv/
:Some more info is available on GitHub.