搭建 repo 服务器
概述
将 EulixOS 1.0 提供的镜像 EulixOS-Server-1.0-aarch64.iso 创建为 repo 源,如下以使用 nginx 进行 repo 源部署,提供 http 服务为例进行说明。
创建/更新本地 repo 源
使用 mount 挂载,将 EulixOS 1.0 的镜像 EulixOS-Server-1.0-aarch64.iso 创建为 repo 源,并能够对 repo 源进行更新。
获取 ISO 镜像
获取包路径
请从如下网址获取 EulixOS 1.0 软件包:
挂载 ISO 创建 repo 源
使用 mount 命令挂载镜像文件。
示例如下:
mount /home/EulixOS/EulixOS-Server-1.0-aarch64.iso /mnt/
挂载好的 mnt 目录如下:
.
│── boot.catalog
│── EFI
│── images
│── Packages
│── repodata
│── TRANS.TBL
└── EulixOS-gpg.key
其中,Packages 为 rpm 包所在的目录,repodata 为 repo 源元数据所在的目录,EulixOS-gpg.key 为 EulixOS 的签名公钥。
创建本地 repo 源
可以拷贝镜像中相关文件至本地目录以创建本地 repo 源,示例如下:
mount /home/EulixOS/EulixOS-Server-1.0-aarch64.iso /mnt/
mkdir -p /srv/repo/
cp -r /mnt/Packages /srv/repo/
cp -r /mnt/repodata /srv/repo/
cp -r /mnt/EulixOS-gpg.key /srv/repo/
从而本地 repo 目录如下:
.
│── Packages
│── repodata
└── EulixOS-gpg.key
Packages 为 rpm 包所在的目录,repodata 为 repo 源元数据所在的目录,EulixOS-gpg.key 为 EulixOS 的签名公钥。
更新 repo 源
更新 repo 源有两种方式:
通过新版本的 ISO 更新已有的 repo 源,与创建 repo 源的方式相同,即挂载镜像或者重新拷贝镜像至本地目录
在 repo 源的 Packages 目录下添加 rpm 包,然后更新 repo 源,可通过 createrepo 命令更新 repo 源
dnf install createrepo createrepo --update --workers=10 /srv/repo
其中,--update 表示更新,--workers 表示线程数,可自定义。
部署远端 repo 源
安装操作系统 EulixOS 1.0(EulixOS-Server-1.0-aarch64.iso),在 EulixOS 1.0 上通过 nginx 部署 repo 源。
nginx 安装与配置
请自行下载 nginx 工具并安装 nginx。
安装 nginx 之后,配置 /etc/nginx/nginx.conf。
说明:
文档中的配置内容仅供参考,请用户根据实际情况(例如安全加固需要)进行配置。
user root; worker_processes auto; # 建议设置为core-1 error_log /var/log/nginx/error.log warn; # log存放位置 pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; # 服务器名(url) client_max_body_size 4G; root /srv/repo; # 服务默认目录 location / { autoindex on; # 开启访问目录下层文件 autoindex_exact_size on; autoindex_localtime on; } } }
启动 nginx 服务
通过 systemd 启动 nginx 服务:
systemctl enable nginx systemctl start nginx
nginx 是否启动成功可通过下面命令查看:
systemctl status nginx
- [图1]表示 nginx 服务启动成功
图 1 nginx 服务启动成功
若 nginx 服务启动失败,查看错误信息:
systemctl status nginx.service --full
图 2 nginx 服务启动失败
如图2所示 nginx 服务创建失败,是由于目录 /var/spool/nginx/tmp/client_body 创建失败,手动进行创建,类似的问题也这样处理:
mkdir -p /var/spool/nginx/tmp/client_body mkdir -p /var/spool/nginx/tmp/proxy mkdir -p /var/spool/nginx/tmp/fastcgi mkdir -p /usr/share/nginx/uwsgi_temp mkdir -p /usr/share/nginx/scgi_temp
repo 源部署
创建 nginx 配置文件 /etc/nginx/nginx.conf 中指定的目录 /srv/repo:
mkdir -p /srv/repo
SELinux 设置为宽容模式:
setenforce permissive
说明: repo server 重启后,需要重新设置。
设置防火墙规则,开启 nginx 设置的端口(此处为80端口),通过 firewall 设置端口开启:
firewall-cmd --add-port=80/tcp --permanent firewall-cmd --reload
查询80端口是否开启成功,输出为 yes 则表示80端口开启成功:
firewall-cmd --query-port=80/tcp
也可通过 iptables 来设置80端口开启:
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
nginx 服务设置好之后,即可通过 ip 直接访问网页,如[图1]
图 1 nginx 部署成功
通过下面几种方式将 repo 源放入到 /srv/repo 下:
拷贝镜像中相关文件至在 /srv/repo 下
mount /home/EulixOS/EulixOS-Server-1.0-aarch64.iso /mnt/ cp -r /mnt/Packages /srv/repo/ cp -r /mnt/repodata /srv/repo/ cp -r /mnt/EulixOS-gpg.key /srv/repo/
EulixOS-Server-1.0-aarch64.iso 存放在 /home/EulixOS 目录下。
在 /srv/repo 下创建 repo 源的软链接
ln -s /home/EulixOS/os /srv/repo/os
/home/EulixOS/os 为已经创建好的 repo 源,/srv/repo/os 将指向 /home/EulixOS/os。
使用 repo 源
repo 可配置为 yum 源,yum(全称为 Yellow dog Updater, Modified)是一个 Shell 前端软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载和安装。
repo 配置为 yum 源
构建好的 repo 可以配置为 yum 源使用,在 /etc/yum.repos.d/ 目录下创建 *.repo 的配置文件(必须以 .repo 为扩展名),分为本地和 http 服务器配置 yum 源两种方式:
配置本地 yum 源
在 /etc/yum.repos.d 目录下创建 EulixOS-1.0-Base.repo 文件,使用构建的本地 repo 作为 yum 源,EulixOS-1.0-Base.repo 的内容如下:
[base] name=base baseurl=file:///srv/repo enabled=1 gpgcheck=1 gpgkey=file:///srv/repo/EulixOS-gpg.key
说明:
gpgcheck 可设置为1或0,1表示进行 gpg(GNU Private Guard)校验,0表示不进行 gpg 校验,gpgcheck 可以确定 rpm 包的来源是有效和安全的。
gpgkey 为签名公钥的存放路径。
配置 http 服务器 yum 源
在 /etc/yum.repos.d 目录下创建 EulixOS-1.0-Base.repo 文件,使用 http 服务端的 repo 作为 yum 源,EulixOS-1.0-Base.repo 的内容如下:
[base] name=base baseurl=http://192.168.1.2/ enabled=1 gpgcheck=1 gpgkey=http://192.168.1.2/EulixOS-gpg.key
说明: “192.168.1.2”为示例地址,请用户根据实际情况进行配置。
repo 优先级
当有多个 repo 源时,可通过在 .repo 文件的 priority 参数设置 repo 的优先级(如果不设置,默认优先级是99,当相同优先级的源中存在相同 rpm 包时,会安装最新的版本)。其中,1为最高优先级,99为最低优先级,如给 EulixOS-1.0-Base.repo 配置优先级为2:
[base]
name=base
baseurl=http://192.168.1.2/
enabled=1
priority=2
gpgcheck=1
gpgkey=http://192.168.1.2/EulixOS-gpg.key
说明:
gpgcheck 可设置为1或0,1表示进行 gpg(GNU Private Guard)校验,0表示不进行 gpg 校验,
pgcheck 可以确定 rpm 包的来源是有效和安全的。
gpgkey 为签名公钥的存放路径。
dnf 相关命令
dnf 命令在安装升级时能够自动解析包的依赖关系,一般的使用方式如下:
dnf <command> <packages name>
常用的命令如下:
安装
dnf install <packages name>
升级
dnf update <packages name>
回退
dnf downgrade <packages name>
检查更新
dnf check-update
卸载
dnf remove <packages name>
查询
dnf search <packages name>
本地安装
dnf localinstall <absolute path to package name>
查看历史记录
dnf history
清除缓存目录
dnf clean all
更新缓存
dnf makecache