是否可以从 URL 安装 .deb?

是否可以从 URL 安装 .deb?

有没有办法安装 deb 包直接地通过 URL,使用 shell? 就像是

dpkg -i http://domain.com/path/to/package.deb

(我知道我可以使用 wget 然后使用 dpkg,我只是想知道是否已经有什么可以做到这一点)

答案1

编辑:我没有看到你之前关于知道你可以使用 wget 的声明,所以这有点尴尬……我会把这个留给任何想知道如何做到这一点的人。此外,我之前的答案版本不起作用,但这个版本(代价是有点长)起作用:

TEMP_DEB="$(mktemp)" &&
wget -O "$TEMP_DEB" 'http://path.to/my.deb' &&
sudo dpkg -i "$TEMP_DEB"
rm -f "$TEMP_DEB"

您只需要在开头更改 URL。这可以是别名,也可以写成 bash 函数。

我意识到这方面存在技术和安全问题(您无法获得自动更新,来源是否可信等),但纯粹从我能否做到的角度考虑,这可能会有效。

答案2

这是不可能无需创建临时文件。通常你可以这样做

### Does not work
wget --quiet --output-document=- http://example.com/path/to/package.deb | dpkg --install -

或者可能

### Does not work
dpkg --install <(wget --quiet --output-document=- http://example.com/path/to/package.deb)

但是 dpkg 使用 mmap 来访问文件,所以两者都不起作用。有一个关于此的错误报告:#367297

答案3

您可以尝试一下curl

要将文件下载到当前文件夹并从本地文件安装:

curl -sLO https://apt.puppetlabs.com/puppetlabs-release-precise.deb && sudo dpkg -i puppetlabs-release-precise.deb

/var/cache/apt/archives/或者从那里下载并安装:

curl -sL -o/var/cache/apt/archives/puppetlabs-release-precise.deb https://apt.puppetlabs.com/puppetlabs-release-precise.deb && sudo dpkg -i /var/cache/apt/archives/puppetlabs-release-precise.deb

答案4

如果你有(或安装)Ansible:

ansible -m apt -a deb=http://domain.com/path/to/package.deb localhost

相关内容