rpm与srpm的区别以及制作流程和将制作好的rpm包加载到ISO中

1.首先介绍一下RPM与SRPM的区别

2.RPM制作

 (1)下载软件源码包

    获得源码包 lsyncd-2.0.5.tar.gz

    进入源码包所在的文件夹下

   注意:制作rpm包需要gcc等开发软件的支持 记得要安装哦

  (2)[root@localhost lianxi]# rpmbuild lsyncd-2.0.5.tar.gz   #运行次命令会自动在/root下面创建rpmbuild文件夹

          注意:如果提示没有此命令请搭建好yum.repo 利用yum install rpmbuild 进行安装

          error: File /lianxi/lsyncd-2.0.5.tar.gz does not appear to be a specfile. #此时有错属正常,不担    心   
         [root@localhost rpmbuild]# pwd
          /root/rpmbuild
         [root@localhost rpmbuild]# cp /lianxi/lsyncd-2.0.5.tar.gz SOURCES/
         [root@localhost rpmbuild]# tree
         .
         |-- BUILD
         |-- BUILDROOT
         |-- RPMS
         |-- SOURCES
         |   `-- lsyncd-2.0.5.tar.gz
         |-- SPECS
         `-- SRPMS
    (3)生成spec文件

        [root@localhost rpmbuild]# cd SPECS/
        [root@localhost SPECS]# vim lsyncd-2.0.5.spec  #运行此命令系统会自动生成.spec模板

模板简要说明

Name:#软件名称,如 lsyncd,可使用%{name}引用
Vers
ion: #件版本号

Release: 1%{?dist}#软件发布序列号,标明第几次打包。若软件较以前改变较小,则仅增加发布序列号,而不改变版本号
Summary:
 #概要
Group:
#软件包所属类别/usr/share/doc/rpm-4.8.0/GROUPS,所有软件必须属于其中一种类型。
License:
#许可类型,如:GPL(自由软件) ,commercial(商业) ,Share(共享) ,GNU 等
URL:
#软件下载地址
Source0:
#源码名称
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
#该参数非常重要,因为在生成 rpm 的过程中,执行 make install 时就会把软件安装到上述的路径中,在打包的时候,同样依赖“虚拟目录”为“根目录”进行操作。后面可使用$RPM_BUILD_ROOT 方式引用。
BuildRequires:
#软件依赖关系描述(可以省略)
Requires:
#该 rpm 包所依赖的软件包名称
%description
#对软件的详细描述
%prep
#这个段是预处理段,为下一步的编译安装作准备
%setup -q
#提取源码到 BUILD 目录; -q 指不显示输出(quietly)
%build
#本段是建立段,所执行的命令为生成软件包服务,相当于./configuremake
%configure
make %{?_smp_mflags}
%install #这一节主要用于完成实际安装软件必须执行的命令,这一节一般是由
make install 指令构成,但是有时也会包含 cp、mv、install 等指令
rm -rf $RPM_BUILD_ROOT
make install DESTDIR=$RPM_BUILD_ROOT
%clean #这一节所描述的内容表示在完成包建立的工作之后,自动执行此节下的脚本进行附加的清除工作,这一节的内容通常简单地使用 rm -rf $RPM_BUILD_ROOT 命令,不需要指定此节的其它内容
rm -rf $RPM_BUILD_ROOT
%files #这一节指定构成包的文件的列表,它是使用节前缀%files 表示的。此外,它还包含一系列宏控制安装后的文件属性和配置信息。 ,分为三类--说明文档(doc) ,配置文件 (config) 及执行程序, 也根据提示编写。 %files 下列出应该捆绑到 RPM 中的文件,并能够可选地设置许可权和其它信息
%defattr(-,root,root,-)
#指定包装文件的属性,分别是(mode,owner,group),-表示默认值,对文本文件是 0644,可执行文件是 0755
%doc
%changelog
#本段是修改日志段。你可以将软件的每次修改记录到这里,保存到发布的软件包中
(4)[root@localhost lianxi]# tar xf lsyncd-2.0.5.tar.gz -C /usr/src
[root@localhost lianxi]# cd /usr/src/lsyncd-2.0.5/
[root@localhost lsyncd-2.0.5]# ./configure 

注意:如果报错查看是否有依赖关系,如有,请先安装需要的rpm包;此软件需要 “lua-devel*”包的支持,请到rpmfind.net去下载你所需要的rpm包

[root@localhostlsyncd-2.0.5]# make;make install #行并将下属内容添加到.spec文件中%install下面

注意:将这一段内容中所有的单引号去掉或者换成双引号,因为要允许变量

test -z "/usr/local/bin" || /bin/mkdir -p "/usr/local/bin"
 /usr/bin/install -c "lsyncd" "/usr/local/bin/lsyncd"
test -z "/usr/local/share/doc/lsyncd/" || /bin/mkdir -p "/usr/local/share/doc/lsyncd/"
 /usr/bin/install -c -m 644 "examples/lbash.lua" "/usr/local/share/doc/lsyncd//lbash.lua"
 /usr/bin/install -c -m 644 "examples/lecho.lua" "/usr/local/share/doc/lsyncd//lecho.lua"
 /usr/bin/install -c -m 644 "examples/lgforce.lua" "/usr/local/share/doc/lsyncd//lgforce.lua"
 /usr/bin/install -c -m 644 "examples/limagemagic.lua" "/usr/local/share/doc/lsyncd//limagemagic.lua"
 /usr/bin/install -c -m 644 "examples/lpostcmd.lua" "/usr/local/share/doc/lsyncd//lpostcmd.lua"
 /usr/bin/install -c -m 644 "examples/lrsync.lua" "/usr/local/share/doc/lsyncd//lrsync.lua"
 /usr/bin/install-c -m 644 "examples/lrsyncssh.lua""/usr/local/share/doc/lsyncd//lrsyncssh.lua"
test -z "/usr/local/share/man/man1" || /bin/mkdir -p "/usr/local/share/man/man1"
 /usr/bin/install -c -m 644 "./doc/lsyncd.1" "/usr/local/share/man/man1/lsyncd.1"
test -z "" || /bin/mkdir -p ""

(5)[root@localhostSPECS]# rpmbuild -bb lsyncd-2.0.5.spec#再次运行获得以下文件并将其添加到.spec文件中%file下面

/usr/bin/lsyncd
  /usr/share/doc/lsyncd/lbash.lua
  /usr/share/doc/lsyncd/lecho.lua
  /usr/share/doc/lsyncd/lgforce.lua
  /usr/share/doc/lsyncd/limagemagic.lua
  /usr/share/doc/lsyncd/lpostcmd.lua
  /usr/share/doc/lsyncd/lrsync.lua
  /usr/share/doc/lsyncd/lrsyncssh.lua
  /usr/share/man/man1/lsyncd.1.gz

(6).spec文件编译完成如下

Name:lsyncd
Version:2.0.5
Release:1%{?dist}
Summary:lsync is a soft of data sync
Group:System Environment/Base
License:GNU
URL:file:///lianxi
Source0:lsyncd-2.0.5.tar.gz
BuildRoot     %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
BuildRequires:lua-devel
Requires:lua
%description
lsyncd uses with rsyncd
%prep
%setup -q
%build

%configure
make %{?_smp_mflags}
%install
rm -rf %{buildroot}
make install DESTDIR=%{buildroot}
test -z "/usr/local/bin" || /bin/mkdir -p "/usr/local/bin"
  /usr/bin/install -c "lsyncd" "/usr/local/bin/lsyncd"
test -z "/usr/local/share/doc/lsyncd/" || /bin/mkdir -p "/usr/local/share/doc/lsyncd/"
  /usr/bin/install -c -m 644 "examples/lbash.lua" "/usr/local/share/doc/lsyncd//lbash.lua"
  /usr/bin/install -c -m 644 "examples/lecho.lua" "/usr/local/share/doc/lsyncd//lecho.lua"
  /usr/bin/install -c -m 644 "examples/lgforce.lua" "/usr/local/share/doc/lsyncd//lgforce.lua"
  /usr/bin/install -c -m 644 "examples/limagemagic.lua" "/usr/local/share/doc/lsyncd//limagemagic.lua"
  /usr/bin/install -c -m 644 "examples/lpostcmd.lua" "/usr/local/share/doc/lsyncd//lpostcmd.lua"
  /usr/bin/install -c -m 644 "examples/lrsync.lua" "/usr/local/share/doc/lsyncd//lrsync.lua"
  /usr/bin/install-c -m 644 "examples/lrsyncssh.lua""/usr/local/share/doc/lsyncd//lrsyncssh.lua"
test -z "/usr/local/share/man/man1" || /bin/mkdir -p "/usr/local/share/man/man1"
  /usr/bin/install -c -m 644 "./doc/lsyncd.1" "/usr/local/share/man/man1/lsyncd.1"
test -z "" || /bin/mkdir -p ""
%clean
rm -rf %{buildroot}
%files
/usr/bin/lsyncd
   /usr/share/doc/lsyncd/lbash.lua
   /usr/share/doc/lsyncd/lecho.lua
   /usr/share/doc/lsyncd/lgforce.lua
   /usr/share/doc/lsyncd/limagemagic.lua
   /usr/share/doc/lsyncd/lpostcmd.lua
   /usr/share/doc/lsyncd/lrsync.lua
   /usr/share/doc/lsyncd/lrsyncssh.lua
   /usr/share/man/man1/lsyncd.1.gz
%defattr(-,root,root,-)
%doc
%changelog
%changelog
* Tue May 22 2014 <root@localhost>
--end

现在你大部分工作已经做完了开始你新的旅程吧
[root@SPECS]# rpmbuild -ba lsyncd-2.0.5.spec 
[root@localhosSPECS]#cd ..
[root@localhost rpmbuild]#tree
此处省略。。。。。
[root@localhost rpmbuild]rpm -ivh 。。。

将制作好的rpm包加入到ISO文件中

[root@localhost ~]# df 
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda3       18121032 1772188  15428320  11% /
tmpfs             118092       0    118092   0% /dev/shm
/dev/sda1         495844   31704    438540   7% /boot
/dev/sr0         4363088 4363088         0 100% /mnt
[root@localhost ~]# cp /mnt/* /iso/ -rf
[root@localhost ~]# cp rpmbuild/RPMS/x86_64/cmatrix-1.2a-1.x86_64.rpm /iso/
CentOS_BuildTag                RELEASE-NOTES-en-US.html
EFI/                           repodata/
EULA                           RPM-GPG-KEY-CentOS-6
GPL                            RPM-GPG-KEY-CentOS-Debug-6
images/                        RPM-GPG-KEY-CentOS-Security-6
isolinux/                      RPM-GPG-KEY-CentOS-Testing-6
Packages/                      TRANS.TBL
[root@localhost ~]# cp rpmbuild/RPMS/x86_64/cmatrix-1.2a-1.x86_64.rpm /iso/Packages/
[root@localhost ~]# cd /iso
[root@localhost iso]# yum install createrepo
[root@localhost iso]# createrepo --update /iso/
Spawning worker 0 with 3996 pkgs
(指导老师-----双星科技冯老师)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
制作 OpenSSH 和 OpenSSL RPM 的步骤大致如下: 1. 下载 OpenSSH 和 OpenSSL 的源代码。 2. 安装 RPM工具及其依赖项。例如,在 CentOS 或 Red Hat 系统,可以使用以下命令安装: ``` yum install rpm-build rpmdevtools ``` 3. 创建 RPM环境。在终端运行以下命令: ``` rpmdev-setuptree ``` 4. 将 OpenSSH 和 OpenSSL 源代码放置到 RPM环境的 `SOURCES` 目录。 5. 创建 RPM 的描述文件 `SPEC`。在此文件,定义了 RPM 的基本信息、依赖关系、安装、卸载、配置等操作。可以使用文本编辑器创建 `SPEC` 文件。 6. 构建 RPM 。在终端运行以下命令: ``` rpmbuild -ba /path/to/your.spec ``` 其 `/path/to/your.spec` 是 `SPEC` 文件的路径。在构建 RPM 的过程,会自动执行编译、打、签名、生成元数据等操作。 7. 查看生成的 RPM 。在 RPM环境的 `RPMS` 目录,会生成两个版本的 RPM :一个是源代码 RPM(SRPM),另一个是二进制 RPM。可以使用以下命令查看生成的 RPM : ``` ls ~/rpmbuild/RPMS/x86_64/ ``` 其 `x86_64` 是系统架构,可以根据实际情况进行调整。 8. 安装 RPM 。在终端运行以下命令: ``` rpm -ivh /path/to/package.rpm ``` 其 `/path/to/package.rpm` 是 RPM 的路径。安装完成后,可以使用以下命令验证安装是否成功: ``` rpm -qa | grep package ``` 其 `package` 是 RPM 的名称。如果成功安装,会输出 RPM 的版本号;否则,什么都不会输出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值