55 lines
1.9 KiB
Bash
55 lines
1.9 KiB
Bash
#!/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 -原版 ]
|
|
包管一搜索() {
|
|
|
|
}
|