1.3作业
1. 理解函数调用,总结函数普通变量、环境变量和本地变量
- 普通变量:函数里的普通变量出了函数的作用范围就会自动销毁。
- 环境变量:可以在函数里使用,而且同样也可以在函数中修改它的值。
- 本地变量:可以修改函数外的值,但修改的值只可以在该函数的作用域中使用。
2. 总结普通数组和关联数组的用法,以及变量如何间接引用
- 普通数组:
arr=(元素1 元素2.......)
- 关联数组:
declare -A array_name
- 变量的间接引用:使用
!
,例如:echo $(!变量)
3. 总结程序包管理器有哪些,尝试这些文件如何获取命令获取?
程序包管理器
程序包管理器是用于管理操作系统中的软件包的工具,常见的程序包管理器包括:
-
RPM 包管理器:
- 用于管理
.rpm
格式的软件包。 - 主要用在 Red Hat、CentOS、Fedora 等基于 RPM 的系统中。
- 命令:
rpm
。
- 用于管理
-
YUM(Yellowdog Updater Modified):
- 基于 RPM 的前端工具,自动解决依赖关系。
- 主要用在 CentOS 7 及之前的版本中。
- 命令:
yum
。
-
DNF(Dandified YUM):
- YUM 的下一代版本,功能更强大,性能更好。
- 主要用在 CentOS 8、Fedora 等系统中。
- 命令:
dnf
。
-
APT(Advanced Package Tool):
- 用于管理
.deb
格式的软件包。 - 主要用在 Debian、Ubuntu 等基于 Debian 的系统中。
- 命令:
apt
。
- 用于管理
-
Zypper:
- 用于管理
.rpm
格式的软件包。 - 主要用在 openSUSE 系统中。
- 命令:
zypper
。
- 用于管理
如何获取这些文件
-
从系统镜像或光盘获取:
- 系统安装光盘或镜像中通常包含大量的软件包。
- 例如,CentOS 的安装光盘中的
Packages
目录。
-
从官方仓库获取:
- 使用包管理器从官方仓库下载软件包。
- 例如:
yum install package_name apt install package_name
-
从第三方仓库获取:
- 例如,EPEL(Extra Packages for Enterprise Linux)仓库提供了许多额外的软件包。
- 启用 EPEL 仓库后,可以使用
yum
或dnf
安装软件包。
-
从软件项目官方站点获取:
- 许多软件项目会提供官方的 RPM 或 DEB 包。
- 例如,MySQL、Nginx 等项目的官方网站。
-
使用工具制作 RPM 包:
- 可以使用
rpmbuild
或fpm
工具将源码打包成 RPM 包。
- 可以使用
4. yum/dnf/apt 总结程序包获取途径,以及 rpm, yum, apt 命令选项示例
程序包获取途径
-
系统官方仓库:
- CentOS/Red Hat:BaseOS、AppStream 仓库。
- Ubuntu/Debian:Main、Universe、Multiverse 仓库。
-
第三方仓库:
- EPEL(Extra Packages for Enterprise Linux):为 CentOS/Red Hat 提供额外的软件包。
- PPA(Personal Package Archive):为 Ubuntu 提供额外的软件包。
-
软件项目官方站点:
- 例如,MySQL、Nginx、Docker 等项目的官方网站提供 RPM 或 DEB 包。
-
本地文件:
- 从本地光盘或下载的
.rpm
、.deb
文件安装。
- 从本地光盘或下载的
命令选项示例
-
rpm 命令:
- 安装软件包:
rpm -ivh package.rpm
- 查询软件包:
rpm -q package_name
- 卸载软件包:
rpm -e package_name
- 安装软件包:
-
yum 命令:
- 安装软件包:
yum install package_name
- 更新软件包:
yum update package_name
- 卸载软件包:
yum remove package_name
- 安装软件包:
-
apt 命令:
- 安装软件包:
apt install package_name
- 更新软件包:
apt update apt upgrade
- 卸载软件包:
apt remove package_name
- 安装软件包:
5. 简要总结 yum/dnf 工作原理。并尝试搭建私有 yum 仓库(base, epel 源)给另一个虚拟机使用
yum/dnf 工作原理
-
C/S 架构:
yum/dnf
是基于客户端/服务器模式的工具。- 服务器端存储 RPM 包和元数据(
repodata
目录)。 - 客户端通过配置文件(
/etc/yum.repos.d/*.repo
)访问服务器端。
-
元数据:
- 服务器端的
repodata
目录包含软件包的元数据(如依赖关系、文件列表等)。 - 客户端下载元数据,解析依赖关系并下载所需的软件包。
- 服务器端的
-
依赖解决:
yum/dnf
会自动解决软件包的依赖关系,下载并安装所需的依赖包。
搭建私有 yum 仓库
以下是搭建私有 yum 仓库的步骤:
-
在服务器端配置:
- 安装 HTTP 服务(如 Apache):
yum install httpd systemctl start httpd systemctl enable httpd
- 创建仓库目录:
mkdir -p /var/www/html/repos/{base,epel}
- 同步 BaseOS 和 EPEL 仓库:
reposync --repoid=base --download-metadata -p /var/www/html/repos/base reposync --repoid=epel --download-metadata -p /var/www/html/repos/epel
- 生成元数据:
createrepo /var/www/html/repos/base createrepo /var/www/html/repos/epel
- 安装 HTTP 服务(如 Apache):
-
在客户端配置:
- 创建
.repo
文件:cat <<EOF > /etc/yum.repos.d/private.repo [base] name=Private BaseOS Repository baseurl=http://<server_ip>/repos/base enabled=1 gpgcheck=0 [epel] name=Private EPEL Repository baseurl=http://<server_ip>/repos/epel enabled=1 gpgcheck=0 EOF
- 创建