`
Hera
  • 浏览: 8663 次
  • 性别: Icon_minigender_2
  • 来自: 南京
社区版块
存档分类
最新评论
  • liuxuejin: 看了这么多篇,你能简短的把问题说明白。不错!例子简短容易明白。 ...
    CountDownLatch

制作RPM包

阅读更多

 

      制作RPM包最关键的就是要写SPEC文件。安装一个程序就是写一些配置项,然后把源码或者二进制码放入安装目录下。如果是用GCC的程序,RPM确实很方便,./config, make ,make install, clean全部都在这个spec文件里配置。编译,安装一次完成。可以保留其源码,也可以不保留。关于spec文件的书写网络资料铺天盖地,就不详细介绍了。推荐一篇不错的

http://hlee.iteye.com/blog/343499

      我的需求目前仅仅是把编译好的java class 文件从一个地方拷贝到指定的地方,这就代表安装了。正在研究以后是否可以把ant也集成进来,原则上是可以的。下面介绍下我做包的过程吧。

 

1 下载rpm-build包

    

      这个包是用来制作包的,它本身就是个rpm包,linux下很多软件都是rpm包的形式来安装的。如果用rpm -ivh ***.rpm安装,发现装不上,因为它要依赖很多其他的包。所以需要还是用yum安装吧。可以自动去找那些dependency来安装。

 

2 写spec文件

     spec文件里有软件的版本,build,厂商拉。。。一堆属性信息。把头填好了,就写SPEC脚本了,就是一堆%pre, %build等等。以%开头的地方。我的spec如下

Summary:example
Name:new
Version:0.1
Release:4
Group:Application/User
License:Share
Packager:dj
BuildRoot:%{_tmppath}/%{name}-%{version}-%{release}-root
Prefix:%{_prefix}
%description
#rpmtest example
%define userpath /usr/local/test/
%changlog
*Oct 25 2010
-build for the first time.
%prep
cp -r /usr/src/redhat/test/ /usr/src/redhat/SOURCES/
%build
%install
rm -rf $RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT%userpath
cp -r /usr/src/redhat/SOURCES/. $RPM_BUILD_ROOT%userpath
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root)
%{userpath}

 

   

解释几个容易迷惑的地方

1) BuildRoot

 

这是个临时的目录,制作安装包的时候用来测试的,定义好以后,后面的RPM_BUILD_ROOT 就指这个目录。执行install的时候了(当然由你自己把安装的动作放到这里的),会把文件安装到这个目录下面。所以在clean的时候了,又把下面的东西给删除了。如果没有它,那制作安装包的过程会把文件安装的真实环境里。

 

2) %files
这个文件列表起一个check的作用,表示我要装这些文件,看看rpm包你到底有没有安装。所以有时候会出现 installed (but unpackaged) file(s) found 的错误。表示你的files列表不对。

 

3) 执行安装的时候文件安装到哪里去了?

安装以后可以通过命令 rpm -ql  name 来查询这个包安装的路径。真是的路径就是RPM_BUILD_ROOT后面的%userpath

 

3 执行rpmbuild建包

做好包以后使用命令

rpmbuild -bb new.spec

根据spec脚本,执行建包过程。这个命令是构建二进制包,如果还需要保留源码那就是要用选项 -ba了。建好的rpm包放在这个目录下 Wrote: /usr/src/redhat/RPMS/x86_64/new-0.1-4.x86_64.rpm。如果有源码包的话在目录/usr/src/redhat/SRPMS下面。SRPM包是什么了?有时候你的包在你的环境下build出来的,换到其他地方可能一些环境变了,这时候需要重新在那个环境下rebuild。所以就徐哟啊这个SRPM了。

 

4 安装

rpm -ivh /usr/src/redhat/RPMS

这个时候包就会安装在路径userpath /usr/local/test/ 里边。

注意了不是路径RPM_BUILD_ROOT,那个只是制作安装包时用来测试的。如果想指定个路径,那就要使用{_Prefix}这个脚本了。SPEC里边加了这样,就可以使用命令

rpm -ivh --prefix path /usr/src/redhat/RPMS

安装到path路径下面。

 

5 查询

rpm有一列的查询命令

rpm -ql  查询安装路径信息

rpm -qi  软件信息,就是自己写的那一堆头

rpm -qf  这个是反查询的,根据路径,需要查询它是数据哪个包的

 

有个地方需要注意的是,查询以及卸载最好使用 rpm -ql name-version-build

如果用全名的话会查不到,或者卸不掉

如果只用name的话可能会查出N个版本的信息揉在一起

 

分享到:
评论

相关推荐

    用openssh9.8源码包,制作rpm包

    要使用OpenSSH 9.8的源码包制作RPM包,你需要遵循一系列步骤,包括安装必要的工具、准备源码、编写RPM规范文件(spec file),然后构建RPM包。以下是一个基本的指南: 1. 安装必要的工具 首先,确保你的系统上安装...

    gradle制作rpm包

    使用 Gradle 制作 RPM 包需要了解 RPM 包的制作过程和 Gradle 的插件机制,通过 gradle-ospackage-plugin 插件可以轻松地生成 RPM 包,同时也需要了解一些基本的 RPM 命令来管理和控制 RPM 包。

    hello world rpm包制作的例子

    制作RPM包通常需要用到`rpmbuild`工具。它会根据`spec`文件来构建RPM。`spec`文件是RPM包的核心,定义了软件的元数据、依赖关系、安装步骤等。 3. **`spec`文件详解** - `%name`: 软件的名称,如`hellow`. - `%...

    RPM软件包制作

    首先,要制作RPM包,你需要在你的Linux系统上安装`rpmbuild`工具。对于Fedora、CentOS或Redhat系统,可以使用`yum install rpmbuild -y`命令;而对于Ubuntu系统,应使用`apt-get install rpmbuild`。 接下来,我们...

    openssh7.8p1RPM包

    《OpenSSH 7.8p1 RPM包详解与应用》 OpenSSH,全称为Open Source Secure Shell,是一款广泛使用的安全网络服务,它提供了在不安全的网络上进行安全远程登录和其他网络服务的功能。OpenSSH 7.8p1是其在2018年发布的...

    适用于CentOS7.*和redhat el7系列的openssh9.7P1,x86架构rpm包

    本人2024年5月26日制作的openssh9.7P1的rpm包,适用于CentOS7.*系列和redhat el7系列,el7 包含以下文件: openssh-9.7p1-1.el7.x86_64.rpm openssh-clients-9.7p1-1.el7.x86_64.rpm openssh-server-9.7p1-1.el7.x86...

    Nginx RPM 包定制制作

    yum localinstal nginx-1.6.3-1.x86_64.rpm 定制包安装过程 1: FPM 打包工具安装 修改yum源: 备份 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 安装阿里云yum源 wget ...

    利用rpmbuild制作rpm包的总结1

    6. **检查生成的RPM包**:构建完成后,可以在`RPMS/x86_64`目录下找到生成的RPM包,并使用`rpm`命令查询其信息: ```bash cd ${HOME}/rpmbuild/RPMS/x86_64 rpm -qpi hellorpm-0.0.1-1.x86_64.rpm ``` 7. **验证...

    httpd2.4.37版本的rpm包

    制作RPM包的过程包括以下步骤: 1. **获取源码**:从Apache官方网站下载HTTP服务器的2.4.37源码包。 2. **构建环境准备**:确保系统中安装了必要的编译工具和依赖库,如GCC编译器、Make、autoconf等。 3. **解压...

    RPM包的制作及其他操作

    制作RPM包的过程主要包括以下几个步骤: 1. **准备打包环境**:首先,你需要在Linux系统中建立一个用于构建RPM包的工作目录结构。通常,这些目录包括`SOURCES`(存放源代码和补丁)、`SPECS`(存放SPEC文件)、`...

    Linux rpm包制作.docx

    制作RPM包可以让你自定义软件的编译选项,添加特定的补丁,以及方便地在系统间分发和管理软件。 首先,你需要进行环境准备。确保你的系统已经安装了构建RPM包所需的工具,包括`rpm`、`rpm-build`和`rpmdevtools`。...

    CentOS 7环境下制作的openssh-8.4p1.rpm包

    在制作RPM包的过程中,通常包括以下步骤: 1. 获取源代码:你需要从OpenSSH的官方网站下载最新版本的源代码,这里是8.4p1。 2. 编译环境准备:确保系统中安装了必要的编译工具,如GCC编译器、Make等。对于CentOS 7...

    linux下制作安装rpm包的方法.docx

    **一、制作RPM包** 制作RPM包通常涉及以下几个步骤: 1. **下载源代码**:首先,你需要获取软件的源代码。在这个例子中,我们以`rp-pppoe-3.10.tar.gz`为例。你可以通过wget或者curl等工具从互联网上下载,或者...

    openssh9.0和openssl1.1.1k的rpm升级包

    3. **下载RPM包**:从可信赖的源获取OpenSSH 9.0和OpenSSL 1.1.1k的RPM升级包。提供的文件"openssh9.0-openssl1.1.1k-rpm"可能是这些包的集合。 4. **安装OpenSSL**:使用`rpm -Uvh openssl-1.1.1k.rpm`命令安装或...

    zlib1.2.11RPM包,基于CentOS7制作

    【标题】中的“zlib1.2.11RPM包,基于CentOS7制作”指的是一款名为zlib的库软件,版本为1.2.11,它被封装成RPM(Red Hat Package Manager)格式的安装包,适用于CentOS 7操作系统。RPM是一种在Linux系统中广泛使用的...

    集成jdk+mysql+tomcat+web项目打包成rpm

    制作RPM包的过程涉及以下步骤: 1. 创建.spec文件:这是RPM打包的核心,它定义了打包的规则、文件路径、依赖关系等。 2. 编译源码或准备二进制文件:根据需求,可能需要编译JDK、MySQL和Tomcat,或者直接使用预编译...

    rpm安装包的制作1

    在制作RPM包时,配置文件主要是指spec文件。spec文件包含了构建RPM包所需的所有信息,如包名、版本、发布版、摘要、供应商、许可证、依赖关系、安装和清理脚本等。 3. **打包过程**: - 使用`rpmbuild`工具的不同...

    如何将Nginx源码包制作成RPM包.doc

    总结来说,将Nginx源码包制作成RPM包的过程主要包括:安装`rpm-build`工具,设置`rpmbuild`目录结构,准备源码和spec文件,创建并编辑spec文件,安装依赖,然后使用`rpmbuild`命令生成RPM包。这样做可以使得Nginx...

Global site tag (gtag.js) - Google Analytics