列出指定仓库的包
从参数上看,命令dnf repoquery --installed --repo=everything貌似能实现这个功能,但实际输出为空,因此有了如下脚本:
#!/bin/bash
# list_pkgs_from_repo.sh
# 检查是否提供了仓库参数
if [ -z "$1" ]; then
echo "错误:请提供要查询的仓库名称作为参数。"
echo "用法:$0 <仓库名称>"
echo "示例:$0 update 或 $0 @commandline"
exit 1
fi
# 规范化仓库名称(处理带@和不带@的情况)
repo_name="$1"
if [[ "$repo_name" != @* && ("$repo_name" = "System" || "$repo_name" = "commandline") ]]; then
repo_name="@$repo_name"
fi
echo "正在查找从 '$repo_name' 仓库安装的包..."
# 遍历所有已安装的包
rpm -qa | while read -r pkg; do
# 使用dnf查询包信息,提取仓库信息
repo_info=$(yum info "$pkg" 2>/dev/null | grep -oP 'From repo\s+:\s+\K.*')
# 检查仓库信息是否匹配(支持部分匹配,如"update"匹配"updates")
if [[ -n "$repo_info" && "$repo_info" == *"$repo_name"* ]]; then
echo "$pkg"
fi
done
作者:wanghongwei
版权声明:本作品遵循<CC BY-NC-ND 4.0>版权协议,商业转载请联系作者获得授权,非商业转载请附上原文出处链接及本声明。

浙公网安备 33010602011771号