是否可以从 URL 安装 .deb?

Jor*_*ril 99 package-management apt dpkg

有没有办法使用 shell直接从 URL安装 deb 包?就像是

dpkg -i http://domain.com/path/to/package.deb
Run Code Online (Sandbox Code Playgroud)

(我知道我可以先使用 wget,然后使用 dpkg,我只是想知道是否已经有一些东西可以做到)

Oli*_*Oli 64

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

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

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

我意识到围绕此存在技术和安全问题(您无法获得自动更新,来源是否可信等),但在纯粹的“我能做”的基础上,这可能会奏效。

  • 如果要从脚本运行,我还建议使用 `dpkg --skip-same-version -i $FILE`。更多信息在这里 - https://manpages.debian.org/unstable/dpkg/dpkg.1.en.html (7认同)

Tgr*_*Tgr 32

不创建临时文件是不可能的。通常你会这样做

### Does not work
wget --quiet --output-document=- http://example.com/path/to/package.deb | dpkg --install -
Run Code Online (Sandbox Code Playgroud)

或者可能

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

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

  • 这是一个有用的答案,但它的结构方式使答案似乎是“是的,这里有两种方法可以做到这一点”。 (12认同)
  • 已编辑。请注意,dpkg 1.17.7+ 采用标准输入参数来执行[其某些命令](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=357093#28),但不用于安装。 (3认同)
  • 哈哈!我在谷歌搜索之前尝试了这两种方法。感谢您创建这个答案来告诉志同道合的人,“你并不疯狂。” (3认同)

Rin*_*ind 10

最快的方法是这样。点击开始安装百叶窗 .

用于单击名称的 URL:

http://packages.ubuntu.com/shutter
Run Code Online (Sandbox Code Playgroud)

...点击图标:

http://apt.ubuntu.com/p/shutter
Run Code Online (Sandbox Code Playgroud)

是的,您需要 Ubuntu 软件中心来完成 .DEB 的安装。否则,您必须从 Nautilus 或命令行执行安装。

用于此的完整文本仅用于 Ask Ubuntu,因此您需要将其重新格式化为锚点:

[shutter](http://packages.ubuntu.com/shutter) [![Install shutter]
(https://i.stack.imgur.com/HjNGK.png)](http://apt.ubuntu.com/p/shutter)
Run Code Online (Sandbox Code Playgroud)

可以在apturl wiki 页面上找到更多信息:

  1. 1 包:

    a href="apt:package"
    
    Run Code Online (Sandbox Code Playgroud)
  2. 捆绑几个包:

    a href="apt:package1,package2,package3"
    
    Run Code Online (Sandbox Code Playgroud)
  3. 启用存储库:

    apturl apt:freevial?section=universe
    
    Run Code Online (Sandbox Code Playgroud)

因此,如果软件不在默认启用的存储库中,您应该向其添加“section=”。否则无法使用此方法,需要用户自行下载安装。

  • 请注意:[AptUrl](https://wiki.ubuntu.com/AptUrl) 不适用于不在用户存储库中的软件 (9认同)

ken*_*orb 8

您可以尝试使用curl.

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

curl -sLO https://apt.puppetlabs.com/puppetlabs-release-precise.deb && sudo dpkg -i puppetlabs-release-precise.deb
Run Code Online (Sandbox Code Playgroud)

/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
Run Code Online (Sandbox Code Playgroud)

  • 确认:所有变体在 dpkg 1.17.27 的 Debian Jessie 中都不起作用 (4认同)

小智 5

如果您有(或安装)Ansible:

ansible -m apt -a deb=http://domain.com/path/to/package.deb localhost
Run Code Online (Sandbox Code Playgroud)