Linux程序包管理及sed命令简述

1、简述rpm与yum命令的常见选项,并举例

rpm即RedHat系列发行版的程序包管理工具,即为RPM package Manager。yum是RedHat系列RPM的前端管理工具,其主要是解决程序在安装或卸载过程中RPM包的依赖关系,为其用户更方便快捷的安装程序。

rpm命令

格式:rpm [OPTIONS] PACKAGE.FILE

安装:-i --install

升级:-U --update,-F --freshen

卸载:-e --erase

查询:-q --query

校验:-V --verify

数据库维护:--builddb,--initdb


rpm -i 安装:

安装rpm包-i选项可与-v(显示其详细信息)、-h(输出进度条)合并使用,例如:我们要装个zsh的程序包,需要有zsh的rpm存在,然后进行安装。

rpm -ivh zsh-5.0.2-28.el7.x86_64.rpm 安装其后面所跟的包名必须是全路径,全包名。

[root@localhost ~]# ls
anaconda-ks.cfg  zsh-5.0.2-28.el7.x86_64.rpm
[root@localhost ~]# rpm -qa | grep zsh
[root@localhost ~]# rpm -ivh zsh-5.0.2-28.el7.x86_64.rpm 
warning: zsh-5.0.2-28.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:zsh-5.0.2-28.el7                 ################################# [100%]
[root@localhost ~]# rpm -qa | grep zsh
zsh-5.0.2-28.el7.x86_64
[root@localhost ~]# 

我的主机上没有zsh这个rpm包,通过rpm -qa 可查询已安装的rpm包是否有zsh这个rpm包,以上相信大家都看得懂。

rpm -v 通用选项 显示安装的详细信息;

rpm -vv 显示安装更详细的过程输出信息;

rpm -h  [hash marks] 安装输出显示进度条,每个#表示2%的进度;

其中,rpm -i 和-v,-h可合并使用,事实上,-vh可合并使用在-i,-e等选项中;

install options:rpm -i 安装rpm包有安装属性选项,如以下属性选项:

--test 测试安装,检查并报告其依赖关系和冲突消息等,用法:rpm -i --test PACKAGE_NAME;

--nodeps 忽略依赖关系,不建议使用,用法:rpm -ivh --nodeps;

--replacepkgs 重新安装,主要应用于配置文件遭改动等,用法:rpm -i --replacepkgs;

另外:rpm包安装文档里自带的有四类脚本文件:

preinstall 安装过程开始之前运行的脚本,表示为%pre;

postinstall 安装过程完成之后运行的脚本,表示为%post;

preuninstall 卸载前执行的脚本,%preun;

postuninsatll 卸载后执行的脚本,%postun;

选项属性:rpm -i --noscripts,--nopre,--nopost,--nopreun,--nopostun;

--nosignature 不检查包签名信息,不检查来源合法性,用法:rpm -i --nosignature;

--nodigest 不检查包完整性,用法:rpm -i --nodigest;


rpm -U 升级(升级安装,-F只有安装了老版本需要升级新版本,使用-F选项)

用法:rpm -Uvh;rpm -Fvh

其也有属性选项:--oldpackage 降级安装;--force 强制升级安装,因为有的升级安装需要解决其依赖关系,故可使用--force来强制安装升级。(这里介绍的都是常有的选项属性,并非全部,如需详细了解可man或查看相关文档,这里没有需要升级安装的rpm,就不做演示了,嘻嘻。)


rpm -e 卸载

用法:rpm -e packagename 包名字,而非文件路径,或包全名即可。

[root@localhost ~]# rpm -qa | grep zsh
zsh-5.0.2-28.el7.x86_64
[root@localhost ~]# rpm -evh zsh
Preparing...                          ################################# [100%]
Cleaning up / removing...
   1:zsh-5.0.2-28.el7                 ################################# [100%]
[root@localhost ~]# rpm -qa | grep zsh
[root@localhost ~]# 

以上我已卸载了之前安装过的zshRPM包,当然,当时安装的时候没有安装,也没有所依赖的rpm包,所有rpm -e 没有什么错误提示,如果你在安装其他的rpm包需要先安装依赖包,那么卸载的时候也需要查看提示信息是否需要先卸载依赖包。(其实这里可以使用yum管理工具卸载更省心,呵呵。)

rpm -e 也有选项属性:比如:

--allmatches 卸载所有匹配指定名称的程序包的各个版本;

--nodeps 忽略依赖关系卸载;

--test 测试卸载,不是真正的卸载,只是测试使用,如dry run(干跑)模式。


rpm -q 查询安装相关信息

用法:rpm -q select options | query options

select options:(选择属性)其后跟的参数为package_name,程序名。

-qa 查询已安装的所有程序包 (此操作刷屏严重,故不演示了,自行查看其内容)

-qf FILE 其后可跟个文件名,查询指定文件是由哪个程序包安装生成的

[root@localhost ~]# rpm -qf /bin/ls
coreutils-8.22-18.el7.x86_64
[root@localhost ~]# rpm -qf /bin/cd
bash-4.2.46-28.el7.x86_64
[root@localhost ~]# rpm -qf /bin/cp
coreutils-8.22-18.el7.x86_64
[root@localhost ~]# rpm -qf /bin/pwd
coreutils-8.22-18.el7.x86_64
[root@localhost ~]# 

以上是查看ls,cd,cp,pwd这些命令,Linux下这些命令也是文件,是由哪个程序包安装生成的。

-qp 用于实现对未安装的程序包执行查询操作,其后有--whatprovides CAPABILITY,未安装的程序包有哪些特性;

[root@localhost ~]# rpm -qa | grep zsh
[root@localhost ~]# rpm -qp zsh-5.0.2-28.el7.x86_64.rpm 
warning: zsh-5.0.2-28.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
zsh-5.0.2-28.el7.x86_64
[root@localhost ~]# rpm -qp zsh-5.0.2-28.el7.x86_64.rpm --whatprovides
rpm: one type of query/verify may be performed at a time
[root@localhost ~]# 

--whatprovides CAPABILITY 查询指定的CAPABILITY由哪个程序包提供;

--whatprovides CAPABILITY 查询指定的CAPABILITY被哪个程序包所依赖;

query options(查询选项)其后跟的参数是程序包的包名

--changelog 查询rpm包的changelog

-ql 程序安装生成的所有文件列表;

-qi 程序包的相关信息,版本号,大小,所属的包组等;

-qc 查询指定的程序提供的配置文件

-qd 查询指定的程序提供的帮助文件

[root@localhost ~]# rpm -ql zsh
/bin/zsh
/etc/skel/.zshrc
/etc/zlogin
/etc/zlogout
/etc/zprofile
/etc/zshenv
/etc/zshrc
/usr/lib64/zsh
/usr/lib64/zsh/5.0.2
[root@localhost ~]# rpm -qi zsh
Name        : zsh
Version     : 5.0.2
Release     : 28.el7
Architecture: x86_64
Install Date: Fri 06 Jul 2018 06:48:13 PM CST
Group       : System Environment/Shells
Size        : 5855982
License     : MIT
Signature   : RSA/SHA256, Fri 11 Aug 2017 04:28:17 AM CST, Key ID 24c6a8a7f4a80eb5
Source RPM  : zsh-5.0.2-28.el7.src.rpm
Build Date  : Wed 02 Aug 2017 06:52:37 PM CST
Build Host  : c1bm.rdu2.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://zsh.sourceforge.net/
Summary     : Powerful interactive shell
Description :
The zsh shell is a command interpreter usable as an interactive login
shell and as a shell script command processor.  Zsh resembles the ksh
shell (the Korn shell), but includes many enhancements.  Zsh supports
command line editing, built-in spelling correction, programmable
command completion, shell functions (with autoloading), a history
mechanism, and more.
[root@localhost ~]# 
[root@localhost ~]# rpm -qc zsh
/etc/skel/.zshrc
/etc/zlogin
/etc/zlogout
/etc/zprofile
/etc/zshenv
/etc/zshrc
[root@localhost ~]# rpm -qd zsh
/usr/share/doc/zsh-5.0.2/BUGS
/usr/share/doc/zsh-5.0.2/CONTRIBUTORS
/usr/share/doc/zsh-5.0.2/FAQ
/usr/share/doc/zsh-5.0.2/FEATURES
/usr/share/doc/zsh-5.0.2/LICENCE
/usr/share/doc/zsh-5.0.2/MACHINES
/usr/share/doc/zsh-5.0.2/NEWS
/usr/share/doc/zsh-5.0.2/README
/usr/share/doc/zsh-5.0.2/completion-style-guide
/usr/share/doc/zsh-5.0.2/zsh-development-guide
/usr/share/doc/zsh-5.0.2/zshprompt.pl

--provides 查询指定的程序包提供的所有的CAPABILITY;

-R 查询指定的程序包的依赖关系;

--scripts 查询程序包自带的脚本信息;

[root@localhost ~]# rpm -q --provides zsh
config(zsh) = 5.0.2-28.el7
zsh = 5.0.2-28.el7
zsh(x86-64) = 5.0.2-28.el7
[root@localhost ~]# rpm -qR zsh
/bin/sh
/bin/sh
/bin/sh
/bin/sh
/bin/zsh
/sbin/install-info
/sbin/install-info
config(zsh) = 5.0.2-28.el7
[root@localhost ~]# rpm -q --scripts zsh
postinstall scriptlet (using /bin/sh):
if [ ! -f /etc/shells ] ; then
    echo "/bin/zsh" > /etc/shells
else
    grep -q "^/bin/zsh$" /etc/shells || echo "/bin/zsh" >> /etc/shells
fi

if [ -f /usr/share/info/zsh.info.gz ]; then
# This is needed so that --excludedocs works.
/sbin/install-info /usr/share/info/zsh.info.gz /usr/share/info/dir \
  --entry="* zsh: (zsh).			An enhanced bourne shell."
fi

:
preuninstall scriptlet (using /bin/sh):
if [ "$1" = 0 ] ; then
    if [ -f /usr/share/info/zsh.info.gz ]; then
    # This is needed so that --excludedocs works.
    /sbin/install-info --delete /usr/share/info/zsh.info.gz /usr/share/info/dir \
      --entry="* zsh: (zsh).			An enhanced bourne
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值