.spec在安装我的文件时,我需要添加到文件中以创建桌面快捷方式并为快捷方式指定图标.rpm?如果需要脚本,那么示例将非常有用.
我正在使用rpm版本4.4.2.3-18.el5和gpg版本1.4-2的CentOS 5.4主机我使用命令签署了rpm
> rpm --define '_signature gpg' --define '_gpg_path /path/to/keys' --define '_gpg_name mygpgname' -K myrpm.rpm
Run Code Online (Sandbox Code Playgroud)
命令成功,重复该命令会发出一条警告消息,表明rpm已经使用密钥签名.
但是,当我尝试使用rpm -K验证签名时,它返回NOT OK(MISSING_KEYS)结果.
> rpm -K myrpm.rpm
> GNUPGHOME=/path/to/keys rpm --define '_signature gpg' --define '_gnupghome /path/to/keys' --define '_gpg_name mygpgname' -K myrpm.rpm
myrpm.rpm: (SHA1) DSA sha1 md5 (GPG) NOT OK (MISSING KEYS: GPG#12345678)
Run Code Online (Sandbox Code Playgroud)
我假设我正在以某种方式设置错误的路径.我也尝试过将GPGPATH =/path /设置为/ keys而没有运气.
有没有人有任何建议如何让rpm -K找到丢失的密钥?
我正计划将WAR文件打包为RPM.当前的部署过程对我们不起作用,我修复它的想法是在RHN Satellite中创建一个新的自定义频道,并通过该频道发布我的WAR文件.目前(因为我们试图赢得一些时间)我正在通过Satellite管理一些配置文件,因此配置不是一个大问题.我们不会因为很多原因将它们保留在WAR中,但这是不同的故事.
无论如何,有没有人将WAR打包为RPM?你做热部署还是强制JBOSS/Tomcat重启?是RPM安装后还是作为其一部分?您的SPEC文件是什么样的?我可以把它看作一个例子吗?您是否签入SPEC for JBOSS/Java/Oracle客户端或只安装WAR?有什么故事可讲吗?有什么大问题吗?我应该考虑别的吗?我可以构建RPM没问题但是我想听听使用WAR文件和JBOSS这样做的最好方法是什么(一些Tomcats仍在这里运行但是很快就会逐步淘汰 - 所以我不太担心它们).
我确实适合任何输入.
在此先感谢亲切的问候克里斯
我试图了解Postgres 9.1 rpms是如何在CentOS/RHEL 6上构建的,所以我要看一下源rpms中的spec文件.
以下语法是什么意思?具体来说,问号和感叹号?
%{!?test:%define test 1}
%{!?plpython:%define plpython 1}
%{!?pltcl:%define pltcl 1}
%{!?plperl:%define plperl 1}
%{!?ssl:%define ssl 1}
%{!?intdatetimes:%define intdatetimes 1}
%{!?kerberos:%define kerberos 1}
%{!?nls:%define nls 1}
%{!?xml:%define xml 1}
%{!?pam:%define pam 1}
%{!?disablepgfts:%define disablepgfts 0}
%{!?runselftest:%define runselftest 0}
%{!?uuid:%define uuid 1}
%{!?ldap:%define ldap 1
Run Code Online (Sandbox Code Playgroud)
我知道你可以定义一个宏变量%define <name>[(opts)] <value>,我相信感叹号是一个逻辑否定运算符.我找不到关于问号或上述例子的任何信息.在定义宏变量之前,似乎是某种测试.
这是spec文件的粘贴.
我使用本网站上的说明创建了可重新定位的RPM:http: //www.cyberciti.biz/faq/rpm-relocatable-packages/
这意味着我可以使用将软件包安装到其默认位置/ opt/app
rpm -ivh mypackage.rpm
Run Code Online (Sandbox Code Playgroud)
但是,如果我决定将包安装到/ usr/local/bin中,我可以使用以下命令安装它:
rpm -ivh --prefix=/usr/local/bin mypackage.rpm
Run Code Online (Sandbox Code Playgroud)
所有这一切都很完美.但是,我需要通过Yum安装软件包.如何将--prefix参数传递给Yum?
我有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.
我有一个使用pyinstaller生成的构建.我需要创建.rpm包,它将把可执行文件放入/usr/bin/并创建一个运行该可执行文件的systemd服务.
我发现了这个 https://docs.python.org/3/distutils/builtdist.html和https://docs.python.org/2.0/dist/creating-rpms.html
但它并没有给我一个完整的图片.
有可能成功吗?
我需要使用什么工具集?(基本上,how制作它).
如果可能 - 示例代码
我在一个由 10 多名开发人员组成的团队中工作,我们将 RHEL 6.4 用于我们的开发机器和服务器(部署我们的软件)。
RHEL 6.4 带有 Boost 1.41,但我需要至少 1.47 的修复程序。我想升级到最新的(目前是 1.56)。
它不像下载源代码和构建/安装那么容易,因为:
更糟糕的是,RedHat 似乎有自己的专有方式将 Boost 软件/库捆绑/打包到 RPM 中。他们不是只有一个 RPM,而是一系列较小的 RPM:
$ yum list installed|grep boost
boost.x86_64 1.41.0-11.el6_1.2 @Workstation
boost-date-time.x86_64 1.41.0-11.el6_1.2 @Workstation
boost-devel.x86_64 1.41.0-11.el6_1.2 @Workstation
boost-filesystem.x86_64 1.41.0-11.el6_1.2 @Workstation
boost-graph.x86_64 1.41.0-11.el6_1.2 @Workstation
boost-iostreams.x86_64 1.41.0-11.el6_1.2 @Workstation
boost-program-options.x86_64 1.41.0-11.el6_1.2 @Workstation
boost-python.x86_64 1.41.0-11.el6_1.2 @Workstation
boost-regex.x86_64 1.41.0-11.el6_1.2 @Workstation
boost-serialization.x86_64 1.41.0-11.el6_1.2 @Workstation
boost-signals.x86_64 1.41.0-11.el6_1.2 @Workstation
boost-system.x86_64 1.41.0-11.el6_1.2 @Workstation
boost-test.x86_64 1.41.0-11.el6_1.2 @Workstation
boost-thread.x86_64 1.41.0-11.el6_1.2 @Workstation
boost-wave.x86_64 …Run Code Online (Sandbox Code Playgroud)
我在 Redhat Linux 上工作过,我有一个 tar.gz 文件。我想把这个 tar.gz 文件打包成一个 rpm 包文件。
在rpm包阶段,我只是想解压tar.gz文件,把所有的人员打包到rpm包中,当我在linux服务器上安装rpm包时,它只会简单地将所有文件复制到目标文件夹中.
我已经尝试了很多。这是我的 SPEC 文件的一些代码,但它有问题:
%prep
%build
pwd
%install
rm -rf /usr/local/sample
mkdir /usr/local/sample
cd %{_sourcedir}
tar -xzvf sample.tar.gz -C /usr/local/sample
%clean
rm -rf %{buildroot}
%files
%defattr(-,root,root,-)
%doc
%changelog
Run Code Online (Sandbox Code Playgroud)
我可以成功打包rpm文件,但是rpm包中没有tar.gz文件的内容。
如果我在其他服务器上安装 rpm 文件,它将失败。
我该如何解决这个问题?
我创建了一个新的 RPM 使用python bdist_rpm. 通常python setup.py install会安装 python 依赖项websocket-client或任何其他包。但是 RPM 只是拒绝安装任何东西。
显然,来自其他各种帖子的建议似乎只是要求在 setup.cfg 中将它们作为 rpm 包。这对我来说没有意义,因为大多数 rpm 包似乎都是旧版本,我不可能为我需要的所有 python 包创建 rpm。我需要一个更新的版本,yum 安装实际上没有安装软件包是没有意义的。
什么是正确的(干净和最简单的)方法?我相信如果 asetup.py有类似的东西
install_requires=[
"validictory",
"requests",
"netlogger>=4.3.0",
"netifaces",
"pyzmq",
"psutil",
"docopt"
],
Run Code Online (Sandbox Code Playgroud)
然后它应该尝试将它们包含在 rpm 中或尝试安装它。我正在使用 vagrant 尝试一个干净的 centos vm,我一直在破坏它,然后安装 rpm。