Linux kernel rpmbuild为什么要安装软件包?
rpmbuild是否正在安装我正在构建的包?我正在尝试构建内核模块的rpm包。在到达Linux kernel rpmbuild为什么要安装软件包?,linux-kernel,sh,rpm,rpmbuild,Linux Kernel,Sh,Rpm,Rpmbuild,rpmbuild是否正在安装我正在构建的包?我正在尝试构建内核模块的rpm包。在到达(%install)之前,它运行良好。该错误声称没有权限。看起来它正在尝试安装模块。假设我做错了,或者我的SPEC文件不正确,这样安全吗 有错误的输出: [arozar@buildhost SPECS]$ rpmbuild -bb bypass.spec Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.SbBJbR + umask 022 + cd /home/aroz
(%install)
之前,它运行良好。该错误声称没有权限。看起来它正在尝试安装模块。假设我做错了,或者我的SPEC
文件不正确,这样安全吗
有错误的输出:
[arozar@buildhost SPECS]$ rpmbuild -bb bypass.spec
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.SbBJbR
+ umask 022
+ cd /home/arozar/rpmbuild/BUILD
+ LANG=C
+ export LANG
+ unset DISPLAY
+ cd /home/arozar/rpmbuild/BUILD
+ rm -rf bypass-9.0.6
+ /usr/bin/gzip -dc /home/arozar/rpmbuild/SOURCES/bypass-9.0.6.tar.gz
+ /bin/tar -xf -
+ STATUS=0
+ '[' 0 -ne 0 ']'
+ cd bypass-9.0.6
+ /bin/chmod -Rf a+rX,u+w,g-w,o-w .
+ exit 0
Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.nsuldT
+ umask 022
+ cd /home/arozar/rpmbuild/BUILD
+ '[' /home/arozar/rpmbuild/BUILDROOT/bypass-9.0.6-1.el6.x86_64 '!=' / ']'
+ rm -rf /home/arozar/rpmbuild/BUILDROOT/bypass-9.0.6-1.el6.x86_64
++ dirname /home/arozar/rpmbuild/BUILDROOT/bypass-9.0.6-1.el6.x86_64
+ mkdir -p /home/arozar/rpmbuild/BUILDROOT
+ mkdir /home/arozar/rpmbuild/BUILDROOT/bypass-9.0.6-1.el6.x86_64
+ cd bypass-9.0.6
+ LANG=C
+ export LANG
+ unset DISPLAY
+ rm -rf /home/arozar/rpmbuild/BUILDROOT/bypass-9.0.6-1.el6.x86_64
+ cd lib
+ make DESTDIR=/home/arozar/rpmbuild/BUILDROOT/bypass-9.0.6-1.el6.x86_64
make -C /lib/modules/2.6.32-504.23.4.el6.x86_64/build SUBDIRS=/home/arozar/rpmbuild/BUILD/bypass-9.0.6/lib modules
make[1]: Entering directory `/usr/src/kernels/2.6.32-504.23.4.el6.x86_64'
CC [M] /home/arozar/rpmbuild/BUILD/bypass-9.0.6/lib/bplib.o
LD [M] /home/arozar/rpmbuild/BUILD/bypass-9.0.6/lib/bypass.o
Building modules, stage 2.
MODPOST 1 modules
CC /home/arozar/rpmbuild/BUILD/bypass-9.0.6/lib/bypass.mod.o
LD [M] /home/arozar/rpmbuild/BUILD/bypass-9.0.6/lib/bypass.ko.unsigned
NO SIGN [M] /home/arozar/rpmbuild/BUILD/bypass-9.0.6/lib/bypass.ko
make[1]: Leaving directory `/usr/src/kernels/2.6.32-504.23.4.el6.x86_64'
+ '[' 2.6.32-504.23.4.el6.x86_64 '!=' 2.6.32-504.23.4.el6.x86_64 ']'
+ make install DESTDIR=/home/arozar/rpmbuild/BUILDROOT/bypass-9.0.6-1.el6.x86_64/lib/modules/2.6.32-504.23.4.el6.x86_64/kernel/lib/bypass.ko
make -C /lib/modules/2.6.32-504.23.4.el6.x86_64/build SUBDIRS=/home/arozar/rpmbuild/BUILD/bypass-9.0.6/lib modules
make[1]: Entering directory `/usr/src/kernels/2.6.32-504.23.4.el6.x86_64'
Building modules, stage 2.
MODPOST 1 modules
make[1]: Leaving directory `/usr/src/kernels/2.6.32-504.23.4.el6.x86_64'
# remove all old versions of the driver
find /lib/modules/2.6.32-504.23.4.el6.x86_64 -name bypass.ko -exec rm -f {} \; || true
find /lib/modules/2.6.32-504.23.4.el6.x86_64 -name bypass.ko.gz -exec rm -f {} \; || true
install -D -m 644 bypass.ko /lib/modules/2.6.32-504.23.4.el6.x86_64/kernel/lib/bypass/bypass.ko
install: cannot create directory /lib/modules/2.6.32-504.23.4.el6.x86_64/kernel/lib/bypass: Permission denied
make: *** [install] Error 1
error: Bad exit status from /var/tmp/rpm-tmp.nsuldT (%install)
RPM build errors:
Bad exit status from /var/tmp/rpm-tmp.nsuldT (%install)
这是我的.rpmmacros
:
%_topdir %(echo $HOME)/rpmbuild
等级库文件:
%define build_kernel 2.6.32-504.23.4.el6.x86_64
%define current_kernel %(uname -r)
%define destdir /lib/modules/%{current_kernel}/kernel/lib
%define realname bypass
%define lib lib
Name: %{realname}
Version: 9.0.6
Release: 1%{?dist}
Summary: Silicom Bypass Kernel Level Library
Group: Silicom Ltd.
License: GPLv2+
URL: http://www.silicom-usa.com
Source0: http://www.silicom-usa.com/ProductDrivers.aspx/%{realname}-%{version}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
# BuildRequires:
# Requires:
%description
Silicom’s Quad Port Copper Gigabit Ethernet PCI Express Bypass server adapter is a PCI-Express X8 network interface card that contains four ports on a PCI-E adapter.
Silicom’s Quad Port Gigabit Ethernet Bypass server adapter supports Normal, Disconnect and Bypass modes.
%prep
%setup -q
%install
rm -rf $RPM_BUILD_ROOT
cd %{lib}
make DESTDIR=$RPM_BUILD_ROOT
if [ "%{build_kernel}" != "%{current_kernel}" ]; then
echo "This RPM is for %{build_kernel} kernel version. Ensure that you are usining the right module/kernel combo"
exit 1
fi
make install DESTDIR=$RPM_BUILD_ROOT%{destdir}/bypass.ko
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root,-)
# %doc
# %changelog
在
安装
目标期间,该生成过程未遵守DESTDIR
。它已损坏(或需要以其他方式指定)。因此这可能是rpmbuild
中的某个内容,或者是我正在使用的源代码?您正在构建的代码。您需要了解他们希望您如何安装到自定义目录(假设他们或他们的构建系统支持该目录)。如果他们不这样做,那么您可以手动执行(或编辑他们的makefile)。