文章目录
一、软件安装包格式类型
1、在Windows中安装的软件都是.exe格式
2、Linux系统分为Debian和Redhat两大类,在不同系统中软件格式是不同的
Redhat linux(suse、centos、redhat):软件是rpm格式的
Debian(ubuntu、deb):软件是deb格式的
还有些软件是tar(压缩包)格式的,tar格式分为两种,一种是绿色软件(不用安装,调用脚本直接可以运行),另一种是源码编译格式(软件需要编译以后才能运行)
如图所示:安装软件的时候会有区分,redhat虚拟机是不能安装Deb格式的软件
二、rpm包名称分析
以DHCP的安装包为例:
dhcp-4.2.5-68.el7_5.1.x86_64.rpm
<dhcp>-<4.2.5-68>.<el7_5.1>.<x86_64>.<rpm>
[1] [2] [3] [4] [5]
1:软件名称
2.软件版本
3.软件授权
4.软件多少位
5.软件后缀,表示软件包是rpm类型的
三、rpm命令
在管理rpm软件包时用rpm命令
rpm管理命令
rpm的相关参数 | 作用 |
---|---|
-v | 显示过程 |
-h | hash 检测查看软件中的hash值是否有改变 |
-i | 安装 |
-e | 卸载 |
-q | 查看 |
-a | 所有 |
-p | 操作对象为软件包 |
- -scripts | 查看软件在安装或卸载时在系统中执行的脚本 |
- -force | 强制安装 |
- -nodeps | 忽略软件依赖性安装(如果软件的依赖性没解决,该软件不能正常使用) |
- -K | 检测软件是否是原版软件 |
rpm常用组合 | 用法 |
-ivh | 安装软件 |
-ql | 查询生成文件 |
-qa | 查询系统中安装的所有软件名称 |
-qc | 查询软件的配置文件名称 |
实验环境:
在系统中找到光盘里的内容
1、mkdir /westos #创建一个挂载镜像的目录
2、在虚拟机光驱中添加系统匹配镜像(右击右下角的光盘图标,连接上光盘)
3、挂载镜像到/westos目录
mount /dev/cdrom /westos(光盘挂载)
mount /xxx/xxxxxxx.iso /westos4.ls /westos(文件挂载)
4、ls /westos #可以看到目录中的内容
一些命令使用举例:
1、安装dhcp软件
2、rpm的查看、删除命令
3、安装DHCP软件
4、查看所安装的软件包细节
5、rpm -K 检查软件是否是原版软件
rpm包的拆解
rpm2cpio dhcp-4.2.5-68.el7_5.1.x86_64.rpm | cpio -id
如图:将dhcp的软件包拆解为三个目录
四、yum软件仓库
问:为什么要搭建软件仓库
答:rpm不能自动解决软件依赖关系,yum(yellowdog updater,Modified)仓库可以解决此问题。yum是一个软件包管理器,基于rpm包管理,能够从指定的服务器自动下载rpm包并且安装,可以自动处理依赖关系,并且一次安装所有依赖的软件包,无须频繁地一次次下载和安装。
注意:yum只能管理rpm类型的软件包
如图:用rpm命令安装dhcp软件包时会遇到无法解决依赖性的问题
实验:搭建yum软件仓库
1.得到与当前系统匹配的系统安装镜像文件(官网下载即可)
2.建立系统安装镜像挂载点:
例如:mkdir /softwaresource
3.挂载镜像到镜像挂载点:
方式一:mount /rhel7-xxxxxx.xxxxxx.iso /softwaresource #直接挂载镜像文件
方式二:mount /dev/cdrom /softwaresource #挂载光盘镜像(前提:镜像已放入光盘中)
以上两种挂载方式都是临时的
永久挂载镜像:
修改配置文件:
vim /etc/rc.d/rc.local #该文件为开机自动运行脚本
文件内容:
mount /dev/cdrom /softwaresource #挂载光盘镜像(前提:镜像已放入光盘中)
修改完以后:
chmod 755 /etc/rc.d/rc.local
#修改完文件后需要赋予该文件执行的权利,否则该脚本在开机的时候执行不了
/etc/rc.d/rc.local #最后用该文件的绝对路径方式运行一次,就可以看到挂载成功
4.配置系统访问软件路径(即配置yum仓库指向文件)
1、cd /etc/yum.repos.d
2、rm -fr *
在rhel7中:
vim renyi.repo #编写文件,文件名任意,但后缀必须为.repo
[renyirhel7] #仓库名称
name=westos rhel7 source #仓库描述
baseurl=file:///softwaresource #资源路径
gpgcheck=0|1 #软件包授权检测开关(是否检测gpgkey,0不检测,1检测,检测后第三方软件就不能装了)
enabled=1 #启用软件仓库开关
在rhel8中(要写两个文件):
vim rhel8.repo
1、
[AppStream] #仓库名称
name=renyi rhel8 source AppStream #仓库描述(随便写)
baseurl=file:///softwaresource/AppStream #资源路径
(注意指定好路径)
gpgcheck=0 #软件包授权检测开关
enabled=1 #仓库启用开关
注意:当gpgcheck=1时需要在配置文件中添加下面一行
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release #软件包授权码
2、
[BaseOS] #仓库名称
name=rhel8 BaseOS #仓库描述
baseurl=file:///softwaresource/BaseOS #资源路径
gpgcheck=0 #软件包授权检测开关
enabled=1 #仓库启用开关
5、清空yum缓存,识别新文件内容
rhel7:
yum clean all
rhel8:
dnf clean all(yum clean all也行,但在rhel8中yum最终还是指向dnf)
实验过程如下图:
此时可以成功安装软件
在rhel8中:
五、yum命令
yum命令 | 解释 |
---|---|
yum install | 安装 |
yum remove | 卸载 |
yum reinstall | 重新安装 |
yum list | 列出 |
yum list installed/available/all/软件名称 | 列出 已经安装的/可以安装的/所有/软件 |
yum update | 更新 |
yum repolist | 列出仓库信息 |
yum history | 查看yum历史 |
yum info | 查看软件包信息 |
yum clean all | 清除yum缓存 |
yum search | 根据软件信息搜索 |
yum whatprovides | 根据文件搜索包含该文件的软件 |
yum groups install | 安装组 |
yum groups remove | 卸载组 |
yum groups info | 查看组信息 |
部分命令示例如下:
1、安装和更新dhcp
2、查看历史信息
3、搜索和dhcp相关的软件
4、yum whatprovides命令的使用例子
5、列出组的信息
六、第三方软件仓库
实验 第三方软件仓库的搭建
1、下载一些第三方软件,如下图是已经下载好的,但是用yum命令却搜不到这些软件,下面的实验以kolourpaint画图软件为例
2、是不是路径没指定好呢?
下图是指定路径的过程,注意要把所有rpm结尾的软件包存放到一个目录中,并且该目录中只有.rpm结尾的文件,因为yum仓库只能管理rpm结尾的软件,其他软件是管理不了的。
3、路径指定好以后,还是无法用yum命令去查找该软件,并且报错打不开这些文件
那为什么系统镜像里面的软件存放目录是一个yum源,而我们的创建的软件存放目录只是一个软件存放目录???那是因为在系统的挂载资源中有一个非常重要的目录repodata,里面有所有软件包的数据及依赖性,而我们所建立的第三方软件的目录下是没有repodata目录的,所以它不能称之为第三方软件仓库
4、建立第三方软件仓库
用命令createrepo,createrepo -v software命令的作用是对/software中的所有软件进行扫描,并把它们存放到Primary metadata中,此时就可以产生我们所需要的目录repodata
进入repodata后可以看到我们所需要的.xml文件
5、并且该目录下会产生一个新的压缩包,我们可以查看压缩包中的内容
内容如下:里面有kolourpaint的相关数据
6、此时就可以用yum命令搜到该软件
此时再去用yum install kolourpaint命令安装kolourpaint即可安装成功
并且该软件可以正常使用
七、共享软件仓库
1.软件仓库支持的访问方式
file:// ##本地文件
ftp:// ##文本传输协议
http:// ##超文本传输协议
nfs: ##网络文件系统
本次实验我们采用ftp的方式来共享
实验 搭建共享软件仓库
如图:rhel7_node1中有软件,而rhel7_node2中没有软件,我们需要将rhel7_node1中的软件共享出来
1、在含有软件资源的主机rhel7_node1中安装共享软件(ftp/http/nfs,本次实验以ftp为例)
2、关闭selinux和firewalld,避免客户主机在访问服务器主机的时候会被拒绝
关闭selinux:
getenforce可以看到selinux是开启的
修改文件vim /etc/sysconfig/selinux,将selinux的状态修改为disabled
因为该文件是内核上的插件,修改完文件后需要reboot重启系统,然后再查看selinux的状态可以看到是关闭的
关闭防火墙:systemctl stop firewalld
3、打开ftp服务
4、此时可以在rhel7_node2的浏览器中看到ftp目录下的任何文件,如我新建的file1
5、在ftp共享目录中新建两个共享目录,将要共享的软件资源放到ftp共享目录中
6、把所有第三方软件放入/var/ftp/software中,把系统安装镜像资源放到/var/ftp/rhel7.6中,因为mount /dev/cdrom /var/ftp/rhel7.6命令是临时的,因此我们每次重启系统后需要再次挂载,下面介绍一种永久挂载的方法:修改文件/etc/rc.d/rc.local,该文件为开机自动运行脚本,并且赋予该文件执行的权利,否则该脚本在开机的时候执行不了,最后用该文件的绝对路径方式运行一次,就可以看到挂载成功
修改文件的具体内容如下:
7、完成以上操作之后,软件共享仓库就搭建完毕,此时可以在rhel7_node2中访问到文件内容
8、
搭建rhel7_node2的软件仓库,
vim /etc/yum.repos.d/renyi.repo
具体编写内容下:
注意:图中的[software ]编写有误,后面不应该有空格
9、
此时就有了rhel7_node1中的软件资源
并且dhcp软件也可以安装
结束!!!