我正在尝试在64位CentOS 6.3服务器上使用rpmbuild构建一个包.
这是spec文件:
Name: test-fms Version: 1.0 Release: 1%{?dist} Summary: my FMS Package Group: Applications/Internet License: Nobody. URL: http://www.bla.com Provides: test-fms = %{version}-%{release} %description test FMS server. %prep %build %install mkdir -p $RPM_BUILD_ROOT cp -r /workspace/%{name}/* $RPM_BUILD_ROOT/ %post %clean \rm -rf %{buildroot} %files %defattr(-,root,-) /opt/adobe/fms
当尝试在另一个64位CentOS 6.3服务器上安装该软件包时,我收到以下错误:
--> Finished Dependency Resolution Error: Package: test-fms-1.0-1.el6.x86_64 (myrepo) Requires: /usr/local/bin/perl Error: Package: test-fms-1.0-1.el6.x86_64 (myrepo) Requires: librt.so.1 Error: Package: test-fms-1.0-1.el6.x86_64 (myrepo) Requires: libc.so.6 Error: Package: test-fms-1.0-1.el6.x86_64 (myrepo) Requires: libc.so.6(GLIBC_2.0) Error: Package: test-fms-1.0-1.el6.x86_64 (myrepo) Requires: libc.so.6(GLIBC_2.4) Error: Package: test-fms-1.0-1.el6.x86_64 (myrepo) Requires: libstdc++.so.6(GLIBCXX_3.4) Error: Package: test-fms-1.0-1.el6.x86_64 (myrepo) Requires: libpthread.so.0(GLIBC_2.1) Error: Package: test-fms-1.0-1.el6.x86_64 (myrepo) Requires: libpthread.so.0(GLIBC_2.0) Error: Package: test-fms-1.0-1.el6.x86_64 (myrepo) Requires: libgcc_s.so.1(GCC_3.0) Error: Package: test-fms-1.0-1.el6.x86_64 (myrepo) Requires: libgcc_s.so.1 Error: Package: test-fms-1.0-1.el6.x86_64 (myrepo) Requires: libc.so.6(GLIBC_2.1) Error: Package: test-fms-1.0-1.el6.x86_64 (myrepo) Requires: libcurl.so.3 Error: Package: test-fms-1.0-1.el6.x86_64 (myrepo) Requires: libstdc++.so.6 Error: Package: test-fms-1.0-1.el6.x86_64 (myrepo) Requires: libstdc++.so.6(CXXABI_1.3) Error: Package: test-fms-1.0-1.el6.x86_64 (myrepo) Requires: libdl.so.2 Error: Package: test-fms-1.0-1.el6.x86_64 (myrepo) Requires: libpthread.so.0(GLIBC_2.3.2) Error: Package: test-fms-1.0-1.el6.x86_64 (myrepo) Requires: libpthread.so.0 Error: Package: test-fms-1.0-1.el6.x86_64 (myrepo) Requires: libc.so.6(GLIBC_2.1.3) Error: Package: test-fms-1.0-1.el6.x86_64 (myrepo) Requires: libm.so.6 You could try using --skip-broken to work around the problem You could try running: rpm -Va --nofiles --nodigest
虽然RPM是基于64位构建的,但它需要32位软件包,例如,对于glibc软件包,我安装了64位软件包,但RPM依赖项需要libc.so.6:
[root@test ~]# yum provides libc.so.6 Loaded plugins: downloadonly,fastestmirror Loading mirror speeds from cached hostfile * base: centos.spd.co.il * extras: centos.spd.co.il * updates: centos.spd.co.il updates/primary_db | 4.6 MB 00:04 glibc-2.12-1.80.el6.i686 : The GNU libc libraries Repo : base Matched from: Other : libc.so.6
在使用spec文件一段时间后,我注意到如果我从spec文件中删除%files部分,则不需要任何要求.
我怎样才能解决这个问题?我究竟做错了什么?
为什么RPM会自动添加要求?我能以某种方式控制它吗?
您将32位二进制文件放在64位软件包中.不要这样做.用 – 的目标构建i386.