Kol*_*zer 10 linux centos rpm centos7
我在linux上提出了一个集中式日志记录服务器.在这一点上,我正在努力巩固,使事情更容易加载到另一台机器上.我希望有一个RPM可以一次安装多个程序.我正在使用CentOS 7服务器.我想要打包到rpm的程序将是:
eventlog 2.12
libdbi 0.9.0
freetds 0.91
libdbi-drivers 0.9.0
json-c
syslog-ng 3.5.6
Run Code Online (Sandbox Code Playgroud)
我一直在做很多关于RPM的阅读,只是很难理解如何将多个源集成到一个RPM中.我安装这些的原因而不仅仅是yum安装它们是因为我需要在"./configure --enable-example"中调用配置.所以我有源在我的机器上安装了所有这些程序,然后我重新安装它们并尝试使用该文件作为源.任何能够指出我正确方向的想法或任何人都将不胜感激.
Eta*_*ner 17
您可以根据Source需要列出尽可能多的行,并%setup在您需要匹配的spec文件中包含尽可能多的宏调用.
通过在线最高RPM书籍的多源规范文件中的使用%设置,我们发现:
出于此示例的目的,我们的spec文件将具有以下三个源标记:[1]
Run Code Online (Sandbox Code Playgroud)source: source-zero.tar.gz source1: source-one.tar.gz source2: source-two.tar.gz打开第一个来源并不难; 所需的只是使用%setup而没有选项:
Run Code Online (Sandbox Code Playgroud)%setup这会产生以下命令集:
Run Code Online (Sandbox Code Playgroud)cd /usr/src/redhat/BUILD rm -rf cdplayer-1.0 gzip -dc /usr/src/redhat/SOURCES/source-zero.tar.gz | tar -xvvf - if [ $? -ne 0 ]; then exit $? fi cd cdplayer-1.0 cd /usr/src/redhat/BUILD/cdplayer-1.0 chown -R root.root . chmod -R a+rX,g-w,o-w .....
现在让我们添加第二个源文件.这里的事情变得更有趣了.首先,我们需要确定我们正在谈论的源标记(以及哪个源文件).因此,我们需要使用-a或-b选项,具体取决于源存档的特征.对于这个例子,假设-a是我们想要的选项.添加该选项,加上"1"指向source1标记中指定的源文件,我们有:
Run Code Online (Sandbox Code Playgroud)%setup -a 1由于我们已经看到使用-a或-b选项导致重复解包,我们需要通过添加-T选项来禁用默认解包:
Run Code Online (Sandbox Code Playgroud)%setup -T -a 1接下来,我们需要确保不删除顶级目录.否则,我们刚刚解压缩的第一个源文件将会消失.这意味着我们需要包含-D选项以防止这种情况发生.添加这个最终选项,并在我们的%prep脚本中包含现在完整的宏,我们现在有:
Run Code Online (Sandbox Code Playgroud)%setup %setup -T -D -a 1这将导致以下命令:
Run Code Online (Sandbox Code Playgroud)cd /usr/src/redhat/BUILD rm -rf cdplayer-1.0 gzip -dc /usr/src/redhat/SOURCES/source-zero.tar.gz | tar -xvvf - if [ $? -ne 0 ]; then exit $? fi cd cdplayer-1.0 cd /usr/src/redhat/BUILD/cdplayer-1.0 chown -R root.root . chmod -R a+rX,g-w,o-w . cd /usr/src/redhat/BUILD cd cdplayer-1.0 gzip -dc /usr/src/redhat/SOURCES/source-one.tar.gz | tar -xvvf - if [ $? -ne 0 ]; then exit $? fi cd /usr/src/redhat/BUILD/cdplayer-1.0 chown -R root.root . chmod -R a+rX,g-w,o-w .到现在为止还挺好.让我们包含最后一个源文件,但是有了这个,我们会说它需要在cdplayer-1.0的子目录中解压缩,称为数据库.在这种情况下我们可以使用%setup吗?
如果source-two.tgz创建了数据库子目录,我们可以.如果没有,那么就必须手工完成.出于我们的示例的目的,假设source-two.tgz未创建为包含数据库子目录,因此我们必须自己完成.这是我们的%prep脚本现在:
Run Code Online (Sandbox Code Playgroud)%setup %setup -T -D -a 1 mkdir database cd database gzip -dc /usr/src/redhat/SOURCES/source-two.tar.gz | tar -xvvf -这是结果脚本:
Run Code Online (Sandbox Code Playgroud)cd /usr/src/redhat/BUILD rm -rf cdplayer-1.0 gzip -dc /usr/src/redhat/SOURCES/source-zero.tar.gz | tar -xvvf - if [ $? -ne 0 ]; then exit $? fi cd cdplayer-1.0 cd /usr/src/redhat/BUILD/cdplayer-1.0 chown -R root.root . chmod -R a+rX,g-w,o-w . cd /usr/src/redhat/BUILD cd cdplayer-1.0 gzip -dc /usr/src/redhat/SOURCES/source-one.tar.gz | tar -xvvf - if [ $? -ne 0 ]; then exit $? fi mkdir database cd database gzip -dc /usr/src/redhat/SOURCES/source-two.tar.gz | tar -xvvf -我们添加以解压缩最后一组源的三个命令被添加到%prep脚本的末尾.
| 归档时间: |
|
| 查看次数: |
8620 次 |
| 最近记录: |