همانطور که می دانید ٬ گاها در لینوکس ٬ ما به برنامه هایی بر می خوریم که فایل مخصوص نصبی آن در توزیع مورد نظرمان موجود نیست . فرض کنید برنامه ای را برای نصب در اوبونتو یافته اید که فایل DEB آن موجود نیست و تنها سورس کد آن به صورت یک فایل زیپ شده و غالبا در فرمت tar.gz موجود است و یا حتی شاید برنامه ی مورد نظر شما با فرمت DEB ورژن پایینی دارد و ورژن بالاتر آن به صورت سورس کد عرضه شده است . بنابراین ٬ شما نیاز خواهید داشت تا کامپایل کردن و نصب برنامه از طریق سورس کدشان را بیاموزید .

سورس چیست ؟

برای اینکه با مفهموم سورس آشنا شویم ٬  لازم است بدانیم که چگونه یک برنامه ٬ از کامپیوتر برنامه نویس آن به کامپیوتر ما وارد می شود و ما می توانیم از آن استفاده کنیم .

ابتدا برنامه نویسان برنامه ای را با زبان های مختلف برنامه نویسی همانند C ٬ Basic ٬ Perl و ... می نویسند . چیزی که برنامه نویس در زبان های برنامه نویسی تهیه می کند ٬ مجموعه ای از دستور عمل هاست که ما به آنها سورس کد یا سورس میگوییم . کامپیوتر شما هیچیک از این سورس کد ها را نمی فهمد .برای مثال فرض کنید شما به زبان پارسی صحبت می کنید و کسی برای شما فرانسوی صحبت کند . مسلما شما چیزی از کلمات او نخواهید فهمید . بنابراین کامپیوتر شما به یک مترجم برای فهم سورس کد نیاز دارد .

به زبان های مختلفی که برنامه نویسان برای نوشتن یک برنامه از آنها استفاده می کنند High Level Languages و به زبان هایی که کامپیوتر شما قادر به فهم آنها می باشد Low Level Language می گوییم .

بنابراین ما به واسطه ای نیاز داریم تا High Level Languages ها را به Low Level Languages تبدیل کند . این مترجم یا واسطه ها اغلب به اسکریپت ( Script ) معروفند .

مشکل اسکریپت ها این است که برای ترجمه و اجرای یک برنامه از قالب سورس آن در کامپیوتر شما ٬ به زمان زیادی نیاز دارند .
زیرا آنها باید عمل پردازش ترجمه ی سورس ٬ تبدیل سورس به زبانی که قابل فهم برای کامپیوتر شماست و در آخر اجرای نهایی آن برنامه را همزمان برای شما انجام دهند . این دقیقا مثل این است که شما یک کتاب فرانسوی را به کمک لغت نامه به پارسی ترجمه کرده و از آن سر در بیاورید ! 

بنابراین اکثر برنامه ها از یک کامپایلر به جای اسکریپت ها استفاده می کنند . کامپایلر قبل از اجرای یک برنامه ی سورس ٬ به طور کامل ٬  High Level Languages ها را به Low Level Languages تبدیل می کنند .

بنابراین هیچ پردازشی به صورت همزمان ( مانند اسکریپت ها ) اتفاق نمی افتد . این دقیقا مثل آن است که شما یک کتاب فرانسوی را که به طور کامل به پارسی ترجمه شده ٬ بخوانید .

به همین دلیل ما برای ترجمه ی سورس یک برنامه و اجرای آن از کامپایلر ها استفاده می کنیم .

Tarball ها و محتویات یک سورس کد :

tarball به فایل هایی می گوییم که به کمک دستور tar در لینوکس ساخته شده اند و دارای فایل هایی در داخل خود می باشند ( همانند فایل zip در ویندوز یا sit در MAC )

تقریبا تمامی سورس کد ها به صورت tarball هستند زیرا استفاده از tarball ها می تواند حجم سورس را کمپرس کرده و تمامی فایل های لازم یک سورس را در د اخل یک فایل برای ما فراهم آورد .

برای کامپایل کردن یک سورس کد ابتدا ما باید فایل tar آنرا Extract کرده و فایل های داخل آنرا بیرون بیاوریم . در میحط گرافیکی لینوکس این کار براحتی و با کلیک راست کردن بر روی فایل tar و زدن گزینه ی Extract امکان پذیر هست . چنانچه به میحط گرافیکی دسترسی نداشتیم و یا مایل به استفاده از ترمینال برای Extract کردن سورس بودیم از دستورات زیر ٬ بسته به فرمت فایل سورس مان استفاده می کنیم :

کد:
tar zxvf packagename.tgz -C ~/source
tar zxvf packagename.tar.gz -C ~/source
tar jxvf packagename.bz -C ~/source
tar jxvf packagename.tar.bz2 -C ~/source
( packagename نام پکیج سورس مان می باشد . در مثال های بالا برای اینکه فایل های Extract شده در یکجا به صورت منظم قرار بگیرند ٬ در دایرکتوری Home ( /~ ) فلدری به نام source ساختیم و با سوییچ C- فایل های Extract شده را به فلدر source منتقل می کنیم . )

چنانچه از فرمت فایل سورس اطمینان و آگاهی ندارید و نمیدانید که باید از کدامیک از دستورات بالا استفاده کنید ٬ می توانید به کمک دستور FILE فرمت فایل مورد نظرتان را تشخیص دهید :

کد:
file packagename
حالا باید وارد فلدر Extract شده ی سورس شوید و دستورات زیر را به ترتیب اجرا کنید .
کد:
configure/.
این دستور تمامی Dependency های لازم ( وابستگی ها و Library ها ) برای نصب یک برنامه را چک کرده و محیط را برای نصب برنامه آماده می کند .
کد:
make
این دستور ٬ سورس کد را کامپایل کرده و آنرا به زبانی که برای کامپیوتر ما قابل فهم باشد تبدیل می کند .
کد:
sudo make install
به کمک این دستور ما دسترسی های مدیریتی لازم برای نوشتن در فایل ها و فلدر های سیستمی را اخذ کرده و برنامه ی سورس را که هم اکنون کامپایل شده ٬ نصب می کنیم .
کد:
make clean
و در آخر به کمک این دستور عمل پاکسازی فایل های تمپ و اضافه که بعد از عملیات کامپایل و نصب دیگر به آنها نیازی نداریم را انجام میدهیم .

ذکر این نکته لازم است که در اوبونتو شما برای انجام عملیات کامپایل و نصب برنامه های سورس به برنامه های :

کد:
build-essential
checkinstall
libgtk1.2-dev
نیاز دارید که می توانید آنها را به کمک Synaptic دانلود و نصب کنید .

همچنین برای پاک کردن یک برنامه که آنرا به کمک سورس آن نصب کرده اید می توانید از دستور sudo rm و یا make uninstall ( دستور make uninstall در مورد همه ی برنامه ها جوابگو نیست ) استفاده کنید .

و در آخر برای اجرای برنامه ی نصب شده ٬ کافیست در اوبونتو Alt + F2 را زده و در محیط Run نام آن برنامه را تایپ و Enter کنید .

ubuntu-ir.blogfa.com