linux RPM manager
RPM manage:
rpm2cpio package_name | cpio -id #将一个rpm包解压至当前目录
rpm -qi package_name #查看一个已安装的rpm包信息
rpm -qpi package_name #查看一个文件系统上的制定rpm包信息
rpm -Uvh package_name #升级一个rpm包
rpm -e package_name #卸载rpm包 -ivh 显示详细信息 --nodpes 忽略依赖
rpm -i package_name #安装rpm包 -ivh 显示详细信息
rpm -qd package_name #查看rpm包生成的文档路径
rpm -qc package_name #查看rpm包生成的配置文件路径
rpm -q --scripts package_name #查看安装rpm包前运行的脚本
RPM Build:
构建rpm需要创建指定的文件夹:
BUILD BUILDROOT RPMS SOURCES SPECS SRPMS
可以手动创建,也可以在任何目录下直接运行rpmbuild test.spec
error: failed to stat /root/test.spec: 没有那个文件或目录
虽然会报错,但是这时已经自动在当前目录下生成了rpmbuild目录结构了:
rpmbuild
├── BUILD #当我们rpmbuild -ba 构建rpm时会自动在这个目录下进行编译
├── BUILDROOT #会当成临时根,会将编译好的软件包生成在这个目录下
├── RPMS #编译好的rpm包会存放在这个文件夹
├── SOURCES #放源码包,一般为tar.gz格式
├── SPECS #.sepc 文件
└── SRPMS #存放src.rpm包【rpm格式的源码包,可以在不同平台上进行build】
rpmbuild --showrc #显示系统定义的macros
rpmbuild --showrc | grep _topdir #显示系统默认的rpmbuild工作路径
NOTE: 在macros中 ‘__’表示命令别名(不同的os命令路径可能不一样,所以需要使用命令别名),'_'表示环境变量。
SPEC FILE:
macros:
#开头为注释,注释中不能使用%等宏关键字,如要使用#,可以写成##
%define nginx_user nginx #define macros
%{nginx_user} #use macro
spec文件必须字段:
name:
不能包含“-”
version:
不能包含“-”
release:
发行号
group:
所属组,/usr/share/doc/rpm-version/GROUPS 中任意一个
定义能力:
Provides: webserver
#如果定义了能力,别人如果安装软件需要依赖的话可以依赖我们自己定义的能力,如果没有定义默认就是软件包的名字。
所有步骤:
1.准备阶段:
%prep:
1.切换工作目录,解压软件包
2.设置权限,设置环境变量等
#可以用%setup 控制默认prep的动作
2.编译阶段:
%build:
#如果不需要编译可以留空。
3.安装阶段:
%install:
#安装
4.清理阶段:
%clean
#删除build中的文件
%file
#包含哪些文件,如果未完全包含编译生成的所有文件,那么构建rpm包时会报错
%doc file #后面文件类型为文档
%docdir dir_name #目录下所有内容都为文档
%config(noreplace) #内容为配置文件(noreplace)
%defattr #定义文件默认权限
%attr(mode,user,group) #定义文件权限,如果不定义则使用定义的默认权限
eg: %attr(-,root,-)
%defattr(-,root,root,0755)
额外选项:
%pre
#安装前运行的脚本
%post
#安装后运行的脚本
%preun
#卸载前运行的脚本
%postun
#卸载后运行的脚本
子包:将一个程序拆分为多个子包
如:将mysql拆分为主包和开发包:
mysql-server.rpm
mysql-devel.rpm
spec file 实例:
Name: nginx
Version: 1.10.
Release: %{?dist}
Summary: nginx web server Group: Applications/Internet
License: fuck
URL: http://www.feixiangwl.cn
Source0: nginx-1.10..tar.gz
Source1: readme
BuildRoot: %_topdir/BUILDROOT
#BuildRequires:
#Requires: %description
this is my first rpm %package readme #子包(将readme单独作为一个包)
Summary: readme files
Group: Applications/Internet
%description readme
this is my first rpm %prep
%setup -q %build
./configure --prefix=/usr/local/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx --conf-path=/etc/nginx/conf/nginx.conf --error-log-path=/var/log/nginx/error.log --without-http_rewrite_module --without-http_gzip_module
make %install
make install DESTDIR=%{buildroot}
%{__install} -p -D -m %{SOURCE1} %{buildroot}/readme %files
%defattr(-,root,root,)
/usr
/etc
/var %files readme #(定义上面的子包包含哪些文件)
%defattr(-,root,root,)
/readme %changelog
签名:防止程序传播过程中被别人篡改
1.生成密钥对:
gpg --gen-key
NOTE:必须正确输入REAL NAME(真实姓名)选项,后期此项作为KEY_NAME使用。
2.查看系统已有的GPG KEY:
gpg --list-key
3.修改rpm宏使用我们刚才生成的密钥对:
6. 导入公钥(要验证rpm包的机器上导入):
rpm --import RPM-GPG-KEY-ECDATA #RPM-GPG-KEY-ECDATA是公钥名称
7.查看已导入的公钥:
rpm -q gpg-pubkey-*
8.校验rpm包签名:
rpm -K <RPM_NAME>
NOTE:但是此时yum安装还不行,如果想要yum安装,必须在repo中定义:
linux RPM manager的更多相关文章
- linux RPM软件包管理
linux RPM软件包管理 目录 1.软件包的介绍 2.rpm包管理 3.rpm包管理前端工具 1.软件包的介绍 在我们在对软件包管理前,先对软件包有个很好的了解,这样更方便我们来对其进行管理. 软 ...
- Sublime Text - Linux Package Manager Repositories
Linux Package Manager Repositories http://www.sublimetext.com/docs/linux_repositories.html Sublime T ...
- linux rpm -ivh MySQL-server-5.5.31-2.el6.i686.rpm
linux rpm 安装mysql异常: [root@localhost upload]# rpm -ivh MySQL-server-5.5.31-2.el6.i686.rpmerror: Fail ...
- Linux rpm安装问题解决
1.安装时提示:warning: *.rpm: Header V3 RSA/SHA256 Signature, keykey ID c105b9de: NOKEY 解决的方法就是在rpm 语句后面加上 ...
- linux RPM/YUM包管理
linux RPM/YUM包管理 目录 linux RPM/YUM包管理 RPM RPM包管理 查询rpm包 卸载rpm包 安装rpm包 YUM 查看yum服务器是否有需要安装的软件 下载安装指定的y ...
- Linux rpm 命令参数使用详解[介绍和应用]
RPM是RedHat Package Manager(RedHat软件包管理工具)类似Windows里面的“添加/删除程序” rpm 执行安装包 二进制包(Binary)以及源代码包(Source)两 ...
- Linux rpm 命令参数使用详解[介绍和应用](转)
RPM是RedHat Package Manager(RedHat软件包管理工具)类似Windows里面的“添加/删除程序” rpm 执行安装包二进制包(Binary)以及源代码包(Source)两种 ...
- Linux rpm 命令参数使用详解[介绍和应用](转)
RPM是RedHat Package Manager(RedHat软件包管理工具)类似Windows里面的“添加/删除程序” rpm 执行安装包二进制包(Binary)以及源代码包(Source)两种 ...
- Linux RPM、YUM、APT包管理工具
⒈rpm包的管理 1)介绍 rpm是一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中,它生成具有.RPM扩展名的文件,RPM是RedHat Package Manager(RedH ...
随机推荐
- 【HANA系列】SAP HANA XS使用JavaScript数据交互详解
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA XS使用Jav ...
- jQuery选择元素的方法大全
jQuery选择器其实是一个有些地方比较费解的,如果没有经过多次实验的话,很难得出它的每个操作符到底是干什么的,很容易出错,经过 我的多次测试,终于对一些比较难理解或容易出错的选择操作进行总结,既方便 ...
- Linux-lvm逻辑卷管理和提示丢失pv物理卷
问题描述: 有次在使用lvm扩容的时候,整错了,导致显示如下情况 提示缺少一个pv导致无法继续,pvdisplay的时候查看到unknown 使用pvs查看找到pvname的unknown对应群组ce ...
- 【PAT】B1079 延迟的回文数(20 分)
用了柳婼大佬博客的思路,但实现有不同 没有用string所以要考虑字符串末尾的'\0' 用的stl中的reverse逆置字符串 #include<stdio.h> #include< ...
- TG可能会用到的动态规划-简易自学
最新更新 完整校订版见此 戳我阅读 以下为未核对不完整版本. 因版权原因,完整精校版不向所有公众开放. 请从您找到本博客的地址查找附带密码(比如简书分享了本网址,请您从简书分享页底部查询密码),感谢您 ...
- Java计模模式之六 ----- 组合模式和过滤器模式
前言 在上一篇中我们学习了结构型模式的外观模式和装饰器模式.本篇则来学习下组合模式和过滤器模式. 组合模式 简介 组合模式是用于把一组相似的对象当作一个单一的对象.组合模式依据树形结构来组合对象,用来 ...
- 用navicat手动删除了数据表的记录,再次写入的时候,怎么让id重新从1开始?
问:用navicat手动删除了mariadb数据表的记录,再次写入的时候,自增id会继续,不会从1开始. 比如,原来有10条记录,全部清空,再次写入数据,id会从11开始,怎么让他重新从1开始呢? 重 ...
- JS进阶之---作用域,作用域链,闭包
一.作用域: 在JavaScript中,我们可以将作用域定义为一套规则,这套规则用来管理引擎如何在当前作用域以及嵌套的子作用域中根据标识符名称进行变量查找.这里的标识符,指的是变量名或者函数名. Ja ...
- nginx反向代理与Real-IP和X-Forwarded-For.txt
本文作者张开涛.为保障<亿级流量网站架构核心技术>一书内容的连续性,有些需要读者了解的内容,或者书的补充和引申内容,会通过二维码嵌入的方式引导读者阅读学习.大家可以关注作者公众号“开涛的博 ...
- 运行tomcat7w.exe未安装指定的服务
新安装了tomcat7.042,但是启动tomcat7w.exe是提示未安装指定服务,解决方法如下: 在运行窗口输入cmd,运行DOS,输入以下命令: cd E:\apache-tomcat-7.0. ...