Linux系统的早期,编译是利用程序代码生成可执行文件的过程的手动编译。虽具有一定优势,但是专业知识要求高,不利于实际操作。因此出现了许多软件包管理器,最具代表的是由Red Hat 推出的RPM。Yum则有利于解决linux安装软件时的依赖性。
所谓依赖性,就是linux系统中的软件将不同的功能模块单独写入到不同的软件包中,最后将多个相互依存的软件包结合起来形成一个应用程序(网上答案)。通俗来说,就是你在linux安装程序时,会接二连三的要求你先安装与正要安装的程序有依赖性的软件才可以。
以下分别讲述rpm与yum
rpm包命名方式:
name -VERSION-release.arch.rpm
VERSION: minor major release
release: release.OS
常见的arch:
×86:i386, i486, i586, i686
×86_64: ×64, ×86_64, amd64
以下是RPM软件包名称格式:
包命名和工具:
Linux软件安装包的类型
通常Linux应用软件的安装包有三种:
1) tar包,如software-1.2.3-1.tar.gz。他是使用UNIX系统的打包工具tar打包的。
2) rpm包,如software-1.2.3-1.i386.rpm。他是Redhat Linux提供的一种包封装格式(www.rpmfind.NET)。
3) dpkg包,如software-1.2.3-1.deb。他是Debain Linux提供的一种包封装格式。
4) bin包,如RealPlayer11GOLD.bin,它是realplayer的linux文件下的二进制安装格式,它是源程序经过编译后的一种机器语言。
5)脚本安装文件,这一类格式比较多,例如后缀为sh、pl、run的文件都是脚本文件。不过对于普通用户不太常见。安装这类文件要注意的问题是,多数要给文件先增加可执行权限,否则有可能会提示找不到文件。具体方法:终端或控制台下执行 chmod +x ***.*,然后再安装。
一:rpm
Rpm命令基本格式:
rpm [option]
-q : 使用查询模式
-a : 查询所有软件包
-i : 显示所有详细信息。如果指定了软件包,则安装软件包
–install 安装
–test 检测
–nodeps 忽略依赖性关系直接安装
–replacepkgs 已安装过的包重装
–nosignature 不检查来源合法性
–nodigest 不检查包完整性
–noscripts 不执行程序包脚本
%pre: 安装前脚本; –nopre
%post: 安装后脚本; –nopost
%preun: 卸载前脚本; –nopreun
%postun: 卸载后脚本; –nopostun
-l : 显示软件包的文件列表
-p : 查询指定的软件包
-f : 查询指定文件所属软件包
-v : 显示命令执行过程
-h : 安装软件包时显示进度信息
-e : 卸载指定的软件包
-U : 升级软件包
实例:
如果想查看已经安装的所有软件包:
[root@localhost ~]# rpm -qa
如果想查看某个软件包:
[root@localhost ~]# rpm -qa | grep “软件包名”
查询文件所属软件包(需要输入文件的绝对路径)
[root@localhost ~]# which ls
[root@localhost ~]# rpm -qf /usr/bin/ls
使用rpm命令安装软件包
[root@localhost ~]# df #查看光盘是否挂载
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 48803552 4772816 44030736 10% /
devtmpfs 1001392 0 1001392 0% /dev
tmpfs 1016064 84 1015980 1% /dev/shm
tmpfs 1016064 9172 1006892 1% /run
tmpfs 1016064 0 1016064 0% /sys/fs/cgroup
/dev/sda5 48803552 33008 48770544 1% /app
/dev/sda1 972452 156004 816448 17% /boot
tmpfs 203216 16 203200 1% /run/user/42
tmpfs 203216 0 203216 0% /run/user/0
/dev/sr0 8086368 8086368 0 100% /media
[root@localhost ~]# cd /media
[root@localhost media]# ls
CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7
EFI images Packages RPM-GPG-KEY-CentOS-Testing-7
EULA isolinux repodata TRANS.TBL
[root@localhost media]# cd Packages/
[root@localhost Packages]# rpm -ivh tree-1.6.0-10.el7.x86_64.rpm
Preparing… ################################# [100%]
Updating / installing…
1:tree-1.6.0-10.el7 ################################# [100%]
[root@localhost Packages]# rpm -qa tree
tree-1.6.0-10.el7.x86_64
使用rpm卸载软件包:
[root@localhost Packages]# rpm -e tree
-Uvh 当有旧的版本的包时,则卸载旧包再装新包,如没有旧包,直接装新包
-Fvh 当有旧的包时,卸载旧包装新包,无旧包时,什么也不做
–oldpackage 降级 已有新包,装旧包
–force 强制安装
-q 软件包名 查询已安装过的软件包名。
-qa 列出所有的已安装过的rpm包
-qa “name*”
-qa |grep name
-qf 查询一个文件来自于哪一个rpm包 (已安装的rpm)
-q –changelog 版本更新日志
-qc 查询软件包的配置文件(不是所有包都有配置文件)
-qd 查询软件包的帮助文档
-qi 查询软件包的详细信息
-ql 查询软件包所安装到系统当中的所有文件路径
-q –scripts 查询软件包自带的脚本
-q –provides 查询自身的功能
-qR 查询实现自身的功能需要什么能力
-qp[licd] rpm包 查看未安装的rpm包的各项信息二:yum
-e 软件名
–nodeps 忽略依赖性。强制卸载
二:yum
Yum有yum仓库,yum仓库里放着rpm包文件和元数据文件(放置于特定目录repodate下)。其工作原理是:
当执行yum install rpmfilename(安装软件包时),会先下载元数据里记录rpm依赖关系数据的文件,同时临时产生一个文件来缓存这些数据,然后就会下载所有有依赖关系的安装包,最后执行安装,安装完成之后会删除那个临时文件。
Yum配置文件:
/etc/yum.conf: 为所有仓库提供公共配置
/etc/yum.repos.d/*.repo:为仓库的指向提供配置
仓库指向的定义:
[repositoryID]
name=some name for this repository
baseurl=url://path/to/repository
enabled={1|0}
gpgcheck={1|0}
gpgkey=URL
enablegroups={1|0}
failovermethod={roundrobin|priority}
roundrobin:意为随机挑选,默认值
priority:按顺序访问
cost=默认为1000
Yum的用法:
yum check-update 列出所有可更新的软件清单
yum update 安装所有更新软件
yum install <package_name> 仅安装指定的软件
yum remove <package_name> 删除指定软件包
yum list 列出所有可装的软件清单
yum list updates 列出所有可更新的软件包
yum list installed 列出所有已安装的软件包
yum list extras 列出所有已安装但不在yum repository 内的软件包
yum search <keyword> 查找软件包
yum info 列出所有软件包的信息
yum provides <package_name> 列出软件包提供哪些文件
yum clean packages 清除缓存目录(/var/cache/yum)下的软件包
yum clean headers 清除缓存目录(/var/cache/yum)下的headers
以上所列有针对所有文件,若你想只针对单个包文件进行操作,只需跟上包文件名就可以了。
注意:不建议只执行yum update命令,因为会造成所有软件都会更新安装,如非需要,在工作中尽量不要执行此条命令。
原创文章,作者:xxcj,如若转载,请注明出处:http://www.178linux.com/84631