مختصری پیرامون کامپایل پکیج‌های لینوکس از سورس کد

پیش از آن که سراغ اصل مطلب برویم، لازم است اندکی پیرامون ضرورت آموختن و مهارت داشتن در این زمینه را توضیح دهیم. برخلاف محیط ویندوز که ابزار و نرم‌افزارها همگی در قالب exe به کاربر ارائه می‌شوند و نصب و راه‌اندازی نسبتاً ساده‌ای در انتظار کاربر است؛ کاربران لینوکس اکثر اوقات (مخصوصاً برای استفاده از پکیج‌های کمتر شناخته‌شده) باید خود پکیج‌های موردنظرشان را کامپایل و نصب کنند.مراحل لازم برای این کار عبارت اند از دانلود سورس کد پکیج مورد نظر (یا نوشتن سورس کد!)، اجرای دستور configure، نصب پکیج‌های وابستۀ موردنیاز و در انتها دستور make برای شروع کامپایل. در ادامه، هر یک از این گام‌‌ها به تفصیل توضیح داده ‌شده‌اند:اولین گام: سورس کدپیش از هر چیز، برای شروع نیاز به سورس کدی داریم که قرار است کامپایل کنیم. حال این کد ممکن است توسط خود برنامه‌نویس نوشته شده و حال قصد کامپایل آن را دارد و یا از مخازن کد دیگر (مثل گیت‌هاب) قصد کامپایل پکیجی را داریم که توسط دیگران به اشتراک گذاشته شده‌است. برای مقاصد آموزشی این راهنما، سورس کد مدیاپلیر vlc به صورت فشرده دانلود و اکسترکت شده‌است. پس از به دست‌آوردن سورس کد پکیج موردنظر، وارد فاز بعدی می‌شویم.سورس کد موردنظر دانلود و استخراج شدهدومین گام: نصب build-essentialابزار و نرم‌افزارهایی که در پکیج build-essential تعبیه شده‌اند برای هرگونه کامپایل نرم‌افزار در سیستم‌های لینوکسی لازم است. اگرچه که نام این پکیج در هر یک از توزیع‌های لینوکس ممکن است متفاوت باشد، امّا در ubuntu به همین نام شناخته می‌شود. برای نصب این پکیج روی ubuntu، در ترمینال دستور sudo apt install build-essential را وارد می‌کنیم.نصب پکیج build-essentialنصب این پکیج هم‌چنین پکیج‌های وابستۀ آن (هم‌چون g++) را نیز نصب خواهد کرد. پس از اتمام نصب این پکیج، می‌توان به مرحلۀ بعد قدم گذاشت.اتمام نصب پکیج build-essentialسومین گام: اجرای دستور configureتقریباً سورس کد همۀ پکیج‌ها اسکریپتی به نام configure در خود گنجانده‌اند که اجرای این اسکریپت، پکیج‌های موردنیاز برای کامپایل این سورس کد روی توزیع ما را مشخص می‌کند. برای اجرای این مرحله، وارد دایرکتوری سورس کد شده و دستور ./configure را وارد می‌کنیم.اجرای دستور configure/.اتمام دستور configureپس از اتمام اجرای این دستور، در انتها اگر پکیج موردنیازی روی سیستم یافت نشود، به کاربر اطلاع می‌دهد. اگرچه که در بعضی موارد حتی در صورت فقدان پکیجی (اگر داشتن آن پکیج ضروری نباشد) می‌توان با غیر فعال‌ کردن آن پکیج کامپایل را ادامه داد. برای مثال، اجرای اسکریپت vlc خطای یافت نشدن پکیج lua را می‌دهد که دو راه برای ادامۀ راه پیش‌رو قرار دارد؛ نصب پکیج‌های نصب نشده و لازم یا نادیده گرفتن این خطا در صورت امکان آن. در این مثال، می‌توان با دستور sudo apt install lua5.1 پکیج مورد نیاز را نصب کرد و یا به ادامۀ همان دستور ./configure پرچم -disable-lua را اضافه کرد.نصب یکی از پکیج‌های موردنیاز که روی سیستم نصب نیستپس از اتمام این مرحله و رفع خطاهای داده شده، فایلی به نام makefile برای پکیج موردنظر ما ساخته می‌شود که برای گام آخر کامپایل لازم است.فایل Makefile ایجاد شدههمان‌طور که می‌بینیم پس از نصب یا نادیده گرفتن پکیج‌هایی که نداریم و اجرای دوبارۀ اسکریپت configure، خطایی داده نشده و فایل Makefile در دایرکتوری سورس کد ساخته می‌شود.گام نهایی: کامپایل در لینوکساجرای دستور makeپکیج build-essential که پیشتر نصب شد حاوی دستوری به نام make است که پس از صدا زده شدن، از طریق همان فایل makefileای که در مرحلۀ قبل ایجاد شد، کامپایل را آغاز می‌کند. پس از گذشت زمانی و اتمام پروسۀ کامپایل، یک فایلی به نام install در دایرکتوری ایجاد می‌شود که با اجرای دستور sudo make install روند نصب آغاز می‌شود.اجرای دستور make installدر انتها می‌بینیم که نرم‌افزار موردنظر نصب شده‌است.