1

我按照说明运行:

wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | sh

我得到:

...
Hit http://archive.ubuntu.com precise-backports/restricted Translation-en                                                  
Hit http://archive.ubuntu.com precise-backports/universe Translation-en                                                    
Err http://toolbelt.heroku.com ./ Packages                                                                                 
  407  Proxy Authentication Required
Ign http://apt-corp.mirror.corp.google.com goobuntu-backports-precise-stable/main Translation-en_US
...      
Ign http://apt-corp.mirror.corp.google.com ubiquity-precise-stable/main Translation-en
Ign http://apt-corp.mirror.corp.google.com vmware-precise-stable/main Translation-en_US
Ign http://apt-corp.mirror.corp.google.com vmware-precise-stable/main Translation-en
Fetched 2,313 kB in 18s (123 kB/s)
W: Failed to fetch http://toolbelt.heroku.com/ubuntu/./Packages  407  Proxy Authentication Required

知道如何解决这个问题吗?

4

1 回答 1

3

这通常意味着什么

通常407 Proxy Authentication Required在尝试使用 APT 安装软件包时出错意味着:

  1. 您使用 HTTP 代理。
  2. APT 未正确配置为使用它。

如果是这种情况,那么您可以通过添加行来解决问题

Acquire::http::Proxy "http://user:pass@proxy:port/";

到文件中/etc/apt/apt.conf(给出userpassproxyport正确的值)。

资料来源: jaseem407 Proxy Authentication Required回答(在Ask Ubuntu上)。

一个奇怪的情况

在这里,似乎其他软件源也可以工作。apt-get能够从中读取数据archive.ubuntu.com,并且大概能够做更多事情(如果您的 Ubuntu 机器上的包管理器被彻底破坏,您会注意到)。

因此,虽然问题似乎与代理有关,但它可能不是您机器上配置错误的结果。

关于http://toolbelt.heroku.com软件源的一件有趣的事情是导航到该 URL 会将您转发到 HTTPS 站点。APT 完全支持 HTTPS 软件源,但是这个软件源不是 HTTPS

检查脚本启用的软件源的配置显示:

$ cat /etc/apt/sources.list.d/heroku.list 
deb http://toolbelt.heroku.com/ubuntu ./

http://toolbelt.heroku.com/ubuntu也转到 HTTPS 404 页面,但带有尾部斜杠,它不会。当以 结尾时/,它会重定向到http://heroku-toolbelt.s3.amazonaws.com/apt/(尽管可能无关紧要,但无论您是否有尾随 ,它的行为都是正确的/)。

出于代理目的,也许 Ubuntu 或您的代理很难弄清楚什么是 HTTP 和 HTTPS。这只是一个猜测......但我认为值得一试。

一个可能的解决方案

编辑/etc/apt/sources.list.d/heroku.list并将其内容更改为:

deb http://toolbelt.heroku.com/ubuntu/ ./

(也就是说,在 URL 中添加一个斜杠。)

然后运行sudo apt-get update并查看错误是否消失。如果是这样,请尝试安装 Heroku。

  • 您下载的脚本会自动安装它,但它没有达到这一点。所以手动运行:sudo apt-get install heroku

为什么不直接改成amazonaws域名呢?

当我建议添加斜杠时,您可能想知道为什么我不只是说将行更改为:

deb http://heroku-toolbelt.s3.amazonaws.com/apt ./

原因是,即使Packages文件(列出存储库提供的包)存在http://heroku-toolbelt.s3.amazonaws.com/apt并且可以下载

wget http://heroku-toolbelt.s3.amazonaws.com/apt/./Packages

...尽管如此,不知何故apt-get update无法下载该文件:

W: Failed to fetch http://heroku-toolbelt.s3.amazonaws.com/apt/./Packages  404  Not Found

aptitude有同样的问题,这表明它不是一个apt-get错误。此外,除了由和检索的其他文件之外./,该语法也适用于其他文件。 Packagesapt-get updateaptitude update

因此,除非这是足够的信息,您(或某人)可以弄清楚我无法弄清楚的内容,否则将其更改为 amazonaws 域名也不太可能起作用。

手动下载并安装.deb软件包

如果您的代理设置正确并且您的代理本身没有问题,并且在 URL 中添加尾部斜杠不起作用,那么我能想到的唯一解决方案是手动下载和安装.deb软件包的解决方法。

首先,禁用导致错误的 Heroku 存储库:

cd /etc/apt/sources.list.d && sudo mv heroku.list heroku.list.save

Packages文件(以防您根本无法下载)说:

Package: foreman
Priority: standard
Section: main
Maintainer: Heroku
Architecture: all
Version: 0.60.0
Depends: ruby1.9.1
Filename: ./foreman-0.60.0.deb
Size: 89486
MD5sum: 83c614451545d98a09d0bb55e939cc03
SHA1: afd5d9d6ede750cb42bce1ab938dd9ac7bebe100
SHA256: a41532cb9ed60226ca9b4388842215c5ba94f8f5c32d832519858f66d5b19ebe
SHA512: c9327af190b12cb4d7f33cf2480c15c1249b400c4605ea5405ba3e3ddd433789a94471946ef4be452ed1669f1b63bf7150dba03c0e76a0d6f9c9ff981890490a
Description: Manage Procfile-based applications.
 Foreman is a manager for Procfile-based applications. Its aim is to
 abstract away the details of the Procfile format, and allow you to
 either run your application directly or export it to some other
 process management format.

Package: heroku-toolbelt
Priority: standard
Section: main
Installed-Size:
Maintainer: Heroku
Architecture: all
Version: 2.34.0
Depends: git-core, foreman, heroku (= 2.34.0)
Filename: ./heroku-toolbelt-2.34.0.deb
Size: 628
MD5sum: e81597804c537e93f85b89720ae2ebfd
SHA1: ebbb60c1479364f112ea386b5f6199de54dfcf5f
SHA256: c204b87691a5fdd8e0b750512e557ac5c494d4d561ecafb1e6d2c04b078b4bf8
SHA512: 8622e839f4748878a3c3083b09d1a84a16fb0c8c6cd3ac0885e5960810e8116c785e63027ccf87bfd1618be53736dabbcfc47c9c83e072776e9099c5443a64f9
Description: A metapackage for working with the Heroku platform.

Package: heroku
Priority: standard
Section: main
Maintainer: Heroku
Architecture: all
Version: 2.34.0
Depends: ruby1.9.1, libopenssl-ruby1.9.1, libreadline-ruby1.9.1, libssl0.9.8 (>= 0.9.8k) | libssl1.0.0
Filename: ./heroku-2.34.0.deb
Size: 639186
MD5sum: 474461b8217d45a954fc0eeab007b53d
SHA1: 50f2ca475d78d480a47dcc56353707c69209dbb9
SHA256: 7caf91c66e6c439b210b338a06313218b8a38ce5458467771f51df770832c476
SHA512: d009fb299232dc65ce586fe185670d96c1cf30bf15e7dada1f11000e7753951dc77b872caca0897e856a88fe3142f2da9f63b90adaeca213bacdb73455c8c1f1
Description: Client library and CLI to deploy apps on Heroku.

因此,创建一个空目录,获取 debs,并安装它们及其依赖项:

mkdir ~/heroku-debs
cd ~/heroku-debs
wget http://toolbelt.heroku.com/ubuntu/foreman-0.60.0.deb
wget http://toolbelt.heroku.com/ubuntu/heroku-toolbelt-2.34.0.deb
wget http://toolbelt.heroku.com/ubuntu/heroku-2.34.0.deb
# You may want to verify hashes now. Ideally, download the Packages file
# yourself, rather than assuming the authenticity of what I've quoted here.
sudo dpkg -i *.deb
sudo apt-get update && sudo apt-get -f install

请记住,当您的其他软件更新时,它们不会自动更新。但是,假设您能够下载该Packages文件,您可以使用它来不时检查更新。

我希望我提出的早期解决方案之一对您有用。如果没有,这应该,并且希望很快会找到一个不那么丑陋的解决方案。

于 2013-01-18T11:45:40.610 回答