Linux程序包管理:包管理器功能:打包,包管理(安装,升级,卸载,查询,校验)

目前Linux中最常见有两种常用工具deb:debian Linux使用 包括ubuntu

rpm:Redhat Package Manager ,Centos等在使用

程序包的组成:二进制程序:/bin,  /sbin,  /usr/bin, /usr/sbin

库文件: /lib64, /usr/64

配置文件:/etc

帮助文件:manual, info

包管理器:打包:将源文件,一个一个单一的归档文件中

安装:将文件释放到相应路径下

卸载:收集所有相关文件删除

升级:更新相关文件

查询:查询程序包相关信息

校验:程序包的来源合法性,完整性

rpm数据库/var/lib/rpm

rpm通过数据库记录rpm文件的相关参数,用于软件的升级,删除,查询和验证;若数据库损坏,可通过命令rpm --rebuilddb 重建数据库

rpm包:rpm打包:打包rpmbuild工具 基于specs文件按照各种规则完成打包。

分包机制:一个程序包含各种功能,其中可能只有几种功能常用,几种功能偶尔用,几种功能很少用,将程序功能分开打包,分为核心包和支包。核心包:software-Version

支包:software-devel-Version

rpm包命名机制:name-Version-Release.ARCH.rpm

5个字段

name:包名

Version:版本信息

major.minor    主版本号.次版本号

Release:发布版本次数

ARCH:适合的硬件平台 i386, i586, i686, x86_64

包与包之间:有可能存在依赖关系    例如安装A之前需要先安装B,安装B之前需要先安装C等等。rpm数据库:/var/lib/rpm

记录包名,安装生成文件,校验信息,依赖关系等等。

如何获取rpm包发行版提供的程序包,在光盘中一般在Packages目录中

fedora-EPEL ,组织收入rpm包,正式,权威,安全

项目的官方站点, 比如tomcat,SVN官方站点

搜索引擎:第三方提供,注意安全问题

rpm命令实现程序包管理安装rpm {-i|--install} [install-options] PACKAGE_FILE ...

-i :install

-v:查看详细的安装信息;-vv,-vvv更加详细的安装信息

-h:显示安装进度

install-options

[--allfiles] [--badreloc] [--excludepath OLDPATH]

[--excludedocs] [--force] [-h,--hash]

[--ignoresize] [--ignorearch] [--ignoreos]

[--includedocs] [--justdb] [--nocollections]

[--nodeps] [--nodigest] [--nosignature]

[--noorder] [--noscripts] [--notriggers]

[--oldpackage] [--percent] [--prefix NEWPATH]

[--relocate OLDPATH=NEWPATH]

[--replacefiles] [--replacepkgs]

[--test]

--nodeps:忽略依赖关系,强制安装

--replacefiles:当某程序已经安装了,使用该命令直接覆盖安装

--replacepkgs:重新安装某个软件

--test:测试软件是否可以安装到系统中

示例:

#安装一个软件

[root@localhost Packages]# rpm -ivh NetworkManager-adsl-1.0.0-14.git20150121.b4ea599c.el7.x86_64.rpm

Preparing...                          ################################# [100%]

Updating / installing...

1:NetworkManager-adsl-1:1.0.0-14.gi################################# [100%]

#安装openstack 存在依赖关系,不能安装

[root@localhost packages]# rpm -ivh openstack-ceilometer-alarm-2014.2.2-1.fc22.noarch.rpm

warning: openstack-ceilometer-alarm-2014.2.2-1.fc22.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID 8e1431d5: NOKEY

error: Failed dependencies:

openstack-ceilometer-common = 2014.2.2-1.fc22 is needed by openstack-ceilometer-alarm-2014.2.2-1.fc22.noarch

python-ceilometerclient is needed by openstack-ceilometer-alarm-2014.2.2-1.fc22.noarch

#

#使用--nodeps选项 忽略依赖关系,可以安装,但是不能使用

[root@localhost packages]# rpm -ivh openstack-ceilometer-alarm-2014.2.2-1.fc22.noarch.rpm --nodeps

warning: openstack-ceilometer-alarm-2014.2.2-1.fc22.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID 8e1431d5: NOKEY

Preparing...                          ################################# [100%]

Updating / installing...

1:openstack-ceilometer-alarm-2014.2################################# [100%]

#同时安装多个软件

[root@localhost packages]# rpm -ivh 2048-cli-0.9-4.git20141214.723738c.el7.x86_64.rpm  openstack-ceilometer-alarm-2014.2.2-1.fc22.noarch.rpm --nodeps

warning: 2048-cli-0.9-4.git20141214.723738c.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 352c64e5: NOKEY

warning: openstack-ceilometer-alarm-2014.2.2-1.fc22.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID 8e1431d5: NOKEY

Preparing...                          ################################# [100%]

Updating / installing...

1:openstack-ceilometer-alarm-2014.2################################# [ 50%]

2:2048-cli-0.9-4.git20141214.723738################################# [100%]

#通过网络安装

[root@localhost packages]# rpm -ivh ftp://rpmfind.net/linux/centos/5.11/os/x86_64/CentOS/centos-release-notes-5.11-0.x86_64.rpm

Retrieving ftp://rpmfind.net/linux/centos/5.11/os/x86_64/CentOS/centos-release-notes-5.11-0.x86_64.rpm

warning: /var/tmp/rpm-tmp.he2qSD: Header V3 DSA/SHA1 Signature, key ID e8562897: NOKEY

Preparing...                          ################################# [100%]

Updating / installing...

1:centos-release-notes-5.11-0      ################################# [100%]

升级:

rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...

rpm {-F|--freshen} [install-options] PACKAGE_FILE ...

-Uvh:如果安装过旧版本程序包,则更新至新版本;如果没有,则直接安装

-Fvh:如果安装过旧版本程序包,则更新至新版本;如果没有,则不安装

此处选择[install-options] 同安装时的选项

--oldpackage:对程序进行降级安装

查询rpm {-q|--query} [select-options] [query-options]

-qa:查询本机已经安装的所有软件

-q :只查询指定软件是否安装

-qi : 查询指定软件的详细信息,开发商,版本等

-ql:查询软件安装生成的所有文件列表

-qc:查询指定程序包安装生成的配置文件

-q --scripts:查询程序包相关的脚步

preinstall:安装前脚本

postinstal:安装后脚本

preuninstall:卸载前脚本

postuninstall:卸载后脚本

-qp[icdl] :查询未安装软件的信息,参数作用和上面一样

示例:#确认软件是否安装成功

[root@localhost Packages]# rpm -q NetworkManager-adsl

NetworkManager-adsl-1.0.0-14.git20150121.b4ea599c.el7.x86_64

#查询已安装软件的详细信息

[root@localhost Packages]# rpm -qi NetworkManager-adsl

Name        : NetworkManager-adsl

Epoch       : 1

Version     : 1.0.0

Release     : 14.git20150121.b4ea599c.el7

Architecture: x86_64

Install Date: Wed 16 Sep 2015 06:24:35 PM CST

Group       : System Environment/Base

Size        : 28480

License     : GPLv2+

Signature   : RSA/SHA256, Sat 14 Mar 2015 04:19:28 PM CST, Key ID 24c6a8a7f4a80eb5

Source RPM  : NetworkManager-1.0.0-14.git20150121.b4ea599c.el7.src.rpm

Build Date  : Fri 06 Mar 2015 12:19:16 PM CST

Build Host  : worker1.bsys.centos.org

Relocations : (not relocatable)

Packager    : CentOS BuildSystem

Vendor      : CentOS

URL         : http://www.gnome.org/projects/NetworkManager/

Summary     : ADSL device plugin for NetworkManager

Description :

This package contains NetworkManager support for ADSL devices.

#查询安装相关脚本

[root@localhost Packages]# rpm -q --scripts zlib

postinstall program: /sbin/ldconfig

postuninstall program: /sbin/ldconfig

卸载rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts]

[--notriggers] [--test] PACKAGE_NAME ...

示例

[root@localhost packages]# rpm -ivh 2048-cli-0.9-4.git20141214.723738c.el7.x86_64.rpm

warning: 2048-cli-0.9-4.git20141214.723738c.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 352c64e5: NOKEY

Preparing...                          ################################# [100%]

Updating / installing...

1:2048-cli-0.9-4.git20141214.723738################################# [100%]

#卸载软件 Package_name 软件名

[root@localhost packages]# rpm -e 2048-cli

[root@localhost packages]# rpm -q 2048-cli

package 2048-cli is not installed

校验rpm {-V|--verify} [select-options] [verify-options]

-V:后面加软件名,若该软件中文件被修改了,就会被列出

-Va:列出系统上所有被改动过的文件

-Vf:勒出某个文件是否被改动过

S file Size differs 文件大小被修改

M Mode differs 权限和文件类型被修改

5 digest (formerly MD5 sum) differs MD5内容发生变化

D Device major/minor number mismatch 设备的主/次代码已经改变

L readLink(2) path mismatch Link路径发生变化

U User ownership differs 文件属主被修改

G Group ownership differs 文件属组被修改

T mTime differs 文件创建时间被修改

P caPabilities differ 依赖关系发生改变

示例#查询/etc/fstab的变化

[root@localhost Packages]# rpm -Vf /etc/fstab

S.5....T.  c /etc/bashrc

包校验

验证:

来源合法性校验:非对称加密 (公钥)

完整性验证:单向加密#该路径下存放了密钥 公钥文件

[root@localhost Packages]# ls /etc/pki/rpm-gpg/

RPM-GPG-KEY-CentOS-7  RPM-GPG-KEY-CentOS-Debug-7  RPM-GPG-KEY-CentOS-Testing-7

导入密钥命令:

rpm --import  /path/to/Key_file[root@localhost Packages]#rpm --import RPM-GPG-KEY-CentOS-7

手动校验:

rpm -K /path/to/rpm_file[root@localhost Packages]# rpm -K zlib-1.2.7-13.el7.x86_64.rpm

zlib-1.2.7-13.el7.x86_64.rpm: rsa sha1 (md5) pgp md5 OK#此时再次安装时 就没有了警告消息

[root@localhost Packages]# rpm -ivh NetworkManager-adsl-1.0.0-14.git20150121.b4ea599c.el7.x86_64.rpm

Preparing...                          ################################# [100%]

Updating / installing...

1:NetworkManager-adsl-1:1.0.0-14.gi################################# [100%]

注意:

使用rpm管理软件,无论是安装,卸载总要面临包依赖关系问题,忽略依赖关系安装软件,安装后的软件不能使用,忽略依赖关系的卸载,造成其他相关软件不能使用。

YUM:Yellowdog Updater Modified

如有错误,敬请指正!

谢谢!

linux 包管理工具dnf,Linux 程序包管理 rpm yum dnf相关推荐

  1. 15款最佳的MySQL管理工具和应用程序

    [转]15款最佳的MySQL管理工具和应用程序@TOC 工欲善其事,必先利其器.几乎每个开发人员都有最钟爱的 MySQL 管理工具,它帮助开发人员在许多方面支持包括 PostgreSQL,MySQL, ...

  2. Linux如何准确判断rpm,yum,dnf进程是否阻塞[运行]?

    如果你是一个程序员,你会知道,rpm, yum, dnf这三个进程是否运行,如果运行,是否阻塞? 简单常用但不严谨的做法 一个简单方法是通过 ps -ef | grep rpm | grep -v g ...

  3. java: 程序包 javax.smartcardio 不可见 (程序包 javax.smartcardio 已在模块 java.smartcardio 中声明, 但该模块不在模块图中)

    java: 程序包 javax.smartcardio 不可见(程序包 javax.smartcardio 已在模块 java.smartcardio 中声明, 但该模块不在模块图中) 这是JDK9 ...

  4. window linux传输工具,window与linux文件传输工具,linux文件传输

    window与linux文件传输工具,linux文件传输 window与linux文件传输工具 [一般用于SecureCRT ssh中使用] 法一:直接用yum安装lrzsz(推荐) yum inst ...

  5. 13.Centos软件包管理(rpm,yum,dnf),源码编译安装

    基础知识 软件运行和编译 ABI:Application Binary Interface Windows与Linux不兼容 ELF(Executable and Linkable Format) P ...

  6. Redis Desktop Manager – Redis可视化管理工具、redis图形化管理工具、redis可视化客户端、redis集群管理

    Redis Desktop Manager – 个人认为是目前最好用的Redis可视化管理工具. redis可视化工具.Redis可视化管理工具.redis图形化管理工具.redis可视化客户端.re ...

  7. Redis Desktop Manager – Redis可视化管理工具、redis图形化管理工具、redis可视化客户端、redis集群管理工具

    Redis Desktop Manager – 个人认为是目前最好用的Redis可视化管理工具. redis可视化工具.Redis可视化管理工具.redis图形化管理工具.redis可视化客户端.re ...

  8. 常见RPM,YUM,DNF指令

    常见RPM,YUM,DNF指令 荣涛 2021年12月2日 文档修改日志 日期 修改内容 修改人 备注 2021年12月2日 创建 荣涛 下载 dnf # 下载源码RPM包,这将下载 glibc-xx ...

  9. Linux包管理工具apt,Linux RPM、YUM、APT包管理工具

    ⒈rpm包的管理 1)介绍 rpm是一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中,它生成具有.RPM扩展名的文件,RPM是RedHat Package Manager(RedH ...

最新文章

  1. 物联网白皮书【2018】重磅发布|今年的物联网产业交出了一张怎样的答卷
  2. 英国继银行被窃之后 信贷公司Wonga数十万客户数据被泄
  3. python pycocotools安装
  4. python二维列表写入excel_用Python实现合并excel列表
  5. P2157 [SDOI2009]学校食堂
  6. JMeter实现web接口测试实践举例
  7. mysql乐观锁重试_乐观锁加重试,并发更新数据库一条记录导致:Lock wait timeout exceeded...
  8. mybatis配置自带缓存和第三方缓存
  9. 新闻更新延时引发的学习,CACHE的利用。
  10. [转载] Python利用pandas处理Excel数据的应用
  11. 有用的网页链接的整合(不定时更新)
  12. 经典的EDA设计软件Protel99SE
  13. echarts中国及世界经纬度坐标
  14. 第一章 汇编语言和汇编指令
  15. 动手写操作系统系列-前言
  16. PTA L2-039 清点代码库
  17. python3下载-QPython3下载
  18. linux调度原理,有谁真的了解Linux / BSD中HFSC调度的工作原理?
  19. Python3+Flickrapi爬取图片
  20. 安装 CC2531 USB Dongle(驱动精灵)

热门文章

  1. 【软件工程】用户界面设计
  2. 基于Python/diango实现的学生在线选课系统 | 计算机毕业设计 | Python | 计算机毕业设计定制
  3. 单片机学习(二)开发板LED灯的控制
  4. 工具网站推荐 - 最好的8个免费下载Pbr贴图和材质的网站
  5. 贴吧顶贴实战教学,让你在不自觉中学会顶贴的方法论
  6. FATAL ERROR: please install th......Data::Dumper(未安装autoconf库)
  7. [yLOI2018] 锦鲤抄
  8. 汉诺塔 - 算神码男人系列
  9. Python教程--Python代码的基本认识和编写
  10. 微信电脑客户端不能直接拖拽发送文件