Ruby-build هي أداة سطر أوامر تعمل على تبسيط عملية تثبيت أي إصدار من Ruby من المصدر على الأنظمة المشابهة لنظام Unix.
وهو متاح كمكون إضافي لـ rbenv كأمر rbenv install
، أو كبرنامج مستقل كأمر ruby-build
.
brew install ruby-build
الترقية باستخدام:
brew upgrade ruby-build
git clone https://github.com/rbenv/ruby-build.git " $( rbenv root ) " /plugins/ruby-build
الترقية باستخدام:
git -C " $( rbenv root ) " /plugins/ruby-build pull
أولاً، قم بتنزيل كرة القطران من https://github.com/rbenv/ruby-build/releases/latest. ثم:
tar -xzf ruby-build- * .tar.gz
PREFIX=/usr/local ./ruby-build- * /install.sh
# As a standalone program
$ ruby-build --list # lists latest stable releases for each Ruby
$ ruby-build --definitions # lists all definitions, including outdated ones
$ ruby-build 3.2.2 ~ /.rubies/ruby-3.2.2 # installs Ruby 3.2.2
$ ruby-build -d ruby-3.2.2 ~ /.rubies # alternate form for the previous example
# As an rbenv plugin
$ rbenv install 3.2.2 # installs Ruby 3.2.2 to ~/.rbenv/versions/3.2.2
تحذير
لا تتحقق Ruby-Build في الغالب من وجود تبعيات النظام قبل تنزيل روبي ومحاولة تجميعها من المصدر. يرجى التأكد من أن جميع المكتبات المطلوبة مثل أدوات البناء ورؤوس التطوير موجودة بالفعل على نظامك.
في الأساس، ما يفعله Ruby-build عند تثبيت إصدار Ruby هو ما يلي:
./configure --prefix=/path/to/destination
في الكود المصدري؛make install
لتجميع روبي؛اعتمادًا على السياق، تقوم Ruby-build بأكثر قليلاً مما سبق: على سبيل المثال، ستحاول ربط Ruby بإصدار OpenSSL المناسب، حتى لو كان ذلك يعني تنزيل OpenSSL وتجميعه بنفسه؛ سوف يكتشف ويرتبط بالمثيلات المثبتة على Homebrew لبعض المكتبات مثل libyaml وreadline وما إلى ذلك.
لتثبيت إصدار من Ruby لم يتعرف عليه Ruby-build، يمكنك تحديد المسار إلى ملف تعريف بناء مخصص بدلاً من رقم إصدار Ruby.
تحقق من تعريفات البناء الافتراضية كأمثلة حول كيفية كتابة ملفات التعريف.
يمكن تكوين عملية البناء من خلال متغيرات البيئة التالية:
عامل | وظيفة |
---|---|
TMPDIR | حيث يتم تخزين الملفات المؤقتة. |
RUBY_BUILD_BUILD_PATH | حيث يتم تنزيل المصادر وبناءها. (الافتراضي: دليل فرعي ذو طابع زمني لـ TMPDIR ) |
RUBY_BUILD_CACHE_PATH | مكان تخزين ملفات الحزمة التي تم تنزيلها مؤقتًا. (الافتراضي: ~/.rbenv/cache إذا تم استدعاؤه كمكون إضافي لـ rbenv) |
RUBY_BUILD_HTTP_CLIENT | أحد aria2c أو curl أو wget التي سيتم استخدامها للتنزيل. (الافتراضي: تم العثور على أول واحد في PATH) |
RUBY_BUILD_ARIA2_OPTS | خيارات إضافية لتمريرها إلى aria2c للتنزيل. |
RUBY_BUILD_CURL_OPTS | خيارات إضافية لتمريرها إلى curl التنزيل. |
RUBY_BUILD_WGET_OPTS | خيارات إضافية لتمريرها إلى wget للتنزيل. |
RUBY_BUILD_MIRROR_URL | جذر URL متطابق مخصص. |
RUBY_BUILD_MIRROR_PACKAGE_URL | عنوان URL مطابق كامل مخصص (على سبيل المثال http://mirror.example.com/package-1.0.0.tar.gz). |
RUBY_BUILD_SKIP_MIRROR | تجاوز مرآة التنزيل واجلب جميع ملفات الحزمة من عناوين URL الأصلية الخاصة بها. |
RUBY_BUILD_TARBALL_OVERRIDE | تجاوز عنوان URL لجلب كرة القطران المصنوعة من الياقوت، متبوعة اختياريًا بـ #checksum . |
RUBY_BUILD_DEFINITIONS | قائمة مسارات مفصولة بنقطتين للبحث عن ملفات تعريف البناء. |
RUBY_BUILD_ROOT | بادئة المسار للبحث عن ملفات تعريفات البناء. مهمل: استخدم RUBY_BUILD_DEFINITIONS |
RUBY_BUILD_VENDOR_OPENSSL | قم ببناء وبيع opensl حتى لو كان نظام opensl متوافقًا |
CC | المسار إلى المترجم C. |
RUBY_CFLAGS | خيارات CFLAGS إضافية ( على سبيل المثال، لتجاوز -O3 ). |
CONFIGURE_OPTS | خيارات ./configure إضافية. |
MAKE | أمر make مخصص ( على سبيل المثال، gmake ). |
MAKE_OPTS / MAKEOPTS | خيارات make إضافية. |
MAKE_INSTALL_OPTS | خيارات make install الإضافية. |
RUBY_CONFIGURE_OPTS | خيارات ./configure إضافية (تنطبق فقط على مصدر Ruby). |
RUBY_MAKE_OPTS | خيارات make إضافية (تنطبق فقط على مصدر روبي). |
RUBY_MAKE_INSTALL_OPTS | خيارات make install الإضافية (تنطبق فقط على مصدر روبي). |
NO_COLOR | تعطيل ألوان ANSI في الإخراج. الافتراضي هو استخدام الألوان للإخراج المتصل بالمحطة. |
CLICOLOR_FORCE | استخدم ألوان ANSI في الإخراج حتى عندما لا تكون متصلاً بالمحطة الطرفية. |
يدعم كل من أمري rbenv install
و ruby-build
علامة -p/--patch
لتطبيق تصحيح على كود مصدر Ruby قبل الإنشاء. تتم قراءة التصحيحات من الإدخال القياسي:
# applying a single patch
$ rbenv install --patch 1.9.3-p429 < /path/to/ruby.patch
# applying a patch from HTTP
$ rbenv install --patch 1.9.3-p429 < <( curl -sSL http://git.io/ruby.patch )
# applying multiple patches
$ cat fix1.patch fix2.patch | rbenv install --patch 1.9.3-p429
تشتمل جميع ملفات تعريف Ruby المجمعة مع Ruby-build على مجاميع اختبارية للحزم، مما يعني أن جميع الحزم التي تم تنزيلها خارجيًا يتم فحصها تلقائيًا للتأكد من سلامتها بعد جلبها.
راجع القسم التالي لمزيد من المعلومات حول كيفية تأليف المجاميع الاختبارية.
لتسريع التنزيلات، تقوم Ruby-build بجلب ملفات الحزمة من مرآة مستضافة على Amazon CloudFront. للاستفادة من ذلك، يجب على الحزم تحديد مجموعها الاختباري:
# example:
install_package " ruby-2.6.5 " " https://ruby-lang.org/ruby-2.6.5.tgz# "
سيحاول Ruby-build أولاً جلب هذه الحزمة من $RUBY_BUILD_MIRROR_URL/
(ملاحظة: هذا هو عنوان URL الكامل)، حيث
هو المجموع الاختباري للملف. سيعود إلى تنزيل الحزمة من الموقع الأصلي إذا:
RUBY_BUILD_SKIP_MIRROR
. يمكنك تحديد مرآة مخصصة عن طريق تعيين RUBY_BUILD_MIRROR_URL
.
إذا كان موقع النسخة المطابقة لا يتوافق مع تنسيق عنوان URL أعلاه، فيمكنك تحديد عنوان URL الكامل عن طريق تعيين RUBY_BUILD_MIRROR_PACKAGE_URL
. إنه يتصرف بنفس طريقة RUBY_BUILD_MIRROR_URL
باستثناء كونه عنوان URL كاملاً.
مرآة التنزيل الافتراضية لـ Ruby-build برعاية Basecamp.
يقبل كل من ruby-build
و rbenv install
العلامة -k
أو --keep
، التي تطلب من Ruby-build الاحتفاظ بالمصدر الذي تم تنزيله بعد التثبيت. قد يكون هذا مفيدًا إذا كنت بحاجة إلى استخدام gdb
و memprof
مع Ruby.
سيتم الاحتفاظ بكود المصدر في شجرة دليل متوازية ~/.rbenv/sources
عند استخدام --keep
مع أمر rbenv install
. يجب عليك تحديد موقع الكود المصدري باستخدام متغير البيئة RUBY_BUILD_BUILD_PATH
عند استخدام --keep
مع ruby-build
.
الرجاء مراجعة موقع Ruby-build wiki للحصول على حلول للمشكلات الشائعة.
إذا لم تتمكن من العثور على إجابة على موقع wiki، فافتح مشكلة في أداة تعقب المشكلات. تأكد من تضمين سجل البناء الكامل لحالات فشل البناء.