我正在尝试构建一个.rpm包.我刚刚按照步骤来做到这一点.到现在为止所有的步骤都很顺利,但现在我只是坚持这一步.我只是运行以下命令并得到此错误:
rpmbuild -ba asterisk.spec
error: Failed build dependencies:
gtk2-devel is needed by asterisk-1.8.12.2-1.fc15.x86_64
libsrtp-devel is needed by asterisk-1.8.12.2-1.fc15.x86_64
[... more ...]
freetds-devel is needed by asterisk-1.8.12.2-1.fc15.x86_64
uw-imap-devel is needed by asterisk-1.8.12.2-1.fc15.x86_64
Run Code Online (Sandbox Code Playgroud)
我正在使用fedora-15.如何解决此错误?
如何在安装src.rpm
包时安装所有依赖项.可能吗?
有没有办法从rpm包中提取spec文件(我只有RPM文件)
不是
rpm --scripts -qp my-great-app-1.1.2.rpm
Run Code Online (Sandbox Code Playgroud)
(这种语法只能从rpm获取spec脚本中的脚本)
我修改自动生成,并想告诉rpmbuild
来调用它,当使用特定生成区域.
这类似于现有问题,但更具体.
我不想以root用户身份运行任何构建命令; 目的只是拥有一个RPM,而不是在系统中安装任何东西.
我不想要求用户更改他们的dotfiles(例如$HOME/.rpmrc
); 构建应该是自包含的,不会影响用户的现有设置.
我不想将位置硬编码到foo.spec
文件中; 如果用户想要在不同的位置构建,那么该文件应该可以使用.
该--buildroot
选项是不是我所需要; 为make
构建过程的一部分设置伪根文件系统,但我需要为整个 RPM构建过程指定"构建区域" .
我正在寻找的是一个假设的--build-area FOODIR
选项,可以给rpmbuild
命令或等效的环境变量.因此,它应该仅影响该命令的单个调用,并使其对其构建区域使用指定的用户可写位置.
我已经看到了对_topdir
宏的引用,这似乎就是我所说的,但它似乎不是每次调用都可配置的.
如果rpmbuild
可以在需要时在该位置设置自己的环境,那将是理想的,但我不介意为每个构建设置目录,因为这可以作为构建的一部分自动化.目标是使用户可写位置仅在构建运行期间存在,然后在生成RPM文件后通过删除整个位置进行清理.
我有一个spec文件.我需要定义一个spec变量,它从系统上的一行文件中获取其值.
例如
%define path `cat /home/user/path_file`
Run Code Online (Sandbox Code Playgroud)
并且在path_file中是一行
/var/www/html/hosts
Run Code Online (Sandbox Code Playgroud)
这部分有效.我说从RPM BUILD输出开始有时值${path}
实际上是我的命令cat /home/user/path_file
,有时值是path_file(/ var/www/html/hosts)中的行应该是什么?
我正在升级我们的项目RPM.问题是当我从projectname-1.0-0升级到projectname-1.0-1时,它首先安装新项目并卸载旧项目,从整体上看,它完全删除了我的项目.我在升级时使用了"vv"选项,输出显示安装完成后卸载.
有人请帮忙解决这个问题.有什么我应该在RPM规范或rpmbuild选项中专门更改?
我正在.spec
通过URL 向现有rpm 文件添加一些源,但尚未下载它们.有没有办法rpmbuild
下载源而不是手动执行?
我正在尝试%{dist}
在我的RPM规范文件中使用标记来提供Fedora Core(例如fc12
),CentOS 5(例如el5
)和亚马逊的Linux AMI 之间的特定于分发的依赖关系:
Release: %_svn_revision%{?dist}
Run Code Online (Sandbox Code Playgroud)
和
# Depencencies
%{?rhel:Requires: ...}
%{?fedora:Requires: ...}
Run Code Online (Sandbox Code Playgroud)
不幸的是,%{dist}
似乎没有在CentOS 5.5中定义,并且我没有找到与CentOS 5.5匹配的特定于发行版的条件(我认为el5
匹配,但似乎没有).这张票据报告了%{dist}
2008年CentOS 的遗失,但自2009年以来一直没有更新.
我如何%{dist}
在CentOS中定义以及我应该使用什么条件来匹配CentOS 5?任何RPM大师能指出我正确的方向吗?
是否可以将参数传递给rpmbuild以填充在spec文件中调用的用户定义变量?
示例:在.spec文件中调用的用户定义变量%{foobar}(但为空)应填充执行rpmbuild命令时传递的变量
rpmbuild -bb --foobar="Foo" somespecfile.spec
Run Code Online (Sandbox Code Playgroud) 我尝试在内部rpm包中为我们的地理服务器打包一些地图文件.对于构建部分,这只是复制文件.我认为这可以按预期工作.但要打包这些20GB的图像需要花费很长时间.
我已经读过rpm内部压缩数据,这可以通过几种不同的压缩算法来完成.但是,我不知道我的转速选择哪种压缩以及如何影响它.我找不到rpmbuild命令的任何选项,也没有为specfile找到任何选项,也没有找到我可以列出的常规rpm选项rpmbuild --showrc
我对rpmbuild和specfiles不是很有经验,但在阅读了很多关于rpm.org的手册和教程后,我没有进一步的想法.
我使用的specfile看起来像:
%define debug_package %{nil}
%global mapsversion 0.9
# If this is a snapshot, put the date here and uncomment
#global snapshot_version 20100519
# This is the version in a form acceptable
# an an RPM version string (i.e. no '-')
# Hier werden die Makros definiert.
%global rpmversion %(echo %{mapsversion} | tr '-' '_')
%global pkgversion %{mapsversion}%{?snapshot_version:-SNAPSHOT}
%global pkgname %{name}
Name: geoserver-maps-part2
Version: %{rpmversion}
Release: 1%{?dist}
Summary: Swiss Maps for GeoServer
Group: Application/ourApp
License: Copyright …
Run Code Online (Sandbox Code Playgroud)