3

我基本上试图在给定存储库 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

这可能吗?还是有其他选择?

4

1 回答 1

1

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

#!/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"

例如。

玩得开心!

于 2013-09-04T16:02:06.733 回答