是否有一个 apt 命令可以从存储库下载 deb 文件到当前目录?

是否有一个 apt 命令可以从存储库下载 deb 文件到当前目录?

/usr/share我经常对安装触发器 (postinst、postrm) 或软件包的某些部分 (如和)感兴趣/etc。目前,我正在运行下一个命令来检索源代码:

apt-get source [package-name]

缺点是,该文件通常比二进制包大得多,并且不反映安装树。

现在,我正在通过以下方式下载软件包http://packages.ubuntu.com/

  1. 搜索[package-name]
  2. 选择套餐
  3. 点击 amd64/i386 下载
  4. 下载实际文件

这对我来说花了太长时间,作为一个真正喜欢 shell 的人,我想做类似下面的事情(假想) 命令:

apt-get get-deb-file [package-name]

我在apt-get 手册页。我发现最接近的方法是--download-only使用开关,但是这会将包放入/var/cache/apt/archives(需要 root 权限)而不是当前目录中。

答案1

您可以使用或的download子命令。例如,如果aptapt-getaptitude包价是你想要的包,以下任何一个都可以:

apt-get download $PKG
apt download $PKG
aptitude download $PKG

这不需要 root 权限。也可以使用apt-get和来近似实现相同的效果wget

wget $(apt-get install --reinstall --print-uris -qq $PKG | cut -d"'" -f2)

但是,这将获取安装该包所需的所有包,因此您可以尝试限制它:

wget $(apt-get install --reinstall --print-uris -qq $PKG | cut -d"'" -f2 | grep "/${PKG}_")

您还可以将 wget 行放入函数中,以便能够将其用作命令 apt-download,并以软件包名称作为参数:

function apt-download { wget -c $(apt-get install --reinstall --print-uris -qq $1 | cut -d"'" -f2); }

请注意修改:$PKG 被 $1 替换,并且 -c 参数可以继续中断的下载。

答案2

sudo apt-get -o dir::cache::archives="/path/to/folder/" -d install package

笔记:

您需要在目标文件夹中创建一个名为 partial 的文件夹。

答案3

在 Ubuntu 14.04(我相信是apt包版本)中,包含将给定包下载为当前目录中的命令。1.0.1ubuntu2apt-getdownload.deb

例如,假设我们要下载文件管理器Ranger

$ apt-get download ranger

结果是:

$ ls . | grep ranger
ranger_1.6.0-1_all.deb

答案4

sudo apt-get install devscripts

dget [package-name]

相关内容