# Система сборки - Rubinius
Rubinius is an implementation of the Ruby programming language. The Rubinius bytecode virtual machine is written in C++. The bytecode compiler is written in pure Ruby. The vast majority of the core library is also written in Ruby, with some supporting primitives that interact with the VM directly.
Author: Less Than Three. <3. http://less.thanthree.com

1.2.3

## Система сборки

This topic has missing or partial documentation. Please help us improve it.

See How-To - Write Documentation

TODO: расписать детали.

В качестве программы для сборки собственных файлов Rubinius стандартно использует Rake. Также в систему включено несколько внешних библиотек, компиляция которых управляется Makefile-ами.

## Сборки девелоперские и инсталляционные

Rubinius состоит из исполняемого бинарника и множества дополнительных файлов, таких как Основная и Стандартная библиотеки (core & standard libraries). Бинарник должен знать, где искать эти файлы даже тогда, когда он сам перемещен в произвольную локацию. Чтобы решить эту проблему, Rubinius различает два типа сборок: девелоперскую (development build) и инсталляционную (install build). Бинарник знает полный путь до своей базовой директории, относительно которой ожидает найти необходимые ему файлы.

Девелоперский бинарник хранит путь до директории исходника, в которой был собран. После сборки бинарник можно унести в любую другую директорию, но следует помнить, что по мере Вашей работы над файлами Основной библиотеки в каталогах `kernel/**`, бинарник будет продолжать пользоваться именно ими.

Инсталляционный бинарник знает путь к директории инсталляции. Так же как и в предыдущем случае, если бинарник перенести в новое место, он все равно найдет проинсталлированные файлы.

Данный подход, конечно, имеет некоторые последствия. Если скомпилирован девелоперский бинарник, а затем директория с исходниками была переименована, для продолжения работы бинарника придется его пересобрать. Точно так же, когда установлен инсталлируемый бинарник и переименована директория инсталляции, бинарник не станет работать, даже если будет помещен в нее непосредственно. Бинарник проверяет наличие единственного, жестко прошитого в нем пути. Если когда-нибудь по какой-то причине такой подход станет особенно неприемлемым, мы его пересмотрим.

## Инсталляция Rubinius

Для инсталляции Rubinius нужно прежде всего сконфигурировать для него префикс инсталляции:

    ./configure --prefix=/path/to/install/dir

Программа `configure` создаст файл `config.rb`, в котором указаны ключевые пути, используемые в Rubinius. После конфигурирования запустите `rake install` для сборки и инсталляции. Эта процедура сформирует все нужные файлы, включая Стандартную библиотеку в `lib/`, а затем скопирует их в директорию инсталляции при помощи программы `install`. Задачи для `install` прописаны в файле `rakelib/install.rake`.