من خودم شنیده بودم بعضی برنامه ها بصورته نیمه کامپایل شده هستن تا بتونن روی معماری ها یا سیستم های مختلف بدون مشکل نصب بشن ! آیا این واقعیت نداره !
ببینید: ۲ نوع سیستم برای مدیریت برنامهها و بستهها وجود داره،
۱- یکی روشی که فریبیسد و جنتو به کار میبره که به این صورته که برای هر بسته یک دستور ساخت داره. دستور ساخت مثلن میگه سورس رو از فلان جا دانلود کن، کامپایل کن، فایلهای اجرایی حاصل رو توی /usr/bin بریز، فایلهای آیکون رو فلانجا کپی کن و ... اگر بسته یک پیشنیاز داشته باشه اول اون نصب میشه. حالا اگه بخواهید بسته رو حذف کنید چه اتفاقی میافته؟ مدیر بسته موقع نصب، اطلاعات فایلهای نصبی و پیشنیازها رو توی یک پایگاه داده ثبت میکنه و موقع پاک کردن، تمام پسنیازها رو پاک میکنه و بعد فایلهای بسته رو حذف میکنه. بدی این روش اینه که هر کسی باید همهٔ بستهها رو کامپایل کنه که کاری وقتگیره.
۲- روش دوم روشیه که rpm و deb پیشنهاد میکنه. تمام مراحل کمپایل بستهها انجام میشه و حاصل کار در فایلهای فشرده (rpm و deb فایل فشرده هستند) ذخیره میشه به همراه اطلاعات بسته. این بسته فشرده رو توزیع مربوطه در دسترس همه قرار میده و دیگه شما لازم نیست بسته رو کامپایل کنید. بدی این روش در ۲ چیزه: یکی روش ساختن بستهٔ فشردهای که به کار میبرند چند مرحلهای و کمی پیچیده است. دوم این که اگر بستهای وجود نداشته باشه و بخواهید دستی نصب کنید (با اجرای مثلن make و make install) دیگه مدیر بسته توزیع هیچ نقشی اینجا نداره (خودتون دستی باید پیشنیازها رو نصب کنید) اگر بخواهید این بسته رو حذف کنید باید فایلهای نصبی رو یکی یکی حذف کنید. بعد باید پسنیازها رو یکی یکی حذف کنید. اگر بخواهید بسته رو بهروز کنید باید اول بسته رو حذف کنید (و تمام پسنیازهاش) و بعد به روز کنید، چون ممکنه یک فایل در نسخهٔ قبل وجود داشته باشه که در نسخهٔ جدید دیگه وجود نداشته باشه.
آرچ این دو روش رو درهم آمیخته و به این ترتیب عمل میکنه:
برای هر بسته یک دستور ساخت داره که یک فایل به نام PKGBUILD است. وقتی دستور makepkg -s رو اجرا میکنید به دنبال PKGBUILD در پوشهٔ جاری میگرده و طبق دستور ساخت، سورس رو دانلود و کامپایل میکنه و فایل فشردهٔ xz بسته رو میسازه. این فایل فشرده با دستور pacman -U packagename.xz نصب میشه (پیشنیازها خود به خود نصب میشن). این فایل xz رو توزیع در اختیار همه قرار میده. (یه نگاهی به PKGBUILD مربوط به glibc در
اینجا بندازید). توزیع تنها تعدادی از بستهها رو اینطوری در اختیار شما قرار میده که توسط جامعهٔ کاربری توسط رایگیری انتخاب شدهاند. اینها بستههای خیلی پایدار و مطمئن هستند. به جز اینها، جامعه کاربری جایی داره، با نام AUR، که PKGBUILDهای چیزهای دیگه قرار داره که شما راحت میتونید با استفاده از اونها بستههای دیگه رو نصب کنید. در حقیقت آرچ خوبی هر دو روش بالا رو در خودش جمع کرده و بدی اونها رو رها کرده. مدیر بسته در آرچ در همه حال کنترل سیستم رو در دست داره. حتی موقعی که میخواهید بستهای رو دستی نصب کنید، یک PKGBUILD براش بسازید که خیلی ساده است (برای شیر مرغ تا جون آدمیزاد PKGBUILD در AUR وجود داره و نیازی به ساختن PKGBUILD نیست، تنها این کار رو برای برنامهای که خودتون نوشتهاید انجام بدید. تعداد PKGBUILDها از همهٔ توزیعها، حتی اوبونتو بیشتره) و اجازه بدید پکمن روند ساخت و نصب و رعایت پیشنیازها و بهروز رسانی و حذف در آینده رو در دست بگیره.