构建 rpm - glob 找不到文件:

如何解决构建 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*

如何更正 Makefile 中的命令安装?请提出任何建议。

制作文件

#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 变量。它可能还有其他问题,我只是搜索了最常见的错误。

编程问答问答

在 CSS 中设置 cellpadding 和 cellspacing?
如何在 Java 中创建内存泄漏?
浮点数被破坏了吗?
按字符串属性值对对象数组进行排序
如何加快Android模拟器的速度?
如何舍入至多 2 位小数?
使用 Git 版本控制查看文件的更改历史记录
如何在 JavaScript 中检查空/未定义/空字符串?
微信公众号搜索 “ 程序精选 ” ,选择关注!
微信公众号搜 "程序精选"关注