#!/usr/bin/zsh # 路径名称: 公共/包管.zsh # 脚本作用: 统一不同发行版中预制的不同的包管理的功能 # 当前支持的包管理器有: apt yum pacman # 可实现的功能有 `包管_更新` `包管_安装` `包管_搜索` # 第一作者: 寻觅(xunmiemail@vip.qq.com) # 创建时间: 2024年2月5日11:25:00 # 使用方法: 在言灵根目录下使用`. 公共/包管.zsh` # 启动言灵包管理模块的标识符 言灵一包管=1 # 调用当前包管理器检查和更新 # 参数 [ -n --no-update -不更 ] 携带此参数为仅检查更新 # 参数 [ -y -确认 ] 跳过包管理器更新时的二次确认 # 实例 `包管_更新 -n`; `包管_更新 -确认` 包管一更新() { if [ -x "$(command -v oma)" ]; then # ${特权} oma refresh ${特权} oma update -y elif [ -x "$(command -v apt)" ]; then ${特权} apt-get update -qq elif [ -x "$(command -v yum)" ]; then ${特权} yum update elif [ -x "$(command -v pacman)"]; then ${特权} pacman -Syu fi } # 调用当前包管理器的安装模块 包管一安装(){ [ -x "$(command -v $1)" ] && return 0 if [ -x "$(command -v oma)" ]; then # 解决oma找不到软件包返回值还是0的问题, 先搜索一下软件包 # 神奇的oma居然不走标准输出(2>&1, 将错误输出重定向到标准输出, 方便管道符处理), 坑人啊 ${特权} oma search $1 2>&1 | head -n 1 | grep -q '\[完整匹配\]' || return 1 ${特权} oma install -y $1 elif [ -x "$(command -v apt)" ]; then ${特权} apt -y install $1 elif [ -x "$(command -v yum)" ]; then ${特权} yum install -y $1 elif [ -x "$(command -v pacman)" ]; then ${特权} pacman -Sy --needed $1 else return 1 fi } # 默认会尝试使用 apt-file pkgfile 等第三方搜索工具, 未找到第三方搜索工具时尝试使用包管理器自带搜索模块 # 参数 [ -n --no-file -原版 ] 包管一搜索() { }