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

我经常对安装触发器(postinst,postrm)或软件包的某些部分(如/usr/share/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--download-only开关,但这会将软件包放在/var/cache/apt/archives (需要root权限)而不是当前目录中。

您可以使用aptapt-getaptitudedownload子命令。 例如,如果$ PKG是您想要的包,那么其中任何一个都可以:

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

这不需要root权限。 使用apt-getwget也可以近似:

 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参数允许继续中断下载。

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

注意:

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

在Ubuntu 14.04( apt package version 1.0.1ubuntu2 ,我相信)中, apt-get包含download命令,以便在当前目录中以.deb下载给定的包。

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

 $ apt-get download ranger 

结果是:

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

如果要从列表中下载所有deb软件包,可以执行以下操作:

 cat path/to/text/file.txt | xargs apt-get install --reinstall --print-uris -qq $PKG | cut -d"'" -f2 | xargs wget 

只需在每行放一个包名。 就像在requirements.txt文件中一样。 例如,使用以下内容:

 apache2-mpm-event curl dmidecode ethtool libapache2-mod-wsgi libapache2-mod-python 

希望这可以帮助。 ;)

/var/cache/apt/archives是世界可读的。 在apt-get -d ,只需将其从那里提取到您的主目录。 在主目录中运行dpkg -e /var/cache/apt/archives/foo_version.deb foo ,控制文件将被转储到foo/

sudo apt-get install devscripts

dget [package-name]