linux软件包管理-rpm

1.程序包管理

功能:将编译好的应用程序的各组件组成文件打包成一个或几个程序包文件,从而更方便快捷实现程序包的安装升级,卸载和查询等管理操作

1 程序包的组成清单(每个程序包都单独实现)

文件清单

安装或卸载是运行的脚本

2 数据库部分(公共)

程序包名称和版本

依赖关系

功能说明

安装生成各文件位置路径及校验码信息

程序包我们在哪获取了?

1)系统发行的光盘或官方文件服务器或镜像站点:

最常用的例如像

http://mirrors.aliyun.com

http://mirrors.souhu.com

http://mirrors.163.com

2)程序官方站点下载

3)第三方组织的rpm包

(a)EPEL:红帽站点论坛组织,提供高效的yum原

(b)搜索引擎搜索

pkgs.org

rpmfind.net

rpm.pbone.net

4)自己做

ps:下载时注意其合法性,来源合法





rpm :readhat package manager ;rpm is package manager 

2.rpm包命名格式

tree-1.5.3-3.el6.x86_64.rpm

name-version-release.arch.rpm

versiom:是指源代码版本

release.arch:rpm包的发行号

archetecture:架构号:i386,x64(amd64)..

e16适用平台 6





3.rpm 特性

1,rpm分包机制

将一个包的功能拆成n个不同功能支包

主包:name-version-release.arch.rpm

支包:name-function-version-release.arch.rpm

function:功能 例如:devel开发功能

untils工具程序

libs库文件等

2,依赖关系

依赖关系:因为linux程序做到短小精湛,程序彼此之间依赖其他程序提供的功能,然后才能运行,所以导致包和包之间有着复杂的依赖关系

3,解决依赖

前端工具的出现自动解决包之间的依赖关系;

yum :rpm包管理器的前端工具

apt-get(apt-cache)deb包管理器的前端工具 用于debian

zypper :suse的rpm管理器前端工具

dnf:fedora-22+系统上的rpm包管理器的前端工具




4.rpm命令管理程序包:

安装升级、卸载、查询、效验、数据库维护、帮助

使用方法

rpm [OPTION] [PACKAGE_FILE]

安装 

rpm     {-i|--install}    [install-options] PACKAGE_FILE ...
 [GENERAL OPTIONS]:通用选项
    -v 详细信息输出
    -vv 更详细信息输出
[install-options]:安装选项
-h 显示以hash标记输出进度条
 yum -ivh
--test测试安装(不实际安装,仅测试,检查依赖及冲突关系);
--nodeps 忽略依赖关系安装;
--replacepkgs 重新安装;
ps:rpm可以自带脚本 --noscripts
四类:
 prelnstall:安装过程之前运行的脚本%pre --nopre
 postinstall:安装过程完成之后运行的脚本,%pot --post
 preuninstall:卸载过程真正开始执行之前运行的脚本 %preun 
 --nopreun
 postuninstall:卸载过程完成之后运行脚本 %postun  --nopostun
--nosignature:不检查包签名信息,不检查来源合法性;
--nodigest:不检查包完整性信息

例如:安装tree包

[[email protected] Packages]# rpm -ivh tree-1.6.0-10.el7.x86_64.rpm 
warning: tree-1.6.0-10.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing...                          ################################# [100%]
	package tree-1.6.0-10.el7.x86_64 is already installed

升级 

 rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
 rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
-U 升级或安装
-F升级
rpm -Uvh 
rpm -Fvh
--oldpackage:降级;
--force:强制升级;升级会影响依赖关系可能
#ps:1)不要对内核做升级操作;linux支持多内核,直接安装新版本内核即可;
#    2)如果原程序包配置文件安装后被修改过,升级是,新版本程序提供的同一个配置文件不会
覆盖原有版本的配置文件,会将新文件重命名后保留;

例如:验证 如果原程序包配置文件安装后被修改过,升级是,新版本程序提供的同一个配置文件不会覆盖原有版本的配置文件,会将新文件重命名后保留;

[[email protected] Packages]# rpm -ivh vsftpd-3.0.2-10.el7.x86_64.rpm 
warning: vsftpd-3.0.2-10.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:vsftpd-3.0.2-10.el7              ################################# [100%]
[[email protected] Packages]# 
#安装vsftp

[[email protected] vsftpd]# cat vsftpd.conf|wc -l
127
[[email protected] vsftpd]# vim vsftpd.conf
[[email protected] vsftpd]# cat vsftpd.conf|wc -l
27
#修改其配置文件(删除文件中100行内容)

[[email protected] Packages]# rpm -Uvh vsftpd-3.0.2-10.el7.x86_64.rpm --force
warning: vsftpd-3.0.2-10.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:vsftpd-3.0.2-10.el7              ################################# [100%]
#升级安装vsftpd   
[[email protected] vsftpd]# cat vsftpd.conf|wc -l
27
#配置文件行数与之前安装修改行数一样

卸载

rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts]
           [--notriggers] [--test] PACKAGE_NAME ...
--allmatches:删除所有所匹配指定名称的程序包版本
--nodeps:忽略依赖关系
--test 测试卸载,不真正执行卸载

例如:卸载vsftpd

[[email protected] Packages]# rpm -e --nodeps vsftpd 
warning: /etc/vsftpd/vsftpd.conf saved as /etc/vsftpd/vsftpd.conf.rpmsave
#卸载vsftpd包
[[email protected] ~]# ll /etc/vsftpd/
total 4
-rw-------. 1 root root 1127 Aug 23 21:10 vsftpd.conf.rpmsave
[[email protected] ~]# cat /etc/vsftpd/vsftpd.conf.rpmsave |ec -l
bash: ec: command not found...
[[email protected] ~]# cat /etc/vsftpd/vsftpd.conf.rpmsave |wc -l
27
#卸载后将配置文件备份成了一个新文件

查询 

rpm {-q|--query} [select-options] [query-options]
1)select-options:
PACKAGE_NAME 直接给出包名查看是否已经安装
-a,--all 查询所有已安装的包 rpm -qa
[[email protected] ~]# rpm -qa |grep http
-f,--file 查询文件的生成安装包
[[email protected] ~]# rpm -qf /etc/fstab 
setup-2.8.71-6.el7.noarch
-p --pachage 查寻未安装的包
--whatprovides CAPABILITY:查询指定的CAPABILITY安装包
 --whatrequires CAPABILITY:查询指定的CAPABILITY安装包有哪些依赖包
2)query-options:
--changelog 查看rpm改进日志
-l, --list 安装生成的文件
rpm -ql 查看安装这个程序包后生成了哪些文件
-i --info 查询程序包相关的信息(版本,大小,所属的包组)
rpm -qi 程序名
 -c, --configfiles 查询指定程序包提供的配置文件
 -d, --docfiles 查询指定程序包提供的文档
 --provides 列出程序提供的CAPABTLITY
 --scripts 查看指定程序安装后的脚本

查询举例:

#查询某个包是否已经安装的多个方法
[[email protected] vsftpd]# rpm -q vsftpd
package vsftpd is not installed
[[email protected] vsftpd]# rpm -qa vsftpd
[[email protected] vsftpd]# rpm -qa |grep vsftpd
[[email protected] vsftpd]# rpm -q vsftpd
vsftpd-3.0.2-10.el7.x86_64
[[email protected] vsftpd]# rpm -qa |grep vsftpd
vsftpd-3.0.2-10.el7.x86_64

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

#查询某个文件是由哪个安装包生成的
[[email protected] vsftpd]# rpm -qf /etc/vsftpd/
vsftpd-3.0.2-10.el7.x86_64

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

#查看某个包安装过后生成的文件
[[email protected] vsftpd]# rpm -ql vsftpd 
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf
/etc/vsftpd/vsftpd_conf_migrate.sh
/usr/lib/systemd/system-generators/vsftpd-generator
/usr/lib/systemd/system/vsftpd.service
/usr/lib/systemd/system/vsftpd.target
/usr/lib/systemd/system/[email protected]
/usr/sbin/vsftpd
/usr/share/doc/vsftpd-3.0.2
/usr/share/doc/vsftpd-3.0.2/AUDIT
/usr/share/doc/vsftpd-3.0.2/BENCHMARKS
/usr/share/doc/vsftpd-3.0.2/BUGS
/usr/share/doc/vsftpd-3.0.2/COPYING
/usr/share/doc/vsftpd-3.0.2/Changelog
/usr/share/doc/vsftpd-3.0.2/EXAMPLE
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE/README
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE/README.configuration
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE/vsftpd.conf
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE/vsftpd.xinetd
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE_NOINETD
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE_NOINETD/README
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE_NOINETD/README.configuration
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE_NOINETD/vsftpd.conf
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/PER_IP_CONFIG
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/PER_IP_CONFIG/README
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/PER_IP_CONFIG/README.configuration
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/PER_IP_CONFIG/hosts.allow
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/README
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_HOSTS
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_HOSTS/README
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/README
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/README.configuration
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/logins.txt
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/vsftpd.conf
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/vsftpd.pam
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS_2
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS_2/README
/usr/share/doc/vsftpd-3.0.2/FAQ
/usr/share/doc/vsftpd-3.0.2/INSTALL
/usr/share/doc/vsftpd-3.0.2/LICENSE
/usr/share/doc/vsftpd-3.0.2/README
/usr/share/doc/vsftpd-3.0.2/README.security
/usr/share/doc/vsftpd-3.0.2/REWARD
/usr/share/doc/vsftpd-3.0.2/SECURITY
/usr/share/doc/vsftpd-3.0.2/SECURITY/DESIGN
/usr/share/doc/vsftpd-3.0.2/SECURITY/IMPLEMENTATION
/usr/share/doc/vsftpd-3.0.2/SECURITY/OVERVIEW
/usr/share/doc/vsftpd-3.0.2/SECURITY/TRUST
/usr/share/doc/vsftpd-3.0.2/SIZE
/usr/share/doc/vsftpd-3.0.2/SPEED
/usr/share/doc/vsftpd-3.0.2/TODO
/usr/share/doc/vsftpd-3.0.2/TUNING
/usr/share/doc/vsftpd-3.0.2/vsftpd.xinetd
/usr/share/man/man5/vsftpd.conf.5.gz
/usr/share/man/man8/vsftpd.8.gz
/var/ftp
/var/ftp/pub

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

#查询指定程序包包含的配置文件
[[email protected] Packages]# rpm -qc vsftpd
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

#查询指定程序包提供的文档
[[email protected] Packages]# rpm -qd vsftpd
/usr/share/doc/vsftpd-3.0.2/AUDIT
/usr/share/doc/vsftpd-3.0.2/BENCHMARKS
/usr/share/doc/vsftpd-3.0.2/BUGS
/usr/share/doc/vsftpd-3.0.2/COPYING
/usr/share/doc/vsftpd-3.0.2/Changelog
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE/README
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE/README.configuration
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE/vsftpd.conf
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE/vsftpd.xinetd
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE_NOINETD/README
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE_NOINETD/README.configuration
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE_NOINETD/vsftpd.conf
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/PER_IP_CONFIG/README
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/PER_IP_CONFIG/README.configuration
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/PER_IP_CONFIG/hosts.allow
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/README
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_HOSTS/README
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/README
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/README.configuration
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/logins.txt
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/vsftpd.conf
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/vsftpd.pam
/usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS_2/README
/usr/share/doc/vsftpd-3.0.2/FAQ
/usr/share/doc/vsftpd-3.0.2/INSTALL
/usr/share/doc/vsftpd-3.0.2/LICENSE
/usr/share/doc/vsftpd-3.0.2/README
/usr/share/doc/vsftpd-3.0.2/README.security
/usr/share/doc/vsftpd-3.0.2/REWARD
/usr/share/doc/vsftpd-3.0.2/SECURITY/DESIGN
/usr/share/doc/vsftpd-3.0.2/SECURITY/IMPLEMENTATION
/usr/share/doc/vsftpd-3.0.2/SECURITY/OVERVIEW
/usr/share/doc/vsftpd-3.0.2/SECURITY/TRUST
/usr/share/doc/vsftpd-3.0.2/SIZE
/usr/share/doc/vsftpd-3.0.2/SPEED
/usr/share/doc/vsftpd-3.0.2/TODO
/usr/share/doc/vsftpd-3.0.2/TUNING
/usr/share/doc/vsftpd-3.0.2/vsftpd.xinetd
/usr/share/man/man5/vsftpd.conf.5.gz
/usr/share/man/man8/vsftpd.8.gz


效验                                                                

rpm {-V|--verify} [select-options] [verify-options]
  --nodeps
              Don‘t verify dependencies of packages.
       --nodigest
              Don‘t verify package or header digests when read‐
              ing.
       --nofiles
              Don‘t verify any attributes of package files.
       --noscripts
              Don‘t  execute  the  %verifyscript  scriptlet (if
              any).
   
       S file Size differs
       M Mode differs (includes permissions and file type)
       5 digest (formerly MD5 sum) differs
       D Device major/minor number mismatch
       L readLink(2) path mismatch
       U User ownership differs
       G Group ownership differs
       T mTime differs
       P caPabilities differ
不添加任何参数默认就是检查所有参数
rpm -V --nodeps

程序包的合法性验证:

来源合法:由制作者提供,依赖于制作者的数字签名,签名是作者使用自己的私钥加密程序包的特性码进行的;

内容合法:包未被二次修改,依赖于:制作者提供的程序特征码;

验正方式:安装者用同样的特征码提取算法提取程序包的特征码,并与原作者提供的相比较;

举例:

rpm --import /misc/cd/RPM-GPG-KEY-CentOS-6 
rpm -K vsftpd-3.0.2-10.el7.x86_64.rpm 
vsftpd-3.0.2-10.el7.x86_64.rpm: rsa sha1 (md5) pgp md5 OK

数据库维护

rpm管理器数据库:/var/lib/rpm
rpm {--initdb|--rebuilddb} [-v] [--dbpath DIRECTORY]
  --initdb: 初始化数据库,数据库不存在,才会新建;
 --rebuilddb: 无论当前数据库是否存在,都会直接重建此库;

举例:

#删除库
[[email protected] rpm]# ls
Basenames     __db.001  __db.003  Group       Name          Packages     Requirename  Sigmd5
Conflictname  __db.002  Dirnames  Installtid  Obsoletename  Providename  Sha1header   Triggername
[[email protected] rpm]# rm -fr *
[[email protected] rpm]# ls
#重新生成库
[[email protected] rpm]# rpm -qa vsftpd
[[email protected] rpm]# ls
Basenames     __db.001  __db.003  Group       Name          Packages     Requirename  Sigmd5
Conflictname  __db.002  Dirnames  Installtid  Obsoletename  Providename  Sha1header   Triggername
[[email protected] rpm]#

帮助

  1. man rpm

  




2. man rpmdb

时间: 2024-11-25 05:11:55

linux软件包管理-rpm的相关文章

Linux软件包管理——rpm

/etc, /bin, /sbin, /lib, /usr/share/man /etc, /bin, /sbin, /lib:系统启动就需要用到的程序,这些目录不能挂载在额外的分区,必须在根文件系统分区上 /usr/ bin sbin lib 操作系统核心功能,可以单独分区 /usr/local 建议单独分区 bin sbin lib etc man /opt:第三方默认安装位置,现在大多数为/usr/local目录下 /proc:不能单独分区,默认为空 /sys:不能单独分区,默认为空 /d

linux软件包管理rpm

程序的组成部分: 二进制部分:一般在/bin./sbin等目录 库:/lib.include 配置文件: /etc 帮助文件:man linux各个目录简要注意点: /etc,/bin,/sbin,/lib 系统启动就需要用到的程序,这些目录不能挂载额外的分区,必须在根文件系统所在的分区上 /usr/ bin sbin lib 操作系统核心功能,可以单独分区 /proc /sys 不能单独分区,默认为空 /dev:设备,不能单独分区 /root:不能单独分区 /var:建议单独分区 /boot:

Linux软件包管理{rpm|yum|源码包}2015082901

CentOS软件包管理 Linux程序安装有三种方式: 1.  二进制包安装 a.RPM b.YUM 2.  源码包安装 (1)二进制包管理: RPM CentOS上的二进制包为rpm格式,并且rpm软件包管理程序也叫做rpm(RPM is Package Manager) RPM包管理方式的优点是:安装简单方便,因为软件已经编译完成打包完毕,安装只是个验证环境和解压的过程.此外通过RPM方式安装的软件,RPM工具都会记录软件的安装信息至数据库中(/var/lib/rpm),这样方便了软件日后的

linux软件包管理——rpm包管理

软件运行环境API:Application Programming Interface 应用程序接口(应用程序和操作系统之间的接口) 凡是符合该api标准的应用程序都可以在支持该api的操作系统上编译通过 程序源代码 --> 预处理 --> 编译 --> 汇编 --> 链接  静态编译:自身包含所有需要调用的库文件  动态编译:自身不包含,需要时调用共享库文件(.so文件)ABI:Application Binary Interface 应用程序二进制接口 规定了二进制文件的格式.

Linux学习38 Linux软件包管理-rpm命令介绍及实战应用

一.rpm 1.安装 见上节 2.升级 a.命令 rpm {-U|--upgrade} [install-options] PACKAGE_FILE ... -U:升级或安装: -F:升级,不支持安装,如果拥有老版本的包时才会升级,否则不会安装 rpm -Uvh PACKAGE_FILE ... rpm -Fvh PACKAGE_FILE ... 相应选项和安装是通用的,接下来说几个额外选项 --oldpackage:降级: --force:强制升级: 注意: (1).不要对内核做升级操作:Li

linux软件包管理之RPM

RPM是RHEL的一款后端软件包管理工具:全称为RedHat Package Manage,由RedHat公司开发,主要作为RehHat Linux软件包的管理机制之一,但并未用作商业用途,而是遵循GPL协议,其设计理念是开放的:现包括SUSE.Openlinux等发行版都采用,是非常强大的软件管理工具. RPM是以一种数据库记录的方式来将需要的软件包安装到linux系统的一套管理机制,最大特点是: 1.由于软件包是已经编译过且打包完毕的,所以软件传输与安装很方便 2.由于软件安装之后信息都记录

Linux 软件包管理之RPM

在 GNU/Linux( 以下简称 Linux) 操作系统中,RPM 和 DPKG 是最为常见的两类软件包管理工具,他们分别应用于基于 RPM 软件包的 Linux 发行版本和 DEB 软件包的 Linux 发行版本中. Linux软件包管理器主要用于管理Linux系统中的软件包,其主要用于实现安装.卸载.升级等功能,并提供对系统中所有软件包状态信息的查询. RPM 最开始官方解释为:"Redhat Package Manager",由 Red Hat 公司制定实施,由于被 GNU 开

linux软件包管理之rpm 、yum基本使用

linux软件包管理之rpm .yum基本使用 一.RPM RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux.S.u.S.E.以及TurboLinux等Linux的分发版本都有采用,可以算是公认的行业标准了. RPM主要功能在于对linux中以.rpm为后缀的软件包的安装.升级.卸载.校验及查询进行便捷管理. 1.安装软件包及常用选项       rpm

1、linux软件包管理

linux软件包管理分为两种:RPM包管理和源码包管理,其中RPM包管理又有两种方式:①RPM命令管理,②YUM在线命令管理. RPM包依赖关系: 1.树形依赖 2.环形依赖 (用一条命令同时装来解决) 3.模块依赖,模块依赖查询网址www.rpmfind.net.例如,安装某个rpm包的时候需要依赖模块libodbcinst.so.2,解决步骤:在rpmfind网址上查找到模块所在的rpm包,然后安装该包即可. 区别“包全名”与“包名” 1.包全名:mysql-5.1.73-7.el6.x86