RPM包制作及安装

it2023-08-21  76

文章目录

RPM包制作及安装一、背景1.1、源码包安装过程1.2、RPM包安装1.3、RPM包优势1.4、Tips 二、准备工作2.1、准备源码包2.2、安装rpmbuild软件包2.3、编写SPEC文件 三、制作3.1、正常制作3.2、正常制作失败补救方案 四、安装RPM包及验证

RPM包制作及安装

一、背景

由于某些系统或者某些需求的约束下我们需要制作某个程序的rpm安装包,当然了制作rpm包需要使用到源码包,不过最好还是不要遇到这种情况。

1.1、源码包安装过程

1、首先下载软件包

2、解压缩

3、进入到解压目录

4、./configure进行编译前准备

5、make编译

6、make clean 清空编译内容

7、make install 编译安装

1.2、RPM包安装

# 使用这个命令进行安装 rpm -ivh libpng12-1.2.50-10.el7.x86_64.rpm --nodeps --force

使用上面的目录就可以了

–nodeps 👉 有些时候我们的包会有别的依赖如果依赖没有安装就会导致我们这个包安装失败。所以可以使用这个参数

–force 👉有的时候我们的操作系统已经安装了这个软件并且版本高于我们要安装的,使用这个参数可以强行安装我们指定的这个

1.3、RPM包优势

1、安装,重新安装,删除,升级和验证包

2、使用已安装的软件包的数据库来查询和验证软件包

3、使用元数据来描述包,安装说明等

4、将原始软件源打包为源包和二进制包

5、将原始软件源打包为源包和二进制包

6、将包添加到Yum存储库

7、对您的包裹进行数字签名

1.4、Tips

RMP 是 LINUX 下的一种软件的可执行程序,你只要安装它就可以了。这种软件安装包通常是一个RPM包(Redhat Linux Packet Manager,就是Redhat的包管理器),后缀是.rpm

deb 是 Unix 系统(其实主要是 Linux )下的安装包,基于 tar 包,因此本身会记录文件的权限(读/写/可执行)以及所有者/用户组。由于 Unix 类系统对权限、所有者、组的严格要求,而 deb 格式安装包又经常会涉及到系统比较底层的操作,所以权限等的设置尤其重要。

二、准备工作

2.1、准备源码包

wget http://cn2.php.net/distributions/php-5.6.13.tar.gz

使用wget命令下载源码包或者去官网下载。

2.2、安装rpmbuild软件包

yum -y install rpm-build

要生成rpm相关目录有两种方式:

1、执行rpmbuild soft.spec;

#ml rpmbuild soft.spec 错误:stat /root/soft.spec 失败:没有那个文件或目录 --报错没关系,只用于生成目录信息

2、手动创建

#使用下面的目录手动目录 mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}

安装成功后执行 tree -L 1 rpmbuild/

rpmbuild/ ├── BUILD ├── BUILDROOT ├── RPMS ├── SOURCES ├── SPECS └── SRPMS

2.3、编写SPEC文件

#执行下面命令 vim soft.spec Name: Version: Release: 1%{?dist} Summary: Group: License: URL: Source0: BuildRequires: Requires: %description %prep %setup -q %build %configure make %{?_smp_mflags} %install %make_install %files %doc %changelog

然后 :wq保存即可。

三、制作

3.1、正常制作

1、编写spec文件

%define defaultbuildroot / AutoProv: no %undefine __find_provides AutoReq: no %undefine __find_requires %define __spec_install_post %{nil} %define debug_package %{nil} %define _prefix /usr/local %undefine __check_files Name: soft Version: 4.1 Release: soft%{?dist} Summary: A persistent key-value database Summary(zh_CN): 应用程序rpm包 BuildArch: x86_64 License: BSD Source: %{name}-%{version}.tar.gz Prefix: %{_prefix} Requires(post): /bin/sh Requires(postun): /bin/sh %description A persistent key-value database for NFS %prep %setup -q %build make -j10 %{?_smp_mflags} %install rm -rf %{buildroot} mkdir -p %{buildroot}/%{_prefix} make PREFIX=%{_prefix}/%{name}-%{version} install -j 10 cp -rf %{_prefix}/%{name}-%{version} %{buildroot}%{_prefix}/ %files /%{_prefix}/%{name}-%{version} %changelog

编写相关属性。

2、放置源码包到

/root/rpmbuild/SOURCES源码包放置目录

soft-4.1.tar.gz

3、rpmbuild -ba soft.spec

[root@localhost SPECS]# rpmbuild -ba zlib.spec 正在执行(%prep):/bin/sh -e /var/tmp/rpm-tmp.hcq4Op + umask 022 + cd /root/rpmbuild/BUILD + cd /root/rpmbuild/BUILD + rm -rf zlib-1.2.9 + /usr/bin/gzip -dc /root/rpmbuild/SOURCES/zlib-1.2.9.tar.gz + /usr/bin/tar -xof - + STATUS=0 + '[' 0 -ne 0 ']' + cd zlib-1.2.9 + /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w . + exit 0 正在执行(%install):/bin/sh -e /var/tmp/rpm-tmp.2K1DAb + umask 022 + cd /root/rpmbuild/BUILD + '[' /root/rpmbuild/BUILDROOT/zlib-1.2.9-soft.nfs.x86_64 '!=' / ']' + rm -rf /root/rpmbuild/BUILDROOT/zlib-1.2.9-soft.nfs.x86_64 ++ dirname /root/rpmbuild/BUILDROOT/zlib-1.2.9-soft.nfs.x86_64 + mkdir -p /root/rpmbuild/BUILDROOT + mkdir /root/rpmbuild/BUILDROOT/zlib-1.2.9-soft.nfs.x86_64 + cd zlib-1.2.9 + rm -rf /root/rpmbuild/BUILDROOT/zlib-1.2.9-soft.nfs.x86_64 + mkdir -p /root/rpmbuild/BUILDROOT/zlib-1.2.9-soft.nfs.x86_64//opt + cp -rf /opt/zlib-1.2.9 /root/rpmbuild/BUILDROOT/zlib-1.2.9-soft.nfs.x86_64/opt/ 处理文件:zlib-1.2.9-soft.nfs.x86_64 Provides: zlib = 1.2.9-soft.nfs zlib(x86-64) = 1.2.9-soft.nfs Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 Requires(post): /bin/sh Requires(postun): /bin/sh 已写至:/root/rpmbuild/SRPMS/zlib-1.2.9-soft.nfs.src.rpm 已写至:/root/rpmbuild/RPMS/x86_64/zlib-1.2.9-soft.nfs.x86_64.rpm 正在执行(%clean):/bin/sh -e /var/tmp/rpm-tmp.3rntgY + umask 022 + cd /root/rpmbuild/BUILD + cd zlib-1.2.9 + /usr/bin/rm -rf /root/rpmbuild/BUILDROOT/zlib-1.2.9-soft.nfs.x86_64 + exit 0

打包成功。可以去/root/rpmbuild/RPMS 去找。

3.2、正常制作失败补救方案

如果我们制作过程中失败了比如:

1、出现空的rpm包【也就是bin、lib下啥都没有】

2、unknown option: --build=x86_64-redhat-linux-gnu

3、cp: cannot stat ‘/opt/zlib-1.2.9’: No such file or directory

如果出现了上面的问题而我们又没有头绪推荐下面的补救方法。

#先解压我们的源码包 tar -zxvf libpng-1.2.57.tar.gz #cd到解压目录下 将稍后编译的文件进行配置 配置在opt/你的软件名-版本 ./configure --prefix=/opt/libpng-1.2.57 #编译安装 make && make install

然后使用这份spec文件执行 rpmbuild -ba soft.spec

%define defaultbuildroot / AutoProv: no %undefine __find_provides AutoReq: no %undefine __find_requires %define __spec_install_post %{nil} %define debug_package %{nil} %define _prefix /opt %undefine __check_files Name: tiff Version: 3.9.7 Release: soft%{?dist} Summary: tmt use Data compression function library Summary(zh_CN): tmt BuildArch: x86_64 License: BSD Source: %{name}-%{version}.tar.gz Prefix: %{_prefix} Requires(post): /bin/sh Requires(postun): /bin/sh %description tmt use Data compression function library %prep %setup -q %install rm -rf %{buildroot} mkdir -p %{buildroot}/%{_prefix} cp -rf %{_prefix}/%{name}-%{version} %{buildroot}%{_prefix}/ %files /%{_prefix}/%{name}-%{version} %changelog

就可以打包成功

四、安装RPM包及验证

1、安装

# 使用这个命令进行安装 rpm -ivh libpng12-1.2.50-10.el7.x86_64.rpm --nodeps --force

2、验证如果是nginx 我们可以使用nginx -v

如果是GraphicsMagick 我们使用gm

也可以:

//查看是否安装某个程序 rpm -qa | grep jpeg

3、如果安装了但是命令不好用比如

-bash: gm: command not found

4、解决

#打开环境变量文件 vi /etc/profile #最后一行追加 export PATH="/opt/GraphicsMagick-1.3.31/bin/:$PATH" #使生效 source /etc/profile

5、rpm包的卸载

//卸载安装的某个程序 rpm -e jpeg-6b2-thunisoft.nfs.x86_64

6、不知道软件安装在哪里

whereis gm gm: /opt/GraphicsMagick-1.3.31/bin/gm 下载GraphicMagic 依赖速度快的地址

[√ ] http://www.ijg.org/files/

[√ ] https://sourceforge.net/projects/

[ ×] http://www.imagemagick.org/download/delegates/

[ ×] ftp://ftp.graphicsmagick.org/pub/GraphicsMagick/delegates

最新回复(0)