首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

一种在rpmbuild或获取RPM_BUILD_ROOT变量下执行外部脚本的方法

在rpmbuild或获取RPM_BUILD_ROOT变量下执行外部脚本的方法有多种,以下是其中一种常用的方法:

  1. 在.spec文件中使用%post段落:在.spec文件中,可以使用%post段落来执行在RPM包安装后执行的脚本。在该段落中,可以使用RPM_BUILD_ROOT变量来指定RPM包的根目录。

示例.spec文件:

代码语言:txt
复制
%post
#!/bin/bash
# 在RPM包安装后执行的脚本
# 可以在此处执行外部脚本
# 使用RPM_BUILD_ROOT变量指定RPM包的根目录
  1. 在.spec文件中使用%build段落:在.spec文件中,可以使用%build段落来执行在构建RPM包时执行的脚本。同样地,可以使用RPM_BUILD_ROOT变量来指定RPM包的根目录。

示例.spec文件:

代码语言:txt
复制
%build
#!/bin/bash
# 在构建RPM包时执行的脚本
# 可以在此处执行外部脚本
# 使用RPM_BUILD_ROOT变量指定RPM包的根目录
  1. 在.spec文件中使用%install段落:在.spec文件中,可以使用%install段落来执行在将文件安装到RPM包时执行的脚本。同样地,可以使用RPM_BUILD_ROOT变量来指定RPM包的根目录。

示例.spec文件:

代码语言:txt
复制
%install
#!/bin/bash
# 在将文件安装到RPM包时执行的脚本
# 可以在此处执行外部脚本
# 使用RPM_BUILD_ROOT变量指定RPM包的根目录

需要注意的是,以上方法只是在.spec文件中执行外部脚本的一种方式,具体的脚本内容和执行逻辑需要根据实际需求进行编写。另外,腾讯云提供了丰富的云计算产品,可以根据具体需求选择适合的产品进行使用。具体产品介绍和链接地址可以参考腾讯云官方网站。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

RPM打包原理、示例、详解及备查

“宏代码”这一列就可以SPEC文件中用来代指所对应目录,类似于编程语言中全局变量。当然~/rpmbuild这个文件夹也是有宏代码,叫做%_topdir。...PKGNAME.REASON.patch 如果需要修改多个文件,简单方法是复制 BUILD 整个子目录,然后子目录执行 diff。...脚本片段可以: 软体包安装之前 (%pre) 之后 (%post) 执行 软体包卸载之前 (%preun) 之后 (%postun) 执行 事务开始 (%pretrans) 结束 (%posttrans...如果你脚本片段中执行任何程序,就必须以 Requires(CONTEXT)(例: Requires(post))形式列出所有依赖。...-bb program.spec 如果只想创建 SRPM(不需要执行 %prep %build 其他阶段),请执行rpmbuild -bs program.spec 5.2 rpmlint检查

10.4K71

如何无网络免编译安装程序(RPM包)

/SPECS/python.spec # 参照这个文件来写自己软件包spec文件 rpmbuild内置变量 rpmbuild --showrc可查看内置变量 常用几个变量: $RPM_BUILD_DIR.../$HOME/rpmbuild/BUILD $RPM_BUILD_ROOT /$HOME/rpmbuild/BUILDROOT %{_sysconfigdir} /etc %{_sbindir} /usr...%clean: 清理一些暂存文件 %files: 定义哪些文件或者目录会放入rpm中 %pre: rpm安装前执行动作 %post: rpm安装后执行动作 %preun: 卸载前执行脚本程序(preun...)开始执行 %postun: 卸载后执行脚本程序(postun)开始执行 更多参考: How_to_create_an_RPM_package rpmbuild spec 示例 示例1 openstack-aodh.spec...指定rpm包在安装卸载前后动作,比如在安装前用脚本做一些准备、安装后用脚本做一些初始化动作、卸载前用脚本做一些准备、卸载后用脚本做一些清理动作 rpmbuild命令选项 rpmbuild命令有不少选项

2.1K170

RPM包制作之Spec文件参数详解

下面我们以制作NGINXRPM开始介绍其制作方法。以下操作CentOS7.4 64位系统进行(切记,不要把7上文件装到6上去)。  ...为什么要定义宏,因为不同系统,命令存放位置可能不同,所以通过宏定义找到命令真正存放位置   1.2 理解Spec脚本中各个变量 rpm配置文档还算是比较有调理性...,按照标准格式整理一些信息,包括:软件基础信息,以及安装、卸载前后执行脚本,对源码包解压、打补丁、编译,安装路径和文件引用等,其中需要注意地方为:虚拟路径位置,以及宏定义。  ...spec脚本包括很多关键字,主要有: Name: 软件包名称,在后面的变量中即可使用%{name}方式引用 Summary: 软件包内容 Version: 软件实际版本号...}指/usr,而对于其他文件,例如/etc配置文件,则需要用%{_sysconfdir}标识 Requires: 该rpm包所依赖软件包名称,可以用>=<=表示大于小于某一特定版本

2.8K20

三分钟手操rpm包

sudo yum install -y gcc make rpm-build redhat-rpm-config vim lrzsz 这个时候会有小朋友问了,无网络情况怎么办!!...我创建了一个coding3min文件夹,里面名为run.sh脚本,作用是输出一句话。 把自己源码打成一个tar.gz包(随便什么压缩格式),然后放到rpmbuild源码包所在位置。...spec文件模板,coding3min.spec内容如下(请上下滚动查看): # 定义了一个变量install_dir %define install_dir /data/coding3min #...解压源码等 %prep %setup -q # 编译 %build # rpm安装前执行动作 %pre echo install begin... # 安装, 即把一些可执行文件和配置复制到目标目录中...安装一 ? 然后放到yum源里就可以用啦,参考“三分钟手操yum源”

64810

实用入门分享:如何基于 OpenCloudOS 制作 RPM 软件包?

一、RPM 包制作RPM 包基本介绍RPM(Red Hat Package Manager)包是一种用于 Linux 操作系统上进行软件安装、升级和卸载标准格式,它是基于 RPM 软件包管理系统。...RPM 包通常包含一个多个软件包文件、安装脚本、配置文件和其他必要元数据。这些元数据包括软件包名称、版本、依赖关系和许可证等信息。...我们这里创建一个简单 shell 脚本,放到 ~/rpmbuild/SOURCES 即可。...touch ~/rpmbuild/SOURCES/hello编辑脚本vim /home/builder01/rpmbuild/SOURCES/hello打开后输入一命令:#!...安装、卸载、文件列表:指定了RPM包安装、卸载和文件列表等信息。脚本:包含了安装、卸载、升级RPM包时需要执行脚本

25240

RPM包制作之Spec文件参数详解

下面我们以制作NGINXRPM开始介绍其制作方法。以下操作CentOS7.4 64位系统进行(切记,不要把7上文件装到6上去)。  ...为什么要定义宏,因为不同系统,命令存放位置可能不同,所以通过宏定义找到命令真正存放位置   1.2 理解Spec脚本中各个变量 rpm配置文档还算是比较有调理性...,按照标准格式整理一些信息,包括:软件基础信息,以及安装、卸载前后执行脚本,对源码包解压、打补丁、编译,安装路径和文件引用等,其中需要注意地方为:虚拟路径位置,以及宏定义。  ...spec脚本包括很多关键字,主要有: Name: 软件包名称,在后面的变量中即可使用%{name}方式引用 Summary: 软件包内容 Version: 软件实际版本号...}指/usr,而对于其他文件,例如/etc配置文件,则需要用%{_sysconfdir}标识 Requires: 该rpm包所依赖软件包名称,可以用>=<=表示大于小于某一特定版本

4.2K00

Linux运维之教你如何定制RPM包

内容一般为: [root@moban ~]# cat .rpmmacros %_topdir %(echo $HOME)/rpmbuild %_topdir目录下一般需要有6个目录(实际操作时候执行命令自动创建...最后切换SPEC目录下执行命令制作rpm包: rpmbuild -bb rpmbuild/SPEC/软件名-版本.spec SPEC文件是最核心它里面定义了头部信息和一些“阶段”(%prep、%build...如果有其他配置脚本则依次用Source1、Source2等等往后增加即可。...如果有补丁需要在这个阶段进行打补丁操作 %post 定义执行脚本 %build %_builddir目录下执行源码包编译。一般是执行....-bp 执行到pre -bc 执行到 build段 -bi 执行install段 -bl 检测有文件没包含 RPM包制作拓展 下面我们来拓展一,比如:我们想为tengine增加控制脚本,可以通过

2.1K11

实战演练:MySQL RPM包定制化制作全过程

墨墨导读:本文详细介绍一键式安装部署,定制化制作MySQL RPM包过程,希望可以帮助到读者朋友 。 部署MySQL时候,经常用RPM包简易安装。非常快,也非常有效。...rpm包时 %description 软件详细说明 %build 开始构建包 %install 开始把软件安装到虚拟根目录中 %clean 清理临时文件 %files 定义那些文件目录会放入rpm...中 %changelog 变更日志 %setu安装p -n %{name}-%{version} 把源码包解压并放好 %pre rpm前执行脚本 %post rpm安装后执行脚本 %preun rpm...卸载前执行脚本 %postun rpm卸载后执行脚本 5 执行命令打包 [root@ss30 ~]# cd /root [root@ss30 ~]# rpmbuild -bb rpmbuild.../SPECS/mysql5.7.26.spec 完成后rpmbuild/RPM目录下就会两个rpm包 ?

1.6K20

Linux间隔多少秒 (即以秒为单位) 去执行某条命令某个shell脚本操作方法

日常运维工作中, 经常会碰到以秒为单位去定时执行某些命令监控脚本需求。..., 下面介绍三种方法来实现秒级别的定时任务执行: 第一种方法 写一个触发脚本触发脚本中使用死循环来解决此问题 [root@test ~]# cat kevin.sh #!...,就将计划任务中此条目删除注释!...可以参考上面第一种方式那样进行调整,实现每1秒钟来执行这个监控脚本! 第二种方法 和第一种方法类似,只不过感觉比第一种更便捷一些。 [root@test ~]# vim kevin.sh #!...上面介绍三种方法,比较倾向于推荐第三种方法,因为前两种方法并不是严格间隔2秒执行,可能会大于2秒,因为执行脚本(kevin.sh)本身也是需要一定时间

2.5K50

MySQL自己主动化安装部署

有过MySQL运维的人应该都清楚,线上MySQL一般都採用源代码编译,由于这样才干够依据企业各自须要选择要编译功能,尽管MySQL源代码编译挺简单,可是试想一,假设你有几百台server同一时候要安装...1、制作符合自己需求RPM包 我们要依据MySQL源代码编译符合企业需求RPM包,源代码获取命令例如以下: wget http://downloads.mysql.com/archives...包: rpmbuild -bb ....,my.cnf末尾server id上留了空白,在后面的shell脚本会动态加上,这是由于一个企业内部全部MySQLserver id必须保持全局一致性,这样主备复制时才不会导致混乱。...4、编写自己主动化安装部署脚本 执行这个脚本之前,我们必须得把前面几部制作rpm包、my.cnf模板和数据文件夹模板放到一个固定地方,本例中是放在企业内部ftp上。

47420

RPM与YUM管理包程序

所以,不晓得 yum 功能情况,你依旧可以到 CentOS 镜像站下载 updates 数据,然后利用上述方法来一口气升级!...当然,升级也是可以利用 --nodeps/--force 等等参数! 不过,现在既然有 yum 机制,这个笨方法当然也就不再需要了!...有关文件而已) -qR :列出与该软件有关相依软件所含文件 (Required 意思) -qf :由后面接文件名,找出该文件属于哪一个已安装软件; -q --scripts:列出是否含有安装后需要执行脚本档...,就用这个简单方法来验证一原本文件系统吧!...如是否可执行等参数已被改变 5 :(MD5 sum differs) MD5 这一种指纹码内容已经不同 D :(Device major/minor number mis-match) 装置主/次代码已经改变

2.6K30

工具|学习RPM打包

*NIX系统中建议为了防止系统函数库其他文件损坏,不要使用root身份去制作rpm软件包。...我们可以不同段落写执行shell命令来完成编译,安装等功能,本文重点讲核心部分。 文件头 定义了软件相关名字,版本,介绍,软件包所采用版权规则,源代码路径。...%prerpm安装前执行脚本 %postrpm安装后执行脚本 %preun rpm卸载前执行脚本 %postunrpm卸载后执行脚本 四 打包 spec文件编写完成,我们就可以使用 rpmbuild...包分为两种一种是标准 RPM包,直接生成二进制文件。另外一种是SRPM 包,带有源代码。...如果只想创建 RPM, 可以执行: rpmbuild -bb vmtouch.spec 如果只想创建 SRPM(不需要执行 %prep %build 其他阶段),请执行rpmbuild -bs

1.7K00

rpm包相关那些事

option 可以用该命令列出来; rpmdb --initdb rpmdb --rebuilddb #重建rpmDB数据,rpmDB数据中记录了软件包相关信息; 有时候rpm 查询不能执行...理论上,有了spec 文件,我们就可以用rpmbuild命令直接构建rpm包,但是大多数情况,可能出现依赖问题;此时用: yum-builddep -y *.spec 命令来完成依赖安装; D....上述命令执行之后,原来SOURCE,SPECS 这两个子目录同级,生成了另外4个子目录,分别是:BUILD BUILDROOT RPMS SRPMS, 其中分别是: BUILD ----...--生成rpm包 SRPMS ---这个是生成.src.rpm包 一切顺利情况,上面的5个步骤就可以实现基于*.spec 来构建rpm包了,但是一般都不会太顺利,spec中指定了大量变量和关键字...,不同系统中这些macro可能都不同,下面是一些小技巧: rpm -E "%{_bindir}" 来查看 %{_bindir} 具体值,所以spec 文件中不清楚变量,可以通过此种方式进行查询

72011

编译Ceph二进制文件过大问题

前言 ceph研发群里看到一个cepher提出一个问题,编译ceph二进制文件过大,因为我一直用打包好rpm包,没有关注这个问题,重新编译了一遍发现确实有这个问题 本篇就是记录如何解决这个问题...%{nil} 搜寻资料后确定就是这个问题,这个变量添加了以后,在打包时候就不会进行debug相关包剥离,然后打出包就是巨大,可以这样检查自己rpmbuild变量信息 [root.../BUILD/ceph-10.2.5 这个就是rpmbuild过程中,进行抽离debug信息操作,也就是缩小二进制过程,这个并不能直接执行命令,需要用rpmbuild -bb ceph.spec 打包时候内部自动进行调用...ceph-10.2.6]# ll src/ceph-osd.debug -hl-rwxr-xr-x 1 root root 235M Mar 23 18:08 src/ceph-osd.debug 另外一种方法...ll src/ceph-osd -hl-rwxr-xr-x 1 root root 18M Mar 23 18:11 src/ceph-osd objcopy --strip-debug main 另外一种方法

95410

CentOS7制作openssl1.1.1i RPM包并升级

CentOS7制作openssl1.1.1i RPM包并升级 OpenSSL最新漏洞 OpenSSL官方发布了拒绝服务漏洞风险通告,漏洞编号为CVE-2020-1971 漏洞详情 OpenSSL是一个开放源代码软件库包...这个包广泛被应用在互联网网页服务器上。 OpenSSL处理EDIPartyName(X.509 GeneralName类型标识)时候,存在一处空指针解引用,并引起程序崩溃导致拒绝服务。...(图片可放大查看) openssl版本自查 针对该漏洞,CentOS7当前机器上进行自查 [root@centos ~]# cat /etc/redhat-release CentOS Linux...(图片可放大查看) 制作OpenSSL1.1.1i rpm包 GitHub上找到制作openssl 1.1.1i版本rpm包脚本 本地修改后,进行打包修改后脚本如下install-openssl...(图片可放大查看) 以上就是CentOS7制作openssl1.1.1i RPM包并升级步骤 尝试过git clone https://src.fedoraproject.org/rpms/openssl.git

5.3K11

Nginx 1.安装,并制作成RPM包

,这个也是个人习惯,你也可以写成shell脚本,这样还能适合其它nginx版本和操作系统版本.制作成rpm之后,受限与nginx版本和操作系统版本(其实也就是一些库) 4.1.安装制作rpm包软件...rpm-build yum install -y rpm-build 4.2执行rpmbuild命令生成环境 rpmbuild ....SPECS `-- SRPMS 这个我不多讲,后面有空了再说. rpmbuild/SPECS 是放name.spec文件,你可以把这个文件理解为配置文件. rpmbuild/SOURCES/ 是放源码包...rpmbuild/BUILD 是配置编译等目录,有个对应变量 rpmbuild/RPMS 是生成RPM包路径 你可以看看IBM或者红帽官网具体教程,https://www.ibm.com...-1.9.9-1.el7.x86_64.rpm 4.5测试一: yum install -y rpmbuild/RPMS/x86_64/nginx-1.9.9-1.el7.x86_64.rpm #

2.7K10
领券