在 CentOS 上自定义 FetchLinux 的设置
一 前置准备与安装
- 更新系统并安装依赖:
- 对于 CentOS 7:sudo yum update && sudo yum install -y git wget curl
- 对于 CentOS 8/Stream:sudo dnf install -y git wget curl
- 获取项目代码并初始化配置:
- git clone https://github.com/fetchlinux/fetchlinux.git /opt/fetchlinux
- cd /opt/fetchlinux && sudo cp fetchlinux.conf.example fetchlinux.conf
- 创建专用系统用户与目录权限:
- sudo groupadd -r fetchlinux
- sudo useradd -r -g fetchlinux -d /opt/fetchlinux -s /usr/sbin/nologin fetchlinux
- sudo chown -R fetchlinux:fetchlinux /opt/fetchlinux
- 说明:FetchLinux更像是一个用于下载/管理发行版镜像或内核源码的第三方工具,并非官方发行版;请以项目实际仓库说明为准。
二 核心配置文件自定义
- 编辑配置文件:sudo nano /opt/fetchlinux/fetchlinux.conf
- 常见可自定义项与示例(键名以实际仓库为准):
- 仓库与镜像
- REPOSITORY_URL=“https://mirrors.example.com/fetchlinux”
- MIRROR_NAME=“MyMirror”
- 更新频率
- UPDATE_FREQUENCY=“daily”(可选值如 hourly/daily/weekly)
- 下载并发与超时
- MAX_CONCURRENT=4
- TIMEOUT=30
- 存储与保留策略
- DOWNLOAD_DIR=“/var/lib/fetchlinux”
- KEEP_LAST=2
- 校验与日志
- ENABLE_CHECKSUM=true
- LOG_LEVEL=“info”
- 若项目提供命令行参数覆盖配置,可在 /etc/sysconfig/fetchlinux 中写入环境变量,例如:
- FETCH_MAX_CONCURRENT=8
- FETCH_LOG_LEVEL=“debug”
- 修改后建议校验语法与权限:
- sudo -u fetchlinux /opt/fetchlinux/fetchlinux --validate
- sudo chmod 600 /opt/fetchlinux/fetchlinux.conf
- 提示:不同版本键名可能不同,请以仓库中的示例配置与帮助文档为准。
三 服务与定时任务
- 使用 systemd 管理(若项目提供单元文件):
- 复制或创建服务:sudo cp fetchlinux.service /etc/systemd/system/
- 重载并启用:sudo systemctl daemon-reload && sudo systemctl enable --now fetchlinux
- 查看状态与日志:sudo systemctl status fetchlinux;sudo journalctl -u fetchlinux -f
- 使用 cron 定时(无 systemd 或需简单周期任务时):
- 编辑:sudo crontab -e -u fetchlinux
- 示例(每日 02:00 执行):0 2 * * * /opt/fetchlinux/fetchlinux --update >> /var/log/fetchlinux.log 2>&1
- 手动触发更新:sudo -u fetchlinux /opt/fetchlinux/fetchlinux --update
- 注意:确保工作目录、下载目录对 fetchlinux 用户可写,且日志目录可写。
四 权限与常见故障排查
- 权限与属主:
- 确认关键目录属主为 fetchlinux:fetchlinux,必要时执行:sudo chown -R fetchlinux:fetchlinux /opt/fetchlinux /var/lib/fetchlinux /var/log/fetchlinux
- 可执行文件权限:sudo chmod +x /opt/fetchlinux/fetchlinux
- 服务账户与 SELinux:
- 若服务文件指定了 User= 与 Group=,请与创建的 fetchlinux 用户/组一致。
- SELinux 拒绝时,先审计:sudo ausearch -m avc -ts recent;必要时使用 setsebool 或 restorecon 修正策略上下文。
- 日志定位:
- 服务日志:sudo journalctl -u fetchlinux -xe
- 应用日志:tail -f /var/log/fetchlinux.log
- 配置校验:
- 运行 sudo -u fetchlinux /opt/fetchlinux/fetchlinux --validate 检查配置合法性。
五 校验与安全建议
- 镜像与文件完整性:
- 下载完成后执行:sha256sum your-image.iso,并与官方校验值比对;必要时使用 GPG 验签(若项目提供公钥/签名文件)。
- 最小权限运行:
- 以 fetchlinux 系统用户运行,避免 root;限制工作与下载目录权限为仅属主读写。
- 网络与代理:
- 若需代理,在 fetchlinux.conf 中设置 HTTP/HTTPS 代理,或在 /etc/profile.d/proxy.sh 中导出环境变量供脚本继承。
- 变更留痕:
- 对 /opt/fetchlinux 与 /etc 下相关文件纳入版本控制或定期备份,便于回滚与审计。