我想象一个3行的Python脚本来做这个,但是yum Python API是不可穿透的.这甚至可能吗?
为'yum list package-name'编写包装器是唯一的方法吗?
我必须将一个Django应用程序部署到SuSE Linux Enterprise 11系统上.公司规则说我只需要使用RPM进行部署.虽然我可以使用./setup.py bdist_rpm每个依赖项,但它并不是真正理智,因为RPM还没有记录所有依赖项.因此,我没有使用RPM的真正优势,手动管理依赖项有点麻烦,我想避免它.
现在我有了以下想法:在构建软件包时,我可以创建一个virtualenv,通过pip那里安装所有依赖项,然后将其余的代码打包到一个固态RPM中.
这种方法有多明智?
我们在Ubuntu/Mac上开发并将RPM部署到CentOS(这是设置,不能改变太多).
问题是当从rpm安装时,包转到/usr/local/lib/python2.7/dist-packages(这是Ubuntu的正确位置).但是,CentOS中的默认python路径正在查看/usr/local/lib/python2.7/site-packages.
有没有办法告诉bdist_rpm在哪里安装文件?
我正在尝试构建并签署RPM.我在我正在构建的位置创建了我的.rpmmacro文件/ path/to/macrodir /然后我使用--define与_topdir引用/ path/to/macrodir /
如果我建立RPM而不给--sign; 它的工作正常.
rpmbuild --define "_topdir /path/to/macrodir" -bb spec
Run Code Online (Sandbox Code Playgroud)
.rpmmacro在macrodir中并包含
%_signature gpg
%_gpg_name Name (Comment) <emailid>
%_gpgpath pathtognupgfolder
%_gpgbin locationofgpgexec
Run Code Online (Sandbox Code Playgroud)
如果我包括--sign然后它抛出错误
rpmbuild --define "_topdir /path/to/macrodir" -bb --sign spec
Run Code Online (Sandbox Code Playgroud)
错误:您必须在宏文件中设置"%_gpg_name"
我无法看到我做错了什么.有什么建议?
rpmbuild的默认行为似乎是扫描buildroot中的每个文件#!行并将这些解释器添加为硬性要求.是否可以禁用此功能?我遇到过这样一种情况:人们用#!/ path/to/local/install/of/something提交脚本,而且这个要求正在嵌入rpm中.
我无法找到抑制此行为的命令行或spec文件选项.希望我只是看起来不够努力.
有没有办法问yum哪个组包含给定的包?我知道如何询问给定组中的包是什么,并且可以编写一个快速脚本来遍历所有组,但是拥有比这更简单的机制会更好.
我已经创建了一个python应用程序,我想.so在最终的RPM包中发布一些二进制文件.经过长时间的阅读,我找到了一种方法来添加二进制文件/图像和其他数据文件setup.py.现在,当我使用python setup.py bdist_rpm命令构建RPM时,它抱怨架构依赖:
Arch dependent binaries in noarch package
error: command 'rpmbuild' failed with exit status 1
Run Code Online (Sandbox Code Playgroud)
谷歌搜索后我发现我们可以添加:
#%define _binaries_in_noarch_packages_terminate_build 0
Run Code Online (Sandbox Code Playgroud)
或删除线BuildArch: noarch将在packagename.spec文件中,克服了rpmbuild故障.但是,每次我从build/bdist.linux-i686/rpm/SPECS/packagename.spec命令添加或删除行python setup.py bdist_rpm总是覆盖.spe文件.
有没有办法Arch dependent binaries在rpm中避免和发送*.so和其他二进制文件?
我正在研究rpm scriptlets中的一个错误,这可能源于我们在安装/删除/升级软件包期间执行scriptlet的顺序.我们在Redhat Enterprise上使用yum.
显然我首先需要很好地理解rpm scriptlet的顺序 - 有趣的是,我没有在任何地方找到一个很好的总结.
根据我收集的内容,这是用于升级的scriptlet :
%pretrans 新包装%pre 新包装 prein%post 新包装 postin%preun 旧包装%postun 旧包装%posttrans 新包装但是,它没有列出用于安装以前不在系统上的新软件包的scriptlet排序(即不是升级)和删除一个?从上面的排序中我可以猜出这些排序可能看起来如何,但我也希望得到一些有关这方面的教育意见......
我有dunno.spec以下结构的文件:
Name: dunno
Vesion: 1.0
...
BuildArch: x86_64
%description
...
%package common
Summary: Shared files
BuildArch: noarch
Run Code Online (Sandbox Code Playgroud)
我想在运行后rpmbuild -ba dunno.spec我应该得到两个二进制包:
dunno-1.0.x86_64.rpmdunno-common-1.0.noarch.rpm但我得到:
dunno-1.0.x86_64.rpmdunno-common-1.0.x86_64.rpm如果我BuildArch: x86_64从规范中删除该行,那么我得到
dunno-1.0.noarch.rpmdunno-common-1.0.noarch.rpm如何解决?
RPM v4.4.2.3.
我在RPM规范文档中看不到卸载部分.我确实看到了preun和postun.