linux - 查询 debian 存储库的工具/命令(如 rpm 存储库的 repoquery)

标签 linux ubuntu debian rpm package-managers

我基本上是在给定存储库 URL 和包名称的情况下尝试查询包的最新版本。 所以如果 http://in.archive.ubuntu.com/ubuntu/存储库和 gcc 是包名 那么是否有一个命令/工具可以帮助我找到它的最新版本? 我尝试使用 apt-get 和 apt-cache 问题是我不想将存储库 url 添加到框的/etc/apt/sources.list 中,因为我没有 root 访问权限。 我试过运行

apt-get update -o RootDir=<local-dir>

然后我想我可以将存储库 url 添加到 < local-dir >/etc/apt/sources.list 并运行

apt-cache show <pkg-name> -o RootDir=<local-dir>

但是带有切换根目录的 apt-get 更新失败了

chrooting into <local-dir>/
E: Sub-process returned an error code

这可能吗?或者有其他选择吗?

最佳答案

我不知道是否有“官方”的方式,但是很容易编写自己的解析包列表的脚本:

#!/bin/bash

if [ -n "$1" ]
then
        package="$1"
else
        package="gcc"
fi

release=$(lsb_release -c|awk '{ print $2 }')
file=$(tempfile)

wget -o /dev/null -O $file http://in.archive.ubuntu.com/ubuntu/dists/$release/main/binary-amd64/Packages.gz

gunzip -qc $file | grep -A 10 "^Package: $package$" | awk '/Version/ { print $2 }'
rm $file

如果您在 Ubuntu 上运行并且正在寻找与您当前版本相匹配的软件包,则此方法有效。如果您在另一个发行版上运行,请设置

release="saucy"

例如。

玩得开心!

关于linux - 查询 debian 存储库的工具/命令(如 rpm 存储库的 repoquery),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18615606/

相关文章:

maven - 没有在 JUnit 中使用 Netbeans 执行测试

Git 推送需要永远

java - 使用 Java ME Embedded 8 访问 beaglebone black 上的 GPIO

linux - 命令行打开一个窗口

c - recv() 错误 C/C++ 套接字编程

c++ - 用 C 编译 C++ 代码

linux - 收到错误 "make: *** No rule to make target ` 全部'。安装nagios主机时停止."while running this command "make all”

linux - shell脚本中的全局变量?

c - 构建找不到 Stdio.h 但我可以...?

mysql - Debian 10 MariaDB 'Can' t 通过套接字 '/var/run/mysqld/mysqld.sock' (2)' 连接到本地 MySQL 服务器