一、linux系统中软件包
1.软件包的类型
"注意在rhel8中只能使用绿色软件,源码编译软件和rpm软件"
类型 | 支持的条件 |
DEB | UBlinux DEBlinux(用不了) |
RPM | #redhat centOS fadora |
bz2|gz|xz | #1.需要源码安装需要编译 #2.绿色软件,直接可用 #ntfs-3g_ntfsprogs-2017.3.23.tgz #Firefox-latest-x86_64.tar.bz2 需要编译 "configure" 绿色 |
2.软件包的名称结构
[dhcp-server]-[4.3.6-30].[el8].[x86_64].[rpm]
1 2 3 4 5
1.软件名称
2.软件版本
3.软件的授权协议版本
4.软件架构
5.软件类型后缀
二、rpm命令管理软件包
-ivh | 安装参数组合 -i install; -v verbose; -h hash |
-a | 所有 |
-f | 文件 |
-p | 软件包 |
-q | 查询 |
-l | 软件安装文件列表 |
-e | 卸载 |
-c | 配置文件 |
-d | 说明 |
--info | 软件信息 |
--force | 强制 |
--nodeps | 忽略依赖性 |
--script | 查询软件在安装或卸载过程中的运行脚本 |
-Kv | 检测软件md5校验码 |
-V | 检测已安装软件在系统中的文件被修改信息 |
三、本地软件仓库的搭建
1.为什么要搭建软件仓库?
- 在系统中对软件进行管理
- rpm命令是不能解决依赖关系的
- 如果需要软件在安装过程中自动解决依赖关系需要搭建系统软件仓库
2.搭建本地软件仓库的方法
ps:写在前面,第一次是用westosa虚拟机做的实验,前面都正常,在dnf list all查看显示没有dnf这个命令,当使用yun imstall dnf时,又显示Error: Invalid version flag: if
后来检查发现原因:建立虚拟机westosa时用的7.6镜像,搭建仓库又用的8.2镜像,可能相互矛盾。因此后面又重新建立了8.2镜像的虚拟机westosb,搭建本地软件仓库成功!
(1)搭建前的准备
首先需要一个镜像文件且确保该镜像时可用的,什么是镜像呢?
镜像是一种文件形式,镜像文件就是和ZIP压缩包类似,将特定的一系列文件按照一定的格式制作成单一的文件,为了方便用户下载和使用。一般镜像以iso为扩展名。
镜像资源保存在/iso目录里面
在虚拟机westosa上建立一个空目录
# mkdir /source
(2) 挂载镜像
进入放置镜像的目录/iso,将镜像挂再在新建立的空目录/source中!
# mount rhel-8.2-x86_64-dvd.iso /source/ : 将镜像挂载在/source目录中
挂载成功后,进入新建的目录/source 查看已经有很多资源了,可以通过df命令查看挂载的镜像!
(3)编写仓库配置文件
镜像挂载成功后,进入/etc/yum.repos.d/目录,编写仓库配置文件westos.repo
文件名字随意,但是后缀必须是repo,否则无法识别
本地仓库由两部分组成,AppStream和BaseOS,内容含义如下:
name=AppStream :仓库名称,随意起,一般与路径一致
baseurl=file:///source/AppStream/ :镜像路径,路径必须存在
打开westosb的浏览器,输入file:///source(挂载镜像的路径地址)显示
在点击Appstream,复制连接写入repo文件即可!
gpgcheck=0 : gpgcheck意思是是否检查包的认证,是1就不允许安装第三方软件,是0就可以安装第三方软件。0不需要gpgkey,1需要!
gpgkey=/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release :红帽系统自带的,进入目录复制!
enabled=1:表示使用该仓库
(4)测试
编写仓库完成后,用dnf命令测试仓库是否搭建成功!
# dnf list all : 列出所有文件,列出来说明仓库搭建成功!
3.开机自动挂载镜像
以上挂载镜像的方法是暂时的,虚拟机重启镜像又要重新挂载,很麻烦!
因此我们需要开机自动挂载镜像,即自动执行挂载镜像的命令,可以编写/etc/rc.d/rc.local(开机自动执行脚本),在该脚本中写入挂载镜像的命令,保存后,别忘了要修改权限!
# vim /etc/rc.d/rc.local
# chmod +x /etc/rc.d/rc.local
编写完成后重启虚拟机查看/source目录 ,发现镜像自动挂载!设置成功!
四、dnf软件管理命令
1.基本命令
命令 | 含义 |
repolist | 列出仓库信息 |
clean all | 清除系统中已经加载的仓库缓存信息 /var/cache/dnf |
list all | 列出所有软件 |
liat available | 列出未安装软件 |
list installed | 列出已安装软件 |
install | 安装 |
remove | 卸载 |
reinstall | 重新安装 |
search | 搜索 |
whatprovides | 搜索包含文件的软件包 |
history | dnf执行历史 |
history info | dnf执行历史详细信息 |
group list | 列出软件组 |
group list --installed | 列出已安装软件组 |
group list --available | 列出未安装软件组 |
group list --hidden | 列出隐藏软件组 |
group install | 安装软件组 |
group info | 查看软件组信息 |
2.实验
(1)在执行 # dnf insatll gcc -y 时出现错误:
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
BaseOS 62 MB/s | 2.2 MB 00:00
AppStream 88 MB/s | 5.6 MB 00:00
上次元数据过期检查:0:00:01 前,执行于 2020年07月28日 星期二 15时25分49秒。
元数据缓存已建立
解决办法:
编辑文件“ /etc/yum/pluginconf.d/subscription-manager.conf”,更改参数“ enabled = 1”到“ enabled = 0”
再次执行 # dnf insatll gcc -y 仍然出现错误:
检查本地仓库,发现问题:
总结:下载东西出现错误首先检查软件仓库,看路径是否正确,拼写,格式等问题都很重要!!
(2) # dnf reinstall 用法
安装gcc成功后,不小心删除了所在文件
利用 install 安装显示已经安装,但是还是无法使用!
此时利用reinstall 即可解决问题!
五、软件下载---(yumdownloader)
本次实验需要在主机上在做,主机需要联网。
1. 添加epel源
epel源比本地仓库软件丰富,可以下载本地仓库没有的软件!!
在浏览器搜索epel for rhel8
复制该连接,在主机上下载
安装前,目录下只有一个repo文件!
安装epel源,注意!!一定要安装成功!!
安装成功后,进入/etc/yum.repos.d目录,发现多了epel源。
2. 下载yumdownloader工具
利用dnf搜索yum ,下载工具!
下载成功后即可使用yumdownloader下载软件
# yumdownloader kolourpaint.x86_64 : 下载软件到当前目录
# yumdownloader kolourpaint.x86_64 --destdir=/mnt : 下载软件到指定目录
# yumdownloader kolourpaint.x86_64 --destdir=/mnt --resolve :下载软件及其依赖性
ps:这里出问题了,没解决.....