ماژول های کاربر بی عیب و نقص نومید. نصب ماژول های هسته لینوکس

]

ماژول هابرای گسترش و اصلاح نحوه عملکرد ZNC استفاده می شود. کاربران معمولاً با ارسال پیام به یک کاربر خاص در IRC با ماژول ها تعامل دارند. به عنوان مثال، برای مشاهده کلیدواژه های برجسته در لیست تماشای خود، باید ارسال کنید /msg *لیست تماشا. وقتی ZNC می بیند که نامی که شما پیام می دهید با یک ستاره شروع می شود، پیام را به IRCd/سرور ارسال نمی کند، بلکه آن را برای پردازش به ماژول مناسب می فرستد. در این صورت، ماژول ساعت پیام را دریافت می کند و با لیستی از کلمات کلیدی شما به شما پاسخ می دهد. این یک راه بسیار راحت و استاندارد برای پیکربندی یا برقراری ارتباط با ماژول های بارگذاری شده شما و همچنین یک روش معمول و استاندارد برای ماژول های بارگذاری شده شما برای نمایش وضعیت یا سایر اطلاعات ایجاد می کند. توجه داشته باشید که این برای ماژول های بارگذاری شده است. برای مثال باید یک ماژول مشخص را بارگذاری کنید ساعت /znc loadmodقبل از اینکه بتوانید با ماژول ساعت ارتباط برقرار کنید. اکثر ماژول ها به آن پاسخ خواهند داد /msg *راهنمای ماژولبا فهرستی از دستورات موجود

ماژول های ZNC نیز بارگذاری می شوند در سطح جهانی, در هر شبکه، یا روی یک برای هر کاربراساس هر ماژول برای خودش تعریف می کند که آیا برای بارگیری به صورت جهانی، اختصاصی شبکه و/یا کاربر خاص در دسترس است یا خیر. سطح کاربر و ماژول‌های شبکه می‌توانند کارهایی از دستکاری پیام‌های ورودی/خروجی گرفته تا اجرای یک کلاینت کامل توییتر را انجام دهند. آنها همچنین می توانند کارهای سنتی IRC مانند عملیات خودکار مبتنی بر چالش، دور کردن شما یا ورود به دیسک را انجام دهند. هر کاربر می‌تواند مجموعه ماژول‌های خود را بارگیری و پیکربندی کند تا تجربه خود را مطابق با اولویت خود سفارشی کند.

ماژول های جهانی توسط ادمین ها قابل بارگیری هستند و عملکرد یا تغییر رفتار را برای همه کاربران ارائه می دهند. به عنوان مثال، ماژول partyline باید سراسری باشد زیرا عملکردی را برای همه کاربران در یک نمونه مشخص ZNC فراهم می کند تا بتوانند از درون خود ZNC با یکدیگر ارتباط برقرار کنند. ماژول های جهانی می توانند هر کاری را که ماژول های سطح کاربر می توانند انجام دهند و همچنین چند مورد اضافی را انجام دهند. آنها می توانند سیستم احراز هویت ZNC را جایگزین کنند، روند تنظیم پیکربندی را تغییر دهند، با CAP مقابله کنند و غیره.

برای ایجاد ویکی‌صفحه‌هایی درباره ماژول‌هایی که ایجاد کرده‌اید، احساس راحتی کنید، اما فراموش نکنید که پیوند دانلود، اطلاعات تماس را اضافه کنید، و از طرح‌بندی مشابه بقیه ماژول‌ها استفاده کنید. مشارکت‌ها همیشه قابل قدردانی هستند.

لیست ماژول [ویرایش]

ماژول های جهانی [ویرایش]

adminlog Log کاربر به یک فایل و/یا به syslog متصل می‌شود، اتصال را قطع می‌کند و ورود ناموفق را انجام می‌دهد. blockuser کاربران خاصی را از استفاده از ZNC مسدود می کند و می گوید حساب آنها غیرفعال شده است. certauth این ماژول به کاربران اجازه می دهد تا از طریق کلیدهای کلاینت SSL وارد شوند. cyrusauth این ماژول برای ادمین هایی در نظر گرفته شده است که سرور پوسته/وب/ایمیل/غیره را اجرا می کنند و می خواهند دسترسی ZNC را برای کاربران فعلی خود فراهم کنند. fail2ban IP ها را برای مدتی پس از ورود ناموفق مسدود کنید. identfile شناسه یک کاربر را هنگامی که در تلاش برای اتصال است به فایلی پست می کند. imapauth به کاربران اجازه می دهد تا از طریق IMAP احراز هویت کنند. lastseen زمانی که کاربر آخرین بار به ZNC وارد شده است، ثبت می شود. modperl اسکریپت های پرل را به عنوان ماژول های ZNC بارگیری می کند. modpython به شما امکان می دهد از ماژول های نوشته شده در پایتون استفاده کنید. notify_connect هنگامی که کاربر وارد یا خارج از ZNC می شود، یک اعلان برای همه مدیران ارسال می کند. partyline به کاربران ZNC اجازه می دهد تا به کانال های داخلی بپیوندند و از سایر کاربران ZNC در همان ZNC پرس و جو کنند. webadmin به شما اجازه می دهد تا کاربران و تنظیمات را در لحظه از طریق یک مرورگر وب اضافه/حذف/ویرایش کنید.

ماژول های کاربر [ویرایش]

admin (اکنون کنترل پنل) به شما امکان می‌دهد کاربران و تنظیمات را در لحظه از طریق پیام‌های IRC اضافه/حذف/ویرایش کنید. autoattach کانال های جدا شده شما را تماشا می کند و زمانی که فعالیت مشخصی در کانالی که به لیست پیوست خود اضافه کرده اید، فعالیت مشخصی وجود داشته باشد، شما را مجدداً وصل می کند. autoreply اگر زمانی که شما دور هستید، شخصی به شما پیام بدهد، به صورت خودکار پاسخ می دهد. block_motd پیام روز سرور را مسدود می‌کند. کاربر joins و parts.charset را عادی می کند (یعنی تبدیل می کند) encodings.clearbufferonmsg این ماژول تلاش می کند تا فاصله بین غرق شدن با بافر قدیمی را پر کند اگر KeepBuffer=true؛ =false.clientnotify در مورد اتصالات ورودی جدید به user.controlpanel شما اجازه می دهد اطلاع دهید. شما برای اضافه کردن/حذف/ویرایش کاربران و تنظیمات از طریق IRC messages.ctcpflood این ماژول سعی می کند CTCP floods را مسدود کند.dcc این ماژول به شما امکان می دهد فایل ها را به و از ZNC disconkick انتقال دهید این ماژول مشتری شما را از همه کانال ها در صورت ZNC حذف می کند. از سرور قطع می شود ch آب گرفته اند. listsockets این ماژول لیستی از تمام سوکت های باز در ZNC را نمایش می دهد. ورود گزارش فعالیت چت به فایل. missingmotd این ماژول کاربر 422 را برای مشتریان هنگام ورود به سیستم ارسال می کند. یادداشت ها یادداشت ها را نگه دارید و دوباره پخش کنید. این نمونه ای از WebMods است. نمونه این یک ماژول نمونه برای کمک به نوشتن ماژول ها برای انجام هر کاری است که می خواهید. send_raw به شما امکان می دهد تا ترافیک خام را از سایر کاربران به IRC ارسال کنید. shell به پوسته یونیکس خود از طریق پرس و جو در داخل کلاینت IRC خود دسترسی پیدا کنید.

ماژول های شبکه [ویرایش]

چرخه خودکار زمانی که تنها هستید به یک کانال بپیوندید (برای به دست آوردن وضعیت اپراتور). autoop به صورت خودکار وضعیت اپراتور را به بچه های خوب بدهید. modtcl به شما امکان می دهد اسکریپت های Tcl را در ZNC اجرا کنید. autovoice به همه کسانی که به کانالی می پیوندند به طور خودکار وضعیت صدا را ارائه می دهد. awaynick در زمانی که دور هستید لقب خود را تغییر دهید. awaystore هنگامی که شما را دور یا جدا می کنید، این ماژول تمام پیام های خصوصی را برای شما ذخیره می کند. تا زمانی که پیام‌ها را حذف نکنید، می‌توان آن‌ها را خواند. این ماژول همچنین زمانی که مدتی بیکار هستید شما را دور می کند. cert این ماژول به کاربران اجازه می دهد از گواهی SSL خود برای اتصال به سرور استفاده کنند. رمزگذاری رمزگذاری برای کانال/پیام های خصوصی. Keepnick سعی می کند نام اصلی خود را در صورت گرفته شدن بدست آورد و حفظ کند. kickrejoin اتصال مجدد خودکار روی ضربه را پیاده سازی می کند. modules_online وضعیت آنلاین ماژول های ZNC را برای رفع برخی از مشتریان جعلی می کند. nickserv شما را با NickServ تأیید می کند. اجرای دستورات در اتصال. شما را با Q (و کمی بیشتر) تأیید می کند. raw مشاهده تمام ترافیک خام. route_replies زمانی که با چندین کلاینت متصل می شود، پاسخ ها را به مشتری مناسب برمی گرداند. sasl به شما امکان می دهد از طریق SASL savebuff در یک شبکه IRC احراز هویت شوید. بافرهای کانال شما را در یک فایل رمزگذاری شده ذخیره می کند تا بتوانند از راه اندازی مجدد و راه اندازی مجدد جان سالم به در ببرند. schat SSL (رمزگذاری شده) چت های DCC. simple_away هنگامی که اتصال خود را از bouncer قطع می کنید، به طور خودکار شما را در IRC قرار می دهد. stickychan شما را در کانال های مشخص نگه می دارد. مشاهده فعالیت های نظارت بر الگوهای متنی خاص از کاربران خاص و ارسال متن به یک پنجره درخواست ویژه.

ماژول های بیشتر [ویرایش]

مدیریت ماژول ها [ویرایش]

ماژول ها را می توان به راحتی اضافه یا حذف کرد. ماژول ها را می توان به طور پیش فرض در ~/.znc/modules و /usr/local/lib/znc ذخیره کرد. ZNC ماژول‌های خود را در دایرکتوری دوم نصب می‌کند که در واقع $(prefix)/lib/znc است، اما می‌توان آن را با ./configure --module-prefix=DIR قبل از کامپایل تغییر داد.

ZNC هنگام جستجوی ماژول ها ابتدا به ماژول های زیرمجموعه محلی نگاه می کند. فقط فایل هایی که با ".so" ختم می شوند به عنوان یک ماژول دیده می شوند. برای حذف ماژول ها به سادگی می توانید آنها را از پوشه حذف کنید. هیچ تغییر پیکربندی یا راه اندازی مجدد دیگری لازم نیست. برای حذف، و همچنین نگه داشتن یک ماژول برای استفاده بعدی، می توانید نام آن را نیز تغییر دهید، مانند: mv sample.so sample.so_ .

برای کامپایل یک ماژول جدید، ابتدا باید منبع را به عنوان یک فایل ".cpp" ذخیره کنید. کامپایل ماژول ها فرآیند را با جزئیات شرح می دهد.

ماژول های جهانی، کاربر و شبکه را می توان از webadmin یا از طریق پنجره *status query بارگیری کرد، مانند:

/msg *status LoadMod [--type=global|کاربر|شبکه] /msg *status UnloadMod [--type=global|کاربر|شبکه]

  • پیکربندی
  • [--type=global|کاربر|شبکه] به صورت اختیاری مشخص می‌کند که آیا ماژول به‌عنوان یک ماژول سراسری، کاربر یا شبکه (لغو) بارگیری شود. همه ماژول ها را نمی توان در همه سطوح بارگذاری کرد. برای یافتن جایی که ممکن است بارگذاری شود، به مستندات جداگانه ماژول مراجعه کنید.
  • بر اساس نام فایل ماژول ها، به استثنای پسوند ".so" است.
  • برای هر ماژول خاص هستند و مورد نیاز نیستند: می توانید پارامترهایی را هنگام بارگذاری ماژول ارائه دهید یا می توانید ماژول را پس از بارگذاری آن تنظیم کنید.

بنابراین، برای بارگذاری ورود به سیستمماژول در جهانی استسطح (بر خلاف کاربر یا شبکه) و حذف تمام کدهای کنترل رنگ/فرمت با استفاده از -عفونی کردنپارامتر، شما باید تایپ کنید:

/msg *status LoadMod --type=global log -sanitize

برای نسخه‌های قدیمی‌تر ZNC، گزینه تعیین [--type=global|user|network] را نخواهید داشت. در این صورت، فقط از:

/msg * وضعیت LoadMod /msg *وضعیت UnloadMod

لطفاً به خاطر داشته باشید که اگر دستورالعمل "DenyLoadMod" روی درست تنظیم شده باشد، کاربر قادر به بارگذاری یک ماژول نیست. تلاش برای بارگیری یک ماژول با "Unable to load [ ]دسترسی ممنوع است."

اگر یک ماژول از راه اندازی ZNC جلوگیری می کند و بنابراین نمی توانید ماژول را با استفاده از webadmin بارگیری کنید، می توانید znc.conf را ویرایش کرده و خط LoadModule مربوطه را حذف کنید.

با استفاده از ماژول ها [ویرایش]

توصیه می شود اگر می خواهید بفهمید یک ماژول چگونه کار می کند، ویکی صفحه ماژول را بخوانید. همچنین می توان از دستور زیر برای دریافت لیست دستورات استفاده کرد:

/msg* کمک

  • * StatusPrefix است که در پیکربندی شما تنظیم شده است. معمولاً فقط یک ستاره ("*") است.

NODE.JS- یک ابزار نرم افزاری برای اجرای js.

Nodejs = V8 + I/O + کتابخانه ها

V8: سریع، مدرن، اقتصادی

مزایای

  • جاوا اسکریپت
  • کد مشترک روی کلاینت و سرور
  • وظایف اصلی وب
  • بسیاری از ارتباطات و وظایف به طور همزمان
  • ایجاد یک نمونه اولیه کار آسان است
  • مدیر بسته npm دستی
  • انجمن

نصب و راه اندازی

هنگام نصب nodejs، خود را روی متغیر PATH (+ npm) می نویسد، [administration - متغیرهای محیطی]. در خط فرمان قابل بررسی است:
PATH را تنظیم کنید

به عنوان یک قاعده، فایل ها تحت nodejs راه اندازی می شوند: بیایید یک اسکریپت ساده بنویسیم و آن را از طریق خط فرمان اجرا کنیم:


اسکریپت اجرا می شود و نتیجه در خط فرمان نمایش داده می شود.

مستندات nodejs

ماژول های nodejs

برای درک نحوه عملکرد ماژول های داخلی nodejs، باید آرشیو منبع را از وب سایت nodejs (کد منبع) دانلود کنید. و به دایرکتوری lib بروید. (فرمان dir - از طریق خط فرمان لیستی از فایل ها را دریافت کنید؛ اگر می خواهید فایل ها را در همه زیرپوشه ها فهرست کنید، به جای "dir" از "dir / s" استفاده کنید). اگر nodejs را از پکیج نصب کرده باشید، فایلی را در پوشه lib پیدا نخواهید کرد.

Nodejs دارای ماژول هایی با درجات مختلف است ثبات. (به عنوان مثال، 0 - استفاده نکنید؛ 1، 2 - می توانید از آن استفاده کنید، اما API ماژول ممکن است تغییر کند).

توابع رشد می کنند (پروژه توسعه می یابد) و به مرور زمان باید تابع سازنده USER را به یک فایل جداگانه منتقل کنیم. اینجاست که ماژول ها وارد عمل می شوند.

ماژول ها نوعی روشی هستند که nodejs برای سازماندهی یک پروژه ارائه می دهد.

پروژه ها تمایل به رشد دارند، که منجر به تمایل به تقسیم پروژه به چندین فایل می شود - اینجاست که ماژول ها وارد عمل می شوند.

نیاز

برای صفحات html از تگ اسکریپت برای اتصال اسکریپت ها استفاده می شود. در nodejs یک فرمان خاص وجود دارد.

var user = require("./user");

در مثال ما، ما به یک فایل (user.js) در همان فهرست دسترسی داریم (پسوند (.js) اختیاری است).

//require("./user"); // .js اختیاری است // در این صورت فایل اجرا می شود، اما متغیر USER // نخواهد بود // این تفاوت اصلی با تگ های اسکریپت از nodejs است // در node.js، توابع و متغیرها هر ماژول برای این فایل // برای این فایل (خود ماژول) جهانی هستند و به طور خودکار // زمانی که اضافه می شوند در دسترس نمی شوند (require("./user")) // اما چگونه می توانید دسترسی داشته باشید؟ // هر ماژول دارای یک متغیر خاص صادراتی است - این یک شی است و // چیزی که من در آنجا قرار داده‌ام به‌عنوان نتیجه require var user = require("./user.js"); // نتیجه: کاربر = ( کاربر: تابع )

اولین تفاوت بین سیستم مدولار nodejs و اسکریپت های مرورگر این است که اگر مرورگر دارای دو تگ اسکریپت باشد، تابعی که در یکی از آنها به صورت سراسری تعریف شده است در دیگری موجود است، اما در nodejs وجود ندارد. در nodejs، توابع و متغیرها برای یک فایل معین سراسری هستند (آنها با درخواست در دسترس نیستند). اینگونه است که nodejs به شما امکان می دهد ماژول های واقعا مستقل بنویسید. اما برای اینکه ماژول در دسترس باشد از آن استفاده می شود سیستم صادرات. هر ماژول دارای یک متغیر صادرات ویژه است.

دایرکتوری ماژول DIR/index

ما پوشه را مستقیماً متصل می کنیم var user = require("./user"); ، که حاوی index.js مربوطه است.

مثلا

تابع User(name)( this.name = name; ) User.prototype.hello = function(who)( console.log(phrases.Hello + ", " + who.name); ); exports.User = کاربر;

اتصال و استفاده از سازنده User در فایل ./server.js

//server.js var user = require("./user"); var vasya = کاربر جدید.کاربر("Vasya");

"./" - نسبت به پوشه فعلی

صادرات یک شی است و هر چیزی که به آنجا برود در نتیجه نیازمندی (exports.jpg) برگردانده می شود. به این ترتیب ماژول می تواند متغیرها/توابع خصوصی خود را اعلام کند و فقط آنچه را که لازم است صادر کند.


برای متغیرهای سراسری و غیره یک شی جهانی وجود دارد

Global.User = کاربر;

نتیجه

  • اتصال نیاز دارد
  • متغیرها: var (خصوصی برای ماژول ها)، صادرات، جهانی (به ندرت استفاده می شود)
  • انواع ماژول: js، node (با پسوند node.)، json (با پسوند .json). ماژول‌های json زمانی استفاده می‌شوند که نیاز به ذخیره اطلاعات ساده روی یک فایل باشد.
  • دایرکتوری ماژول DIR/index

شی ماژول

  • شی ماژول
  • module-function module.exports = تابع
  • ذخیره ماژول (ماژول دیگر هرگز خوانده نمی شود)
  • مکان ماژول: ترتیب جستجو
  • پارامترهای عبور: ماژول-کارخانه

شیء ماژول (شیء زیربنایی ماژول ها) متغیری است که در هر ماژول وجود دارد (فایل، شما می توانید console.log(module) را خروجی بگیرید). . محتوا: ویژگی id - معمولاً مسیر فایل،
والد - پیوندی به ماژول والد (module.parent - پیوندی به ماژول والد که به این نیاز دارد)،
کودکان (module.children - آن دسته از ماژول هایی که از طریق نیاز به هم متصل می شوند)،
صادرات اموال و غیره

ماژول یا اپلیکیشن؟ module.parent

ماژول را می توان مستقیماً راه اندازی کرد، و اگر نه، اگر عملکرد به ماژول دیگری متصل است، اجازه دهید این عملکرد را صادر کند. می توانید با بررسی این دو مورد را از هم جدا کنید:

If(module.parent) (exports.run = run; ) else (run(;)


ps: همانطور که در stackoverflow.com می گوید، والد ماژولی است که اسکریپت را برای تفسیر فراخوانی می کند

// $ node foo.js console.log(module.parent); // null // require("./foo") console.log(module.parent); // (...)

استفاده صحیح از module.exports

در زمینه یک ماژول:

module.exports = exports = این (این ساختارها معادل هستند)

اگر می خواهید یک تابع را نه در یک شی، بلکه به طور مستقیم ارسال کنید، از دستور زیر استفاده کنید:

Module.exports = کاربر;


ذخیره ماژول

هنگامی که Nodejs یک ماژول را بارگذاری می کند، شی ماژول مربوطه را به طور کامل ایجاد می کند (با در نظر گرفتن والد، صادرات و سایر ویژگی های مشابه) و آن را به خودی خود به خاطر می آورد (module.id (مسیر کامل به فایل) به عنوان یک شناسه برای حافظه پنهان داخلی عمل می کند) دفعه بعد که دوباره به هر ماژول (فایل) دسترسی پیدا می کنیم (وصل می کنیم)، nodejs همان شی را از حافظه پنهان می گیرد. به عنوان مثال، کافی است ماژول را یک بار در هر فایل مقداردهی اولیه کنید، در آینده به سادگی می توان از آن استفاده کرد.

در مورد ما، برای var db = require("../db");
و برای var db = require("./db"); همان شی را بگیرید بنابراین، اصل به این صورت است: اولین بار که یک ماژول استفاده می شود، مقدار دهی اولیه می شود و در آینده فقط آن را متصل می کنیم و از آن استفاده می کنیم (یعنی در مورد ما نیازی نیست که دو بار از db.connect() استفاده کنیم. یعنی در فایل های مختلف).


مکان ماژول: ترتیب جستجوی ماژول در nodejs

چگونه db را همیشه بدون تعیین مسیر خاصی متصل کنیم:

vardb = نیاز ("../db"); //یا var db = require("./db");

اما به این صورت:

vardb = نیاز ("db");

مهم نیست که در کدام فایل db گنجانده شده است.

برای انجام این کار، باید ترتیب جستجوی ماژول‌ها در nodejs را بدانید (در صورت فراخوانی نیاز چه اتفاقی می‌افتد). بسیاری از ماژول های داخلی در nodej ها وجود دارد، مانند require("fs"); ، که بدون مشکل متصل می شود. اگر مسیر خاصی را در require مشخص کنید، برای مثال require("../db"); ، سپس جستجو بر اساس مسیر داده شده انجام می شود و فایل پیدا می شود یا nodejs سعی می کند این فایل را به عنوان دایرکتوری دریافت کند (و به دنبال index.js در داخل دسته می گردد).

اگر مشخص کنید require("db"); و ماژول داخلی نیست، سپس دایرکتوری node_modules نسبت به موقعیت فعلی جستجو می شود (اگر پیدا شد، سعی می کند ماژول را از آن بگیرد). اگر دایرکتوری node_modules وجود نداشته باشد، دایرکتوری node_modules در بالا جستجو می شود و به همین ترتیب.

علاوه بر تعیین یک مسیر خاص برای یک ماژول، nodejs می تواند به دنبال ماژول هایی مانند این باشد:

مقدمه ای بر npm - مدیر بسته برای Node.JS

  1. یک فایل توضیحات بسته (package.json) ایجاد کنید که حاوی اطلاعات مربوط به ماژول (نام، نسخه و غیره) باشد. یا به صورت دستی یا از طریق دستور
    npm init
    (اطلاعات مربوطه را می خواهد)
  2. برای انتشار ماژول:
    1. با استفاده از دستور npm adduser یک کاربر اضافه کنید (شما باید نام کاربری و رمز عبور را وارد کنید). اکنون تمام کارها با npm از طرف این کاربر خواهد بود. کاربر می تواند به https://www.npmjs.com/~name_user وارد شود و ماژول های خود را تماشا کند.
    2. انتشار: npm انتشار
  3. علاوه بر این، شخصی می تواند از ماژول اضافه شده شما به پایگاه داده استفاده کند و خود کاربر می تواند تغییراتی را ایجاد کند.
  4. تمام دستورات npm را با دستور npm help دریافت کنید
  5. جستجوی یک ماژول در پایگاه داده: کلمات کلیدی npm s یا کلمات کلیدی جستجوی npm (به عنوان مثال، npm s super module)
  6. ماژول را نصب کنید: npm install name_module یا npm i name_module
  7. هنگام نصب ماژول‌ها، nodejs ابتدا به دنبال پوشه node_modules در دایرکتوری فعلی می‌گردد (پس بالاتر و بالاتر و غیره)، یا (اگر node_modules وجود ندارد) به دنبال package.json می‌گردد (همچنین بالا می‌رود؛ package.json معمولاً ریشه پروژه) و بر این اساس، اگر package.json را پیدا کند، پوشه node_modules را در دایرکتوری مربوطه ایجاد می کند. اگر هر دو گزینه شکست بخورند، nodejs یک پوشه node_modules را در دایرکتوری فعلی ایجاد می کند. اگر می خواهید یک ماژول را در یک پوشه خاص قرار دهید، باید یک پوشه node_modules در این دایرکتوری ایجاد کنید.
  8. npm up ماژول را به‌روزرسانی می‌کند (ماژول‌هایی را که در پوشه node_modules هستند برای به‌روزرسانی بررسی می‌کند)
  9. npm حذف module_name (حذف یک ماژول)

خروجی npm:

npm init
اضافه کننده nmp
npm منتشر کنید
کلمات کلیدی جستجو npm
npm نصب ماژول
ماژول به روز رسانی npm
npm حذف ماژول
دستور کمک npm

ساختار بسته NPM

نصب نسخه مورد نظر به عنوان مثال: npm i [ایمیل محافظت شده]

آخرین نسخه یک ماژول را می توان در صورتی به دست آورد که ماژول با استفاده از سیستم نسخه سازی git توسعه داده شود، به عنوان مثال در github. کافی است Git Read-Only (url) را دریافت کنید: https://github.com/strongloop/express.git و در کنسول:

npm من https://github.com/strongloop/express.git

وابستگی ها در package.json

وابستگی ها به ماژول هایی که این یکی به آنها وابسته است اشاره می کند.

Dependencies dev

اگر ماژول به عنوان یک وابستگی بالا کشیده شود، ماژول های ثبت شده در devDependencies نصب نمی شوند. آنها فقط برای توسعه نصب می شوند و اگر مثلاً به ماژول موجود در پوشه node_modules بروید و npm i را بنویسید (یا هنگام تنظیم پرچم پیکربندی npm) قابل نصب هستند.

فیلد اصلی نقطه ورود به بسته را مشخص می کند

ماژول های جهانی

هر ماژول را می توان با تنظیم پرچم -g: ماژول npm -g به صورت جهانی نصب کرد

جهانی به معنای دایرکتوری سیستم است.

دایرکتوری ماژول های جهانی در زیر ویندوز:

C:\users\User_Name\AppData\Roaming\npm

ماژول های جهانی در فهرست راهنمای سیستم استاندارد قرار می گیرند. آن دسته از باینری هایی که در package.json هستند به مسیر سیستم تحویل داده می شوند (این استفاده اصلی ماژول های جهانی است) یعنی در آینده می توان آنها را از طریق کنسول فراخوانی کرد.

بر اساس مواد دروس I. Kantor

سانتی متر … فرهنگ لغت مترادف

ناامید، ناامید، ناامید; ناامید، ناامید، ناامید (کتاب). جبران ناپذیر، بی پایان. غم ناامید کننده فرهنگ لغت توضیحی اوشاکوف. D.N. اوشاکوف. 1935 1940 ... فرهنگ لغت توضیحی اوشاکوف

قطعی، آه، آه؛ لانه، پایین (کتاب). درباره غم و اندوه: بدون نتیجه، بدون پایان. حسرت ناامیدانه | اسم ناامیدی و همسران فرهنگ لغت توضیحی اوژگوف. S.I. اوژگوف، ن.یو. شودووا. 1949 1992 ... فرهنگ لغت توضیحی اوژگوف

نومید- تراژدی ناامیدکننده ... فرهنگ لغت اصطلاحات روسی

من تصدیق می کنم. طولانی، بی پایان II adj. 1. امیدی برای یک نتیجه موفقیت آمیز یا برای بهبود باقی نمی گذارد. ناامید 1.. 2. عدم موفقیت، محکوم به شکست. ناامید 2.. 3. بیان عدم امید، یأس، ناامیدی; … فرهنگ لغت توضیحی مدرن زبان روسی Efremova

ناامید، ناامید، ناامید، ناامید، ناامید، ناامید، ناامید، ناامید، ناامید، ناامید، ناامید، ناامید، ناامید، ناامید، ناامید، ناامید، ناامید، ناامید، ناامید، ... ... اشکال کلمات

نومید- bezish one; به طور خلاصه لانه شکل، پایین ... فرهنگ لغت املای روسی

نومید- kr.f. ناامیدانه / لانه، ناامیدانه / پایین، پایین، ته. ناامید / روز ... فرهنگ لغت املای زبان روسی

ایا، اوه لانه، پایین، پایین. = ناامید (1، 3 رقم). وضعیت دوم. نیاز من آرزوی خدا در یک موقعیت ناامید کننده قرار بگیرید. ◁ بی امید، adv. ب. دقایق دردناک. ناامیدی و و احساس ناامیدی... فرهنگ لغت دایره المعارفی

نومید- اوه، آه؛ لانه، پایین، پایین. = ناامید 1)، 3) همچنین ببینید. ناامید، ناامیدی بای وضعیت. نیاز من آرزوی خدا... فرهنگ لغت بسیاری از عبارات

کتاب ها

  • دکتر فوق العاده، A. I. Kuprin. دکتر پیروگوف خطاب به خانواده مرتسالوف گفت: "خدایا توفیق بده که سال آینده با شما نسبت به سالی که گذشت کمی محتاطانه تر رفتار کند و مهمتر از همه، دلتان را از دست ندهید." حتی در ناامید کننده ترین لحظه...
  • روز اول آوریل، یوسیپ نواکوویچ. متولدین اول آوریل چه انتظاری از زندگی می تواند داشته باشد؟ به خصوص اگر سال 1948 باشد و دیکتاتور تیتو در زادگاهش کرواسی به قدرت برسد؟ ایوان دولینار پر از امید و جاه طلبی وارد…

همانطور که از مقاله هسته لینوکس چیست می دانید، هسته یکپارچه است. این بدان معنی است که تمام کدهای اجرایی در یک فایل متمرکز شده اند. این معماری دارای اشکالاتی مانند عدم امکان نصب درایورهای جدید بدون بازسازی هسته است. اما توسعه دهندگان با افزودن سیستمی از ماژول ها راه حلی برای این مشکل پیدا کرده اند.

هسته لینوکس اجازه می دهد تا درایورهای سخت افزار، سیستم های فایل و برخی اجزای دیگر به طور جداگانه کامپایل شوند - به عنوان ماژول و نه به عنوان بخشی از خود هسته. بنابراین، شما می توانید بدون بازسازی هسته، درایورها را به روز کنید، و همچنین به صورت پویا عملکرد آن را گسترش دهید. همچنین به این معنی است که شما می توانید فقط ضروری ترین چیزها را در هسته قرار دهید و همه چیزهای دیگر را با استفاده از ماژول ها متصل کنید. خیلی ساده است.

در این مقاله به ماژول های هسته لینوکس، اصول کار با آنها، مشاهده ماژول های بارگذاری شده قبلی، بارگذاری، نصب و غیرفعال کردن ماژول ها می پردازیم. و همچنین خاموش شدن کامل، اضافه کردن به لیست سیاه و اضافه کردن ماژول های جدید هسته.

ماژول های هسته لینوکس فقط برای یک نسخه هسته خاص ساخته شده اند، راهی برای اجرای یک ماژول بدون توجه به نسخه هسته در صورت سازگاری با dkms وجود دارد، اما بعداً در مورد آن صحبت خواهیم کرد.

همه ماژول ها در پوشه /lib/modules/ قرار دارند. با توجه به اینکه ماژول ها فقط برای نسخه کرنل خاصی طراحی شده اند، برای هر نسخه کرنل نصب شده در سیستم یک زیر پوشه جداگانه در این پوشه ایجاد می شود. این پوشه شامل خود ماژول ها و فایل های پیکربندی اضافی است، ماژول ها بسته به هدف به دسته بندی می شوند، به عنوان مثال:

ls /lib/modules/4.1.20-11-default/kernel/

arch Documentation fs lib net sound
امنیت هسته درایور کریپتو میلی متر

قبل از اینکه به تمرین بپردازیم، اجازه دهید به طور خلاصه دستورات اساسی برای مدیریت ماژول ها را مرور کنیم.

  • lsmod- مشاهده ماژول های بارگذاری شده
  • اطلاعات اصلاحی- اطلاعات مربوط به ماژول
  • ناخوشایند- ماژول بارگذاری
  • rmmod- حذف ماژول

کار با ماژول های هسته لینوکس عمدتا با این دستورات انجام می شود، اما می توان از سایر ماژول ها نیز استفاده کرد.

همه ماژول ها

این یک کار معمولی نیست، اما اگر می خواهید تمام ماژول های هسته لینوکس نصب شده روی سیستم خود را ببینید، انجام آن بسیار آسان است. همه ماژول ها در پوشه /lib/modules قرار دارند و بنابراین محاسبه همه آنها با یک دستور بسیار آسان است یا حتی فقط با یک مدیر فایل به پوشه رفته و نگاه کنید.

در اوبونتو، دستور به شکل زیر خواهد بود:

dpkg -S *.ko | grep /lib/modules

می توانید این ساخت و ساز را با find انجام دهید:

/lib/modules -name *.ko را پیدا کنید

ما فقط می توانیم هسته فعلی را جستجو کنیم:

/lib/modules/$(uname -r) -name *.ko

همچنین، همه ماژول ها در فایل پیکربندی /lib/modules/modules.aliases نوشته شده اند، بنابراین می توانیم فقط به محتویات آن نگاه کنیم:

اگر بخواهیم بررسی کنیم که آیا یک ماژول هسته لینوکس نصب شده است، می توانیم خروجی هر یک از دستورات را با استفاده از grep فیلتر کنیم:

/lib/modules -name *.ko | grep vbox

/lib/modules/4.1.20-11-default/weak-updates/misc/vboxnetadp.ko
/lib/modules/4.1.20-11-default/weak-updates/misc/vboxvideo.ko

چه چیزی بارگذاری شده است؟

تمام اطلاعات مربوط به ماژول های بارگذاری شده در فایل /proc/modules ذخیره می شود، می توانیم آن را با دستور نمایش دهیم:

cat /proc/modules

tun 32768 2 - Live 0xffffffffa07a9000
vboxpci 28672 0 - Live 0xffffffffa07a1000 (O)
vboxnetadp 28672 0 - Live 0xffffffffa0632000 (O)
vboxnetflt 32768 0 - Live 0xffffffffa06f3000 (O)
af_packet 40960 8 - Live 0xffffffffa065b000

اما روش های متمدن تری برای این موضوع وجود دارد. این ابزار lsmod و modinfo است. برای مشاهده ماژول های کرنل لینوکس بارگذاری شده اجرا کنید:

اندازه ماژول استفاده شده توسط
ctr 16384 2
ccm 20480 2
فیوز 106496 3
bnep 20480 2
بلوتوث 532480 5 bnep

بررسی اینکه آیا یک ماژول با استفاده از grep بارگذاری شده است یا خیر راحت است:

sudo lsmod | grep vbox

و اطلاعات دقیق تر در مورد هر ماژول را می توان با استفاده از ابزار modinfo به دست آورد:

نام فایل: /lib/modules/4.1.20-11-default/kernel/fs/fuse/fuse.ko
نام مستعار:devname:fuse
نام مستعار: char-major-10-229
نام مستعار: fs-fuseblk
نام مستعار: fs-fuse
مجوز: GPL
توضیحات: سیستم فایل در فضای کاربری
نویسنده: Miklos Szeredi
نام مستعار: fs-fusectl
srcversion: 739DE4A12CE441C9FBD74C7

در اینجا می توانید فایل ماژول، مجوز، نویسنده و وابستگی های آن را ببینید. وابستگی ها آن دسته از ماژول هایی هستند که باید بارگذاری شوند تا به درستی کار کنند. متأسفانه، توضیح معمولی برای همه ماژول ها در دسترس نیست، اما می توانید سعی کنید به شرح وابستگی های ماژول نگاه کنید.

در حال اجرا ماژول های هسته

شما می توانید یک ماژول هسته لینوکس را با استفاده از دستورات modprobe یا insmod بارگذاری کنید.

به عنوان مثال، اجازه دهید ماژول vboxdrv را بارگذاری کنیم

sudo modprobe vboxdrv

برای بارگذاری یک ماژول هسته لینوکس با استفاده از insmod، باید آدرس فایل ماژول را ارسال کنید:

sudo insmod /lib/modules/4.1.20-11-default/weak-updates/misc/vboxdrv.ko

یادآوری می کنم که می توان آن را با استفاده از دستور modinfo پیدا کرد. اجرای یک ماژول هسته لینوکس ترجیحا با modprobe انجام می شود زیرا این دستور نه تنها فایل ماژول را در سیستم فایل پیدا می کند، بلکه تمام وابستگی های آن را نیز بارگذاری می کند.

حذف ماژول های هسته

در اینجا، به طور مشابه، دو دستور وجود دارد - modprobe، که به شما اجازه می دهد اگر گزینه -r را به آن منتقل کنید، ماژول را حذف کنید، و همچنین دستور rmmod وجود دارد. بیایید با modprobe شروع کنیم:

sudo modprobe -r vboxdrv

دستور دیگری در این مورد کمی ساده تر به نظر می رسد:

sudo rmmod vboxdrv

rmmod: ERROR: ماژول vboxdrv توسط: vboxnetadp vboxnetflt vboxpci استفاده می شود

اگر هنگام بارگیری یک ماژول خطایی دریافت کردید، پس از آن همچنان توسط ماژول های دیگر استفاده می شود و ابتدا باید آنها را تخلیه کنید. دستوری که به درستی اجرا شده نباید چیزی را برگرداند.

rmmod vboxnetadp vboxnetflt vboxpci

مسدود کردن بارگذاری ماژول

گاهی اوقات هنگام بوت شدن سیستم، برای دستگاه هایی که استفاده می کنیم، ماژول های هسته لینوکس اشتباه بارگذاری می شوند، یا از عملکرد مورد نظر پشتیبانی نمی کنند یا با ماژول های دیگر در تضاد هستند. یک مثال قابل توجه بارگذاری درایور b43 به جای brcmsmac برای آداپتورهای بی سیم Broadcom است. برای حل این مشکل می توانید ماژول ها را به لیست سیاه اضافه کنید. برای انجام این کار، فقط یک خط به فایل /etc/modprobe.d/blacklist.conf اضافه کنید:

vi /etc/modprobe.d/blacklist.conf

این کد ماژول b43 را در لیست سیاه قرار می دهد.

نصب ماژول های هسته لینوکس

شما به سادگی می توانید ماژول های کامپایل شده برای این نسخه از هسته را در پوشه مورد نظر کپی کنید، در واقع این کار را زمانی انجام می دهیم که هسته را از منبع می سازیم. اما با درایورهای اختصاصی و سایر درایورهای خارجی که با هسته همراه نیستند، همه چیز متفاوت است. این ماژول ها چندین نسخه هسته را پشتیبانی می کنند، اما با استفاده از یک فناوری خاص - DKMS (پشتیبانی از ماژول هسته پویا) نصب می شوند. علاوه بر این، ماژول نصب شده به این روش یک بار برای هر نسخه جدید هسته به طور خودکار بازسازی می شود.

wget http://tenet.dl.sourceforge.net/project/e1000/ixgbe%20stable/4.3.15/ixgbe-4.3.15.tar.gz
$ sudo tar -xf ixgbe-4.3.15.tar.gz -C /usr/local/src
$ sudo mv /usr/local/src/ixgbe-4.3.15/src /usr/src/ixgbe-4.3.15

بیایید یک فایل پیکربندی ایجاد کنیم:

sudo vi /usr/src/ixgbe-4.3.15/dkms.conf

PACKAGE_NAME="ixgbe"
PACKAGE_VERSION="4.3.15"
BUILT_MODULE_NAME="ixgbe"
DEST_MODULE_LOCATION="/kernel/drivers/net/ethernet/intel/ixgbe/"
AUTOINSTALL=بله

بیایید ماژول را به درخت هسته اضافه کنیم:

sudo dkms add -m ixgbe -v 4.3.15

اسمبلی را برای هسته فعلی شروع می کنیم:

sudo dkms build -m ixgbe -v 4.3.15

و نصب کنید:

sudo dkms نصب -m ixgbe -v 4.3.15

نصب ماژول های هسته کامل شده است. اکنون می توانید اطلاعات مربوط به درایور را مشاهده کرده یا آن را دانلود کنید:

dkmsstatus | grep ixgbe

نتیجه گیری

این احتمال وجود دارد که شما به ندرت نیاز داشته باشید که با این ماژول ها دست و پنجه نرم کنید. اما اگر توزیع شما از سخت افزار دستگاه شما خارج از جعبه پشتیبانی نمی کند و همچنین زمانی که با نرم افزارهای شخص ثالث مانند VirtualBox، Vmware و غیره کار می کنید، کار با ماژول های هسته ضروری خواهد بود. اما دانستن نحوه کار بسیار مفید است. ماژول ها زمانی که شما نیاز به اضافه یا حذف آنها دارید. حتی اگر اکنون به آن نیاز ندارید، می‌توانید نحوه کارکرد وسایل را آزمایش کنید تا بعداً مسلح شوید.