Tag: RVM

RVM i no such file to load — openssl | no such file to load — readline

Instalując poprzez RVMa kolejne wersje Rubiego, natknąć możemy się na taki oto komunikat:

no such file to load -- openssl

Informacja ta wyskakuje kiedy skompilowaliśmy naszego Rubiego bez OpenSSLa. Aby temu zaradzić wystarczy:

cd ~/.rvm/src/ruby-1.9.2-p0/ext/openssl
ruby extconf.rb
make
make install

Podobna procedura tyczy się także w wypadku takiego komunikatu:

no such file to load -- readline

Jedyna różnica jest taka, że musimy zainstalować wcześniej dwa pakiety:

    sudo apt-get install libncurses5-dev libreadline5-dev
    cd ~/.rvm/src/ruby-1.9.2-p0/ext/readline
    ruby extconf.rb
    make
    make install

UPDATE

Hipertracker podał prostsze rozwiązanie:

rvm package install readline
rvm package install openssl
rvm remove 1.9.2
rvm install 1.9.2 –with-readline-dir=$rvm_path/usr –with-openssl-dir=$HOME/.rvm/usr

Aczkolwiek i tak wolę mój sposób - trwa krócej ;)

RVM w skryptach powłoki Bash (jak używać)

Załóżmy, że potrzebujemy napisać skrypt który odpala nam kod w Rubym. Kod ten działa jednak tylko pod specyficzną wersją Rubiego (lub nie działa pod 1.9.2, itd). Jeśli chcielibyśmy zrobić to tak:

rvm system
ruby /~/nasz_program.rb

okaże się, że skrypt się nie odpali (tzn odpali ale pod niepoprawną wersją Rubinka).
Spróbujmy zatem tak:

rvm system
ruby -v

U mnie - domyślną wersją jest wersja 1.9.2-p0, zaś systemowa to 1.8.7. Wywołanie takiego skryptu nie zmieni nam jednak wersji Rubiego na wersję systemową. Aby móc zmieniać dynamicznie wersje Rubiego serwowaną przez RVM musimy dodać do naszego skryptu taki oto kod:

if [[ -s "$HOME/.rvm/scripts/rvm" ]] ; then
  source "$HOME/.rvm/scripts/rvm"
elif [[ -s "/usr/local/rvm/scripts/rvm" ]] ; then
  source "/usr/local/rvm/scripts/rvm"
else
  printf "ERROR: An RVM installation was not found.\n"
fi

dzięki temu, będziemy mogli sobie dynamicznie zmieniać Rubiego z jakiego korzystamy wewnątrz skryptu.

Copyright © 2025 Closer to Code

Theme by Anders NorenUp ↑