是否有一个apt命令将deb文件从存储库下载到当前目录?
我经常对安装触发器(postinst,postrm)或软件包的某些部分(如/usr/share
和/etc
)感兴趣。 目前,我正在运行下一个命令来检索源代码:
apt-get source [package-name]
缺点是,此文件通常比二进制包大得多,并不反映安装树。
现在,我正在通过http://packages.ubuntu.com/下载软件包:
- 搜索
[package-name]
- 选择包
- 点击amd64 / i386进行下载
- 下载实际文件
这对我来说太长了,而且作为一个真正喜欢shell的人,我想做下一个( 虚构的 )命令:
apt-get get-deb-file [package-name]
我在apt-get手册页中找不到这样的东西。 我发现--download-only
是--download-only
开关,但这会将软件包放在/var/cache/apt/archives
(需要root权限)而不是当前目录中。
您可以使用apt
, apt-get
或aptitude
的download
子命令。 例如,如果$ PKG是您想要的包,那么其中任何一个都可以:
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参数允许继续中断下载。
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]