Nginx和Passenger的依赖问题(Digital Ocean部署)

24

我正在尝试按照这个指南操作:

https://www.digitalocean.com/community/tutorials/how-to-deploy-a-rails-app-with-passenger-and-nginx-on-ubuntu-14-04

当我想要在运行了这个命令后继续进行该教程时:

sudo apt-get install nginx-extras passenger

我遇到了这个错误:

Reading package lists... Done
Building dependency tree

Reading state information... Done
passenger is already the newest version.
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
nginx-extras : Depends: perlapi-5.18.2 but it is not installable
Depends: libperl5.18 (>= 5.18.2) but it is not installable
Recommends: passenger (< 4.0.60) but 1:4.0.59-1~trusty1 is to be installed
E: Unable to correct problems, you have held broken packages.

我认为我无法安装nginx-extras,有人可以帮我吗?


除了教程中提到的那个,您是否添加了其他第三方存储库? - andrewsomething
5个回答

72

我在Ubuntu 14.10上遇到了同样的问题

sudo nano /etc/apt/sources.list.d/passenger.list

注释掉
deb https://oss-binaries.phusionpassenger.com/apt/passenger trusty main

按下ctrl+x
输入Y
按下enter键

sudo apt-get update

sudo apt-get install nginx nginx-extras

那么如果没问题

sudo nano /etc/apt/sources.list.d/passenger.list

插入
deb https://oss-binaries.phusionpassenger.com/apt/passenger wheezy main

按下ctrl键和x键
输入y
按下回车键

sudo apt-get update

sudo apt-get install passenger

瞧!


非常感谢。我知道已经过去一年了,但这正是我所需要的东西! - akaHeimdall
仍然对我有效。 - Crashtor
适用于Ubuntu 18.04 LTS。 - Deshan
如果您仍然遇到错误,请将“wheezy”替换为“jessie”。 - Ali Behzadian Nejad

33

如果您使用的是Ubuntu 16.04,请执行以下操作

# Install our PGP key and add HTTPS support for APT
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 561F9B9CAC40B2F7
sudo apt-get install -y apt-transport-https ca-certificates

# Add our APT repository
sudo sh -c 'echo deb https://oss-binaries.phusionpassenger.com/apt/passenger xenial main > /etc/apt/sources.list.d/passenger.list'
sudo apt-get update

# Install Passenger + Nginx
sudo apt-get install -y nginx-extras passenger

我遇到了相同的问题.. 我的Ubuntu版本是15.10 - George Varghese
运行得非常好!你救了我的一天 :) - Atul

3
我因为这个问题使用了nginx-full而不是nginx-extras。我正在运行14.10,因为我想要Postgres 9.4。
我一直遇到一堆奇怪的错误,而且我无意中一直按照Passenger的指示继续执行APT指令。哎呀。所以我最初遵循了@Maciej-adamczewski的答案,但他添加了一个Debian 7的Passenger安装程序,而不是Ubuntu 14.04的安装程序。这让我很困扰。
以下是我做的事情来解决问题:
sudo apt-mark showhold  # apparently I had nothing in here
sudo apt-get autoclean
sudo apt-get update && sudo apt-get upgrade
# I hoped upgrade would get rid of that error re: nginx-extras
# it didn't at all, so decided to scrap and start over

sudo apt-get purge nginx*  # to get rid of everything nginx
sudo apt-get remove nginx*  # paranoia
sudo apt-get purge passenger
sudo apt-get remove passenger  # paranoia again
sudo apt-get autoremove

sudo apt-get update
sudo apt-get install nginx-full passenger

太棒了!成功运行了nginx。

虽然在Digital Ocean上没有明确说明,但如果您安装的是RVM而不是直接安装Ruby,那么您需要找出您的rvm ruby的位置:

rvm use
passenger-config --ruby-command

然后复制粘贴nginx信息,该信息显示passenger_ruby /usr/local/...,并覆盖您的/etc/nginx/nginx.conf文件中原始的passenger_ruby行。

稍后,当您创建站点时,请确保在nginx的服务器块中添加passenger_enabled on;

感谢此人提供的帮助:在DO上设置Rails


1
在运行上述命令之前,请务必备份您为nginx或passenger工作的任何配置文件。apt-get purge会清除相关的配置文件。 - Grant Neufeld

2
当我遇到这个错误时,是因为我尝试安装的passenger版本与ubuntu版本不匹配。请确认你的ubuntu版本是否为14.04。
如果不是,请将/etc/apt/sources.list.d/passenger.list中的deb https://oss-binaries.phusionpassenger.com/apt/passenger trusty main修改为适合你的ubuntu版本。
然后执行sudo apt-get update

1
如果您不确定当前所使用的版本,可以通过运行 cat /etc/os-release 命令来获取更多信息。在我的情况下,我原以为我使用的是 trusty 版本,但实际上是 xenial 版本。 - JustinParker

0

可能是Ubuntu版本错误,请尝试使用以下命令:

sudo sh -c 'echo deb https://oss-binaries.phusionpassenger.com/apt/passenger xenial main > /etc/apt/sources.list.d/passenger.list'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接