Как MacPorts устанавливает пакеты? Как я могу активировать установку Ruby через MacPorts?

После попытки установить ruby19 на мою машину (PPC, Mac OSX 10.5.7) с помощью следующей командной строки

sudo port install ruby19

версия рубина не изменилась

ruby -v => ruby 1.8.6 (2008-08-11 patchlevel 287) [universal-darwin9.0]

Я предполагаю, что на моем Mac установлены две версии, но как мне теперь использовать последнюю?


person Julian Weimer    schedule 26.08.2009    source источник


Ответы (4)


Чтобы использовать определенную версию ruby, если у вас установлены две версии, вы можете указать абсолютный путь к той, которую хотите. Например. /your/path/to/ruby Или вы можете изменить настройку PATH в своем .profile

вы можете ввести

which ruby

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

с использованием

echo $PATH

Вы можете увидеть текущую настройку PATH. Вы должны добавить путь к вашему новому бинарному файлу ruby ​​в PATH, чтобы он был найден раньше другого.

Как уже упоминал ayaz, расположение ваших файлов macports по умолчанию находится в /opt/local. Если вы добавите /opt/local/bin перед своим путем, все будет в порядке. (Обязательно запустите новое окно терминала после изменения - они не будут выбраны в вашем текущем сеансе, если вы снова явно не "используете" файл .profile)

Одно предостережение: после добавления /opt/local/bin к вашему пути оболочка всегда будет предпочитать двоичные файлы, находящиеся там, а не двоичные файлы, найденные позже, это может быть проблемой, если вы зависите от определенных версий в /bin , /sbin или /usr/sbin — в зависимости от вашей ситуации это означает, что вы не должны этого делать (если ваш компьютер обрабатывает конфиденциальные данные и/или в банке или что-то в этом роде) или просто должны помнить, что это может быть проблемой (если ваш компьютер является обычной машиной для разработки).

См. http://www.tech-recipes.com/rx/2621/os_x_change_path_environment_variable/ если вам нужны дополнительные советы о том, как установить PATH на osx.

person Simon Groenewolt    schedule 26.08.2009
comment
спасибо за информацию, и я думаю, что macports уже сделал это для меня, потому что, когда я посмотрел его название, использовать ruby ​​1.9 так же просто, как ввести ruby1.9 ... в терминал export PATH=/opt/ местный/bin:/opt/местный/sbin:$PATH - person Julian Weimer; 26.08.2009

По умолчанию порт Ruby 1.9 в MacPorts устанавливает двоичный файл Ruby в /opt/local/bin/ruby1.9. Он добавляет 1.9, чтобы не топать библиотеки и гемы Ruby 1.8.7, поскольку не все гемы еще совместимы с 1.9. Поэтому вам нужно запустить Ruby 1.9 с ruby1.9irb1.9 и т. д.)

Если вы не хотите этого делать, у вас есть два варианта:

  1. Псевдоним от ruby до ruby1.9 в файле конфигурации оболочки.
  2. Установите порт Ruby 1.9 с вариантом +nosuffix. Однако имейте в виду, что если вы установили Ruby 1.8 через MacPorts, установка Ruby 1.9 через MacPorts без суффикса 1.9 может вызвать конфликты (с драгоценными камнями и т. д.).
person mipadi    schedule 12.11.2009
comment
Альтернативой добавлению псевдонима является создание каталога bin в вашей домашней папке и создание там ссылок на macport ruby ​​ln -s /opt/local/bin/ruby1.9 ruby и gem ln -s /opt/local/bin/gem1.9 gem, а затем источник этого сначала по вашему пути export PATH=~/bin:$PATH. Преимущество этого в том, что это позволит MacVim выбрать правильную версию Ruby (он не распознает псевдонимы, только $PATH). - person atomicules; 27.08.2011
comment
Метод использования варианта +nosuffix был заменен новым синтаксисом MacPorts (начиная с версии 2.1.3?): port select --set ruby ruby19. Предположительно, это относится к любому пакету, имеющему несколько доступных версий, хотя кажется, что сопровождающий пакета должен реализовать поддержку для этого индивидуально. select' command sets which of those versions will be available without the suffix (/opt/local/bin/ruby` вместо /opt/local/bin/ruby19.) - person beporter; 12.04.2013

Небольшое разъяснение по поводу MacPorts. Аяз прав, что по умолчанию MacPorts устанавливает вещи в /opt/local. (Это упрощает глобальное удаление позже, если вы хотите, и удерживает пакеты MacPorts в стороне от пакетов OS X.)

Когда вы устанавливаете MacPorts, он обычно редактирует ваш $PATH (и ваш $MANPATH) для вас, обновляя .profile вашего пользователя (создавая его, если он еще не существует).

В качестве меры предосторожности установщик создаст резервную копию исходного .profile на случай, если вы захотите отменить изменения (или если вы полностью удалите MacPorts позже). Вот пример случайной машины на работе.

admin ~ $ ls .profile*
.profile  .profile.macports-saved_2009-08-03_at_14:55:56

Если вы посмотрите в .profile, вы должны увидеть что-то вроде этого:

##
# Your previous /Users/admin/.profile file was backed up as /Users/admin/.profile.macports-saved_2009-08-03_at_14:55:56
##

# MacPorts Installer addition on 2009-08-03_at_14:55:56: adding an appropriate PATH variable for use with MacPorts.
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
# Finished adapting your PATH environment variable for use with MacPorts.

# MacPorts Installer addition on 2009-08-03_at_14:55:56: adding an appropriate MANPATH variable for use with MacPorts.
export MANPATH=/opt/local/share/man:$MANPATH
# Finished adapting your MANPATH environment variable for use with MacPorts.

Если ваш $PATH не был обновлен, вам следует настроить его, так как в противном случае у вас возникнут проблемы с использованием инструмента port и программного обеспечения, которое вы устанавливаете через MacPorts.

person Telemachus    schedule 26.08.2009

Я склонен думать, что macports обычно хранит все свои вещи в каталоге /opt/local. Я использую Leopard, и он у меня в этом каталоге. Вы можете заглянуть туда, особенно внутрь /opt/local/bin, чтобы найти искомый двоичный файл ruby.

person ayaz    schedule 26.08.2009