از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
نحوه نصب MongoDB با پشتیبانی OpenSSL 3 در فدورا 39
 
				سرفصلهای مطلب
 
در این آموزش، نحوه نصب MongoDB با پشتیبانی از آخرین نسخه OpenSSL را در سیستم عامل لینوکس فدورا خواهید آموخت.
اگر قبلاً آن را نصب کرده اید، این آموزش به شما کمک می کند تا خطای پیکربندی مونگوش OpenSSL را برطرف کنید.
برای پیگیری، به یک ترمینال با دسترسی روت و اتصال اینترنت برای دانلود بسته ها نیاز دارید.
در اینجا چیزی است که ما پوشش خواهیم داد:
- هسته اصلی مشکل
- راه حل برای نصب MongoDB
- درک خطای OpenSSL Mongosh
- راه حلی برای رفع خطا در نصب های MongoDB موجود
- نحوه نصب MongoDB با پشتیبانی OpenSSL 3 از ابتدا
- نتیجه
هسته اصلی مشکل
اگر از مستندات رسمی MongoDB بازدید کنید و به دنبال دستورالعملهایی در مورد نحوه نصب آن در سیستمعامل Fedora Workstation باشید، چیزی پیدا نخواهید کرد. اما میتوانید دستورالعملهایی در مورد نحوه نصب آن در سیستمعامل لینوکس Red Hat Enterprise پیدا کنید.
“پروژه فدورا توزیع بالادستی و اجتماعی Red Hat® Enterprise Linux است.” (منبع: کلاه قرمزی)
به عبارت دیگر فدورا و لینوکس Red Hat Enterprise بسیار شبیه هم هستند.
“تفاوت اصلی بین توزیعهای انجمن و سازمانی این است که چه کسی تصمیم میگیرد چه چیزی برای کاربران مهم است. جهت توزیع انجمن توسط مشارکتکنندگان تعیین میشود، که بستهها را از طیف گستردهای از گزینههای منبع باز انتخاب و نگهداری میکنند. جهت توزیع سازمانی توسط یک تنظیم میشود. فروشنده، بر اساس نیاز مشتریان خود.” (منبع: کلاه قرمزی)
حالا ممکن است فکر کنید که می توانید MongoDB را با دنبال کردن آموزش نصب آن در Red Hat روی فدورا نصب کنید. به هر حال، این آموزش در نصب MongoDB Community Edition در Red Hat یا CentOS موجود است.
مشکل این است که کار نمی کند – و برای اثبات آن، سعی می کنم آن را نصب کنم و به شما نشان دهم که چه اتفاقی می افتد.
توجه داشته باشید: من از درایور Node.js MongoDB استفاده می کنم که در زمان نوشتن این مقاله، نسخه فعلی MongoDB (7.0) را پشتیبانی نمی کند. بنابراین سعی می کنم نسخه قبلی آن (6.0) را نصب کنم.
مراحل لازم برای نصب MongoDB در فدورا به شرح زیر است:
- سیستم مدیریت بسته را پیکربندی کنید
- بسته های MongoDB را نصب کنید
برای انجام اولین مرحله، ترمینال خود را باز کنید، دسترسی root داشته باشید و موارد زیر را تایپ کنید:
# touch /etc/yum.repos.d/mongodb-org-6.0.repoاکنون، فایل را با استفاده از ویرایشگر متن دلخواه خود باز کنید (من از ویرایشگر متن Gnome استفاده می کنم، زیرا با فدورا ارسال شده است):
# gnome-text-editor /etc/yum.repos.d/mongodb-org-6.0.repoو در این خطوط بچسبانید:
[mongodb-org-6.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/6.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-6.0.ascفایل را ذخیره کنید و آن را ببندید.
مرحله دوم را می توان با اجرای دستور زیر انجام داد:
# dnf install -y mongodb-org
پس از اجرای دستور با خطای مشابه زیر مواجه خواهید شد:
Fedora 39 - x86_64 - Updates                     34 kB/s |  46 kB     00:01    
MongoDB Repository                               63  B/s | 391  B     00:06    
Errors during downloading metadata for repository 'mongodb-org-6.0':
  - Status code: 404 for https://repo.mongodb.org/yum/redhat/39/mongodb-org/6.0/x86_64/repodata/repomd.xml (IP: 65.8.214.17)
Error: Failed to download metadata for repo 'mongodb-org-6.0': Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried
Ignoring repositories: mongodb-org-6.0
Last metadata expiration check: 0:00:02 ago on Thu 30 Nov 1402 09:15:21 AM -03.
No match for argument: mongodb-org
Error: Unable to find a match: mongodb-org
این یک است 404 خطا، به این معنی که باید آن را تغییر دهید baseurl فایلی که مخزن را پیکربندی می کند.
اگر سعی کنید در را باز کنید baseurl در مرورگر خود یک را دریافت خواهید کرد 404 خطا نیز:

baseurl 404  خطااین هسته اصلی مشکل است.
راه حل برای نصب MongoDB
می توانید استنباط کنید که برای رفع مشکل باید مقدار اختصاص داده شده به را تغییر دهید baseurl.  سوال این است: URL که به صفحه حاوی بسته ها منتهی می شود چیست؟
پاسخ ها توسط اسناد رسمی MongoDB ارائه شده است:
“همچنین می توانید دانلود کنید
.rpmفایل های مستقیم از مخزن MongoDB. دانلودها بر اساس نسخه Red Hat / CentOS سازماندهی می شوند (به عنوان مثال7، سپس نسخه انتشار MongoDB (به عنوان مثال6.0، سپس معماری (مثلاx86_64).” (منبع: MongoDB)
اکنون، بازدید از مخزن MongoDB شما را به این صفحه می برد:

از اینجا به مخزن مناسب رفتم و نسخه MongoDB و معماری سیستم مورد نظر خود را انتخاب کردم. شما باید کار مشابه انجام دهید.
من به آدرس زیر رسیدم:
https://repo.mongodb.org/yum/redhat/9Server/mongodb-org/6.0/x86_64/RPMS/این URL به مخزن منتهی می شود که در آن بسته های MongoDB 6.0 را می توان برای سیستم های مبتنی بر معماری x86_64 یافت.
این چیزی است که من در آنجا پیدا کردم:

پس از اطمینان از یافتن بسته ها، فایلی را که مخزن را پیکربندی می کند به روز کردم.  اما baseurl باید به والد اشاره کند RPMS دایرکتوری که منجر به URL زیر شد:
https://repo.mongodb.org/yum/redhat/9Server/mongodb-org/6.0/x86_64/دویدم:
# gnome-text-editor /etc/yum.repos.d/mongodb-org-6.0.repoبه روز شد baseurl:
[mongodb-org-6.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/9Server/mongodb-org/6.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-6.0.ascو بسته ها را نصب کرد:
# dnf install -y mongodb-orgاینها بسته هایی هستند که نصب شده اند:
Installed:
  mongodb-database-tools-100.9.3-1.x86_64                                       
  mongodb-mongosh-2.1.0-1.el8.x86_64                                           
  mongodb-org-6.0.12-1.el9.x86_64                                               
  mongodb-org-database-6.0.12-1.el9.x86_64                                     
  mongodb-org-database-tools-extra-6.0.12-1.el9.x86_64                         
  mongodb-org-mongos-6.0.12-1.el9.x86_64                                       
  mongodb-org-server-6.0.12-1.el9.x86_64                                       
  mongodb-org-tools-6.0.12-1.el9.x86_64                                         
  openssl-1:3.1.1-4.fc39.x86_64 درک خطای OpenSSL Mongosh
برای تایید نصب سرور پایگاه داده، این دستور را اجرا کنید:
# mongod --versionپیامی مشابه این دریافت خواهید کرد:
db version v6.0.12
Build Info: {
    "version": "6.0.12",
    "gitVersion": "21e6e8e11a45dfbdb7ca6cf95fa8c5f859e2b118",
    "openSSLVersion": "OpenSSL 3.1.1 30 May 1402",
    "modules": [],
    "allocator": "tcmalloc",
    "environment": {
        "distmod": "rhel90",
        "distarch": "x86_64",
        "target_arch": "x86_64"
    }
}برای تایید نصب پوسته، این دستور را اجرا کنید:
# mongosh --versionو این پیامی است که دریافت خواهید کرد:
mongosh: OpenSSL configuration error:
00899523A67F0000:error:030000A9:digital envelope routines:alg_module_init:unknown option:../deps/openssl/openssl/crypto/evp/evp_cnf.c:61:name=rh-allow-sha1-signatures, value=yesاوه! یک خطای وجود دارد.
من نسخه OpenSSL نصب شده را با اجرای این دستور بررسی کردم:
# openssl versionو به این نتیجه رسید:
OpenSSL 3.1.1 30 May 1402 (Library: OpenSSL 3.1.1 30 May 1402)با آن، عدم تطابق احتمالی بین نسخه های نصب شده و نسخه OpenSSL مورد نیاز را کنار گذاشتم.
بعد از کمی تحقیق متوجه شدم که:
دو بسته PPA جدید از منبع mongosh ایجاد شده است: علاوه بر mongodb-mongosh، mongodb-mongosh-shared-openssl11 و mongodb-mongosh-shared-openssl3 نیز ارائه شده است. ” (منبع: MongoDB Jira)
وقتی به بسته های نصب شده نگاه کردم، دیدم mongodb-mongosh بسته بندی بنابراین می دانستم که باید آن را جایگزین کنم mongodb-mongosh-shared-openssl3.
راستی،
“نام بسته نشان می دهد که این برش mongosh است که در برابر openssl3 کامپایل شده است.” – جک وهر
حالا که مشکل را فهمیدیم، بیایید آن را برطرف کنیم.
راه حلی برای رفع خطا در نصب های موجود MongoDB
اگر قبلاً MongoDB را نصب کرده اید، برای رفع مشکل این مراحل لازم است:
- MongoDB را متوقف کنید
- را حذف کنید mongodb-org بسته بندی
- را حذف کنید mongodb-mongosh بسته بندی
- را نصب کنید mongodb-mongosh-shared-openssl3 بسته بندی
- MongoDB را فعال کنید
شما باید این مراحل را به ترتیب صحیح انجام دهید. اگر سعی می کنید نصب کنید mongodb-mongosh-shared-openssl3 بسته بدون حذف نصب mongodb-mongosh ابتدا بسته، یک خطای تضاد دریافت خواهید کرد:
Error: Transaction test error:
  file /usr/bin/mongosh from install of mongodb-mongosh-shared-openssl3-2.1.0-1.el8.x86_64 conflicts with file from package mongodb-mongosh-2.1.0-1.el8.x86_64اگر سعی کنید آن را حذف کنید mongodb-mongosh بسته بدون حذف نصب mongodb-org ابتدا بسته، یک خطای وابستگی دریافت خواهید کرد:
error: Failed dependencies:
	mongodb-mongosh is needed by (installed) mongodb-org-6.0.12-1.el9.x86_64برای متوقف کردن MongoDB، این دستور را اجرا کنید:
# systemctl stop mongodتوجه داشته باشید: اگر همه چیز خوب پیش برود، دستور هیچ خروجی نخواهد داشت.
برای حذف mongodb-org و mongodb-mongosh بسته ها، اجرا کنید:
# rpm -e mongodb-org mongodb-mongoshتوجه داشته باشید: من از آن استفاده نمی کنم dnf دستور دهید تا حذف شود mongodb-org و تمام وابستگی های آن
همچنین میتوانید تأیید کنید که تنها دو بسته با اجرا کردن حذف شدهاند:
# rpm -qa | grep mongodb-*خروجی باید این باشد:
mongodb-org-database-tools-extra-6.0.12-1.el9.x86_64
mongodb-database-tools-100.9.3-1.x86_64
mongodb-org-tools-6.0.12-1.el9.x86_64
mongodb-org-server-6.0.12-1.el9.x86_64
mongodb-org-mongos-6.0.12-1.el9.x86_64
mongodb-org-database-6.0.12-1.el9.x86_64برای نصب mongodb-org و mongodb-mongosh-shared-openssl3 بسته ها، اجرا کنید:
# dnf install -y mongodb-org mongodb-mongosh-shared-openssl3در نهایت، برای راه اندازی MongoDB با سیستم عامل خود، اجرا کنید:
# systemctl start mongodاگر می خواهید مطمئن شوید که راه حل کار کرده است، اجرا کنید:
# mongod --versionو بعد این:
# mongosh --versionحال، اگر نگران از بین بردن داده ها هستید، بدانید که لاگ ها و پایگاه های داده تنها در صورتی حذف خواهند شد که دستورات زیر را اجرا کنید:
# rm -r /var/log/mongodb
و این:
# rm -r /var/lib/mongoیک چیز دیگر: اگر می دوید mongosh و خطای زیر را دریافت کنید:
MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017دستگاه خود را مجددا راه اندازی کنید مشکل را حل خواهد کرد.
نحوه نصب MongoDB با پشتیبانی OpenSSL 3 از ابتدا
اگر برای اولین بار MongoDB را نصب می کنید، فقط باید دو مرحله را انجام دهید:
- سیستم مدیریت بسته را پیکربندی کنید
- بسته های MongoDB را با مشخص کردن آنها به صورت جداگانه نصب کنید
میتوانید اولین مرحله را با دنبال کردن کارهایی که در بخش هسته مشکل و راهحل برای نصب MongoDB در این مقاله انجام دادم، انجام دهید.
با این حال، برای نصب بسته های مناسب باید این دستور را جایگزین کنید:
# dnf install -y mongodb-orgبا این یکی:
# dnf install -y mongodb-org mongodb-mongosh-shared-openssl3 openssl mongodb-org-database-tools-extra mongodb-database-tools mongodb-org-tools mongodb-org-server mongodb-org-mongos mongodb-org-databaseبا اجرای زیر می توانید تأیید کنید که همه بسته ها نصب شده اند:
# rpm -qa | grep mongodb-*که باید چیزی شبیه به این خروجی بدهد:
mongodb-org-database-tools-extra-6.0.12-1.el9.x86_64
mongodb-database-tools-100.9.3-1.x86_64
mongodb-org-tools-6.0.12-1.el9.x86_64
mongodb-org-server-6.0.12-1.el9.x86_64
mongodb-org-mongos-6.0.12-1.el9.x86_64
mongodb-org-database-6.0.12-1.el9.x86_64
mongodb-mongosh-shared-openssl3-2.1.0-1.el8.x86_64
mongodb-org-6.0.12-1.el9.x86_64به خاطر داشته باشید که دستور قبلی فقط خروجی خواهد داشت مرتبط با mongodb بسته ها برای تایید نصب OpenSSL، اجرا کنید:
# openssl versionشما باید چیزی شبیه به این دریافت کنید:
OpenSSL 3.1.1 30 May 1402 (Library: OpenSSL 3.1.1 30 May 1402)همانطور که در تصویر زیر می بینید بسته ها با سیستم شما به روز می شوند.

mongodb-mongosh-shared-openssl3  به روز رسانینتیجه
بهروزرسانیهای بسته مهم هستند، زیرا عملکردهای جدیدی را به ارمغان میآورند و/یا امنیت برنامهها را افزایش میدهند. اما در صورت بروز خطاهایی مانند آنچه در این مقاله به آن پرداختیم، می توانند باعث سردرد شوند.
اگر چه ممکن است وسوسه شوید که به روز رسانی را به عقب برگردانید تا از شر مشکل خلاص شوید، این کار را نکنید. در عوض سعی کنید آن را حل کنید.
توجه به پیام های خطا، خواندن اسناد رسمی و تحقیق در وب به احتمال زیاد برای حل اکثر مشکلاتی که با آن مواجه می شوید کافی خواهد بود.
علاوه بر این، دانستن اینکه چگونه دستورات مختلف بر نحوه نصب/حذف بستهها بر روی سیستم عامل شما تأثیر میگذارد، میتواند در زمان و دادههای شما صرفهجویی کند (اگر از یک اتصال اندازهگیری شده استفاده میکنید).
اگر این مقاله برای شما مفید بود، آن را نشانه گذاری کنید و با دوستان خود به اشتراک بگذارید. شما همچنین می توانید من را دنبال کنید توییتر.
در قسمت بعدی می بینمت!
منتشر شده در 1402-12-26 04:34:24
 
			 
				
