软件管理

  • 1、Linux中软件包的类型
  • 2、安装包的名称含义
  • 3、管理软件包命令rpm
  • 4、本地软件仓库的搭建
  • 5、软件管理命令dnf
  • 6、网络软件仓库的搭建
  • 6、epel源
  • 7、第三方软件仓库的搭建方法

1、Linux中软件包的类型

一般软件包的类型有三种:
1、DEB格式,支持优班图系统的
2、RPM格式,支持红帽系统的
3、压缩格式(gz/bz2/xz),压缩格式又分为两种,一种是绿色软件,即解压安装好后,可以直接使用;另一种是源码安装需要编译才可以使用。

2、安装包的名称含义

比如这个安装包dhcp-server-4.3.6-40.el8.x86_64.rpm,它表达什么含义呢?
分为五个部分,第一部分表示软件的名称叫dhcp-server,第二部分表示软件的版本为4.3.6-40,第三部分表示软件的授权协议版本为el8,第四部分表示软件的架构为x86_64,即64位的,第五部分表示软件后缀类型为rpm。

3、管理软件包命令rpm

(1)rpm -ivh 安装参数组合 -i (install) -v (verbose) -h (hash)
(2)rpm -a 所有
(3)rpm -f 文件
(4)rpm -p 软件包
(5)rpm -q 查询
(6)rpm -l 软件安装文件列表
(7)rpm -e 卸载
(8)rpm -c 配置文件
(9)rpm -d 说明
(10)rpm --info 软件信息
(11)rpm --force 强制
(12)rpm --nodeps 忽略依赖性
(13)rpm --script 查询软件在安装或卸载过程中的运行脚本
(14)rpm -Kv 检测软件md5校验码
(15)rpm -V 检测已安装软件在系统中的文件被修改信息
实验测试如下面一系列图:安装软件(我这里已经安装过了,所以显示已安装)、查询软件名字、查询所有并抓取dhcp、查询软件安装的文件列表

查询某一个文件属于哪个软件、查询配置文件、查询说明、卸载软件

--info需要和-q一起使用,可以查看软件的完整信息

假如不小心把某个软件的配置文件误删了,这时软件无法使用,想重新安装,会提示已经安装过了,无法安装,现在就需要--force强制安装

如下图,安装kolourpaint时提示依赖性失败,要先安装libs这个软件,但是安装libs这个软件时,提示依赖性失败,要先安装kolourpaint这个软件,这就很难受了,死循环。这时我们只能先--nodeps忽略依赖性先安装一个,才能安装另外一个。
--scripts-q一起使用,可以查询软件在安装或卸载过程中的运行脚本,来判断是否是流氓软件。

假如6这个安装包是原本的,我们复制他改名字为7,并追加东西进去,这时7这个安装包就被篡改过了,使用-Kv时,原本6的安装包会显示校验通过,而改过的7安装包会显示BAD校验不通过。

假如安装好软件后,我们更改了某些配置文件,使用-V就可以查看被更改的地方。

4、本地软件仓库的搭建

上面学习了rpm来安装软件,我们发现软件有很多依赖性,安装A需要B,然而安装B又需要A,如果我们一个一个手动去把依赖性全下载下来,很累。那有没有一个办法下载某一个软件时,自动下载全部的依赖性呢?有的,我们需要安装软件仓库,就类似于手机的应用商店,直接在他里面下载软件,可以把依赖性一起安装。下面介绍搭建软件仓库的办法。
首先我们需要先把安装系统的镜像文件放在电脑里,如图,这里放在了/isos/,然后在根下创建一个新的目录叫westos,把镜像文件挂载到/westos上,现在westos里就有许多的软件包了。但是,系统不知道,那我们需要让系统知道,编写软件仓库的文件/etc/yum.repos.d/westos.repo来让系统知道软件仓库的指向文件来源。
如图,编写的具体内容如下:由于有两个仓库AppStream和BaseOS,所以写了两个模块。先介绍第一个模块,第一行写的是仓库名称,第二行写的是描述,第三行写的是地址,第四行写的是授权认证(1代表开启,0代表关闭),如果授权认证开启了,那么就要多写认证的密钥,一般都在/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release,如果是没有开启,就不用写第五行的gpgkey了,第六行写的是该模块是否生效(1代表生效,0代表不生效),下一个模块同理。

编写完成后,如下图,使用dnf repolist查看软件仓库已经搭建成功。使用dnf install gcc -y 下载gcc来测试是否成功,显示成功,可以看到不仅下载了gcc,还把gcc的六个依赖性安装了。

5、软件管理命令dnf

(1)dnf repolist列出仓库信息
(2)dnf clean all清除系统中已经加载的仓库缓存信息
(3)dnf list all列出所有软件
(4)dnf list available列出未安装的软件
(5)dnf list installed列出已安装的软件
(6)dnf install安装
(7)dnf remove卸载
(8)dnf reinstall重新安装
(9)dnf search搜索
(10)dnf whatprovides搜索包含文件的软件包
(11)dnf historydnf 执行的历史
(12)dnf history info 9dnf执行历史中9的详细信息
(13)dnf group list列出软件组
(14)dnf group list --installed列出已安装软件组
(15)dnf group list --available列出未安装软件组
(16)dnf group list --hidden列出隐藏软件案组
(17)dnf group install安装软件组
(18)dnf group info查看软件组信息

实验如下图,软件仓库搭建好后,会缓存在/var/cache/dnf/里,如果dnf clean all就会清除系统中已经加载的仓库缓存信息。

安装或卸载软件时加-y,就会不提示直接执行。

使用dnf history查看dnf 执行的历史,如果想看具体的某一个,比如查看第九条,使用dnf history info 9查看详细信息。

dnf使用时会直接把软件下载好,假如我们想下载软件包怎么办呢?首先要dnf install yum-utils安装这个工具,使用yumdownloader gcc命令就可以把仓库中gcc的软件安装包下载到当前目录,使用yumdownloader gcc --destdir=/media命令就可以把仓库中gcc的软件安装包下载到指定的media这个目录,使用yumdownloader gcc --destdir=/media --resolve命令就可以把仓库中gcc的软件安装包和软件依赖性都下载到指定的media这个目录。

6、网络软件仓库的搭建

在企业中,我们维护的系统数量很庞大,当我们需要在每个系统安装软件管理软件时,可以在每个系统中各自搭建软件仓库,但是这样管理软件会浪费大量的资源。如何节省这部分重复的资源?需要在一个共用的主机里搭建可以共享的软件仓库,然后共享到网络上,这样大家就可以利用网络访问资源,不需要在每一台主机中独立建立软件资源了。
这个共享软件的名字叫Apache,提供的协议叫超文本传输协议http://,软件包的名称叫httpd,共享时不可能把主机的所有东西都共享,只是共享一部分,那么共享文件的位置在/var/www/html
搭建实验,首先在共用的主机里使用命令dnf install httpd -y安装httpd软件,然后如下图,关闭防火墙,开启httpd服务,我们建立一个目录名字叫rhel8.2,里面放要共享的镜像文件,把之前挂载到/westos的卸掉,重新挂载镜像到/var/www/html/rhel8.2/下,现在httpd服务就搭建好了,但是这个共享的主机每次关机再开机,挂载就掉了,我们需要每次开机都挂载吗?太麻烦了,我们可以在开机文件里/etc/rc.d/rc.local写入挂载语句,并给这个目录执行权限,那么就可以开机自动挂载了。

httpd是配置好了,现在共用的这个主机能下载软件吗?不可以!因为我们之前配置的软件源指向文件/etc/yum.repos.d/westos.repo里写的指向是/westos,而现在应该更改路径为/var/www/html/rhel8.2/,如下图。

那么共用的主机以外的其他没安装软件仓库的主机呢?现在用虚拟机a代表没安装软件仓库的主机,他们需要修改/etc/yum.repos.d/westos.repo这个配置文件,把file://(本地用这个)改为http://(网络用这个),并输入共用主机的ip下的路径,如下图。现在虚拟机a就可以使用共用主机的软件仓库来安装软件了!

6、epel源

如果想安装一些镜像里没有的软件,可以在网上下载epel包并安装,安装完成后,可以看到/etc/yum.repos.d目录下多了很多repo结尾的文件,这些文件的本质是指向一些网址,下载的时候去这个网址找资源下载,现在我们就可以安装想要的截图工具flameshot了。

7、第三方软件仓库的搭建方法

假如上面的方法还是不够用,有些软件没有,我们在网上找到了他的rpm包,下载下来,想把他变成软件仓库,以后使用dnf管理方便,该怎么办呢?
实验如下,如下图,建立共享目录/var/www/html/software,这里第三方软件以linuxqq为例,放到了共享目录里,现在想用dnf管理他还是不可以的,为什么呢?因为建立的目录并不会直接是软件仓库,我们需要下载一个createrepo软件,使用createrepo -v .扫描当前的第三方软件,生成一个repodata的目录,该目录的作用就是读取数据时,直接找他里面的指引,这样速度快(如果读取一个一个的软件就很慢),现在software这个目录就是软件仓库了。

想要dnf能读取到第三方软件仓库,需要编写配置文件/etc/yum.repos.d/westos.repo,内容如下图,增加了第三个模块。

补充1:当我们把原始的软件包删除了,dnf list去查看这个软件时,还是可以查到的,这是因为repodata这个文件还在,即软件的数据还在,可以查到。也就是说list这个查看根本不管软件在不在,只是看数据。但是install安装的时候就会报错了。
补充2:dnf为什么能解决依赖性,就是因为他已经提前把所有的依赖性加载到数据库了,需要的时候直接读取就可以。

Linux基础学习(十三)之软件管理相关推荐

  1. Linux基础学习之Day12-网络管理基础

    Linux基础学习之从入门到精通Day12 网络管理基础 使用NetworkManager管理网络 网络管理器(NetworkManager)是一个动态网络的控制器与配置系统,它用于当网络设备可用时保 ...

  2. linux笔记软件,Linux Ubuntu学习笔记_软件管理

    管理软件包工具:dpkg.rpm (dpkg管理deb软件包.rpm管理rpm软件包) 安装程序:sudo dpkg -i *.deb (Ubuntu文件后缀为.deb SuSE.Fedora为.rp ...

  3. Linux基础学习五:软件的相关安装(JDK,Tomcat,Yum)

    设置静态ip 通过 dhclient 命令获取动态ip,动态ip存在的问题: 每次重启,需要重新获取 获取的ip地址不固定 解决方案:设置静态ip 配置步骤: 编辑 /etc/sysconfig/ne ...

  4. Linux基础学习之Day7-2-LVM管理

    Linux基础学习之从入门到精通Day7-2 LVM管理 在线扩容 online 数据迁移 online 创建LVM LVM叫逻辑卷管理 VG扩展/缩小 LV扩容 文件系统扩容 在线扩容及在生产中 3 ...

  5. 鸟哥的linux 实训教程,鸟哥的Linux基础学习实训教程

    1.理想的Linux上机实践课程 每周一次.每次三小时的学与练 本书所有例题讲解,均经过鸟哥在大专院校实施多年来的测试,对于学生的理解具有相当满意的效果. 2. 提供一致性教学环境 让学习者不再有陌生 ...

  6. 最全的linux基础学习视频

    最全的linux基础学习视频,千锋教育的Linux视频课程免费下载地址: http://pan.baidu.com/s/1c13ddvE,更多精彩的视频在不断的更新中,OpenStack覆盖了网络.虚 ...

  7. Linux基础学习(十七)--- wiki,jira 搭建、公司面试常见问题

    Linux基础学习(十七) wiki,jira 搭建.公司面试常见问题 mysql中 utf8 支持中文字符 du -sh * 查看当前目录所有文件大小 wiki 企业多人协作系统–>企业级文档 ...

  8. linux基础学习——linux的文件权限和目录配置

    linux基础学习--linux的文件权限和目录配置 1.用户和用户组和其他人概念: 三个概念的前提宗旨:linux是一个多人多任务的系统环境.如果不对文件作出一个权限限制的话.任何人都能操作这份文件 ...

  9. linux基础知识_压缩—进程管理-网络管理-ftp-nfs-ssh-scp

    linux基础知识_压缩-进程管理-网络管理-ftp-nfs-ssh-scp 1.压缩包管理 gzip .gz格式的压缩包,不打包,分别压缩,原文件消失 bzip2 .bz2格式的压缩包,原文件不会消 ...

  10. 鸟哥私房菜linux基础学习笔记 1

    linux基础学习笔记 计算机:辅劣人脑的好工具 1.计算机硬件癿五大单元 输入单元:包括键盘.鼠标.卡片阅读机.手写板.触控屏幕等等一堆: 主机部分:这个就是系统单元,被主机机壳保护住了,里面有 C ...

最新文章

  1. python 帮助文档,撰写函数文档,并查看函数文档
  2. javascript 复制功能 兼容所有浏览器的解决方案
  3. hadoop(一) 基本介绍
  4. java jxl 写 excel_Java 操作Excel(jxl读和写)
  5. sql2016是否支持linux,微软 SQL Server 支持 Linux 了,2017年 中将正式推出
  6. SAP CRM WebClient UI cross component跳转中有一个硬编码的CROSSNAV
  7. LeetCode 865. 具有所有最深结点的最小子树(递归)
  8. [2021-CVPR] Jigsaw Clustering for Unsupervised Visual Representation Learning 论文简析及关键代码简析
  9. android 按键上浮动画_android – 浮动动作按钮动画
  10. android Bundle的作用
  11. 软件设计之UML的几种关系
  12. 详述人工智能在自动驾驶中的应用
  13. Jmeter 压测工具使用手册(完整版)
  14. java+ElementUI前后端分离旅游项目第三天 报团游
  15. 测试开发面试题汇总20200422
  16. html网络语言什么意思,网络上js是什么意思?
  17. Oracle 发送QQ邮件监控定时任务
  18. C6能比C8快多少(Altera的FPGA速度等级)
  19. 短视频直播美颜sdk可以接入其它视频社交平台吗?
  20. 根据从数据库中获取到的值控制按钮被选中

热门文章

  1. 入门微服务spring-cloud(第一章)
  2. 隐私空间 android,隐私空间安卓版
  3. python用matplotlib汇总的图像的title为方框解决方法
  4. String字符串中换行和标签在页面消失
  5. linux设备驱动总结,《Linux设备驱动开发详解(第3版)》海量更新总结
  6. RecyclerView的Recycler
  7. 趣味python编程题(一)羊,狼,菜过河。
  8. 关于解决“用系统U盘安装win7却提示‘缺少所需的CD/DVD驱动器设备驱动程序’”的问题...
  9. 病毒,木马,蠕虫的区别
  10. CSS background-image 背景图不重复