不是版本太低就是文件分布太野路子”,此时我们需要自己订制软件包的需求,我们会把一些源码包按照我们的需求来做成rpm包,其中的Spec文件是制作RPM包的核心。...【常用】 SPECS:存放spec文件,作为制作rpm包的文件,即:nginx.spec……【常用】 SRPMS:src格式的rpm包目录 BuiltRoot:虚拟安装目录...脚本中各个变量 rpm的配置文档还算是比较有调理性的,按照标准的格式整理一些信息,包括:软件基础信息,以及安装、卸载前后执行的脚本,对源码包解压、打补丁、编译,安装路径和文件引用等,其中需要注意的地方为...spec脚本包括很多关键字,主要有: Name: 软件包的名称,在后面的变量中即可使用%{name}的方式引用 Summary: 软件包的内容 Version: 软件的实际版本号...}指/usr,而对于其他的文件,例如/etc下的配置文件,则需要用%{_sysconfdir}标识 Requires: 该rpm包所依赖的软件包名称,可以用>=或<=表示大于或小于某一特定版本
摘要:rpm包是预先在Linux主机上编译好并打包的文件,安装起来非常快捷。不需要再进行繁琐的编译等操作,拿来就能用,区别于yum包管理,rpm可以在不需要网络环境的情况下使用。...# 参照这个文件来写自己软件包的spec文件 rpmbuild内置变量 rpmbuild --showrc可查看内置的变量 常用的几个变量: $RPM_BUILD_DIR /$HOME/rpmbuild...在spec文件中经常出现一些宏,比如%setup、%patch,这两个宏的选项较多,使用时要特别注意,参见这里 安装卸载rpm包前后的动作 可以通过%pre, %post, %preun, %postun...: 查询程序是否安装 rpm -qa: 查询已经安装的所有软件(Query All) rpm -qi [软件名称]: 列出该软件的详细信息 rpm -qf [指定文件名]: 查找指定文件属于哪个RPM软件包.../.spec python setup.py bdist_rpm --spec-file=dist/.spec 无污染地打rpm包 方法一、使用mock来进程打包,详细的过程可以见
“宏代码”这一列就可以在SPEC文件中用来代指所对应的目录,类似于编程语言中的宏或全局变量。当然~/rpmbuild这个文件夹也是有宏代码的,叫做%_topdir。...3.2 编辑SPEC文件 然后后续的步骤就交给SPEC文件来配置了,编辑SPEC文件(Emacs 和 vi 的最新版本有 .spec 文件编辑模式,它会在创建新文件时打开一个类似的模板。..._smp_mflags} 若需要覆盖 makefile 变量,请将变量作为参数传递给 make: make %{?...) 时执行 例如,每个二进制 RPM 包都会在动态链接器的默认路径中存储共享库文件,并在 %post 和 %postun 中调用 ldconfig 来更新库缓存。...也可以使用 rpmlint 测试已构建的 RPM 包,检查 SPEC/RPM/SRPM 是否存在错误。你需要在发布软件包之前,解决这些警告。此页面 提供一些常见问题的解释。
使用rpm命令验证./tmp里面的rpm(或deb)包是否已经存在,插入操作下如果包已经安装会报错,更新操作则直接覆盖安装。...gppkg_spec.yml文件格式 Pkgname: 当前插件的名字 Architecture: 通常是操作系统uname -m的结果,x86_64或aarch64,见附录实现。...Hook的意义在于可以通过shell脚本在插件安装前后去控制相关行为,例如 想在安装之后打印一些提示信息,做一些环境变量的source动作,通过hook可以方便实现。...文件,里面会带有#arch等信息,这些信息可以动态的被自己的脚本所替换,替换成真正的内容,例如:运行在x86机器上就是x86_64,这样yml便是动态的,而不是固定写死的内容。...通过#xx方式+脚本替换生成最终的gppkg_spec.yml文件。
参数可以多次使用,从而确保每一个OLDPATH都可以被替代;更改了软件包的安装路径之后,可能需要手动配置相关的环境变量,否则可能会导致运行异常,所以这个不常用,但是还是有用的; 2)....理论上,有了spec 文件,我们就可以用rpmbuild命令直接构建rpm包,但是在大多数情况下,可能出现依赖问题;此时用: yum-builddep -y *.spec 命令来完成依赖安装; D....依赖问题解决以后,就可以使用:rpmbuild -ba *.spec 命令来生成rpm包了; E....包 SRPMS ---这个是生成的.src.rpm包 在一切顺利的情况下,上面的5个步骤就可以实现基于*.spec 来构建rpm包了,但是一般都不会太顺利,在spec中指定了大量的宏变量和关键字,在不同的系统中这些...macro可能都不同,下面是一些小技巧: rpm -E "%{_bindir}" 来查看 %{_bindir} 的具体值,所以在spec 文件中不清楚的宏变量,可以通过此种方式进行查询 对于rpm包中的
,具体由%_topdir宏变量进行定义。...官方不建议在/usr/lib/rpm/macros目录中更改这个工作路径。如果需要则可以在用户家目录下建立一个.rpmmacros隐藏文件,在里面重新定义%_topdir,指向一个新的目录名。...最后切换SPEC目录下执行命令制作rpm包: rpmbuild -bb rpmbuild/SPEC/软件名-版本.spec SPEC文件是最核心的,在它里面定义了头部信息和一些“阶段”(%prep、%build...当用户最终用rpm -ivh name-version.rpm安装软件包时,这些文件会安装到用户系统中相应的目录里 制作rpm包 这个阶段是自动完成的,所以在SPEC文件里面是看不到的,这个阶段会将%_...安装测试 到此RPM包制作完毕,你可以根据你的需求制作RPM包吧。
c /etc/httpd/conf/httpd.conf #验证内容中的8个信息的具体内容如下: S 文件大小是否该表 M 文件类型或文件的权限(rwx)是否被改变 5 文件MD5校验和是否改变 D...设备的主从代码是否改变 L 文件路径是否改变 U 文件的属主是否改变 G 文件的属组是否改变 T 文件的修改时间是否改变 #文件类型: c 配置文件 d 普通文档 g 鬼文件,很少见,就是该文件不应该被这个...docker 容器分发 1. spec文件规范 制作RPM软件包其中的关键在于编写SPEC软件包描述文件,该文件中包含了软件包的诸多信息; 如软件包的名字、版本、类别、说明摘要、创建时要执行什么指令、...SOURCE:用来存放打包是要用到的源文件和补丁文件等存放位置 - 脚本存放目录 SPEC:存放spec文件作为制作rpm包的领岗文件以 rpm名.spec RPMS:用来制作完成后的rpm包存放目录...软件包制作完成后可用rpm命令查询,如果不满意的话可以再次修改软件包描述文件; 典型spec文件分析:kaffeine.spec(kaffeine是linux平台下的媒体播放器) #Kaffeine.spec
文件 找spec模板文件 一般找一个类似的rpm源码包,将其安装,然后参照它写自己软件包的spec文件。...# 参照这个文件来写自己软件包的spec文件 写自己软件包的spec文件 spec文件中各个选项的意义参照这里 cd ~/rpmbuild cat ....-bb --target x86_64 SPECS/python27-tstack.spec &> rpmbuild.log # 这时可以打开另一个终端观察下rpmbuild.log 一切顺序的话,最终会在...技巧总结 不打debug的rpm包 在spec文件中加入%debug_package %{nil}即可 禁止自动分析源码添加不应该加入的依赖 在spec文件中加入Autoreq: 0即可 sepc文件中一些宏的用法...在spec文件中经常出现一些宏,比如%setup、%patch,这两个宏的选项较多,使用时要特别注意,参见这里 安装卸载rpm包前后的动作 可以通过%pre, %post, %preun, %postun
创建 SPEC 文件接下来创建 RPM 的 SPEC 文件,spec 文件是 RPM 软件包的规范文件,用于控制 RPM 的制作过程。...它包含了 RPM 软件包的基本信息、依赖关系、安装、卸载、文件列表等信息。在使用 rpm-build 构建 RPM 包时, 需要编写 spec 文件,以告诉 rpm-build 如何构建RPM包。....spec 文件通常由以下几个部分组成:头部:包含了RPM包的基本信息,如名称、版本、发布号、许可证等。依赖关系:指定了RPM包所依赖的其他软件包和库文件。...编写 spec 文件需要遵循一定的规范和格式,可以使用 rpmdev-newspec 命令生成一个基本的 spec 文件,然后根据需要进行修改。我们这里手动创建一个 spec 文件。...hello rpm.生成 RPM 包完成上述文件配置后,就可以执行在第一步中安装的命令 rpmbuild,即可完成 RPM 包的构建。
其他人看到感觉不错啊就全给抄过来,所以rpm包可以适应各种linux系统,成为业界公认的行业标准,就是Debian不太服气,自己搞了一个deb包,其实效果是一样一样的。...只要加个参数下载到本地再去安装rpm包就可以啦,如 sudo yum install -y --downloadonly --downloaddir= gcc make rpm-build redhat-rpm-config...要想写一个自己的spce文件,不如抄一个下来改改,一通操作过后,我制作了一个精简的spec文件 sudo vim rpmbuild/SPECS/coding3min.spec vim在编辑的时候会自动生成...spec文件的模板,coding3min.spec的内容如下(请上下滚动查看): # 定义了一个变量install_dir %define install_dir /data/coding3min #...# 清理一些暂存文件 %clean rm -rf $RPM_BUILD_ROOT rm -rf $RPM_BUILD_DIR # 定义哪些文件或者目录会放入rpm中 %files %defattr(-,
关于Spec文件的编写,可参照以下这几篇文章: spec文件详解:http://blog.csdn.net/hncomputer/article/details/7162339 spec文件具体编写:http...文件后,再使用rmpbuild -ba libpng.spec执行第2步中编写的spec文件打包,假如在spec文件中的%package -n 描述有libpng-tools、libpng-runtime...、libpng-devel三个包,那么执行完spec文件中的内容后可以在RPMS目录下看到对应的libpng-tools-1.6.2-1.i386.rpm、libpng-runtime-1.6.2-1....可以从https://review.tizen.org/git/网站上找到一些常用软件的spec文件,如libpng对应的spec文件网址为:https://review.tizen.org/git/?...5、最后可以使用rpm -ivh libpng-1.6.2-1.i386.rpm在自己的X86机器上安装对应的rpm包。
因此我们可以基于各自的 规范 使用rpm 将各种软件的二进制文件打包来满足各自的定制化需求。本文通过 安装vmtouch软件包,来介绍RPM的相关知识。...二 RPM 基础介绍 首先一图胜千言 ,我们通过下图来了解RPM的文件系统以及核心 spec 文件对其他文件的相关依赖关系。 ?...最终生成的可安装rpm包的所在目录 SOURCES 所有源代码和补丁文件的存放目录 SPECS 存放SPEC文件的目录(重要) SRPMS 软件最终的rpm源码格式存放路径...(注意解压缩之后的文件一定要是 vmtouch-1.3.1,否则会编译报错 ) 三 spec 文件语法 spec file是rpm打包最核心组件,其内容包含软件包的相关信息,如软件包的名字、版本、类别、...%prerpm安装前执行的脚本 %postrpm安装后执行的脚本 %preun rpm卸载前执行的脚本 %postunrpm卸载后执行的脚本 四 打包 spec文件编写完成,我们就可以使用 rpmbuild
RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,是一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。.../usr/src/redhat/SPECS — 存放用于管理rpm制作进程的spec文件。 /usr/src/redhat/BUILD — 解压后的文件存放在这里。...cd /usr/src/redhat/SOURCES wget http://nginx.org/download/nginx-1.11.1.tar.gz 创建Spec文件 cd /usr/src/redhat...测试rpm包 rpm -ivh /usr/src/redhat/RPMS/i386/nginx-1.11.1-1.el7.ngx.x86_64.rpm spec文件解释 从以上的简单例子可以看出,制作rpm...包最重要的还是spec文件,下面解释一下例子所用到的指令。
下载 greatsql.spec 文件,放在上面创建的 /root/rpmbuild/ 目录下。.../SOURCES/ 修改 greatsql.spec 文件中的部分内容: $ vim /root/rpmbuild/greatsql.spec ......在这过程中,我们还可以通过观察 /root/rpmbuild/rpmbuild.log 文件了解编译的进度情况,例如下面这样,可见进度大约到了91%,胜利在望 ~ ... [ 91%] Building...文件包: $ du -sch * 45G BUILD #编译工作目录,产生大量编译文件,所以特别大,可以清空 0 BUILDROOT 976M RPMS...3、安装GreatSQL 将编译产生的RPM包文件拷贝到另外一个全新的docker CentOS 8环境下,测试安装是否顺利。
通过src.rpm构建新包 RPM包的构建需要用到一个以.spec结尾的文件(即软件包描述文件), 这个文件中包含了软件包的诸多信息,如软件包的名字、版本、类别、依赖、说明摘要、创建时要执行什么指令、安装时要执行什么操作...spec文件可以自己写(但通常不要这么干,除非是自己的项目),但通常是直接使用别人写好的spec文件。...xxx.src.rpm: 以src.rpm结尾的包称为源码包,源码包中包含了很多的文件(主要包括源码,甚至包括service的配置文件等),以及前面提到的spec文件。...# spec文件 2 directories, 30 files 源码包安装完成以后,接下来就可以对 "源码" 或者 "*.spec" 等文件执行修改操作。...比如: 可以替换SOURCES/nova-16.1.7.tar.gz为自己扩展后的nova代码; 可以修改SOURCES/nova.logrotate文件来修改日志压缩策略; 可以修改openstack-nova.spec
,下载 greatsql.spec 文件,放在上面创建的 /root/rpmbuild/ 目录下。.../root/rpmbuild/SOURCES/ 修改 greatsql.spec 文件中的部分内容: [root@c8 rpm]# vim /root/rpmbuild/greatsql.spec...在这过程中,我们还可以通过观察 /root/rpmbuild/rpmbuild.log 文件了解编译的进度情况,例如下面这样,可见进度大约到了91%,胜利在望 ~ ... [ 91%] Building...文件包: [root@c8 rpmbuild]# du -sch * 45G BUILD #编译工作目录,产生大量编译文件,所以特别大,可以清空 0 BUILDROOT...3、安装GreatSQL 将编译产生的RPM包文件拷贝到另外一个全新的docker CentOS 8环境下,测试安装是否顺利。
/BUILDROOT/目录下,删除隐藏文件.vscode #进入/root/rpmbuild/SPECS/,编辑打包脚本test.spec cd /root/rpmbuild/SPECS/ vi...包 rpmbuild -ba 文件名 #安装 xx.rpm 包; rpm -i xx.rpm #安装 x.rpm 包并在安装过程中显示正在安装的文件信息; rpm -iv xx.rpm #安装 xx.rpm...包并在安装过程中显示正在安装的文件信息及安装进度 rpm -ivh xx.rpm #卸载一个包 rpm -e #查询一个包是否被安装 rpm -q #得到被安装的包的信息 rpm -qi...#列出该包中有哪些文件 rpm -ql #列出服务器上的一个文件属于哪一个RPM包 rpm -qf #可综合好几个参数一起用 rpm -qil #列出所有被安装的rpm package...rpm -qa #列出一个未被安装进系统的RPM包文件中包含有哪些文件?
buildroot 在打包时用到的spec文件中包含一些tag,这些对大小写不敏感的tag用冒号来定义。BuildRoot就是其中的一个tag。...RPM宏设定的BuildRoot默认值是~/rpmbuild/BUILDROOT, 可以在spec文件中设置该tag,或者在rpmbuild命令执行时使用- -buildroot选项来指定。...mock不仅可以使打包过程变得整洁,更能够测试BuildRequires是否完整。除了打包之外,mock也可以用来制作沙盒来测试软件包。...配置文件可以通过-r选项来指定,如果没有指定,则使用默认的配置文件/etc/mock/default.cfg。...mock libvirt-1.2.2-1.fc20.src.rpm 将会在BUILDROOT目录下挂载一些必要的文件必要的文件系统,并安装打包过程需要用到的软件包,最终生成RPM包。
Ruby是一门开源的动态编程语言,注重简洁和效率。其句法优雅,读起来自然,写起来舒适。 Ruby语言源文件的后缀是.rb。 rake和Rakefile rake是Ruby语言的类make程序。...可以在其中定义任务和源码依赖。 rake = r(uby’s m)ake 就像make有Makefile文件一样,rake有对应的Rakefile。 它们都属于构建工具的范畴。...gemspec文件,是gem的描述文件,包含gem相关的信息,如包名、版本、简介、描述、作者、主页等。 类似的,dpkg打包需要spec文件,deb打包需要control文件。...表格展示如下: 语言 包管理系统 包后缀 本地 联网 描述文件名 Ruby gem .gem ✅ ✅ .gemspec Red Hat系 rpm .rpm ✅ ❌ SPECS.../.spec Red Hat系 yum/dnf .rpm ❌ ✅ - Debian系 dpkg .deb ✅ ❌ debian/control Debian系 apt .deb
领取专属 10元无门槛券
手把手带您无忧上云