Yanıtlar:
Senaryonuzu bildiğime inanıyorum çünkü Ubuntu 12.04'ü kullanırken daha önce de oradaydım. Her şeyden önce, bu çemberlerin içinden atladıktan sonra Ruby'yi bir sistemde yönetmenin en iyi yolunun RVM (Ruby Sürüm Yöneticisi) kullanmak olduğunu öğrendim . Resmi Ubuntu / Debian paket yöneticisi kurulumunun bir parçası değil, ancak Ruby'nin gelişimi konusunda ciddiyseniz, RVM kurulum yapmadan ve Ruby'nin birden çok sürümünü çakışma olmadan kullanmanın en iyi yoludur.
Bununla birlikte, RVM'nin ihtiyaçlarınızı karşılamayacağı bir kurulumdaysanız veya Ruby 1.9.1 ile kalmayı tercih ediyorsanız, okumaya devam edin…
Bu yüzden, Ubuntu 12.04'teki varsayılan depo aracılığıyla Ruby 1.8'i kurduğunuzu farz edeceğim ve daha sonra - gerçeğinden sonra - Ruby 1.9.1'e ihtiyacınız olduğunu fark ettiniz, böylece şöyle bir komutla yüklediniz:
sudo aptitude install ruby1.9.1 ruby1.9.1-dev \
rubygems1.9.1 irb1.9.1 ri1.9.1 rdoc1.9.1 \
build-essential libopenssl-ruby1.9.1 \
libssl-dev zlib1g-dev
Eh, bu olacak Yakut 1.9.1 Sisteminizde yüklü olsun ama olmaz Yakut varsayılan 1.9.1 olun. Bu setin elde edilmesinin anahtarı kullanmaktır update-alternatives
ve resmi el update-alternatives
kitabında açıklandığı gibi :
Aynı veya benzer işlevleri yerine getiren birçok programın aynı anda tek bir sisteme kurulması mümkündür. Örneğin, birçok sistemde aynı anda kurulu birkaç metin editörü vardır. Bu, bir sistemin kullanıcılarına, her birinin istenirse farklı bir düzenleyici kullanmasına izin veren bir seçenek sunar, ancak bir programın, bir kullanıcı için belirli bir tercih belirtmemişse, bir düzenleyicinin çağırması için iyi bir seçim yapmasını zorlaştırır.
Debian'ın alternatif sistemi bu sorunu çözmeyi amaçlamaktadır. Dosya sistemindeki genel bir ad, değiştirilebilir işlevsellik sağlayan tüm dosyalar tarafından paylaşılır. Alternatifler sistemi ve sistem yöneticisi birlikte bu asıl dosyanın hangi asıl dosyaya başvurduğunu belirler.
Bu durumda, Ruby 1.9.1'in sistemdeki varsayılan Ruby olarak doğru bir şekilde tanınması için atmanız gereken üç adım vardır.
İlk önce bu komutu çalıştırın:
sudo update-alternatives --install /usr/bin/ruby ruby /usr/bin/ruby1.9.1 400 \
--slave /usr/share/man/man1/ruby.1.gz ruby.1.gz \
/usr/share/man/man1/ruby1.9.1.1.gz \
--slave /usr/bin/ri ri /usr/bin/ri1.9.1 \
--slave /usr/bin/irb irb /usr/bin/irb1.9.1 \
--slave /usr/bin/rdoc rdoc /usr/bin/rdoc1.9.1
Ardından, update-alternatives
Ruby tercümanınızı seçmek için tekrar çalıştırın . Bu, çekirdek Ruby öğeleri için sembolik bağlantıları da değiştirir:
sudo update-alternatives --config ruby
Seçiminizi yapın ve ardından update-alternatives
ilgili Ruby GEM'lere gidin:
sudo update-alternatives --config gem
Son olarak, Ruby sürümünün şu şekilde güncellendiğini onaylayın:
ruby --version
Gem'in belirli sürümünü ruby'nin belirli bir sürümüne yüklemek için mutlak yolu kullanın . örn /opt/sensu/embedded/bin/gem install vmstat
.
ruby -v
ruby 1.9.3p392 (2013-02-22 revision 39386) [x86_64-linux]
/opt/sensu/embedded/bin/ruby -v
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]
Varsayılan sürümüm yakut 1.9.3p392 olsa da, yakut 2.3.0p0'a özgü taşlar yükleyebilirim.
Gem komutu, kurulu olan Ruby versiyonuna bağlı.
Ruby 1.8 için Gem, yakut 1.9 için gem farklıdır.
Bu nedenle, yolunuz 1.8’i gösteriyorsa, gem komutu taşı 1.8 ile ilgili yola yükler.
Çözüm: Hızlı ve basit yol, ortam değişkenindeki yakut yolunu 1,9 olarak değiştirip gem yüklemesini yapmaktır.
Not: Ruby 1.8'e ihtiyacınız varsa yolu tekrar değiştirmeniz gerekir. Ayrıca gem her Ruby sürümü için yukarıda belirtilen şekilde ayrı ayrı kurulmalıdır.