一、Linux 软件包管理简介
1、软件包分类
- 源码包 - 脚本安装
- 二进制包 -(RPM 包, 系统默认包)
2、源码包优缺点
源码包优点:
- 开源,可以看到,并且可以修改源代码。
- 可以自由选择所需要的工能。
- 软件是编译安装,更加适合自己的系统,更稳定,更高效
- 卸载方便。
源码包缺点:
- 安装步骤比较多,容易出现错误。
- 相对于二进制包,源码包编译时间较长。
- 因为是编译安装, 一旦出现错误, 新手很难解决。
3、二进制包的优缺点
二进制包优点:
- 包管理系统简单,只通过几个命令就可以实现包的安装,更新,升级,卸载。
- 安装速度比源码包快很多。
二进制包缺点:
- 代码是经过编译过的, 所以无法看到源代码。
- 工能选择不如源代码包灵活。
- 依赖性。(例如:a 包 依赖于 b 包, b 包依赖于 c 包, 那么安装顺序必须是 c =》b =》a)
二、RPM 命令管理
1、RPM 包命名规则
例:nginx-1.10.3-1.el6.ngx.x86_64.rpm
- nginx:软件包名
- 1.10.3:软件版本
- 1:软件发布的次数
- el6.ngx:适合的linux平台
- x86_64:适合的硬件平台
- rpm:rpm包后缀名
2、包全名和包名
- 包全名:操作的包是没有安装过的软件包时,使用包全名,并且需要注意路径
- 包名:操作已经安装的软件包时,使用包名。(是搜索“/var/lib/rpm”中的数据库)
3、RPM 安装
命令:rpm -ivh 包全名
命令 | 作用 |
-i(install) | 安装 |
-v(verbose) | 显示详细信息 |
-h(hash) | 显示进度 |
-e(erase) | 卸载软件包 |
-U(update) | 更新软件包 |
例如:
# 1.直接安装软件包
[root@TR ~]# rpm -ivh packge.rpm
# 2.列出所有安装过的包:
[root@TR ~]# rpm -qa
# 3.卸载rpm包
[root@TR ~]# rpm -e package.rpm
# 4.升级软件包
[root@TR ~]# rpm -U file.rpm
# 5.查询rpm包中的文件安装的位置
[root@TR ~]# rpm -qa ls
3、yum命令管理
yum并不是源码包,yum是基于rpm的软件包管理器,它可以使系统管理人员交互和自动化地更新与管理RPM软件包,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。
3.1、网络yum 源
以Centos为例, yum源的路径默认是 “/etc/yum.repos.d/CentOS-Base.repo”,
名称 | 作用 |
name | 容器说明(可以自己随便写) |
baseurl | yum源服务器的地址。默认是CentOS官方的yum源服务器,是可以使用的,不过由于服务器在国外,网速比较慢。可以换成国内的,比如阿里云的yum源地址。 |
gpgcheck | 如果是1是指RPM的数字证书生效,如果是0则不生效 |
enabled | 此容器是否生效,如果不写或写成 enable=1 都是生效,写成 enable=0 就是不生效 |
gpgkey | 数字证书的公钥文件保存位置。不用修改 |
3.2、yum 常用命令
① yum list: 查询所有软件包列表。
② yum search [关键字]:搜索服务器上所有与关键字相关的包
③ yum -y install [包名] : 安装 yum 包 (-y:自动回答yes )
④ yum -y update [包名] : 升级 yum 包 (-y:自动回答yes )
⑤ yum -y remove [包名] : 卸载 yum 包 (-y:自动回答yes )
三、源码包、RPM包比较
1、源码包和RPM包的区别
- 源码包是开源的, 安装更自由。
- 源码包比RPM包安装的更慢,更容易报错。
- 安装位置不同,RPM 包会安装到系统指定的位置, 而源码包则安装在用户指定的位置(一般安装在 “/usr/local/软件名/”)。
2、RPM包的默认安装路径
RPM包默认安装路径(绝大多数) | |
/etc/ | 配置文件安装目录 |
/usr/bin | 可执行的命令安装目录 |
/usr/lib | 程序所使用的函数库保存位置 |
/usr/share/doc/ | 基本的软件使用手册保存位置 |
/usr/share/man/ | 帮助文件保存位置 |
3、RPM包启动方式
使用RPM包安装方式, 启动有两种方式
# 第一种, 使用绝对路径
[root@TR ~]# cd /etc/rc.d/init.d/包名称 start
# 第二种,
[root@TR ~]# service 包名称 start