如何解决构建 rpm - glob 找不到文件:?
开发过程中遇到构建 rpm - glob 找不到文件:的问题如何解决?下面主要结合日常开发的经验,给出你关于构建 rpm - glob 找不到文件:的解决方法建议,希望对你解决构建 rpm - glob 找不到文件:有所启发或帮助;问题描述
我想生成一个 rpm 包 (Redhat),当我启动命令时出现错误:rpmbuild -ba librabbitmq.spec
正在处理文件:librabbitmq1-0.10.0-0.x86_64 错误:找不到文件 全球: /root/rpmbuild/buildrOOT/librabbitmq-0.10.0-0.x86_64/usr/local/lib64/librabbitmq.so.1*
RPM 构建错误: glob 找不到文件:/root/rpmbuild/buildrOOT/librabbitmq-0.10.0-0.x86_64/usr/local/lib64/librabbitmq.so.1*
制作文件:
#Build a static library
name= librabbitmq.so
CC := gcc
CFLAGS := -Wall -g -DHAVE_PolL -DHAVE_SELECT -DHAVE_CONfig_H
OBjdiR := obj
#deFinition des fichIErs headers
INCLUDES := -I/usr/local/include/ -I/root/rpmbuild/SOURCES/librabbitmq-0.10.0 -I/root/rpmbuild/SOURCES/librabbitmq-0.10.0/unix
#deFinition des librairIEs
LFLAGS := -L/usr/local/lib64
LDFLAGS :=
liBS := -L. -lpopt
SRCS_RAW := amqp_API.c amqp_connection.c amqp_consumer.c amqp_framing.c amqp_hostcheck.c amqp_mem.c amqp_openssl_bio.c amqp_openssl.c \
amqp_openssl_hostname_valIDation.c amqp_socket.c amqp_table.c amqp_tcp_socket.c amqp_time.c amqp_url.c
OBJs := $(addprefix $(OBjdiR)/,$(SRCS_RAW:.c=.o))
.PHONY: all
all: $(name)
@echo "$(MAKE) : Tout est genere"
$(name):$(OBJs)
ar rcs $(name) $(OBJs)
ranlib $(name)
#règle pour créer un répertoire d'objets s'il n'existe pas
$(OBjdiR):
mkdir $(OBjdiR)
#définir une règle implicite pour créer des objets dans leur propre répertoire
#(note - ordre uniquement la dépendance sur le répertoire d'objets)
# $<:premIEr_dependance $@:cible
$(OBJs): $(OBjdiR)/%.o: %.c | $(OBjdiR)
$(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@
prefix:=/usr/local
install: librabbitmq.so
install -m 644 librabbitmq.so $(prefix)/lib64
.PHONY: install
.PHONY: clean
clean:
$(RM) *~ $(name)
$(RM) -r $(OBjdiR)
规格文件:
#
# spec file for package librabbitmq
#
%global sover 1
%global libname %{name}%{sover}
name: librabbitmq
Version: 0.10.0
Release: 0
Summary: Amqp library in C
Source: librabbitmq-0.10.0.tar.xz
# Some internal tests are licenced as GPL-3.0+ - they are only used in
# check phase and not shipped further
license: LGPL-2.1-or-later
Group: Development/librarIEs/C and C++
Url: https://github.com/alanxz/rabbitmq-c
%description
This is a C-language AMQP clIEnt library for use with v2.0+ of the RabbitMQ broker.
%package -n %{libname}
Summary: Amqp library written in C
license: LGPL-2.1-or-later
Group: System/librarIEs
%define _prefix /usr/local
#%define _unpackaged_files_terminate_build 0
%description -n %{libname}
Shared library for %{name} (%{summary}).
%package devel
Summary: Amqp library written in C
license: LGPL-2.1-or-later
Group: Development/librarIEs/C and C++
Requires: %{libname} = %{version}
Requires: pkgconfig
%description devel
headers,pkg-config files,so link and other development files for %{name}
(%{summary}).
%prep
%setup -q
%build
make
%install
%make_install
%check
%post -n %{libname} -p /sbin/ldconfig
%postun -n %{libname} -p /sbin/ldconfig
%files -n %{libname}
%{_libdir}/%{name}.so.%{sover}*
%files devel
%doc CHANGELOG.md
%{_includedir}/rabbitmq.h
%{_libdir}/%{name}.so
%changelog
解决方法
不要将 RPMS 构建为根。
也就是说,您的 Makefile
很糟糕,您现在已经覆盖了整个计算机上的文件。这就是为什么您不应该以 root 身份构建 RPM。
在调用 Makefile
时,DESTDIR
需要支持 GNU 标准的 make install
变量。它可能还有其他问题,我只是搜索了最常见的错误。