标签: rpm

如何在 RPM 安装期间访问安装后脚本中用户指定的 --prefix 值?

我使用前缀值 /usr/local 创建了一个带有安装后脚本的 rpm 软件包。当我使用 --prefix=/tmp/mylocation 安装 rpm 时,脚本执行无法在新位置下查找文件。

%post mv /usr/local/PACKAGE/文件 /etc

在脚本中使用 %{prefix} 也不起作用(mv %{prefix}/PACKAGE/file /etc)。

rpm

4
推荐指数
1
解决办法
2685
查看次数

将额外的文件添加到 rpm 构建过程中

我有一个支持添加 python 插件的应用程序的源代码。我已经编写了一个 python 脚本,并且想要构建一个默认包含我的脚本的自定义 rpm。这样我就不必在 rpm 安装后额外添加它。

据我了解,这有两个部分-

  1. 将文件添加到源代码中。
  2. 在文件中列出该文件.spec

我如何知道将文件放在源中的何处?如何指定要复制脚本的路径?规格文件包含如下文本:

%if %{with_python}
%files python
%{_mandir}/man5/collectd-python*
%{_libdir}/%{name}/python.so

//Something like this?

// %{_libdir}/%{name}/gearman.py 
// %{_libdir}/%{name}/redis.py
%endif
Run Code Online (Sandbox Code Playgroud)

compilation rpm rpmbuild rpm-spec

4
推荐指数
1
解决办法
2897
查看次数

就 rpm 规格而言,“%{__install}”是什么意思?

也许这是一个非常愚蠢的问题,但我找不到答案。直到今天我才尝试为 rpm 包编写规范文件。我找到了一个规范的示例,并且在该部分中看到了很多%{__install}想法%install。据我所知,它的语法是万能之王。但规范文件中没有对此进行任何解释。在我的示例中,它看起来像这样:

%install
%{__install} -pD -m 644 $RPM_BUILD_DIR/my-project-%{version}/deploy/my-project.service $RPM_BUILD_ROOT/usr/lib/systemd/system/my_project-emperor.service
Run Code Online (Sandbox Code Playgroud)

我还在我发现的其他规范中看到了很多使用此宏的示例。像 这样那样。它们具有相同的语法:

%{__install} -s %{name} %{buildroot}%{_sbindir}/
%{__install} -c -m 644 examples/acl-content-sw.cfg %{buildroot}%{_sysconfdir}/%{name}/%{name}-acl-content-sw.cfg.example
%{__install} -c -m 644 examples/auth.cfg %{buildroot}%{_sysconfdir}/%{name}/%{name}-auth.cfg.example
Run Code Online (Sandbox Code Playgroud)

%{__install}实际上是什么?rpm 构建器的某种内置宏?很难用谷歌搜索或在官方文档中找到它,但看起来这是一种常见的东西。

linux rpm rpmbuild rpm-spec

4
推荐指数
2
解决办法
3294
查看次数

如何在 rpm 构建中包含 pip 包

我想pip3 install在包中包含 Python 包依赖项(使用 安装)rpm。我无法安装使用,dnf因为它的版本已过时。rpm如果我使用以下命令安装依赖项,则会返回以下错误pip3 install

error: Failed dependencies python3.6dist(dependency-package)
Run Code Online (Sandbox Code Playgroud)

关于如何在 中包含 Python 包有什么建议吗rpm

python pip rpm rpmbuild rpm-spec

4
推荐指数
1
解决办法
4923
查看次数

使用python rpm模块进行全球化?

以下代码使用该rpm模块查询已安装软件包的版本.我想要做的是查询由glob指定的一组包,例如搜索"python*"而不是"python".这可能使用rpm模块吗?

  1 #!/usr/bin/python
  2 
  3 import rpm
  4 
  5 ts = rpm.TransactionSet()
  6 mi = ts.dbMatch("name", "python")
  7 for i in mi:
  8     print i['name'], i['version']
Run Code Online (Sandbox Code Playgroud)

`

python search glob rpm

3
推荐指数
1
解决办法
1410
查看次数

RPM安装过程无需安装

我正在尝试构建自己的rpm包并且有一些疑问.

首先,在一些地方,我已经红了,不应该以root身份构建rpms.这是为什么?在构建过程中,rpmbuild必须经过安装阶段才能将文件安装到系统中.

据我所知,如果我不是根,我不能这样做.rpmbuild进程完成但出错.那么,问题是如果真的有可能在没有安装内容的情况下构建rpm吗?或者最终我必须成为root才能完成构建过程?

rpm rpmbuild

3
推荐指数
1
解决办法
1316
查看次数

RPM Build Spec文件我想检查rpm正在安装或更新

我想检查我创建的rpm是安装还是由用户(客户端)更新

rpm -ivh abc.rpm
Run Code Online (Sandbox Code Playgroud)

要么

rpm -Uvh abc.rpm
Run Code Online (Sandbox Code Playgroud)

是他们在spec文件中的任何%命令来获取有关此命令的信息.

我的要求是,如果我有一个名为abc-0.1-2.rpm的rpm,现在用户想要在安装abc.0.1-1.rpm之前安装它, rpm -ivh abc.0.1-2.rpm然后它允许安装或用户rpm -Uvh abc.0.1-2在安装旧版之前直接用命令更新rpm 版本然后停止这样做.

rpm rpmbuild rpm-spec rpm-maven-plugin

3
推荐指数
2
解决办法
4804
查看次数

如何在使用rpmbuild时使用%debug_package?

Linux版本2.6.18-131.el5 gcc版本4.1.2 RPM版本4.4.2.3

我使用以下命令来构建包:$ sudo rpmbuild -ba xxx.spec

我认为默认情况下应该构建debuginfo包,但只获得xxx.src.rpm和xxx.x86_64.rpm,没有debuginfo包.

然后我在我的xxx.spec中添加一行"#%debug_package":

在此输入图像描述

然后构建调试包!但我认为前面带有'#'的行被视为评论!这是如何运作的?

我完全糊涂了.

rpm rpmbuild rpm-spec

3
推荐指数
1
解决办法
6916
查看次数

版本控制系统中的RPM spec文件

我面临着从使用Git控制的c ++(但可能是任何其他语言)项目源构建RPM数据包的任务.我的问题是我应该在哪里存储".spec"文件来执行此任务?它应该独立于项目主要来源存储还是包含在其中?

我参与不同的项目并使用不同的版本控制系统:SVN,Git,Mercurial,这项任务很复杂.所以我试图找到最常见和方便的解决方案,而不参考特定版本控制系统的功能.

svn git mercurial specifications rpm

3
推荐指数
1
解决办法
1190
查看次数

百胜尝试在CentOS 6上安装.el7版本

我已经生成了两个RPM.一个用于CentOS 6,一个用于CentOS 7.

my-package-0.0.1-1.el6.x86_64

my-package-0.0.1-1.el7.x86_64

当我yum info my-package在CentOS 6机器上进行操作时,它会给我el7信息.当我这样做yum install my-package时,获得el7版本.它为什么这样做?我试图避免在el6机器上安装el7版本.

linux centos rpm yum centos7

3
推荐指数
1
解决办法
2416
查看次数