有没有办法安装 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