软件包安装
软件包管理简介
软件包分类
软件包的分类
- 源码包
- 二进制包
源码包
🎈源码包优点:
- 开源,如果有足够的能力,可以根据自己的需要修改代码
- 可以自由选择所需的功能
- 软件是编译安装,所以更加适合自己的系统,更加稳定效率也更高
- 卸载方便
🎈源码包缺点:
- 安装过程的步骤较多,容易出现错误
- 编译的时间较长,安装的时间比二进制包时间长
- 编译安装,一旦出现错误一般人很难解决
二进制包
分类:DPKG包、RPM包
🚀二进制包的优点:
- 安装简单
- 安装速度快
🚀二进制包的缺点:
- 经过编译,不能看见源码
- 功能选择不够灵活
- 依赖性
RPM包管理——RPM命令管理
RPM包的命名规则
httpd-2.4.6-80.el7.centos.x86_64.rpm
- httpd:软件包名
- 2.4.6:软件版本
- 80:软件发行次数
- el7.centos:软件发行商
- x86_64:适合的硬件平台
- rpm:RPM包的扩展名
RPM包的依赖性
- 树形依赖 a->b->c
在使用rpm来安装RPM包时,会因为RPM包的依赖性而导致失败,所以要按顺序安装,安装c需要先安装b,安装b需要先安装a,卸载的时候要先卸载a,在卸载b,最后卸载c - 环形依赖 a->b->c->a
当遇见环形依赖时,有些人就会认为这是一个死局,毕竟无论如何从环形依赖当中跳出来,其实解决方法很简单——把软件包a、b、c、用一条命令同时安装就能解决环形依赖问题 - 函数库依赖
当出现函数库依赖时,前往依赖查询网站:www.rpmfind.net搜索报错提示中的函数库名,并且安装就可以解决。
RPM包的安装与升级
RPM包一般都有系统默认的安装路径,而源码包一般要手工指定安装路径(/usr/local)
安装路径 | 含义 |
/etc | 配置文件安装目录 |
/usr/bin | 可执行命令安装目录 |
/usr/lib | 程序所用的函数库保存位置 |
/usr/share/doc | 基本的软件使用手册保存位置 |
/usr/share/man | 帮助文件保存位置 |
[root@localhost~]# rpm -ivh 包全名 #包全名,注意含有包全名的路径要使用绝对路径 -i:安装(install) -v:显示更详细的信息(verbose) -h:打印#,显示安装进度(hash) --nodeps:不检测依赖性安装 --replacefiles:替换文件安装,若已经安装的软件包的部分文件损坏,可以使用这个命令修复 --replacepkgs:替换软件包安装,将软件包重复安装一遍 --force:强制安装 --test:测试安装,不会安装,只是检测一下依赖性 --prefix:指定安装路径
[root@localhost~]# rpm -Uvh 包全名 -U:升级安装,若没有则先安装再升级(upgrade) [root@localhost~]# rpm -Fvh 包全名 -F:升级安装,没有就不安装(freshen)
RPM包的查询
[root@localhost~]# rpm 选项 查询对象 [root@localhost~]# rpm -q 包名 -q:查询(query) [root@localhost~]# rpm -qa #查询系统中所有安装软件包 [root@localhost~]# rpm -qi 包名 -i:查询软件信息(information) [root@localhost~]# rpm -ql 包名 -l:列出软件包中的所有文件列表和软件所安装的目录(list) [root@localhost~]# rpm -qlp 包全名 -p:查询没有安装的软件包的信息(package) [root@localhost~]# rpm -qf 系统文件名 -f:查询系统文件属于哪个软件包(file) [root@localhost~]# rpm -qR 包名 -R:查询软件包的依赖性(requires)
RPM包的卸载
[root@localhost~]# rpm -e 包名 -e:卸载(erase) --nodeps:不检测依赖性
不检测依赖性的话,会导致其他的软件包无法使用,不建议使用
RPM包的校验
[root@localhost~]# rpm -V 已安装的包名 -Va:校验所有已安装的软件包(verify) -Vf 系统文件名:校验某个系统文件
RPM包管理——yum在线管理
yum源的搭建
yum源既可以是网络yum源,也可以是本地光盘作为yum源。
网络yum源服务器搭建
在网络正常的情况下,Centos的yum是可以直接使用的。yum源配置文件保存在/etc/yum.repos.d目录中,文件的拓展名一定是*.repo*
[root@localhost ~]# ls /etc/yum.repos.d/ CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo CentOS-x86_64-kernel.repo
默认情况下CentOS-Base.repo文件生效
[base] name=CentOS-$releasever - Base mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 ······
文件里有五个yum源容器,这里以第一个为例
- [base]:容器名称,一定要放在[]中
- name:容器说明
- mirrorlist:镜像站点,这个可以注释掉
- baseurl:我们的yum源服务器的地址,默认官方地址,可以修改为你喜欢的yum源地址
- enabled:此容器是否生效,若不写或等于1说明生效,若等于0则说明不生效
- gpgcheck:代表RPM数字证书是否生效
- gpgkey:数字证书公钥保存位置
本地yum源搭建
- 挂载光盘
[root@localhost~]# mount /dev/cdrom /mnt/cdrom
- 修改其他几个yum源配置文件的拓展名,让他们失效,主要修改拓展名“.repo”
[root@localhost~]# cd /etc/yum.repos.d/ [root@localhost yum.repos.d]# mv Centos-Base.repo Centos-Base.repo.bak [root@localhost yum.repos.d]# mv Centos-Debuginfo.repo Centos-Debuginfo.repo.bak [root@localhost yum.repos.d]# mv Centos-Vault.repo Centos-Vault.repo.bak
- 修改光盘yum源配置文件CentOS-Media.repo
[root@localhost yum.repos.d]# vim CentOS-Media.repo [c7-media] name=CentOS-$releasever - Media baseurl=file:///mnt/cdrom #地址为光盘挂载地址 # file:///media/cdrom/ # file:///media/cdrecorder/ gpgcheck=1 enabled=1 #让这个配置文件生效 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
常用yum命令
查询
- 查询所有软件包
[root@localhost ~]# yum list
- 查询是否yum服务器中是否包含某个软件包
[root@localhost ~]# yum list 包名
- 搜索关键字
[root@localhost ~]# yum search 关键字
- 查询指定软件包信息
[root@localhost ~]# yum info 包名
- 查询包含指定内容的软件包,如果我们想安装某个命令
[root@localhost ~]# yum provides 关键字
安装
[root@localhost ~]# yum install -y 包名
更新
[root@localhost ~]# yum -y update 包名
卸载
[root@localhost ~]# yum remove 包名