Node.js یک محیط runtime Javascript است که بر اساس موتور منبع باز V8 ساخته شده توسط Google ساخته شده و در اصل در Chrome استفاده شده است. با تشکر از Node.js که می توانیم Javascript را خارج از متن مرورگر اجرا کنیم و از آن نیز مانند یک زبان برنامه نویسی سمت سرور استفاده کنیم ، بنابراین یک برنامه وب کامل در اطراف آن ایجاد می کنیم. در این آموزش نحوه نصب Node.js را در توزیع RHEL 8 / CentOS 8 مشاهده خواهیم کرد.
- در این آموزش می آموزید:
- چگونه می توان نسخه های موجود Node.js را در RHEL 8 / CentOS 8 لیست کرد
- نحوه نصب یک نسخه خاص از Node.js
- نحوه جابجایی بین نسخه های Node.js در RHEL 8 / CentOS 8
الزامات و قراردادهای نرم افزاری مورد استفاده
دسته بندی | الزامات ، کنوانسیون ها یا نسخه نرم افزار مورد استفاده |
---|---|
System | RHEL 8 / CentOS 8 |
Software | نرم افزار مورد نیاز برای دنبال کردن این آموزش قبلاً در حداقل نصب Rhel 8 گنجانده شده است |
Other | امتیازات ریشه را برای نصب بسته های مورد نیاز (و یا یوزر با دسترسی sudo ) |
کدام نسخه از Node.js؟
همانطور که در مقاله قبلی در مورد نصب php در Rhel8 مشاهده کردیم ، نسخه Red Hat Enterprise Linux روش جدیدی برای سازماندهی نرم افزار در مخازن معرفی می کند. به طور پیش فرض فقط دو منبع نرم افزاری در توزیع فعال هستند: BaseOs و Appstream. اولی شامل بسته های اصلی مورد نیاز سیستم عامل است ، در حالی که دومی میزبان انواع مختلفی از نرم افزارهای سازمان یافته در ماژول ها است.
مزیت اصلی استفاده از این پارادایم این است که امکان انتخاب بین نسخه های مختلف یک برنامه یا ابزار مشابه وجود دارد. Node.js یکی از برنامه های موجود در مخزن Appstream است ، بنابراین برای بررسی نسخه های این زمان اجرا Javascript در RHEL 8 ، تمام کاری که ما باید انجام دهیم این است که از ماژول ، زیرفرمان dnf ، مدیر بسته توزیع استفاده کنیم. ما اجرا می کنیم:
$ sudo dnf module list nodejs
خروجی دستور ماژول های موجود و وضعیت آنها را نشان می دهد:
Red Hat Enterprise Linux 8 for x86_64 - AppStream Beta (RPMs)
Name Stream Profiles Summary
nodejs 10 [d] development, minimal, s2i, default [d] Javascript runtime
nodejs 8 development, minimal, s2i, default [d] Javascript runtime
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
این خروجی به ما چه می گوید؟ اول از همه می توانیم ببینیم که دو نسخه (یا “جریان”) از Node.js در سیستم وجود دارد: 10 و 8. همچنین می توانیم ببینیم که سابق به عنوان [d] علامت گذاری شده است و بنابراین به عنوان به طور پیش فرض نصب شود. برای هر جریان ، چندین نمایه در دسترس است: بسته به نوع انتخاب شده ، بسته های مختلفی نصب خواهد شد.
برای دیدن لیست بسته هایی که با هر نمایه نصب می شوند ، می توانیم دستور زیر را اجرا کنیم:
$ sudo dnf module info --profile nodejs
نحو دستور بصری است: ما برای درخواست اطلاعات در مورد ماژول nodejs از dnf به همراه زیرفرمان ماژول و عملکرد info استفاده کردیم. با ارائه گزینه –profile ، مشخص کردیم که می خواهیم درباره پروفایل های موجود اطلاعاتی کسب کنیم. در اینجا خروجی دستور وجود دارد:
Name : nodejs:10:20181011133319:9edba152:x86_64
development : nodejs
: nodejs-devel
: npm
minimal : nodejs
s2i : nodejs
: nodejs-nodemon
: npm
default : nodejs
: npm
Name : nodejs:8:20181011134412:9edba152:x86_64
development : nodejs
: nodejs-devel
: npm
minimal : nodejs
s2i : nodejs
: nodejs-nodemon
: npm
default : nodejs
: npm
برای هر جریان در دسترس ، لیست بسته های موجود در هر نمایه نمایش داده می شود. می توانیم ببینیم که با استفاده از نمایه پیش فرض ، بسته های موجود در نصب خود nodejs و npm ، مدیر بسته Node هستند. با استفاده از نمایه توسعه ، بسته nodejs-devel به لیست اضافه می شود ، در حالی که هنگام استفاده از حداقل ، تنها بسته نصب شده nodejs است. سرانجام ، نمایه s2i (منبع به تصویر) شامل nodejs ، npm و nodejs-nodemon است که اساساً اسکریپتی است که قرار است در طول توسعه برنامه node.js استفاده شود.
نصب نسخه پیشفرض ( default)
اکنون که نسخه های موجود Node.js را شناختیم ، می توانیم تصمیم بگیریم که کدام یک را نصب کنیم. همانطور که در بالا گفتیم ، نسخه های پیش فرض 10 است. اگر این مورد دلخواه باشد ، تنها کاری که باید انجام دهیم این است:
$ sudo dnf install nodejs
خلاصه ای از بسته های نصب شده و وابستگی آنها در ترمینال نمایش داده می شود و سیستم برای ادامه تأیید درخواست می کند:
======================================================================================================================================================
Package Arch Version Repository Size
======================================================================================================================================================
Installing:
nodejs x86_64 1:10.11.0-2.el8+2021+27085a9b Rhel-8-for-x86_64-appstream-beta-rpms 8.4 M
Installing dependencies:
npm x86_64 1:6.4.1-1.10.11.0.2.el8+2021+27085a9b Rhel-8-for-x86_64-appstream-beta-rpms 3.6 M
libuv x86_64 1:1.23.1-1.el8 Rhel-8-for-x86_64-appstream-beta-rpms 134 k
http-parser x86_64 2.8.0-1.el8 Rhel-8-for-x86_64-appstream-beta-rpms 40 k
Enabling module streams:
nodejs 10
Transaction Summary
======================================================================================================================================================
Install 4 Packages
Total download size: 12 M
Installed size: 57 M
Is this ok [y/N]:
تعیین نسخه برای نصب
اگر بخواهیم نسخه دیگری (جریانی در اصطلاح Rhel) یا نمایه دیگری را نصب کنیم ، چه می کنیم؟ کاملاً ساده است:
name:stream/profile
اساساً ، برای نصب نسخه پیش فرض ماژول nodejs ، اما با مشخصات توسعه ، ما اجرا خواهیم کرد:
$ sudo dnf module install nodejs:10/development
لیست بسته هایی که نصب می شوند ، با توجه به تغییر مشخصات ، افزایش می یابد:
======================================================================================================================================================
Package Arch Version Repository Size
======================================================================================================================================================
Installing group/module packages:
npm x86_64 1:6.4.1-1.10.11.0.2.el8+2021+27085a9b Rhel-8-for-x86_64-appstream-beta-rpms 3.6 M
nodejs-devel x86_64 1:10.11.0-2.el8+2021+27085a9b Rhel-8-for-x86_64-appstream-beta-rpms 11 M
nodejs x86_64 1:10.11.0-2.el8+2021+27085a9b Rhel-8-for-x86_64-appstream-beta-rpms 8.4 M
Installing dependencies:
redhat-rpm-config noarch 115-1.el8 Rhel-8-for-x86_64-appstream-beta-rpms 82 k
perl-srpm-macros noarch 1-25.el8 Rhel-8-for-x86_64-appstream-beta-rpms 11 k
go-srpm-macros noarch 2-16.el8 Rhel-8-for-x86_64-appstream-beta-rpms 14 k
dwz x86_64 0.12-9.el8 Rhel-8-for-x86_64-appstream-beta-rpms 109 k
libuv x86_64 1:1.23.1-1.el8 Rhel-8-for-x86_64-appstream-beta-rpms 134 k
http-parser x86_64 2.8.0-1.el8 Rhel-8-for-x86_64-appstream-beta-rpms 40 k
python3-rpm-macros noarch 3-35.el8 Rhel-8-for-x86_64-appstream-beta-rpms 13 k
rust-srpm-macros noarch 5-2.el8 Rhel-8-for-x86_64-appstream-beta-rpms 9.3 k
ocaml-srpm-macros noarch 5-4.el8 Rhel-8-for-x86_64-appstream-beta-rpms 9.5 k
efi-srpm-macros noarch 3-2.el8 Rhel-8-for-x86_64-appstream-beta-rpms 22 k
qt5-srpm-macros noarch 5.11.1-2.el8 Rhel-8-for-x86_64-appstream-beta-rpms 11 k
http-parser-devel x86_64 2.8.0-1.el8 Rhel-8-for-x86_64-appstream-beta-rpms 18 k
nodejs-packaging noarch 17-2.el8+1541+81a6effd Rhel-8-for-x86_64-appstream-beta-rpms 19 k
libuv-devel x86_64 1:1.23.1-1.el8 Rhel-8-for-x86_64-appstream-beta-rpms 34 k
ghc-srpm-macros noarch 1.4.2-7.el8 Rhel-8-for-x86_64-appstream-beta-rpms 9.4 k
python-srpm-macros noarch 3-35.el8 Rhel-8-for-x86_64-appstream-beta-rpms 14 k
openblas-srpm-macros noarch 2-2.el8 Rhel-8-for-x86_64-appstream-beta-rpms 8.0 k
krb5-devel x86_64 1.16.1-19.el8 Rhel-8-for-x86_64-baseos-beta-rpms 546 k
libsepol-devel x86_64 2.8-1.el8 Rhel-8-for-x86_64-baseos-beta-rpms 85 k
libcom_err-devel x86_64 1.44.3-1.el8 Rhel-8-for-x86_64-baseos-beta-rpms 37 k
pcre2-devel x86_64 10.31-11.el8 Rhel-8-for-x86_64-baseos-beta-rpms 591 k
zip x86_64 3.0-21.el8 Rhel-8-for-x86_64-baseos-beta-rpms 270 k
libkadm5 x86_64 1.16.1-19.el8 Rhel-8-for-x86_64-baseos-beta-rpms 184 k
unzip x86_64 6.0-38.el8 Rhel-8-for-x86_64-baseos-beta-rpms 192 k
keyutils-libs-devel x86_64 1.5.10-6.el8 Rhel-8-for-x86_64-baseos-beta-rpms 48 k
openssl-devel x86_64 1:1.1.1-6.el8 Rhel-8-for-x86_64-baseos-beta-rpms 2.3 M
libselinux-devel x86_64 2.8-5.el8 Rhel-8-for-x86_64-baseos-beta-rpms 199 k
zlib-devel x86_64 1.2.11-10.el8 Rhel-8-for-x86_64-baseos-beta-rpms 56 k
pcre2-utf16 x86_64 10.31-11.el8 Rhel-8-for-x86_64-baseos-beta-rpms 223 k
libverto-devel x86_64 0.3.0-5.el8 Rhel-8-for-x86_64-baseos-beta-rpms 18 k
pcre2-utf32 x86_64 10.31-11.el8 Rhel-8-for-x86_64-baseos-beta-rpms 215 k
Installing module profiles:
nodejs/development
Enabling module streams:
nodejs 10
Transaction Summary
======================================================================================================================================================
Install 34 Packages
به همین ترتیب ، برای نصب نسخه 8 زمان اجرا Javascript با مشخصات پیش فرض ، ما اجرا خواهیم کرد:
$ sudo dnf module install nodejs:8
در این حالت ، از آنجا که می خواستیم از نمایه پیش فرض استفاده کنیم ، از افزودن آن در دستور صرف نظر کردیم. همانطور که می توانید در خروجی زیر تأیید کنید ، نسخه بسته های نصب شده دوباره تغییر کرد:
======================================================================================================================================================
Package Arch Version Repository Size
======================================================================================================================================================
Installing group/module packages:
nodejs x86_64 1:8.11.4-2.el8+2022+2ec55091 Rhel-8-for-x86_64-appstream-beta-rpms 7.5 M
npm x86_64 1:5.6.0-1.8.11.4.2.el8+2022+2ec55091 Rhel-8-for-x86_64-appstream-beta-rpms 4.1 M
Installing dependencies:
libuv x86_64 1:1.23.1-1.el8 Rhel-8-for-x86_64-appstream-beta-rpms 134 k
http-parser x86_64 2.8.0-1.el8 Rhel-8-for-x86_64-appstream-beta-rpms 40 k
Installing module profiles:
nodejs/default
Enabling module streams:
nodejs 8
Transaction Summary
======================================================================================================================================================
Install 4 Packages
فرض کنید ما نصب لیست بسته های فوق را تأیید کردیم. اگر اکنون اجرا کنیم:
$ sudo dnf module list nodejs
ما می توانیم تغییرات منعکس شده با علامت گذاری شده در خروجی را مشاهده کنیم:
Name Stream Profiles Summary
nodejs 10 [d] development, minimal, s2i, default [d] Javascript runtime
nodejs 8 [e] development, minimal, s2i, default [d] [i] Javascript runtime
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
نسخه 10 همچنان به عنوان نسخه پیش فرض علامت گذاری شده است ، اما اکنون جریان نسخه 8 با [e] مشخص شده است که به این معنی است که به طور خودکار فعال شده است. علاوه بر این ، علامت [i] در قسمت پروفایل های همان جریان ، نزدیک به نام یک نصب شده استفاده می شود.
تغییر نسخه NodeJs
اگر نسخه خاصی از Node.js را نصب کنیم و بخواهیم آن را به نسخه دیگری تغییر دهیم ، چه می کنیم؟ در واقع ، ما باید نسخه جدید را برای نصب مشخص کنیم و سیستم بقیه موارد را مراقبت می کند. به عنوان مثال ، برای بازگشت به نسخه 10 دوباره اجرا می کنیم:
$ sudo dnf module install nodejs:10/default
اقداماتی که به منظور جلب رضایت درخواست انجام می شود ، برای ما محاسبه و نمایش داده می شود. در بخش خلاصه تراکنش در خروجی زیر ، در واقع می توانیم مشاهده کنیم که 2 بسته (nodejs و npm) به روز می شوند:
======================================================================================================================================================
Package Arch Version Repository Size
======================================================================================================================================================
Upgrading:
npm x86_64 1:6.4.1-1.10.11.0.2.el8+2021+27085a9b Rhel-8-for-x86_64-appstream-beta-rpms 3.6 M
nodejs x86_64 1:10.11.0-2.el8+2021+27085a9b Rhel-8-for-x86_64-appstream-beta-rpms 8.4 M
Switching module streams:
nodejs 8 -> 10
Transaction Summary
======================================================================================================================================================
Upgrade 2 Packages
نتیجه گیری
Node.js اساس موتور جاوا اسکریپت V8 ساخته شده توسط google است و در ابتدا در مرورگر Chrome استفاده شده است. با استفاده از آن می توانیم برنامه هایی با استفاده از Javascript خارج از زمینه مرورگر وب ایجاد کنیم. در این آموزش نحوه نصب بسته nodejs روی سیستم عامل RHEL / CentOS Linux 8 ، نسخه هایی از بسته موجود در مخازن پیش فرض ، نصب یک نسخه خاص و نحوه تشکر از ماژول های جدید را مشاهده کردیم. روش سازماندهی نرم افزار در آخرین نسخه از توزیع سازمانی Red Hat ، ما می توانیم از یک نسخه به نسخه دیگر تغییر دهیم.
منبع :
https://linuxconfig.org/
https://www.itzgeek.com/