انجمنهای فارسی اوبونتو
تازه کار => فلسفهٔ اوبونتو، گنو/لینوکس و نرمافزارهای آزاد و متنباز => نویسنده: hosein.metro در 24 بهمن 1392، 09:08 بظ
-
من یه سوال برام پیش اومده که براش جواب پیدا نکردم
چرا برنامه ها تو لینوکس مثل ویندوز یک فرمت استاندارد برای اجرا ندارند
مثلا اندرویید هم که لینوکسه باز با نصب یک فایل apk نیاز به نصب هیچ چیز دیگه ای نیست
به نظر من تو این ضمینه باید یه استانداردی بوجود بیاد
؟
-
در لینوکس به علت متن باز بودن چندین برنامه ممکن است پیش نیاز های یکسانی داشته باشن ! برای همین به علت اینکه چندین بار یک فایل کتابخانه ای یا اجرایی فضا را اشغال نکند این تدبیر شد که چه کاری است که برای اجرای چند برنامه که پیشنیاز واحد دارند چند بار یک فایل مشابه حجم را اشغال کند ! اما در سیستم عامل هایی که اساس آن بر عدم استفاده یک برنامه از منابع دیگر و به طور کلی کدهای بسته است به علت اینکه یک برنامه از ماهیت پیشنیاز های دیگری اطلاع ندارد ناگزیر برای اطمینان آنها را نصب می کند ! مضاف بر اینکه در برنامه های متن بسته برای نوشتن برنامه های مختلف که مثلا به چرخ احتیاج دارند مدام چرخ اختراع می شود و هر برنامه به نوعی یک چرخ خاص خود اختراع می کند که از حیث مثلا اندازه با هم تفاوت دارند ! در صورتی که در دنیای متن باز همان چرخی که یک بار اختراع شده مورد استفاده برنامه های مختلف قرار می گیرد و این برتری این نوع انتشار برنامه بر برنامه های متن بسته می باشد. لذا بسته ها و مدیریت آنها لزوم پیدا می کند تا در صورت نصب بودن چرخ دوباره آن را برای برنامه دیگری نصب نکند و این باعث کاهش حجم اشغالی توسط نرم افزارها می شود.
-
از سیستم مدیر بسته که توی گنو/لینوکس وجود داره خیلی خوشم میآد ولی دوست داشتم دیستروهای مادر با هم مینشستن و استانداردسازی میکردن به طوریکه یه مدیر بسته واسه همهی توزیعها وجود داشت و پسوند همهی بستهها مثلا .lin یا .gnx یا هر چیز دیگهای بود.
البته الان هم تبدیل نوع بستهبندی یه توزیع به توزیع دیگر به راحتی ممکن است. ولی استانداردسازی به نظر من بهتره.
-
اوبونتو داره از deb استفاده میکنه.....اما بقیه هم می تونن از deb استفاده کنند
-
این برتری این نوع انتشار برنامه بر برنامه های متن بسته می باشد. لذا بسته ها و مدیریت آنها لزوم پیدا می کند تا در صورت نصب بودن چرخ دوباره آن را برای برنامه دیگری نصب نکند و این باعث کاهش حجم اشغالی توسط نرم افزارها می شود.
حرف شما درست اما خوب حجم فایل ها تو لینوکس اون قدر ها هم کم نیست
و در ضمن بعد از عر بار نصب نسخه ی جدید باید کلی برنامه رو از اول دانلود کرد
من حاضرم حجم فایل ها دو برابر باشه اما مثل ویندوز فقط یک بار دانلود کنم
به نظر من اصلا این دلیل بر بهتر بودن نیست!
-
و خیلی از برنامه ها روی نسخه های بعدی کار نمیکنند....
چرا باید این طور باشه !
-
شما میتونید یک برنامه رو یک بار ایستا ( ایستاتیک ) کامپایل کنید و یک فایل اجرایی ازش بدست بیارید
اینجوری حجم اون یک فایل مثلا میشه 50 مگ ولی همه چیز رو درون خودش داره
برای برنامه ای که مثلا 5 سال یک بار نسخه جدید میده بیرون خوبه
-
اوبونتو داره از deb استفاده میکنه.....اما بقیه هم می تونن از deb استفاده کنند
اوبونتو-بیسها میتونن استفاده کنند ولی مثلا فدورا، آرچ، سوزه و ... یا باید تبدیل کنند به بستهی مورد نظر خودشون و یا dpkg نصب کنند که توصیه نمیشه.
به نظر من باید استانداردسازی بشه
-
مشکل من با سیستم مدریت بسته ها هست به طور کلی....!
ولی به نظر من اوبونتو با این فرمت deb به استاندارد ها نزدیک تر هست
-
این قضیه ربطی به سیستم مدیریت بسته نداره. توی یک بسته شما میتونید تمام پیشنیازها رو بذارید. ولی خوب حجم نرمافزارهاتون به سرعت افزایش پیدا میکنه و برای بروز کردن سیستم، حجم دانلودتون چندین برابر میشه.
-
یعنی واقعا تنها دلیلش همین هست!
پس اگر این طور باشه میشه از برنامه های نصب شده با تمامی پیش نیاز ها.. یک نسخه ی از اون نرم افزار رو تهیه کرد بعدا به صورت لوکال نصب کرد ؟
-
میشه، ولی میتونه کار سختی باشه!
-
چیزی که متن باز رو متن باز کرده همینه یعنی انتخاب های زیاد نمی شه استاندارد تعیین کرد چون این به معنی محدود کردن انتخاب هاس ! deb , rpm,tar.gz.x همه خوبن ! اینطوری نمی شه توزیعی مثل arch رو با انتشار غلطان بوجود آورد مطمئن باشید اگر لازم نبود این مدیریت بسته ها بوجود نمی اومد پس شما هم سعی نکن دنبال استاندارد باشی ! من یه برنامه گرفتم که تمام پیش نیاز هاش توش بود اگر من ۱ گیگ دانلود کردم ۷۰۰ مگش مال پیش نیاز ها بود که حتی نسخه های بروز ترش رو داشتم ! فرمت .sh بود که اصلا خوشم نیومد. متن باز یعنی خلاصه و مفید !
-
چیزی که متن باز رو متن باز کرده همینه یعنی انتخاب های زیاد نمی شه استاندارد تعیین کرد چون این به معنی محدود کردن انتخاب هاس ! deb , rpm,tar.gz.x همه خوبن ! اینطوری نمی شه توزیعی مثل arch رو با انتشار غلطان بوجود آورد مطمئن باشید اگر لازم نبود این مدیریت بسته ها بوجود نمی اومد پس شما هم سعی نکن دنبال استاندارد باشی ! من یه برنامه گرفتم که تمام پیش نیاز هاش توش بود اگر من ۱ گیگ دانلود کردم ۷۰۰ مگش مال پیش نیاز ها بود که حتی نسخه های بروز ترش رو داشتم ! فرمت .sh بود که اصلا خوشم نیومد. متن باز یعنی خلاصه و مفید !
قانع کننده بود!
بسیار ممنون...یکی این سوال رو از من پرسیده بود نتونسه بودم قانعش کنم!
باز هم ممنون
-
چیزی که متن باز رو متن باز کرده همینه یعنی انتخاب های زیاد نمی شه استاندارد تعیین کرد چون این به معنی محدود کردن انتخاب هاس ! deb , rpm,tar.gz.x همه خوبن ! اینطوری نمی شه توزیعی مثل arch رو با انتشار غلطان بوجود آورد مطمئن باشید اگر لازم نبود این مدیریت بسته ها بوجود نمی اومد پس شما هم سعی نکن دنبال استاندارد باشی ! من یه برنامه گرفتم که تمام پیش نیاز هاش توش بود اگر من ۱ گیگ دانلود کردم ۷۰۰ مگش مال پیش نیاز ها بود که حتی نسخه های بروز ترش رو داشتم ! فرمت .sh بود که اصلا خوشم نیومد. متن باز یعنی خلاصه و مفید !
چرا نشه استاندارد تعیین کرد. درسته استاندارسازی به سری محدودیت میاره ولی دلیل نمیشه بد باشه. به هر حال باید سبک سنگین کرد ببینیم میصرفه یا نه؟
مثلا همین استاندارد پازیکس اگه نبود و هر توزیعی ساز خودش رو میزد خوب بود؟
استانداردسازی بستهها، من نمیدونم قراره چه محدودیتی بیاره. فقط قراره همهی توزیعها به یک شکل کار بستهبندی رو انجام بدن.
نوع بستهبندی با نوع انتشار چه ربطی به هم دارن که شما گفتین دیگه آرچ نمیتونه غلطان بشه؟
کافیه ابونتو با اومدن هر برنامهای اون رو بستهبندی و وارد مخازن کنه تا بشه غلطان یا آرچ میتونه مخازنش رو تقریبا راکد نگهداره و مثلا سالی یه بار نسخه جدید بده تا دیگه غلطان نباشه.
باز هم میگه از این تنوع هم ناراضی نیستم چون به راحتی بستهها به هم تبدیل میشن ولی استانداردسازی بهتر هست به نظر من.
باز نظر شما ممکن چیز دیگهای باشه که واسه من قابل احترام هست.
-
می شه یه طورایی یه استاندارد برای بسته های مختلف ایجاد کرد(در مواردی هم شاید نشه مواردی مثل بسته های نیمه کامپایل شده آرچ) که بشه آنها را به هم تبدیل کرد ! ولی نمی شه ساختار بسته بندی رو از بین برد چون انتخاب ها باید محدود نشه.
-
خوب APT یک استاندارد. بقیه رو قانع کنید ازش استفاده کنند :)
-
می شه یه طورایی یه استاندارد برای بسته های مختلف ایجاد کرد(در مواردی هم شاید نشه مواردی مثل بسته های نیمه کامپایل شده آرچ) که بشه آنها را به هم تبدیل کرد ! ولی نمی شه ساختار بسته بندی رو از بین برد چون انتخاب ها باید محدود نشه.
بستههای آرچ کمپایل کامله. سعی کنید سورس یک برنامهٔ کوچیک رو بگیرید و ازش یک بستهٔ deb و یک rpm و یک xz (برای آرچ) درست کنید. بعد از این کار deb و rpm رو دور میاندازید.
-
من خودم شنیده بودم بعضی برنامه ها بصورته نیمه کامپایل شده هستن تا بتونن روی معماری ها یا سیستم های مختلف بدون مشکل نصب بشن ! آیا این واقعیت نداره !
-
من خودم شنیده بودم بعضی برنامه ها بصورته نیمه کامپایل شده هستن تا بتونن روی معماری ها یا سیستم های مختلف بدون مشکل نصب بشن ! آیا این واقعیت نداره !
ببینید: ۲ نوع سیستم برای مدیریت برنامهها و بستهها وجود داره،
۱- یکی روشی که فریبیسد و جنتو به کار میبره که به این صورته که برای هر بسته یک دستور ساخت داره. دستور ساخت مثلن میگه سورس رو از فلان جا دانلود کن، کامپایل کن، فایلهای اجرایی حاصل رو توی /usr/bin بریز، فایلهای آیکون رو فلانجا کپی کن و ... اگر بسته یک پیشنیاز داشته باشه اول اون نصب میشه. حالا اگه بخواهید بسته رو حذف کنید چه اتفاقی میافته؟ مدیر بسته موقع نصب، اطلاعات فایلهای نصبی و پیشنیازها رو توی یک پایگاه داده ثبت میکنه و موقع پاک کردن، تمام پسنیازها رو پاک میکنه و بعد فایلهای بسته رو حذف میکنه. بدی این روش اینه که هر کسی باید همهٔ بستهها رو کامپایل کنه که کاری وقتگیره.
۲- روش دوم روشیه که rpm و deb پیشنهاد میکنه. تمام مراحل کمپایل بستهها انجام میشه و حاصل کار در فایلهای فشرده (rpm و deb فایل فشرده هستند) ذخیره میشه به همراه اطلاعات بسته. این بسته فشرده رو توزیع مربوطه در دسترس همه قرار میده و دیگه شما لازم نیست بسته رو کامپایل کنید. بدی این روش در ۲ چیزه: یکی روش ساختن بستهٔ فشردهای که به کار میبرند چند مرحلهای و کمی پیچیده است. دوم این که اگر بستهای وجود نداشته باشه و بخواهید دستی نصب کنید (با اجرای مثلن make و make install) دیگه مدیر بسته توزیع هیچ نقشی اینجا نداره (خودتون دستی باید پیشنیازها رو نصب کنید) اگر بخواهید این بسته رو حذف کنید باید فایلهای نصبی رو یکی یکی حذف کنید. بعد باید پسنیازها رو یکی یکی حذف کنید. اگر بخواهید بسته رو بهروز کنید باید اول بسته رو حذف کنید (و تمام پسنیازهاش) و بعد به روز کنید، چون ممکنه یک فایل در نسخهٔ قبل وجود داشته باشه که در نسخهٔ جدید دیگه وجود نداشته باشه.
آرچ این دو روش رو درهم آمیخته و به این ترتیب عمل میکنه:
برای هر بسته یک دستور ساخت داره که یک فایل به نام PKGBUILD است. وقتی دستور makepkg -s رو اجرا میکنید به دنبال PKGBUILD در پوشهٔ جاری میگرده و طبق دستور ساخت، سورس رو دانلود و کامپایل میکنه و فایل فشردهٔ xz بسته رو میسازه. این فایل فشرده با دستور pacman -U packagename.xz نصب میشه (پیشنیازها خود به خود نصب میشن). این فایل xz رو توزیع در اختیار همه قرار میده. (یه نگاهی به PKGBUILD مربوط به glibc در اینجا (https://projects.archlinux.org/svntogit/packages.git/tree/trunk/PKGBUILD?h=packages/glibc) بندازید). توزیع تنها تعدادی از بستهها رو اینطوری در اختیار شما قرار میده که توسط جامعهٔ کاربری توسط رایگیری انتخاب شدهاند. اینها بستههای خیلی پایدار و مطمئن هستند. به جز اینها، جامعه کاربری جایی داره، با نام AUR، که PKGBUILDهای چیزهای دیگه قرار داره که شما راحت میتونید با استفاده از اونها بستههای دیگه رو نصب کنید. در حقیقت آرچ خوبی هر دو روش بالا رو در خودش جمع کرده و بدی اونها رو رها کرده. مدیر بسته در آرچ در همه حال کنترل سیستم رو در دست داره. حتی موقعی که میخواهید بستهای رو دستی نصب کنید، یک PKGBUILD براش بسازید که خیلی ساده است (برای شیر مرغ تا جون آدمیزاد PKGBUILD در AUR وجود داره و نیازی به ساختن PKGBUILD نیست، تنها این کار رو برای برنامهای که خودتون نوشتهاید انجام بدید. تعداد PKGBUILDها از همهٔ توزیعها، حتی اوبونتو بیشتره) و اجازه بدید پکمن روند ساخت و نصب و رعایت پیشنیازها و بهروز رسانی و حذف در آینده رو در دست بگیره.
-
خوب APT یک استاندارد. بقیه رو قانع کنید ازش استفاده کنند
به نظر من خود توزیع های اصلی باید این مشکل رو با هم حل کنن نه برنامه نویسا و ....!
درسته جدیدا به اندازه ی موهای سرمون توزیع داریم ;D ](*,)
ولی این قدر که مدیر بسته که نداریم (اگه اشتباه نکرده باشم)
اگه با هم همکاری کنند کار های خوبی میشه کرد
-
خوب APT یک استاندارد. بقیه رو قانع کنید ازش استفاده کنند
به نظر من خود توزیع های اصلی باید این مشکل رو با هم حل کنن نه برنامه نویسا و ....!
درسته جدیدا به اندازه ی موهای سرمون توزیع داریم ;D ](*,)
ولی این قدر که مدیر بسته که نداریم (اگه اشتباه نکرده باشم)
اگه با هم همکاری کنند کار های خوبی میشه کرد
دقیقا باید این یکپارچگی رو با همکاری هم بوجود بیارن
این مدیر بستهای که تو سایت گنو هست چیه؟ کسی میدونه؟
GNU Guix is a purely functional package manager for the GNU system, and a distribution thereof.
-
وای مدیریت بسته آرچ چقدر خفنه ! =D>