当前位置: 首页 > news >正文

Linux 下的软件仓库(附加详细实验案例)

Windows 连接 Linux 工具:

首先在终端查看 ip 地址为多少,然后打开 Linux 工具,点击会话,选择 SSH 选项,然后输入查看的 ip 地址和用户名 root ,最后点击“是”。

随后输入该主机的密码,便连接成功。

一、Linux 中常见的软件包类型

1.RPM 包(Red Hat Package Manager) 

  • 适用发行版:Red Hat、CentOS、Fedora、openSUSE 等。

  • 文件扩展名:.rpm

  • 特点:适合 Red Hat 系列系统。依赖关系需要手动解决(使用 rpm 时),或自动解决(使用 dnf 或 yum 时)

2.DEB 包(Debian Package) 

  • 适用发行版:Debian、Ubuntu、Linux Mint 等。

  • 文件扩展名:.deb

  • 特点:适合 Debian 系列系统。依赖关系需要手动解决(使用 dpkg 时),或自动解决(使用 atp 时)

3.bz2 gz xz 压缩包

1)需要源码安装、需要编译

如:ntfs-3g_ntfsprogs-2017.3.23.tgz   需要编译“configure”

2)绿色软件,可直接使用(解压之后不用任何操作,可以直接运行使用)

如:Firefox-latest-x86_64.tar.bz2  是绿色软件,直接使用

将 software.tar 资源包拖入Linux 工具中的 Sftp 中,查看可看见已存在该资源包。

将 software.tar 资源包解压到 mnt 目录中。

解压 firefox 目录,其中绿色的 firefox 可以直接使用,叫做绿色软件

二、rmp 命令详解

1.rmp 软件包的名称结构

[dhcp-server]-[4.3.6-30].[el8].[x86_64].[rpm]

以下图画线的软件包为例:

kolourpaint-libs-410.5-4el7x86_64rpm
软件名称软件版本软件的授权协议版本软件架构软件类型后缀

2.rmp 命令管理软件包

-ivh
安装
-a
所有
-f
文件
-p
软件包
-q
查询
-l
软件安装文件列表
-e
卸载
-c
配置文件
-d
说明
--info
软件信息
--force
强制
--nodeps
忽略依赖性
--script
查询软件在安装或卸载过程中的运行脚本
-Kv
检测软件 md5 校验码
-V
检测已安装软件在系统中的文件被修改信息

-ivh:rpm -ivh linuxqq_2.0.0-b2-1082_x86_64.rpm (安装 linuxqq)

下面画线的两个软件:在安装 qq 之前系统中必须已经安装好了这两个软件,叫做 qq 的依赖性。

--nodeps:忽略依赖性,qq 可以正常安装。 

-qa:查询系统中安装的所有软件的名字,通过 wc -l 可知共有1190个软件。 

-qf:通过命令查询 qq 的安装包。

先通过 which qq 命令找到 qq 存在的位置,然后删除,此时 /usr/local/bin/qq 这个命令显示找不到,便可用 rpm -qf /usr/local/bin/qq 找到命令的安装包。

--force:强制 

然后通过找到的安装包进行安装,因前面安装过 qq ,所以需要强制安装。

-qp:查询软件包里面的信息(若没有安装,可用 -qp 查询软件包信息,若已安装,不用 p 也可,直接用 -q 查询)

-ql:查询软件安装以后,在系统中生成的文件

-qc:查找软件的配置文件 

-d:查找软件的说明文件 

--info:查看软件信息 

--scripts:查询软件在安装或卸载过程中的运行脚本。通过查看软件运行脚本,可知  FluffyMcAwesome-A-6 最好不要下载,容易导致服务器崩塌。

-- Kv:检验是否有篡改。将 linuxqq_2.0.0-b2-1082_x86_64.rpm 复制一个名为 linuxqq_2.0.0-b3-1082_x86_64.rpm 的软件,然后导入 lee 文件,将 linuxqq_2.0.0-b3-1082_x86_64.rpm 追加进去,进行篡改。然后分别用 -Kv 检验软件是否有篡改,有篡改过的软件最好不要安装。

三、本地软件仓库的构建

确认虚拟机已有光盘镜像,并且光驱是亮着的。

在根下建立 rhel9 光盘读取目录,也就是挂载点,然后将 /dev/sr0 光盘设备挂载到 rhel9 目录上。因挂载的设备是光盘,而光盘是不可以写入内容的,只能读,所以会出现警告。

查看 rhel9 光盘中的软件,并配置 AppStream 和 BaseOS 这两个软件(AppStream 是应用,BaseOS 是系统基本软件)。

AppStream 和 BaseOS 这两个软件仓库位置分别在 file:///rhel9/AppStream 和 file:///rhel9/BaseOS ,需要告诉系统才能访问。必须进入到 /etc/yum.repos.d/ 中,编辑的文件名称必须以 .repo 结尾,否则不识别。

[AppStream]                                        仓库名称
name=AppStream                               仓库描述
baseurl=file:///rhel9/AppStream          仓库地址
gpgcheck=0                                        安装软件时是否检测软件的 gpgkey(软件授权) 

安装 gcc ,读取了 AppStream 和 BaseOS 这两个软件,并在 AppStream 中找到了 gcc。

-y:直接同意安装 

 

四、网络软件仓库的构建

将软件仓库通过网络共享出去

1.在本地主机构建软件仓库 

安装 apache ,目的是可以使当前主机通过网络使用 http:// 来共享资源。

开启 httpd 服务,因为系统的火墙会拒绝 httpd 的开放功能,所以需要关闭火墙。

/var/www/html:此目录是 httpd 程序默认共享目录,然后导入 lee 内容到 /var/www/htmlindex.html 中,默认发布文件。

通过 ip a 查看 ip 地址,然后在浏览器访问 192.168.10.100,可以看见里面的内容 lee。

卸载原始挂载,建立新的挂载到默认发布目录中的子目录,这样就可以访问 http://本机ip/rhel9,即可访问到仓库中的资源。

然后在本地主机中的浏览器访问 192.168.10.100/rhel9 ,显示访问成功,能够查看里面的软件信息。 

2.测试主机共享本地主机的软件

测试主机没有挂载,也没有镜像。先手动设定 ip 地址,然后刷新并激活。

查看是否成功配置 ip ,然后 ping 本地主机的 ip ,能 ping 通也就可以访问,可查看本地主机的软件信息(http://192.168.10.100/rhel9/AppStream/ http://192.168.10.100/rhel9/BaseOS/)。

在测试主机中配置好网络,确保测试主机和已经发布资源的主机可以网络通信(rhel9.repo 为编辑测试主机的文件)

然后列出 gcc 的软件信息,成功读取了名为 haha 和 hehe 的内容。gcc 的软件从本地主机来的,因共享了网络,所以测试主机可直接安装 gcc。 

3.设定永久命令(开机自动运行)

重启后,访问不了本地主机中 rhel9 的软件信息(在命令行操作的命令大多数都是临时的,只有改变了文件,将操作的内容记录在文件中才会是永久的)。

重新进行挂载,才能访问成功。 

 

/etc/rc.d/rc.local:开机自运行脚本(主机打开后,里面的内容会自动运行)

将需要主机自动运行的命令编辑到脚本中,并给 /etc/rc.d/rc.local 文件加上可执行权限,才能在开机的时候运行。

 然后现在再将主机重启,此时依然可以成功访问本地主机的 rhel9 的软件信息。

在本地主机中,AppStream 和 BaseOS 这两个软件仓库位置改变了,将地址修改为 file:///var/www/html/rhel9/AppStream 和 file:///var/www/html/rhel9/BaseOS ,可以提高效率,无需通过网络访问。

五、dnf 命令使用详解

dnf repolist                                #列出仓库信息
dnf clean all                              #清除系统中已经加载的仓库缓存信息 /var/cache/dnf
dnf makecache                         #加载新的信息缓存
查询软件包
dnf list all                                  #列出所有软件
dnf list available                       #列出未安装软件
dnf list installed                        #列出已安装软件
安装和卸载软件包
dnf install                                  #安装
dnf remove                               #卸载
dnf reinstall                               #重新安装
dnf search                                #搜索
dnf whatprovides                      #搜索包含文件的软件包
dnf history                                 #dnf 执行历史
dnf history info                          #dnf 执行历史详细信息

1.处理单个软件包 

dnf repolist:列出软件仓库信息 

dnf clean all:清除系统中已经加载的仓库缓存信息。清理后从 10 个数据变为 6 个数据

dnf makecache:加载,将原来清理的信息再缓存一遍(作用:旧的信息清理后,还需将新的信息加载进来)

dnf list all:列出所有软件 

可查到所有软件共 6767 个,已安装 1207 个。 

dnf list available:目前还没安装的,但可以安装的软件(共有 5559 个软件未安装)

dnf list installed:目前已经安装的软件(共 1213 个软件,前面的一些信息的行数也算进去了)

dnf install:安装软件

dnf 与 rpm 的区别: rpm 不能解决依赖性的问题,只能显示依赖性有哪些;而 dnf 可直接将依赖性的软件一同安装,所以 dnf 是 rpm 的上层管理工具,会更智能。 

dnf remove:删除软件 

以 linuxqq 为例,将 linuxqq 的软件删除。

dnf reinstall:重新安装

假设不小心将根下的 ls 删除了,根据 ls 的位置查询 ls 的软件包,若直接安装该软件包,会显示已经安装了,所以需要 reinstall 重新安装,将 ls 软件包的命令重新安装回来。

dnf search:通过文件的信息搜索软件包

以搜索 firefox 为例,可搜索到 firefox 的软件包。 

dnf whatprovides:搜索包含文件的软件包

以 linuxqq 的依赖性软件包 libgdk-x11-2.0.so.0 为例,用 search 无法找出安装包的名字,得用 whatprovides 来搜索。因为不知道该软件包的位置,所以用 */ 在任何路径中搜索。

dnf history:查看历史信息

dnf history info 序号:查看历史详细信息

在系统中安装、重装、删除会被历史记录下来,查看不会被记录。

2.处理软件组 

软件组包含的软件很多,都是为了软件组这一大的功能所准备。

软件组管理命令: 

dnf group list列出软件组
dnf group list --installed列出已安装的软件组
dnf group list --available列出未安装的软件组
dnf group list --hidden列出隐藏的软件组
dnf group install 软件组名称安装软件组
dnf group info 软件组名称查看软件组信息

dnf install 软件组名称 --downloadonly --dest=下载的位置

只下载不安装软件组

dnf grouplist:列出软件组

dnf grouplist --installed:列出已安装的软件组 

dnf grouplist --available:列出未安装的软件组 

dnf grouplist --hidden:列出隐藏的软件组 

dnf groupinstall "Java Platform":安装软件组“Java Platform” 

dnf group info "Java Platform":查看软件组“Java Platform” 的信息 

dnf install gcc --downloadonly --dest=/mnt:将 gcc 软件组下载到 mnt 目录中

--downloadonly:只下载不安装 

--dest:下载到哪里

安装过后软件包会消失,下载不会。查看 mnt 目录可看到,安装 gcc 所需要的软件包依然存在。


http://www.mrgr.cn/news/99015.html

相关文章:

  • tigase源码学习杂记-AbstractMessageReceiver
  • 健身会员管理系统(ssh+jsp+mysql8.x)含运行文档
  • Windows上安装FFmpeg的详细指南
  • Meteonorm8-免费使用教程(详细教程-免费)
  • 【网络初识】从零开始彻底了解网络编程(一)
  • MySQL中常用函数的分类及示例
  • ICS丨Chapter 1 Introduction to Computer System
  • MCP是什么?为什么突然那么火?
  • GPU渲染阶段介绍+Shader基础结构实现
  • CTF--秋名山车神
  • 《AI大模型应知应会100篇》第26篇:Chain-of-Thought:引导大模型进行步骤推理
  • 2024年网站开发语言选择指南:PHP/Java/Node.js/Python如何选型?
  • Linux-进度条小程序
  • RenderStage::runCameraSetUp
  • B端可视化像企业数据的透视镜,看清关键信息
  • 1panel第三方应用商店(本地商店)配置和使用
  • Rocky8 升级 Python 3.9.20 并部署 Airflow 2.10.5
  • 基础学习:(7)nanoGPT 剩下的细节
  • 202520读书笔记|《我要按自己喜欢的方式去生活》——面对可能到来的裁员,那就等正式通知吧
  • python链表