রুচি সমপরিমাণ ভার্চুয়ালেনভ?


165

পাইথন ইউটিলিটি ভ্যুচুয়ালেনভের মতো কিছু আছে কি? ?

মূলত এটি আপনাকে পাইথন প্যাকেজগুলি একটি স্যান্ডবক্সযুক্ত পরিবেশে ইনস্টল করতে দেয়, সুতরাং easy_install djangoআপনার সিস্টেম-প্রশস্ত সাইট-প্যাকেজ ডিরেক্টরিতে না যায়, এটি ভার্চুয়ালেনভ-নির্মিত ডিরেক্টরিতে চলে।

উদাহরণ স্বরূপ:

$ virtualenv test
New python executable in test/bin/python
Installing setuptools...cd .........done.
$ cd test/
$ source bin/activate
(test)$ easy_install tvnamer
Searching for tvnamer
Best match: tvnamer 0.5.1
Processing tvnamer-0.5.1-py2.5.egg
Adding tvnamer 0.5.1 to easy-install.pth file
Installing tvnamer script to /Users/dbr/test/bin

Using /Library/Python/2.5/site-packages/tvnamer-0.5.1-py2.5.egg
Processing dependencies for tvnamer
Finished processing dependencies for tvnamer
(test)$ which tvnamer 
/Users/dbr/test/bin/tvnamer

রুবিগেমসের জন্য কি এরকম কিছু আছে?

উত্তর:


84

আরভিএম ভ্যুচুয়ালেনভ কীভাবে কাজ করে তার কাছাকাছি কাজ করে যেহেতু এটি আপনাকে বিভিন্ন রুবি সংস্করণ এবং তাদের রত্ন ইত্যাদির স্যান্ডবক্স দেয় etc.


5
স্যান্ডবক্স এবং আরভিএম উভয়ই চেষ্টা করে দেখে মনে করুন যে আরভিএম আরও ভাল সমাধান।
ivanjovanovic

9
ivanjovanovic। আপনি কেন স্যান্ডবক্সের চেয়ে আরভিএমকে আরও ভাল খুঁজে পেয়েছেন?
শুক্রবার

67

আপনার অ্যাপ্লিকেশনটির রত্ন নির্ভরতাগুলির সংস্করণগুলি কোনও স্যান্ডবক্স, আরভিএম, বা আরবেনভ পরিচালনা করে না। এর জন্য সরঞ্জামটি বান্ডিল

  • আপনার অ্যাপ্লিকেশন নির্ভরতা ঘোষণা হিসাবে একটি রত্ন ফাইল ব্যবহার করুন
  • bundle installএই নির্ভরতাগুলির সুস্পষ্ট সংস্করণকে একটি বিচ্ছিন্ন স্থানে ইনস্টল করতে ব্যবহার করুন
  • bundle execআপনার অ্যাপ্লিকেশন চালাতে ব্যবহার করুন

6
এছাড়াও, ব্যক্তিগতভাবে আমি মনে করি লোকেরা rbenv / rvm অতিরিক্ত ব্যবহার করে। আপনার যদি একই মেশিনে রুবির একাধিক, বিচ্ছিন্ন সংস্করণ থাকা দরকার না — এবং আপনি সম্ভবত r rbenv / rvm ব্যবহার করবেন না। তাদের "বিমূর্ততা" নিখরচায় আসে না; আমি গ্যারান্টি দিচ্ছি যে আপনি কোনও সময় তাদের ডিবাগ করতে সময় ব্যয় করতে হবে। আমার পরামর্শ: আপনার অপারেটিং সিস্টেমের প্যাকেজ ম্যানেজারের সাথে কেবল রুবি ইনস্টল করুন। সর্বশেষতম বৃহত্তম।
pje

6
আমি কিছু অনুপস্থিত করছি? বান্ডলার এখনও প্যাকেজ সিস্টেম ডিফল্টরূপে ইনস্টল করার চেষ্টা করে।
অবধি

6
বিচ্ছিন্ন পরিবেশগুলি একটি আধুনিক কাজের প্রবাহে বেশ অ-alচ্ছিক। আপনি যদি সিস্টেম রুবি এবং সিস্টেম প্যাকেজ ম্যানেজারের উপর নির্ভর করেন তবে আপনার কোনও নিশ্চয়তা নেই আপনার ইনস্টলগুলি পুনরাবৃত্তিযোগ্য হবে এবং চেহারায় আপনাকে কামড়াতে চলেছে ডিপেল করার সময় আসবে। এর অবশ্যই আপনি মাঝে মাঝে দৈত্য ইনস্টল যুদ্ধ নিচে bogged পাবেন। এটিও একটি ভাল জিনিস। কারণ আপনি নিজের ডেভ পরিবেশে সমস্যাগুলি সমাধান করেন তাই আপনার লাইভ পরিবেশে কখনই সেগুলি সমাধান করতে হবে না। পুনরায় বলার জন্য, আপনার কোডে অর্থ প্রদান করা যদি কখনও সিস্টেমের পরিবেশ ব্যবহার না করে। বিচ্ছিন্নতার জন্য, একটি বিচ্ছিন্ন পরিবেশ ব্যবহার করুন।
শায়নে

19

কেউ আরবেভের উল্লেখ করেছেন বলে মনে হয় না ।


rbenv একজন রুবি ম্যানেজার, তবে এটি একটি প্যাকেজ স্তরে (ভার্চুয়ালেনভের সমতুল্য) এটি কোনও জেমসেট ম্যানেজারকে ভার্চুয়াল এনভিভির প্রস্তাব দিতে সক্ষম হয় না।
ইয়েকটা

16

আমি মনে করি আপনি স্যান্ডবক্স পছন্দ করবেন ।


9
পবিত্র বোকা, যে আবার লিখেছে $HOME?! কী রত্ন প্রয়োজন আছে যে জন্য? দুঃখজনক বিষয় হ'ল, আমি এই কাজের জন্য সবচেয়ে ভাল জিনিসটি দেখেছি। এমনকি সিস্টেম রুবি পথে ইনস্টল করতে বান্ডলার ডিফল্ট।
ক্রিস আর

6
স্যান্ডবক্সটি years বছরে আপডেট করা হয়নি (শেষ প্রতিশ্রুতি ডিসেম্বর
২০০

16

আমি যেভাবে বান্ডিলারের সাথে এটি করব তা উল্লেখ করব (যা আমি রুবিগুলি পরিচালনা করতে আরভিএম - আরভিএমের সাথে ব্যবহার করি এবং বিশ্ববতী রত্নগুলির একটি ডিফল্ট সেট, প্রকল্পের নির্দিষ্ট রত্নগুলি পরিচালনা করতে বান্ডলার)

bundler install --binstubs --path vendor

কোনও প্রকল্পের মূলটিতে এই আদেশটি চালানো আপনার জেমফাইল থেকে তালিকাভুক্ত রত্নগুলি ইনস্টল করে দেবে ./vendor, এবং কোনও এক্সিকিউটেবল ./binএবং সমস্ত ক্ষেত্রে require(আপনি যদি ব্যবহার করেন তবে)bundle console বা বান্ডিলারের প্রয়োজন হয়) এই নির্মূল ও লিবগুলিকে উল্লেখ করবে।

আমার জন্য কাজ কর.


ম্যাকোএসে থাকা লোকদের জন্য একটি সাম্প্রতিক টিপ, আপনি যদি সেই পথটির নাম দেন তবে vendor.noindexআপনার স্পটলাইট অনুসন্ধানগুলি বিক্রেতার রত্ন থেকে সূচিযুক্ত ডেটা দিয়ে বিশৃঙ্খলা হবে না।
আইইন

1
এটি আমিও করি (সাথে rbenv, তবে এটি অন্য গল্প), যেহেতু এটি রত্ন এবং রুবি সংস্করণকে আলাদা করে দেয়। সিস্টেমওয়াইড কোনও কিছুই ইনস্টল করা হয় না এবং প্রতিটি প্রকল্পের সমস্ত নির্ভরতা ভালভাবে ঘোষণা করে। টিপ: bundle config path vendorসেই যুক্তিটি কখনও ভুলে যাবেন না।
nandilugio

15

আপনার যদি কেবল রত্নকে অ-মূল হিসাবে ইনস্টল করতে হয় তবে GEM_HOMEপরিবেশের পরিবর্তনশীল সেট করার চেষ্টা করুন । তারপরেই দৌড়াও gem

উদাহরণ স্বরূপ:

$ export GEM_HOME=$HOME/local/gems
$ gem install rhc

অসাধারণ! ওএসএক্স-এ সেই ফোল্ডারটি লুকানো রয়েছে:export GEM_HOME=$HOME/.local/gems
ব্রুনো

1
এটি ব্যবহার করা সহজ হতে পারে GEM_HOME=$HOME/.localতাই এটি একই .binফোল্ডারটি ভাগ করে । সেক্ষেত্রে আমাদের $PATHভেরিয়েবল আপডেট করতে হবে না ।
ব্রুনো


এতদূর অবধি নির্ধারিত নির্ভরতার পদ্ধতির জন্য আমি এখনও এমন সরঞ্জামগুলি ইনস্টল করার জন্য দেখেছি যা আপডেট হওয়ার পরে একে অপরকে ভেঙে না ফেলে (যা বাকি রয়েছে তা আপনার ~/.bashrcএবং আপনার কাজ শেষ হয়ে গেছে) alias +1
প্যারাডক্সিস

4

আমি ডিরেক্টন । এটি শেলের জন্য পরিবেশগত পরিবর্তনকারী।

প্রতিটি প্রম্পটের আগে এটি বর্তমান এবং মূল ডিরেক্টরিতে ".envrc" ফাইলটির অস্তিত্ব পরীক্ষা করে। যদি ফাইলটি বিদ্যমান (এবং অনুমোদিত) থাকে তবে এটি একটি ব্যাশ সাব-শেলটিতে লোড করা হয় এবং সমস্ত রফতানি ভেরিয়েবলগুলি ডাইরেনভ দ্বারা ক্যাপচার করা হয় এবং তারপরে বর্তমান শেলটি উপলব্ধ করা হয়।

এখানে কীভাবে ডার্নিভ ব্যবহার করবেনরুবি-ইনস্টলের সাথে

+ রুবি-ইনস্টল করুন

এটিতে যুক্ত করুন ~/.direnvrc

use_ruby() {
  local ruby_root=$HOME/.rubies/$1
  load_prefix "$ruby_root"
  layout_ruby
}

রুবি-ইনস্টল ( brew install ruby-install) ইনস্টল করুন এবং একগুচ্ছ রুবি ইনস্টল করুন।

ruby-install ruby 1.9.3
ruby-install ruby 2.0.0
ruby-install ruby 2.2.0

এবং তারপরে সুবিধার্থে বেশ কয়েকটি সিমলিংক তৈরি করুন:

ln -s .rubies/1.9 ruby-1.9.3-p*
ln -s .rubies/2.0 ruby-2.0.0
ln -s .rubies/2.2 ruby-2.2.0

এবং শেষ পর্যন্ত যে কোনও প্রকল্পে .envrc:

use ruby 2.0

এটি প্রকল্পের .direnv/rubyডিরেক্টরিতে সমস্ত রত্ন রাখবে (খোলার রত্নকে সহজ করে তোলে)। বান্ডলার মধ্যে মোড়ক বাইনারি রাখবে .direnv/bin(আর নেই)bundle exec !)।

+ আরবেনভ

যে use rbenvকোনও একটি কমান্ড যুক্ত করে rbenv ব্যবহার করাও সম্ভব.envrc ফাইলে । এটি rbenv সক্রিয় করবে যা পরিবর্তে রুবি মোড়কগুলি PATH এ রাখবে।

নোট করুন যে এটি কাজ করার জন্য .bashrc বা .zshrc এ rbenv ইনস্টল করার দরকার নেই।

+ আরভিএম

রুবি প্রকল্পগুলিতে আমি সবচেয়ে জটিল .envrc ব্যবহার করি:

rvm use 1.8.7
layout ruby
PATH_add .direnv/bundler-bin

rvm আপনার জন্য সঠিক রুবি সংস্করণ নির্বাচন করতে ব্যবহৃত হয়

বিন্যাস কমান্ড স্বয়ংক্রিয়ভাবে কিছু সাধারণ পরিবেশের ভেরিয়েবল সেট করে। আপাতত কেবল রুবি লেআউট বিদ্যমান। এটি যা করে তা হ'ল জেমহোম এনভায়রনমেন্ট ভেরিয়েবল সেট এবং এটি আপনার পথে বিন ডিরেক্টরি। যেহেতু এটি রুবি সংস্করণের উপর নির্ভর করে, "আরভিএম" এর পরে এটিকে কল করতে ভুলবেন না। যেহেতু প্রতিটি রুবি লেআউট ডিরেক্টরিগুলির নিজস্ব জেমহোম রয়েছে, আপনাকে আরভিএমের রত্ন ব্যবহার করার দরকার নেই।

PATH_add প্রদত্ত আপেক্ষিক পাথ প্রিপেন্ড করে এবং প্রসারিত করে। সেক্ষেত্রে আমি এটি নিজের বাইন স্ক্রিপ্টগুলির সাথে বান্ডলার বিনস্টাবগুলি আলাদা করতে ব্যবহার করিbundle install --binstubs .direnv/bundler-bin

যদি আপনি এখনই এই আদেশগুলি ঠিক কী করে তা সন্ধান করতে চান: বিড়াল direnv stdlib| কম


2
যদিও এই লিঙ্কটি প্রশ্নের উত্তর দিতে পারে, উত্তরের প্রয়োজনীয় অংশগুলি এখানে অন্তর্ভুক্ত করা এবং রেফারেন্সের জন্য লিঙ্কটি সরবরাহ করা ভাল। লিঙ্কযুক্ত পৃষ্ঠাগুলি পরিবর্তিত হলে লিঙ্ক-শুধুমাত্র উত্তরগুলি অবৈধ হতে পারে। - পর্যালোচনা থেকে
জিজরেল

@ জেজরেল আপনার মন্তব্যের জন্য ধন্যবাদ!
শিন কিম

1
সুপার, কোন সমস্যা নেই।
জিজরেল

1

মিনেশাফ্ট এমন একটি প্রকল্প যা আমি কিছু সময়ের জন্য কাজ করে যাচ্ছি এবং উন্নয়নমূলক কাজ চালিয়ে যাচ্ছি।

এটি ভার্চুয়ালেনভ কীভাবে কাজ করে তার অনুরূপ ভার্চুয়াল পরিবেশ তৈরি করার উভয়কেই দক্ষতা সরবরাহ করে এবং বিশ্ব জুড়েও রুবি ইনস্টল করতে পারে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.