首页 > 其他 > 详细

软件包管理

时间:2017-11-26 20:22:38      阅读:386      评论:0      收藏:0      [点我收藏+]
二进制应用程序的组成部分: 二进制文件、库文件、配置文件、帮助文件

                    bin  sbin \ lib64 \  etc \ share

  rpm不能解决依赖性

  yum 解决包之间的依赖性  yum是rpm的一个封装 、基于rpm 、前端软件包管理器。

  /dev/sr0 光驱   cd /misc/cd

 

库文件lib

查看二进制程序所依赖的库文件 ldd /PATH/TO/BINARY_FILE

管理及查看本机装载的库文件

 ldconfig 加载库文件

/sbin/ldconfig -p: 显示本机已经缓存的所有可用库文件 名及文件路径映射关系

 

 ldconfig 尝试加载库文件   不知道所加载库文件的路径   在配置文件里定义加载库文件路径

配置文件:/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf

如tree命令

[root@centos6 Packages]#cd /etc/ld.so.conf.d   在其下面建立以.conf结尾文件

[root@centos6 ld.so.conf.d]#ls

kernel-2.6.32-696.el6.x86_64.conf  mysql-x86_64.conf  qt-x86_64.conf  xulrunner-64.conf

[root@centos6 ld.so.conf.d]#cat qt-x86_64.conf

/usr/lib64/qt-3.3/lib                          路径格式

[root@centos6 ld.so.conf.d]#vim tree.conf

/app/../../ 写入路径

[root@centos6 Packages]#ldconfig

技术分享图片

rpm包管理器

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

rpm包文件相当于tar打包文件

包文件组成 (每个包独有) RPM包内的文件

RPM的元数据,如名称,版本,依赖性,描述等 安装或卸载时运行的脚本

 

rpm安装后,会在自动在/var/lib/rpm下生成数据库,记录了rpm包数据信息:

程序包名称及版本

依赖关系

功能说明

 包安装后生成的各文件路径及校验码信息、

/var/lib/rpm对rpm包很重要,不能误删除。

 

程序包的来源

 

 系统发版的光盘或官方的服务器  CentOS镜像

  第三方包建议要检查其合法性 来源合法性,程序包的完整性

 

rpm包管理

 

 rpm {-i|--install} [install-options] PACKAGE_FILE…

 

rpm -ivh 安装显示过程

[root@centos7 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%]

Updating / installing...

   1:tree-1.6.0-10.el7                ################################# [100%]

[root@centos7 Packages]#rpm -q tree    查询tree包是否已在  不用文件名 用包名

tree-1.6.0-10.el7.x86_64

[root@centos7 Packages]#rpm -e tree     卸载tree包  

 

安装tree后 ,/var/lib/rpm下记录了tree包的数据信息,卸载是就可以用包名,而不需要完整的文件名

 

[install-options]

 --test: 测试安装,但不真正执行安装,即dry run模式

[root@centos7 Packages]#rpm -ivh --test 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%]

[root@centos7 Packages]#echo $?

0                                                         tree包可以安装

 --nodeps:忽略依赖关系          有依赖关系的包 忽略关系 安装后依然无法使用

 --replacepkgs | replacefiles          替代安装 解决已安装包  缺失文件如(删除移动)无法使用问题

--nosignature: 不检查来源合法性

 --nodigest:不检查包完整性

--noscripts:不执行程序包脚本

[root@centos7 Packages]#rpm -q --scripts bash  查看bash包的脚本   在软件包安装时查看程序包脚本 防止恶意脚本

--force: 强制安装

 

包查询

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

v[select-options]

-a: 所有包  支持使用glob *, ?, [], [^]  查询有该包名的包

-f: 查看指定的程序文件由哪个程序包安装生成  文件的路径  非包名

[root@centos6 ~]#which tree

/usr/bin/tree

[root@centos6 ~]#rpm -qf /usr/bin/tree

tree-1.5.3-3.el6.x86_64

 

 -p rpmfile:针对尚未安装的程序包文件做查询操作  后跟rpm文件名

[root@centos6 Packages]#rpm -qpl tree-1.5.3-3.el6.x86_64.rpm

warning: tree-1.5.3-3.el6.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY

/usr/bin/tree

/usr/share/doc/tree-1.5.3

/usr/share/doc/tree-1.5.3/LICENSE

/usr/share/doc/tree-1.5.3/README

/usr/share/man/man1/tree.1.gz

 -l 能详细显示rpm包内的文件列表

技术分享图片

--whatprovides CAPABILITY:查询指定的CAPABILITY  功能由哪个包所提供

[root@centos6 Packages]#rpm -q --whatprovides bash

bash-4.1.2-48.el6.x86_64

 

 --whatrequires CAPABILITY:查询指定的CAPABILITY被 哪个包所依赖

[root@centos6 Packages]#rpm -q --whatrequires bash

initscripts-9.03.58-1.el6.centos.x86_64

dracut-004-409.el6_8.2.noarch

rsyslog-5.8.10-10.el6_6.x86_64

cronie-1.4.4-16.el6_8.2.x86_64

autofs-5.0.5-132.el6.x86_64

lvm2-2.02.143-12.el6.x86_64

以上包的rpm安装需要依赖bash包的安装 先bash安装,如果bash包未安装,则不能安装

 

vrpm2cpio 包文件|cpio –itv 预览包内文件

vrpm2cpio 包文件|cpio –id  “*.conf” 释放包内文件

 

常用查询用法: -qi PACKAGE, -qf FILE, -qc PACKAGE, -ql PACKAGE, -qd PACKAGE -qpi PACKAGE_FILE, -qpl PACKAGE_FILE, ... -qa

 

包卸载: rpm {-e|--erase} [--allmatches] [--nodeps] [-noscripts] [--notriggers] [--test] PACKAGE_NAME ...

 

--changelog:查询rpm包的changelog 修改日志

-c: 查询程序的配置文件

-d: 查询程序的文档

-i: information

-l: 查看指定的程序包安装后生成的所有文件

--scripts:程序包自带的脚本

 --provides: 列出指定程序包所提供的CAPABILITY

 -R: 查询指定的程序包所依赖的CAPABILITY

技术分享图片

包校验

rpm -V 包名     包下文件是否发生修改

 

rpm  -K      包的文件名  检查包的完整性

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7  导入公钥检查 签名

 

如下:

在光盘下,导入所需要的公钥

[root@centos7 ~]#cd /run/media/root/CentOS\ 7\ x86_64/

[root@centos7 CentOS 7 x86_64]#ll

total 1490

-r--r--r--. 1 root root      14 Dec 10  2015 CentOS_BuildTag

dr-xr-xr-x. 3 root root    2048 Dec 10  2015 EFI

-r--r--r--. 1 root root     215 Dec 10  2015 EULA

-r--r--r--. 1 root root   18009 Dec 10  2015 GPL

-r--r--r--. 1 root root    1690 Dec 10  2015 RPM-GPG-KEY-CentOS-7

-r--r--r--. 1 root root    1690 Dec 10  2015 RPM-GPG-KEY-CentOS-Testing-7

-r--r--r--. 1 root root    2883 Dec 10  2015 TRANS.TBL

[root@centos7 CentOS 7 x86_64]#rpm --import RPM-GPG-KEY-CentOS-7   导入秘钥  检查签名

[root@centos7 Packages]#rpm -ivh tree-1.6.0-10.el7.x86_64.rpm   安装

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

Updating / installing…     不出现warning

   1:tree-1.6.0-10.el7                ################################# [100%]

[root@centos7 Packages]#rpm -K tree-1.6.0-10.el7.x86_64.rpm   包的完整性

tree-1.6.0-10.el7.x86_64.rpm: rsa sha1 (md5) pgp md5 OK    

[root@centos7 Packages]#rpm -V tree  文件是否发生修改

技术分享图片

yum

解决rpm包之间的依赖关系

基于c/s安装 ,有客户端 有服务器 需要事先搭载服务端 将自己机器配置成客户端  

 yum server:    众多*.rpm后缀的文件   yum记录rpm文件的元数据repodata

[root@centos6 CentOS_6.9_Final]#ls

CentOS_BuildTag  GPL       Packages                  RPM-GPG-KEY-CentOS-6           RPM-GPG-KEY-CentOS-Testing-6

EFI              images    RELEASE-NOTES-en-US.html  RPM-GPG-KEY-CentOS-Debug-6     TRANS.TBL

EULA             isolinux  repodata       yum元数据       

 

yum仓库路径: http://       https://    网络路径

                               ftp://    

                             file://            本地路径  光盘

 

  baseurl 路径为repodata的当前所在目录的路径

 

yum的repo仓库路径配置文件中可用的变量:

 $releasever: 当前OS的发行版的主版本号

 $arch: 平台,i386,i486,i586,x86_64等

$basearch:基础平台;i386, x86_64

$YUM0-$YUM9:自定义变量

 

 yum客户端配置文件:

 /etc/yum.conf:为所有仓库提供公共配置

/etc/yum.repos.d/*.repo:为仓库的指向提供配置  在该配置文件下建立.repo文件

仓库指向的定义:

格式如下

 [repositoryID]

 name=Some name for this repository

baseurl=url://path/to/repository/

enabled={1|0}

gpgcheck={1|0}    yum默认安装会检查签名

gpgkey=URL

enablegroups={1|0}

failovermethod={roundrobin|priority}

 

[root@centos6 CentOS_6.9_Final]#cd /etc/yum.repos.d

[root@centos6 yum.repos.d]#vim bash.repo

[root@centos6 yum.repos.d]#cat bash.repo

[centos7]

name=zhang

baseurl=file:///media/CentOS_6.9_Final/                             本地光盘的源       repodata的当前所在路径

gpgcheck=1

gpgkey=file:///media/CentOS_6.9_Final/RPM-GPG-KEY-CentOS-Security-$releasever  导入公钥文件                   

 

 

[eqel]                                                                                       网络的eqel源

name=network

baseurl=http://mirrors.sohu.com/fedora-epel/$releasever/$basearch/                      repodata的当前所在目录的路径

gpgcheck=0                                                                   不检查公钥

enabled=1      1使用 网络eqel源                        断网时,关闭网络源使用本地光盘源 enabled=0         

 

yum命令的用法: yum [options] [command] [package …1]  [package …2] ….

显示仓库列表: yum repolist

显示程序包: yum list   支持使用glob *, ?, [], [^]

[root@centos6 yum.repos.d]#yum list my*

显示包信息

yum info tree

安装程序包:

 yum install package1 [package2] [...]  多个包安装

yum reinstall package1 [package2] [...]  (重新安装)

 搜索安装包:

 yum search tree

卸载程序包:

 yum remove | erase package1 [package2] [...]

 

yum安装中,假如安装A包  (A包依赖B包) 安装会先安装B包 再安装A包

          卸载时,先卸载A包 不卸载B包 (B包可能存在别的依赖)

 

 

清理本地缓存: yum clean all

 当repo配置文件里仓库路径发生更改时,yum访问还是以前的源地址 需要清理本地缓存

 

查看yum事务历史

yum history

 yum history info 6

 yum history undo 6 撤销历史中第六条yum安装  相当于卸载第六条安装rpm包

 

日志 :/var/log/yum.log

 

包组管理的相关命令

yum grouplist

yum groupinstall group1 [group2] [...]

yum groupremove group1 [group2] [...]

yum groupinfo group1 [...]

 包组须加""引号

[root@centos7 ~]#yum groupinfo "Compute Node"

 

yum-config-manager --disable “仓库名"  禁用仓库

yum-config-manager --enable  “仓库名” 启用仓库

 

 

yum的命令行选项:

 --nogpgcheck:禁止进行gpg check

 -y: 自动回答为“yes”

 -q:静默模式

技术分享图片

yum安装记录日志 /var/log/yum.log




软件包管理

原文:http://blog.51cto.com/13157015/2044475

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!