نصب چندین ماشین ارلنگ در یک سیستم

صدها زبان برنامه‌نویسی مختلف هر سال وارد دنیای کامپیوتر میشن و اکثر اون‌ها به همون سرعتی که پدیدار شدن به فراموشی سپرده میشن. ارلنگ حدود سی سال هست که به عنوان یه زبان صنعتی (industrial) در حساس‌ترین و گسترده‌ترین سیستم‌های نرم‌افزاری استفاده میشه و حساب خودش رو پس داده. اگر بخواهید کار باهاش رو شروع کنید، مسلما اولین قدمی که باید بردارید نصب کردن پلتفرم ارلنگ هست.

خوشبختانه نصب پلتفرم ارلنگ خیلی راحته چون ارلنگ سولوشنز به عنوان یکی از مُبلِغ‌ها و پشتیبان تجاری این پلتفرم، پکیج‌های از قبل آماده شده‌ی این پلتفرم رو براتون مهیا کرده و شما می‌تونید به آسونی ازشون استفاده کنید. اما وقتی وارد پروژه‌های واقعی و بزرگ‌تر می‌شید، ممکن هست نیاز به ابزارهای جانبی ای داشته باشید که با تمام نسخه‌های زبان سازگار نیستند؛ یا دوست دارید پروژه تون را روی ورژن‌های مختلف زبان تست و آزمایش کنید؛ یا اصرار دارید که پروژه‌ی شما در یک محیط بسته تر و فقط روی یک نسخه‌ی مشخص از زبان توسعه داده بشه تا یک سری از تداخل‌ها پیش نیاد…

در چنین شرایطی شما به عنوان توسعه دهنده‌ی نرم افزار، نیاز پیدا می‌کنید که چندین نسخه‌ی مختلف از زبان برنامه‌نویسی و متعلقات اش رو توی سیستم خودتون داشته باشید. برای این کار باید به نحوی شرایط مناسب برای نصب، تنظیم، و امکان انتخاب بین نسخه‌های مختلف زبان رو فراهم کنید. اکثر زبان‌های برنامه‌نویسی ابزارهای خاصی برای این کار ارائه میدن؛ برای ارلنگ شما می‌تونید از kerl استفاده کنید (از این به بعد «کرل» می‌نویسیمش).

کرل یه ابزار کوچیک و ساده هست که میتونه نسخه‌ی متفاوت از پلتفرم ارلنگ رو برای شما کامپایل کنه و این قابلیت رو به شما بده که براحتی در هر زمانی که دوست داشتید بین این نسخه‌ها سوییچ کنید. این راهنما به طور قدم به قدم و به زبانی ساده کار با این ابزار رو آموزش میده. این آموزش برای سیستم عامل اوبونتو نسخه ۱۶.۰۴ نوشته شده که تا سال ۲۰۲۱ از پشتیبانی رسمی برخوردار هست. شما می‌تونید با مقدار خیلی کمی تغییر (یا شاید هم بدون هیچ تغییری) از این راهنما برای بقیه سیستم عامل های شبه یونیکس مثل دبیان و فدورا و مک و غیره هم استفاده کنید…

بدون صحبت بیشتر، شروع می‌کنیم…

مهیا کردن پیش نیازها

قبل از هر کاری، لیست پکیج‌های سیستم رو بروز رسانی می‌کنیم تا از جدید‌ترین بسته‌های موجود بهره‌مند بشیم:

 $ sudo apt-get update

برای کامپایل پلتفرم ارلنگ، باید یک سری از پکیج‌های پیش نیازش رو توی سیستم نصب کنید. اگر برنامه‌نویس باشید، احتمالا از قبل اکثر این پکیج‌ها روی سیستم شما نصب هست، چون بیشتر محیط‌های برنامه‌نویسی به این‌ها نیاز دارن…

$ sudo apt-get install build-essential autoconf libtool git\
                       libssl-dev libssh-dev openssl \
                       libncurses5-dev asciidoc \
                       openjdk-8-jdk fop unixodbc-dev \
                       wx-common libwxbase3.0-dev libwxgtk3.0-dev

دقت کنید که ارلنگ به تمام این پکیج‌ها نیاز جدی نداره. مثلا بدون نصب جاوا یا پکیج ODBC هم عمل کامپایل انجام میشه. یا فرضا اگر در یک محیط گرافیکی نیستید (مثلا روی ترمینال سرور)، می‌تونید سه تا پکیج آخر رو کلا نصب نکنید (wx-common libwxbase3.0-dev libwxgtk3.0-dev). اما من توی این راهنما ترجیح دادم که به طور کامل پکیج‌هارو نصب کنم. اون‌هایی که حرفه‌ای تر هستند، خودشون می‌دونن که کدوم پکیج‌ها رو لازم دارن یا ندارن…

نصب کرل

کرل در واقع فقط یک فایل مستقل هست و برای همین نصبش کار سختی نیست. در این قسمت ما کرل رو به کمک curl دانلود می‌کنیم، بهش مجوز اجرایی می‌دیم، و در نهایت اون رو در یکی از مسیرهای اجرایی سیستم عامل قرار می‌دیم تا دسترسی راحت‌تری بهش داشته باشیم:

$ cd ~

$ curl -O https://raw.githubusercontent.com/yrashk/kerl/master/kerl

$ chmod a+x kerl

$ sudo mv kerl /usr/local/bin/

دقت کنید به صد دلیل مربوط و نامربوط، اتصال به این آدرس و دانلود این فایل چند کیلوبایتی ممکن هست برای شما مسدود شده باشه! در این صورت، فکر می‌کنم خودتون بهتر می‌دونید که چه جوری باید این محدودیت رو دور بزنید!

بعد از نصب کرل، باید ازش درخواست کنیم که نسخه‌های قابل نصب ارلنگ رو برامون نمایش بده تا ما بتونیم از بین شون انتخاب کنیم:

$ kerl update releases

کرل با وصل شدن به سایت ارلنگ، برامون لیستی از نسخه‌های قابل نصب رو نمایش میده:

Getting the available releases from erlang.org...
The available releases are:
R10B-0 R10B-10 R10B-1a R10B-2 R10B-3 R10B-4 R10B-5 R10B-6 R10B-7 R10B-8 R10B-9 R11B-0 R11B-1
R11B-2 R11B-3 R11B-4 R11B-5 R12B-0 R12B-1 R12B-2 R12B-3 R12B-4 R12B-5 R13A R13B01 R13B02-1
R13B02 R13B03 R13B04 R13B R14A R14B01 R14B02 R14B03 R14B04 R14B R14B_erts-5.8.1.1 R15B01 R15B02
R15B02_with_MSVCR100_installer_fix R15B03-1 R15B03 R15B R16A_RELEASE_CANDIDATE R16B01 R16B02
R16B03-1 R16B03 R16B 17.0-rc1 17.0-rc2 17.0 17.1 17.3 17.4 17.5 18.0 18.1 18.2 18.2.1 18.3 19.0

کامپایل و نصب ارلنگ

اینجا ما با دو مرحله روبرو هستیم: یکی مرحله کامپایل، و یکی مرحله نصب.

از لیست نمایش داده شده، یکی از نسخه‌ها رو انتخاب کنید و به کرل بگید که اون رو برای شما کامپایل کنه. تو این قسمت کرل پکیج منبع مربوط به اون نسخه از ارلنگ رو دانلود میکنه (ما در اینجا نسخه‌ی ۱۹ رو انتخاب کردیم) و بعد از اون هم بلافاصله عمل کامپایل رو شروع میکنه:

$ kerl build 19.0 19.0

موقع شروع کامپایل، شما پیغامی شبیه این رو میبینید:

Building Erlang/OTP 19.0 (19.0), please wait...

ممکن هست فکر کنید که ترمینال هنگ کرده، چون هیچ اتفاقی نمیفته؛ اما پشت صحنه عمل کامپایل در حال انجام هست و این پروسه با توجه به سرعت سیستم شما، می‌تونه بین ۱۰ دقیقه تا ۴۰-۵۰ دقیقه طول بکشه! صبور باشید….

نکته‌ی جانبی:

در زمانی که ارلنگ مشغول کامپایل شدن هست بذارید نکته‌ای رو براتون توضیح بدم. ممکنه سوال کنید که چرا تو فرمان بالا 19.0دوبار تکرار شده؟ اون 19.0 اول اسم رسمی نسخه هست که توی لیست نسخه‌ها دیدید، اما 19.0 دوم یک اسم دلبخواه هست. در واقع من هر چیز دیگه‌ای هم میتونستم جای اون دومی بنویسم، فقط ترجیح ام این بود که این‌ها رو هم نام انتخاب کنم. به این قضیه «اسم دار کردن کامپایل‌ها» می‌گیم!!

اسم دار کردن کامپایل‌ها چه دلیلی داره؟ کرل علاه بر اینکه به شما اجازه میده چندین نسخه از ارلنگ رو در کنار هم نصب کنید، این قابلیت رو هم براتون فراهم کرده که از روی یک نسخه‌ی مشخص از ارلنگ، چندین کامپایل مختلف انجام بدید. فرضا از روی همین نسخه ۱۹ می‌تونید دو کامپایل مجزا داشته باشید که هر کدوم از اون‌ها موقع کامپایل با پارامترهای خاصی کامپایل شده باشن:

$ KERL_CONFIGURE_OPTIONS=--disable-hipe kerl build 19.0 19.0_no_hipe

برگردیم به بحث اصلی…

بعد از اینکه کامپایل به اتمام رسید، می‌تونید لیستی از تمام نسخه‌هایی که تا الان کامپایل کردید رو مشاهده کنید:

$ kerl list builds

اگر نسخه‌ای که الآن کامپایل کردید رو توی این لیست مشاهده کردید، پس همه چیز به خوبی پیش رفته و شما می‌تونید اون رو برای نصب انتخاب کنید. من دوست دارم ماشین‌های ارلنگ رو در شاخه‌ی شخصی خودم (home) و در دایرکتوری ای با اسم E داشته باشم. برای هرکدوم از نسخه‌های کامپایل شده هم یک فولدر همنام با اون نسخه می‌سازم تا قاطی نکنم شون و همه چیز شسته و رفته باشه. اینطوری نیازی هم به کاربر ریشه ندارم. شما می‌تونید هرجایی دیگه‌ای که دوست دارید نصب رو انجام بدید:

$ cd ~

$ mkdir E

$ cd E

$ mkdir 19.0

و در آخر به کرل میگیم که نسخه‌ی کامپایل شده رو در دایرکتوری مد نظر ما نصب کنه:

$ kerl install 19.0 /home/amirreza/E/19.0/

با این دستور می‌تونیم لیستی از ارلنگ‌های نصب شده رو مشاهده کنیم:

$ kerl list installations

در هر کدوم از شاخه‌های نصبی ارلنگ، اسکریپتی وجود داره که میتونه اون نسخه‌ی به خصوص از ارلنگ رو برای ترمینال فعلی ما فعال کنه و ما به همین شیوه می‌تونیم براحتی بین نسخه‌ی نصب شده‌ی ارلنگ سوییچ کنیم. مثلا بیایید این نسخه‌ای که الآن نصب کردیم رو فعال کنیم:

$ source /home/amirreza/E/19.0/activate

با این دستورات هم میتونید از فعال شدن نسخه‌ی ارلنگ ‌تون اطمینان حاصل کنید:

$ kerl active

$ which erl

این دستور هم یک سری اطلاعات کلی راجع به وضعیت کرل و نسخه های تحت نظرش بهتون ارا‌ئه میده:

$ kerl status

با این دستور هم میشه نسخه‌های فعال شده ارلنگ را غیر فعال کرد:

$ kerl_deactivate

حذف نسخه‌های مختلف

اگر نسخه‌ای رو «کامپایل» کردید و فکر می‌کنید دیگه نیازی بهش ندارید، می‌تویند اون کامپایل رو پاک کنید:

$ kerl list builds

$ kerl delete build <name>

اگر نسخه‌ای رو «نصب» کردید و فکر می‌کنید دیگه نیازی بهش ندارید، می‌تویند اون نصب رو پاک کنید:

$ kerl list installations

$ kerl delete installation </path/to/install/dir>

و در نهایت…………………………. شروع کنید…

$ erl

نظرات

comments powered by Disqus