انجمنهای فارسی اوبونتو
خبرها => لینکهای خبری => نویسنده: mobin1387 در 22 مهر 1401، 10:29 قظ
-
سلام. dinit ۰.۱۶.۰ منتشر شد! این نسخه شامل ویژگی های جدید و رفع اشکال های فراوان میشود.
dinit یک init (اطلاعات بیشتر: https://fa.wikipedia.org/wiki/Init و https://wiki.ubuntu.ir/wiki/Init) و یک مدیر خدمات برای سامانه یونیکس مانند است. dinit بر این اصل طراحی شده تا به جای ساخت یک قطعه (بلاک) اولیه سامانه، با برنامه های موجود تعامل کند و با آنها کار کند. سکوی هدف dinit تمام سامانه های مبتنی بر POSIX است که شامل سامانه های مبتنی بر لینوکس و بسیاری از BSD ها میشود.
همچنین خوش حالم که اعلام کنم این آخرین نسخه آزمایشی زودرس dinit است و نسخه های بعدی آزمایشی هستند. این یعنی dinit به پایداری نسبی رسیده و تاحدی برای استفاده در زندگی روزمره مناسب است. بسیاری از ویژگی ها پیاده سازی شدند و بسیاری از ایرادت نیز کشف و حل شده اند اما هم چنان ممکن است ایرادات یا کمبود هایی داشته باشد.
چه چیز هایی تغییر کرده؟
در این نسخه:
- روابط after و before اضافه شده است. حالا سرویس ها میتوانند از این روابط استفاده کنند. خاصیت after و before این است که وابستگی صریحی ایجاد نمیکنند یعنی اگر سرویس a، after = b است، a برای راه اندازی خودش نیازی به b ندارد اما اگر b همزمان با a در حال فعال شدن بود، init باید ابتدا b را راه اندازی کرده و سپس a را راه اندازی کند. before دقیقا برعکس این مسئله است.
- دستور restart در dinitctl با پرچم --force حالا تمام وابستگی های سخت را restart میکند. در گذشته اگر نیازمندی سختی وجود داشت، restart شکست میخورد.
- dinit پرچم جدیدی به نام -t یا --service دارد. این پرچم به dinit میگویید آرگومان بعدی حتما نام یک سرویس است که باید به عنوان سرویس اول فعال شود. در گذشته dinit این عملکرد را بدون پرچم خاصی، زمانی که به عنوان PID1 نبود یا در سامانه ای بدون کرنل لینوکس اجرا میشد پشتیبانی میکرد (و میکند) اما به سبب یکسری باگ های کرنل لینوکس در گذشته[1]، این عملکرد غیرفعال شده بود. حالا این پرچم این مسئله را حل میکند.
برای استفاده از آن فقط کافی است که در Bootloader commandline تان انتهای خط linux بنویسید:
-t tty1 -t tty2 -t tty3
این دستور حالا سرویس های tty ۱ تا ۳ را به عنوان سرویس اول فعال میکند. راستی همان طور که دیدید میتوان از چند -t یا --service استفاده کرد.
- پرچم -r اضافه شده است. در گذشته dinit از مکانیسم اعلانات s6 (https://skarnet.org/software/s6/notifywhenup.html) پشتیانی میکرد. حالا dinit با این پرچم جدید میتواند این اعلانات را به جای نوشتن در pipefd در یک پروندهی توصیف کننده فایل بنویسد.
- dinitctl اطلاعات بیشتری درباره اینکه چرا یک سرویس شکست خورده ارائه میدهد.
- در گذشته زمانی که مسیر ریشه cgroups بیشتر از ۶۴ کاراکتر میشد، dinit نمیتوانست آن را پیدا کند (خطای غیرکشنده). در این نسخه این مشکل حل شده است.
- در گذشته زمانی که سرویس، دستور (command) کوتاهی داشت، dinit نشانگر (pointer) متغییر command را جای اشتباهی از حافظه علامت میزد. در این نسخه این مشکل حل شده است.
- dinit در هنگام reload یک سرویس، بررسی میکند که آیا چرخه نیازمندی[2] اتفاق افتاده یا خیر، اگر پاسخ صحیح بود از reload کردن آن اجتناب میکند. در گذشته این مسئله باعث یک خرابی در آن سرویس میشد.
- چندین رفع ایراد کوچک برروی سرویس های نمونه اعمال شده است.
- چندین رفع اشکال مربوط به پروسه ساخت و نصب کردن dinit اعمال شده است.
- CI دینیت راه اندازی شده است.
علاقه مندان میتوانند از صفحه پروژه در github دیدن کنند: https://github.com/davmac314/dinit
همچنین اعلامیه انتشار این نسخه در اینجا قرار دارد: https://github.com/davmac314/dinit/releases/tag/v0.16.0
درضمن wiki پروژه نیز در دسترس علاقه مندان است: https://github.com/davmac314/dinit/wiki
پ.ن:
[1]: کرنل لینوکس به طور پیش فرض هر آرگومانی که از bootloader دریافت میکند را پردازش میکند، اگر کرنل متوجه آن نشود، آن را به عنوان آرگومان init تنظیم میکند. این یک رفتار عادی است اما مشکل زمانی به وجود میآید که گزارشاتی وجود داشته که کرنل لینوکس در گذشته چندین آرگومان را با وجود متوجه شدن آنها، به عنوان آرگومان init تنظیم کرده است (در واقع آرگومان به محیط سامانه نشت کرده است). برای جلوگیری از هرگونه مشکل از این جهت، dinit تمام آرگومان هایی که نام سرویس هستند را نادیده میگیرد مگر اینکه از پرچم -t یا --service استفاده کنید.
[2]: چرخه نیازمندی به زمانی گفته میشود که ساختار نیازمندی ها گره بخورد. به طور مثال دو سرویس a و b داریم، اگر a به b نیاز داشته باشد و همزمان b به a نیاز داشته باشد، دچار یک چرخه نیازمندی شدیم که ساختار نیازمندی را قفل میکند (گره میزند).
با احترام
-
از همون دفعه پیشی که دربارش گفتی دلم میخواد بیام سراغش، اما دوان هنوز نیاوردتش!
راهی هست برای عوض کردن اینیت بعد از نصب توزیع؟
-
از همون دفعه پیشی که دربارش گفتی دلم میخواد بیام سراغش، اما دوان هنوز نیاوردتش!
راهی هست برای عوض کردن اینیت بعد از نصب توزیع؟
بله میشه init رو بعد نصب تغییر داد البته چندان توصیه نمیشه مخصوصا اینکه devuan، dinit رو در مخازنش نداره. درسته که dinit نیازمندی زمان اجرا نداره که بخواهد آنقدر سامانه را بهم بریزد اما همچنان نصب برنامه خارج از مخزن پایداری سامانه رو کاهش میده.
اگر اصرار دارید مشکلی نداره، حدودا ۵ ماهی میشه که از dinit روی دوان ceres استفاده میکنم و تا به حال به مشکلی برنخورده.
-
اره! چرا که نه، اما چجوری؟ دوان با sysvinit نصب کنم و بعدش؟
اما واقعا از sysvinit و runit هم سریعتره؟
-
اره! چرا که نه، اما چجوری؟ دوان با sysvinit نصب کنم و بعدش؟
اما واقعا از sysvinit و runit هم سریعتره؟
دوان رو با sysvinit نصب کنید سپس باید پیش نیاز های نصب dinit را فراهم کنید:
۱- کامپایلر سی پلاس پلاس (سازگار با استاندارد c++2011): sudo apt install g++
۲- m4: sudo apt install m4
۳- GNU make: sudo apt install make
بعدش فایل فشرده نسخه ۰.۱۶.۰ را از پیوند زیر دریافت کنید (اگه ابزار هایی مثل wget کار نکرد با فایرفاکس دریافت کنید! نمی دانم چطوری اما به طرز عجیبی https در ترمینال برای ایرانی ها خراب شده! چگونه توانستند چنین کند؟ خدا داند!)
https://github.com/davmac314/dinit/releases/download/v0.16.0/dinit-0.16.0.tar.xz
سپس از پرونده فشرده خارجش میکنید:
tar -xvf dinit-0.16.0.tar.xz
در نهایت وارد پوشه تازه ساخته شده dinit شوید
حالا این کد منبع dinit مربوط به نسخه 0.16.0 است. با دستور make کامپایلش کنید (همچنین توصیه میشود برای اطمینان از اینکه همه چیز درست انجام شده، دو دستور make check و make check-igr را هم اجرا کنید، این دستورات چندین آزمایش را برای اطمینان از کارکرد درست dinit اجرا میکنند).
تا به اینجا پیش روید مرحله آخر را بعدا توضیح خواهم داد.
-
۱- کامپایلر سی پلاس پلاس (سازگار با استاندارد c++2011): sudo apt install g++
۲- m4: sudo apt install m4
۳- GNU make: sudo apt install make
گزینه راحتتر، بسته build-essential رو نصب کنید تا همه اون بستهها هم همراهش نصب بشن.
sudo apt install build-essential
-
۱- کامپایلر سی پلاس پلاس (سازگار با استاندارد c++2011): sudo apt install g++
۲- m4: sudo apt install m4
۳- GNU make: sudo apt install make
گزینه راحتتر، بسته build-essential رو نصب کنید تا همه اون بستهها هم همراهش نصب بشن.
sudo apt install build-essential
مطمئنید build-essential شامل m4 هم میشه؟
-
۱- کامپایلر سی پلاس پلاس (سازگار با استاندارد c++2011): sudo apt install g++
۲- m4: sudo apt install m4
۳- GNU make: sudo apt install make
گزینه راحتتر، بسته build-essential رو نصب کنید تا همه اون بستهها هم همراهش نصب بشن.
sudo apt install build-essential
مطمئنید build-essential شامل m4 هم میشه؟
ظاهرا نمیشه:
https://packages.debian.org/bullseye/build-essential
اما اگر m4 در پیشنیازهای این بستهها باشه، ممکنه نصبش کنه. بهرحال ضرری نداره که، یه m4 میذاریم کنار build-essential
-
نه نمیشه. جز وابستگی وابستگیها هم نیست. باید کنار build-essenrial، گفت که m4 رو هم نصب کنه.
البته با نصب build-essential، بستههای دیگهای هم نصب میشن که شاید لازم نباشند. برای مثال dpkg-dev.
-
راستی من معذرت میخوام، تصمیم گرفتم رو ارتیکس امتحانش کنم. الانم رو دانلوده! نصبش میکنم کنار دبیان فعلی. تا وقتی که بیاد رو دوان. ممنون!