You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从当前目录构建RPM,解决src.rpm中子目录内容为空的问题

问题解决步骤

问题根因说明

rpmbuild原生不支持直接将目录作为Source递归打包进src.rpm,直接指定目录为Source时,rpm仅会打包空目录到src.rpm,这就是Source1为空的根因。

方案实现

第一步:将项目整体打包为单源码包

在Git仓库根目录执行以下命令,将所有代码和配置文件打包为压缩包,自动递归包含clearshare子目录下的所有内容:

tar czf clearshare-0.0.1.tar.gz *

执行后会生成clearshare-0.0.1.tar.gz文件,所有嵌套文件、clearshare/bin/clearsia二进制都在包内,不需要单独指定下层文件。

第二步:修改spec配置

修改后的spec内容如下:

Name:      clearshare
Version:   0.0.1 
Release:   1%{?dist}
License:   Proprietary
Summary:   my clearshare program
BuildArch: x86_64

# 仅需指定单源码包,无需拆分多个Source
Source0: %{name}-%{version}.tar.gz

Requires: rh-python38

%prep
# 自动解压源码包,递归还原所有目录结构
%setup -q

%install
%define _VENV /var/clearos/envs/%{name}/lib/python3.8/site-packages
rm -rf %{buildroot}
mkdir -p -m 755 %{buildroot}%{_VENV}/%{name}

# 直接从解压后的构建目录拷贝所有文件,无需引用多个SOURCE变量
cp -r clearshare %{buildroot}%{_VENV}/%{name}
install -m 644 logging.conf %{buildroot}%{_VENV}/%{name}/
install -m 644 requirements.txt %{buildroot}%{_VENV}/%{name}/
install -m 644 setup.py %{buildroot}%{_VENV}/%{name}/
install -D -m 644 %{name}d.service %{buildroot}/usr/lib/systemd/system/%{name}d.service

# 单独给clearsia二进制加执行权限
chmod 755 %{buildroot}%{_VENV}/%{name}/%{name}/bin/clearsia

%clean
rm -rf %{buildroot}

%files
%defattr(-,root,root,-)
%{_VENV}/%{name}/%{name}
%{_VENV}/%{name}/logging.conf
%{_VENV}/%{name}/requirements.txt
%{_VENV}/%{name}/setup.py
%{_unitdir}/%{name}d.service

第三步:规避sources.download的sha256sum校验

构建系统要求的sources.download仅用于拉取外部远端源,生成的clearshare-0.0.1.tar.gz属于本地内置源码,按以下操作即可规避校验:

  • 提交构建任务时,将clearshare-0.0.1.tar.gz和spec文件一起放到构建系统的SOURCES目录下
  • sources.download文件不需要添加该tarball的条目,绝大多数RPM构建系统检测到Source文件已在本地存在时,会自动跳过拉取和sha256sum校验流程
    如果构建系统强制要求所有Source必须在sources.download中登记,可在提交构建前动态生成sha256sum:
# 生成tarball后自动计算hash写入sources.download
echo "sha256:$(sha256sum clearshare-0.0.1.tar.gz | awk '{print $1}')  clearshare-0.0.1.tar.gz" >> sources.download

不需要提前获知hash值,打包时动态计算写入即可。

内容的提问来源于stack exchange,提问作者NickH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 20:36:03