软件包管理 rpm yum的使用

软件包管理
链接主要作用是吧各个模块之间互相引用的部分处理好,
使得各个模块之间能够正确的链接,分为静态和动态
静态链接  以.a为后缀  把程序对应的依赖库复制到包
          升级难 需重新编译  占用空间多 迁移容易
动态链接  以.so为后缀 把依赖加做动态链接
   占用空间少  升级方便
          若一个库被删,那么所有依赖此库的命令都
 受影响(使用相对较多)
包命名
     name-VERSION.tar.gz|bz2|xz
     包名  版本
   例 bash-4.2.46-19.e17.x86_64.rpm
    noarch 根平台无关
管理及查看本机装载的库文件
ldd  /bin/ls 查看命令所调用的库
ldconfig加载库文件
/sbin/ldconfig -p 显示本机已经缓存的所有可用库文件名
                  及文件路径映射关系
配置文件:/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf
缓存文件:/etc/ld.so.cache
****************************************************************
RPM包管理器
安装:
rpm {-i|–install} [install-options] PACKAGE_FILE…
-i 安装选项
-v 显示过程
-h 以#显示程序包管理执行进度
[install-options]
–test: 测试安装,但不真正执行安装,即dry run模式 操作走了一次但没装
例  rpm -i –test vsftab-2*
–nodeps:忽略依赖关系
例 rpm -ivh httpd* –nodeps 能安装但是后期可能不能用
–replacepkgs | replacefiles
若删掉了包中的文件重新装包系统提示已经存在,此时可用此命令
例 rpm -ivh –replacepkgs tree*
replacefiles替代文件 即安装两个包,有同一个相同文件同时写入同一路径下
             此时系统提示不能安装便可用此选项强制安装并覆盖
–nosignature: 不检查来源合法性
–nodigest:不检查包完整性
–noscripts:不执行程序包脚本
%pre: 安装前脚本; –nopre
%post: 安装后脚本; –nopost
%preun: 卸载前脚本; –nopreun
%postun: 卸载后脚本; –nopostun
rpm -ivh name1 name2… 一次安装多个包
rpm -V packagesname 查看包属性的变化
卸载:
rpm {-e|–erase} [–allmatches] [–nodeps] [–noscripts] [–notriggers]
[–test] PACKAGE_NAME …
-e 卸载 后面直接跟包名就可以不用写完整的名字
–allmatches 若一个包有多个版本使用此选项可将全部卸载
导入秘钥光盘的根目录下执行 rpm –import RPM-GPG-Centos-6
包升级(不建议使用)
升级:
rpm {-U|–upgrade} [install-options] PACKAGE_FILE…
rpm {-F|–freshen} [install-options] PACKAGE_FILE…
upgrade:安装有旧版程序包,则“升级”
如果不存在旧版程序包,则“安装”
freshen:安装有旧版程序包,则“升级”
如果不存在旧版程序包,则不执行升级操作
rpm -Uvh PACKAGE_FILE …
rpm -Fvh PACKAGE_FILE …
–oldpackage:降级
–force: 强制安装
/var/lib/rpm相当重要的文件数据库不能动
包查询
rpm {-q|–query} [select-options] [query-options]
例:rpm -ql tree 查询tree包下的文件
[select-options]都需配合-P使用
-a: 所有包
-f: 查看指定的文件由哪个程序包安装生成   配合-P使用 后面跟磁盘上的某个文件(也可路径)
-p rpmfile:针对尚未安装的程序包文件做查询操作   后面跟文件名(包的完整名)而不是包名
–whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供
–whatrequires CAPABILITY:查询指定的CAPABILITY(相当于关键字)被哪个包所依赖
rpm2cpio 包文件|cpio –itv 预览包内文件  相当于把rpm包转化成cpio格式
rpm2cpio 包文件|cpio –id “*.conf” 释放包内文件
[query-options]
–changelog:查询rpm包的信息变化的过程配合-P使用
-c: 查询程序的配置文件
-d: 查询程序的文档
-i: information
-l: 查看指定的程序包安装后生成的所有文件
–scripts:程序包自带的脚本
–provides: 列出指定程序包所提供的CAPABILITY(能力)
-R: 查询指定的程序包所依赖的CAPABILITY
rpm -qR tree 查询tree所依赖的能力
包卸载:
rpm {-e|–erase} [–allmatches] [–nodeps] [–noscripts] [–notriggers]
[–test] PACKAGE_NAME …
包校验
rpm {-V|–verify} [select-options] [verify-options]检查包的属性变化 后面跟包名
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 -K|checksig rpmfile 检查包的完整性和签名
rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
CentOS 7发行版光盘提供:RPM-GPG-KEY-CentOS-7
rpm -qa “gpg-pubkey*”
rpm -K|checksig rpmfile 检查包的完整性和签名(若显示not ok)则此文件存在
                                            一定的风险建议不装
若执行-K检查命令则必先执行以下命令
rpm –import /run/media/root/centos\7\x86_64/RPM-GPG-Centos-6
     rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
或 rpm –import /run/media/root/centos\7\x86_64/RPM-GPG-KEY-centos7
***********************************************************
YUM
createrepo是linux下的创建仓库的软件包。create是创建的意思,repo是repository的缩写,是仓库的意思。
yum(Yellow dog Updater,Modified)主要的功能是方便添加、删除和更新rpm软件包。
可以解决软件包依存问题,更便于管理大量的系统更新问题。
它可以同时配置多个仓库或叫资源库(repository),就是存放更新和依存的软件包的地方。
1. yum的由来
    为了解决程序间的依赖关系,RedHat曾推出了一款名为update的工具。这款工具虽然达到了目的,但用户体验并不是很好。
后来一个基于RedHat的二次发行版yellowdog,由此也推出了一个工具:yellowdog update modifier,简写为yum. 由于比update好用,于是便流行开来。
后来导致RedHat也弃update不用而使用yum
2. yum的特性
    yum相对于rpm来说:rpm为基础包管理器,yum则是rpm的前端工具。yum无法独立存在
    系统不允许有两个yum命令同时运行,如果有两个,第二次运行时会报错。这是为了防止yum之间的冲突
3. yum的工作方式
    yum工作需要依赖C/S架构工作模式的文件服务器,服务器中存放了yum工作时所需的程序包。yum接收到需要安装的程序包的名称之后,通过文件共享协议(或者文件传输协议),在配置文件中指向的yum仓库(可以是多个)中查询需要的程序包。
找到之后,通过文件下载协议,将程序包下载至本地yum的缓存目录中,当安装完成后,缓存目录便会被删除
    但如果yum每次到yum仓库都需要遍历,就会导致速度很慢。而yum仓库中有两类数据:程序和程序的元数据。yum仓库在创建时,会将所有程序的名字、大小、版本以及依赖关系这类的属性信息提取出来并保存至repodata目录中。
所以在yum第一次访问yum仓库时,会获取仓库中元数据(repodata),并下载至本地。因此,下次需要安装程序包时,只需从本地缓存中获得信息,直接到仓库下载即可
    如何保持本地缓存repodata和服务器端的repodata实时同步呢?yum每次访问仓库都会先获取repodata目录中每个文件的特征码,并与本地的进行比较,如果不相同,就重新下载并覆盖
4. yum的配置文件
    指向仓库的位置以及相关的各种配置信息。每个yum命令行可以同时指向多个仓库,仓库间可以进行优先级等相关配置,优先级是由开销决定的
    配置文件有两部分组成:主配置文件以及各仓库的配置文件。因为如果所有的配置信息都放在一个文件中就显得太臃肿、不方便。其中主配置文件所在路径为/etc/yum.conf,它为各仓库指向提供公共配置文件;
而各仓库的配置文件所在路径为:/etc/yum.repos.d/*.repo,里面都是以赋值的格式存在
yum客户端配置文件:
vim /etc/yum.conf:为所有仓库提供公共配置
[main]语句块名称
cachedir=/var/cache/yum/$basearch/$releasever 缓存文件夹
keepcache=0  1表示rpm包保存 0表示不保存
debuglevel=2  调试一般不用管
logfile=/var/log/yum.log  yum的日志
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5  同时可装5个包
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=19&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
var/cache/yum缓存路径可清理
/etc/yum.repos.d/*.repo:为仓库的指向提供配置 后缀必须为.repo
仓库指向的定义:
[repositoryID] 第一行用一个单词不允许出现空格名字可以随意
name=Someame for this repository描述语句
baseurl=url://path/to/repository/第二行路径repodata的父目录就是路径 可以自己创建文件夹让后挂载光盘
                                 例 mkdir /mnt/cdrom
挂载光盘 monut /dev/sr0  /mnt/cdrom
本机路径 file:///mnt/cdrom
enabled={1|0}0表示禁用1表示启用
gpgcheck={1|0}  第三行是否检查包的完整性0表示不检查
gpgkey=URL
enablegroups={1|0}
failovermethod={roundrobin|priority}
roundrobin:意为随机挑选,默认值
priority:按顺序访问
cost= 默认为1000
自动生成仓库
yum-config-manager  –add-repo=路径
默认存放在/etc/yum.repos.d/目录下
yum-config-manager –disable “仓库名”  禁用仓库
yum-config-manager –enable “仓库名” 启用仓库
yum 命令
用法:yum [options] [command] [package …]
显示仓库列表:
yum repolist [all|enabled|disabled]
显示程序包:
yum list
yum list [all | glob_exp1] [glob_exp2] […]
yum list {available|installed|updates} [glob_exp1] […]
安装程序包:
yum install package1 [package2] […]
yum reinstall package1 [package2] […] (重新安装)
升级程序包:
yum update [package1] [package2] […]
yum downgrade package1 [package2] […] (降级)
检查可用升级:
yum check-update
卸载程序包:
yum remove | erase package1 [package2] […]
查看程序包information:
yum info […]
查看指定的特性(可以是某文件)是由哪个程序包所提供:
yum provides | whatprovides feature1 [feature2] […]
清理本地缓存:
清除/var/cache/yum/$basearch/$releasever缓存
yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
构建缓存:
yum makecache
搜索:yum search string1 [string2] […]
以指定的关键字搜索程序包名及summary信息
查看指定包所依赖的capabilities:
yum deplist package1 [package2] […]
查看yum事务历史:
yum history [info|list|packages-list|packages-info|
summary|addon-info|redo|undo|
rollback|new|sync|stats]
yum history
yum history info 6
yum history undo 6
日志 :/var/log/yum.log
安装及升级本地程序包:
yum localinstall rpmfile1 [rpmfile2] […]
(用install替代)
yum localupdate rpmfile1 [rpmfile2] […]
(用update替代)
包组管理的相关命令:
yum groupinstall group1 [group2] […]
yum groupupdate group1 [group2] […]
yum grouplist [hidden] [groupwildcard] […]
yum groupremove group1 [group2] […]
yum groupinfo group1 […]
yum的命令行选项:
–nogpgcheck:禁止进行gpg check
-y: 自动回答为“yes”
-q:静默模式
–disablerepo=repoidglob:临时禁用此处指定的repo
–enablerepo=repoidglob:临时启用此处指定的repo
–noplugins:禁用所有插件
适用于不能卸载依赖的包
yum history undo 12 撤销yum的第12条历史(反着来)
yum history redo 19 再次执行第19条命令
安装包组
yum groupinstall groupname 若名字之间有空格需加引号
查看包组信息
yum grouplist 包组名  前面有等号的表示已经装好随着安装包组时装的
                      无等号的表示包已经装好是随着系统的安装一起装的
构建仓库
createrepo [options] <directory>
例:createrepo  /data

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/96804

(0)
路在脚下路在脚下
上一篇 2018-04-22
下一篇 2018-04-22

相关推荐

  • 软件包管理 1 —–基本知识 rpm yum

    软件包管理,要做到如何管理软件 ,包括安装 ,卸载, 基本的功能查询,搜索等重点如何使用rpm包yum管理如何编译安装**软件 运行和编译 **ABI:Application Binary Interface 操作系统接口标准,调用2进制程序的接口Windows 与Linux不兼容ELF(Executable and Linkable Format)PE (…

    Linux笔记 2018-04-22
  • N31第三周作业

    本周(7.2–7.8)第3周 1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可 [a@localhost ~]$ who | cut -d” ” -f1 | sort -u a [a@localhost ~]$ who a pts/0 2018-07-09 09:14 (192.16…

    Linux笔记 2018-07-09
  • 内核空间与用户空间,进程与线程以及上下文

    个人理解,比较啰嗦,逻辑性也不强。如果有疑问可以讨论,或者有大佬提点也是可以的。

    2018-03-30
  • 在VMware上安装CentOS 6 教程

    一、下载并安装虚拟机软件VMware Workstation 14 下载地址: https://www.vmware.com/products/workstation-pro/workstation-pro-evaluation.html 下载完成后,从网上搜一个注册码来安装注册 二、下载CentOS 6.9安装镜像 下载地址: http://mirrors…

    2018-03-29
  • 用户管理类命令

    1.列出当前系统上所有已经登录的用户的用户名,注意,同一个用户登录多次则只显示一次 [root@localhost tmp]# who |cut -d” ” -f1 |sort -u root test zach 2.取出最后登录到当前系统的用户的相关信息 [root@localhost tmp]# grep $(w|tail -n 1 |awk -F ” …

    Linux笔记 2018-05-27