apt passenger 包安装的 passenger_free_ruby 可执行文件是什么

What is the passenger_free_ruby executable that is installed by the apt passenger package

passenger_free_ruby 是如何工作的?

我使用phusion提供的apt包安装了phusion passenger。我的系统 ruby 是使用 brightbox apt 软件包安装的 ruby2.1。我希望 /etc/apache2/mods-enabled/passenger.conf 使用 /usr/bin/ruby 作为 PassengerDefaultRuby 的默认值。它使用 /usr/bin/passenger_free_ruby.

passenger_free_ruby 表现得像 ruby,这是预期的 ruby

/usr/bin/passenger_free_ruby -v
ruby 2.1.6p336 (2015-04-13 revision 50298) [x86_64-linux-gnu]

如果我将 ruby 升级到 ruby2.2,那么 passenger_free_ruby 将作为 ruby2.2

运行
/usr/bin/passenger_free_ruby -v
ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-linux-gnu]

那么 passenger_free_ruby 到底做了什么?免费是什么意思?为什么不直接使用 /usr/bin/ruby 作为默认值 ruby?

其存在的原因记录在the executable's source code

/*
 * This is a simple program for executing either the 'ruby' command in PATH,
 * or one of the Ruby versions installable by APT. This is necessary because
 * Debian 6 and Debian 8 (among others) do not install /usr/bin/ruby upon
 * installing one of the versioned Ruby packages (e.g. apt-get install ruby2.1).
 * Commands such as 'passenger' are supposed to be runnable under any Ruby
 * interpreter the user desires, including non-APT-installed Rubies, but we can't
 * just set the shebang line to '#!/usr/bin/env ruby'. This problem is solved by
 * setting the shebang line to '#!/usr/bin/passenger_default_ruby'.
 */