1、软件包管理
1.1、软件包分类
- 二进制包
- 二进制包,指的是已经下好了的软件包,只需要直接安装就可以使用。
- 二进制包,不需要编译,直接下载安装即可
- 二进制包,需要根据自己的计算机CPU以及操作系统去选择合适的
- 二进制包,命名方式一般为: xlockmore-5.31-2.el6.x86_64.rpm
- 源码包
- 源码包,指的是程序员写的原始的程序代码文件,不能够直接在计算机上运行。
- 源码包,需要进行编译,变成二进制的软件包后,才可安装使用
- 源码包,一般可以在任何的计算机上安装使用
- 源码包,命名方式一般为:
软件包名.tar.gz
软件包名.tar.bz2
软件包名.tar.xz
软件包名.zip
- 二进制源码包(了解)
- 二进制源码包,是一个半成品,安装后不能直接使用
- 二进制源码包,需要使用 rpmbuild 工具重建成真正的 rpm 包或者重建成源码包才可安装使用
- 二进制源码包,命名方式一般为:
mysql-community-5.7.25-1.el6.src.rpm
mysql-community-5.7.25-1.el7.src.rpm
- 二进制和源码包区别
软件包类型 | 是否编译 | 安装难易程度 | 可定制性 |
二进制包 | 否 | 易(容易安装) | 差 |
源码包 | 是 | 难(配置->编译->安装) | 好 |
2、软件包安装方式
2.1、二进制包
- rpm工具安装
- 首先,需要下载好rpm包到本地
- 然后,直接使用rpm工具安装
- yum/dnf工具安装
- 首先,需要配置软件仓库(里面存放很多软件包,但不一定在本地)
- 然后,使用yum/dnf工具安装
2.2、源码包
- 根据需求配置
功能的定制 - 编译
使用编译器编译成二进制的软件包 - 安装
将软件包安装到指定位置 - 源码包安装优点
- 可以在任意平台编译安装,编译出来的软件包非常适应所在机器。
- 可以在编译的时候,通过配置,对某些功能进行定制,开启或关闭相应的功能
3、二进制rpm包管理
3.1、获取rpm包
Linux只是内核,Linux发行版本:GNU/Linux
1.光盘
2.推荐网站
www.rpmfind.net
rpm.pbone.net
3.2、选择合适的rpm包
- 选择适合当前系统的版本号
找不到适合的,才去尝试别的系统版本号
el6兼容el5;el5无法安装 el6 - 选择适合当前计算机cpu的架构
x86_64包,只能安装在64位的系统上
i386,i586,i686的软件包可以安装在32和64位系统上
noarch表示这个软件包与硬件构架无关,可以通用
32位系统不能安装64位包
建议: 建议不要跨大版本号去安装软件包,尽量使用当前版本自带软件包安装
3.3、管理rpm包
- rpm工具管理
rpm工具安装rpm包
# rpm -ivh 软件包
注意:软件包的名字必须写全,xxx.rpm
- rpm工具卸载rpm包
# rpm -e 软件包名字
注意:卸载软件只需要跟软件包名字即可
- rpm包升级rpm包
# rpm -Uvh 软件包
或者
# rpm -Fvh 软件包
选项说明:
-v:输出详细信息
-h:打印散列标记,一般和-v一起使用
-U:升级软件包,如果该软件包没安装,会自动帮你安装
-F:升级软件包,如果该软件包没安装,不会自动帮你安装
- 查看rpm包相关信息
查看已经安装的软件的文件列表
rpm -ql 软件包名
查看未安装的rpm包里的文件列表
rpm -qlp 软件包(xxx.rpm)
查看已经安装的所有rpm包
rpm -qa 软件包名
rpm -aq|grep 软件包名字
查看已经安装软件的文档列表
rpm -qd 软件包名
查看已经安装软件的配置文件
rpm -qc 软件包名
查看已经安装软件的详细信息
rpm -qi 软件包名
查看指定文件来自哪个rpm包
rpm -qf 文件名
- rpm工具其他安装选项
--force 表示强制
rpm -ivh 软件包 --force 强制安装软件包
rpm -e 软件包名 --force 强制卸载软件包
--nodeps 忽略依赖关系
rpm -ivh 软件包 --nodeps 忽略依赖关系安装
rpm -e 软件包 --nodeps 忽略依赖关系卸载
其他了解:
rpm --import key_file 导入公钥用于检查rpm文件的签名
rpm --checksig package.rpm 检查rpm包的签名
- rpm工具管理rpm软件包
安装、卸载、升级、查看
缺点:有依赖关系需要我们人肉去解决 A---->B和C
3.4、yum(dnf)工具管理
yum/dnf优点:能够自动解决依赖关系
核心:需要有一个软件仓库,软件仓库指的是来存放软件包和软件之间的依赖关系的地方。
- 软件仓库
- 仓库可以在本地----> 本地yum源
- 仓库可以在远程---->网络yum源---->网络必须ok
- 配置本地yum仓库
[root@tedu ~]# mkdir /dvd #创建访问点、让我们的光驱文件到这个目 录来
[root@tedu ~]# ls /dvd/
- 挂载光盘或分区
使用mount命令
语法: mount 设备路径 挂载目录
[root@tedu ~]# ls /dev/cdrom
/dev/cdrom
#青色:快捷方式
[root@tedu ~]# ls -l /dev/cdrom #详细信息
lrwxrwxrwx. 1 root root 3 3月 2 07:49 /dev/cdrom -> sr0
#主要是为了方便我们使用
[root@tedu ~]# mount /dev/cdrom /dvd/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@tedu ~]# ls /dvd/
CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7
EFI images Packages RPM-GPG-KEY-CentOS-Testing-7
EULA isolinux repodata TRANS.TBL
#软件包都放在Packages中
[root@tedu ~]# ls /dvd/Packages/
3.5、下载软件包(wget)
使用wget下载工具
wget 软件包网址URL
wget 软件包的URL网址 -O(大写) /目录路径/文件名
[root@tedu ~]# wget https://qd.myapp.com/myapp/qqteam/linuxQQ/linuxqq_2.0.0-b11024_x86_64.rpm
[root@tedu ~]# rpm -q linuxqq
未安装软件包 linuxqq
[root@tedu ~]# rpm -q firefox #显示已经安装
firefox-52.2.0-2.el7.centos.x86_64
[root@tedu ~]# rpm -q net-tools net-tools-2.0-0.22.20131004git.el7.x86_64
[root@tedu ~]# rpm -q zip zip-3.0-11.el7.x86_64
[root@tedu ~]# rpm -i linuxqq_2.0.0-b1-1024_x86_64.rpm #安装
[root@tedu ~]# rpm -ql linuxqq #查看安装详情
/usr/share/applications/qq.desktop
/usr/share/tencent-qq
/usr/share/tencent-qq/crashpad_handler
/usr/share/tencent-qq/qq
/usr/share/tencent-qq/qq.bmp
/usr/share/tencent-qq/qq.png
/usr/share/tencent-qq/res.db
[root@tedu ~]#
[root@tedu ~]# rpm -e linuxqq
[root@tedu ~]# rpm -q linuxqq
未安装软件包 linuxqq
[root@tedu ~]# rpm -ivh linuxqq_2.0.0-b1-1024_x86_64.rpm
准备中... #################################
[100%] 正在升级/安装...
1:linuxqq-2.0.0-b1 ################################# [100%]
安装包有依赖关系
[root@tedu ~]# ls /dvd/Packages/httpd-2.4.6-67.el7.centos.x86_64.rpm
/dvd/Packages/httpd-2.4.6-67.el7.centos.x86_64.rpm
[root@tedu ~]# cp /dvd/Packages/httpd-2.4.6-67.el7.centos.x86_64.rpm /root/
[root@tedu ~]# ls /root/
[root@tedu ~]# rpm -ivh /root/httpd-2.4.6-67.el7.centos.x86_64.rpm
警告:/root/httpd-2.4.6-67.el7.centos.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
错误:依赖检测失败:
/etc/mime.types 被 httpd-2.4.6-67.el7.centos.x86_64 需要
httpd-tools = 2.4.6-67.el7.centos 被 httpd-2.4.6-67.el7.centos.x86_64 需要
libapr-1.so.0()(64bit) 被 httpd-2.4.6-67.el7.centos.x86_64 需要
libaprutil-1.so.0()(64bit) 被 httpd-2.4.6-67.el7.centos.x86_64 需要
(不建议靠人来解决这个依赖关系、我们希望可以让他自己决绝)
[root@tedu ~]# yum install gtk2.x86_64 #安装qq时候的依赖包
已加载插件:fastestmirror, langpacks
base | 3.6 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
updates/7/x86_64/primary_db | 6.7 MB 00:00:03
Determining fastest mirrors
* base: mirror.bit.edu.cn
* extras: mirror.bit.edu.cn
* updates: mirrors.aliyun.com
软件包 gtk2-2.24.31-1.el7.x86_64 已安装并且是最新版本
无须任何处理
您在 /var/spool/mail/root 中有邮件
[root@tedu ~]# rpm -e linuxqq
[root@tedu ~]# rpm -ivh linuxqq_2.0.0-b1-1024_x86_64.rpm
准备中... ################################# [100%]
正在升级/安装... 1:linuxqq-2.0.0-b1 ################################# [100%]
### 使用yum命令管理软件
##### Yellowdog Update Manager黄狗升级管理器
yum repolist #列仓库
yum list [软件名] #列软件
yum clean all #请缓存
yum -y install [软件名] #安装软件
yum -y remove [软件名] #卸载软件
yum info [软件名]
自动解决依赖关系
服务:自动解决依赖关系安装软件包
服务端:提供服务
客户端:虚拟机
客户端:虚拟机server
修改Yum客户端配置文件,指定服务端位置
/etc/yum.repos.d/*.repo
错误的配置文件,会影响正确的配置文件
[root@tedu ~]# rm -rf /etc/yum.repos.d/* #清楚干扰配置
修改清华源
访问网址:https://mirrors.cnnic.cn/
![image-20200304003848163](C:\Users\13585\AppData\Roaming\Typora\typora-userimages\image-20200304003848163.png)
[root@tedu ~]# vim /etc/yum.repos.d/CentOS-Base.repo #修改文件
[root@tedu ~]# yum makecache #更新软件包
[root@tedu ~]# yum repolist #列出仓库信息
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
源标识 源名称 状态
base/7/x86_64 CentOS-7 - Base 10,097
extras/7/x86_64 CentOS-7 - Extras 323
updates/7/x86_64 CentOS-7 - Updates 1,478
repolist: 11,898