نصب Java(Eclipse Temurin) در Ubuntu

اگه دنبال یک build کاملا رایگان از Open JDK میگردید که پشتیبانی بشه و بطور منظم براش patch منتشر شه تا مشکلات رو برطرف کنه Eclipse Temurin یکی از بهترین گزینه هاست.Temurin by Adoptiumنصب بدون اینترنتاگر سرور Ubuntu به اینترنت دسترسی نداره اول باید فایل مربوط به Temurin رو دانلود کنید و به سرورتون انتقال بدید.برای مثال از طریق لینک زیر با دستور wget میتونید نسخه 17 رو دانلود کنید:wget https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.8%2B7/OpenJDK17U-jdk_x64_linux_hotspot_17.0.8_7.tar.gzدستور wget یک ابزاره که برای دانلود فایل استفاده میشه و از پروتکل های HTTP, HTTPS, FTP, FTPS پشتیبانی میکنه. این دستور فایل رو دانلود میکنه و در همون مسیری که اجرا شده ذخیره میکنه.اگه با ویندوز هم دانلود کردید در نهایت باید از طریق راه هایی که وجود داره فایل رو به سرورتون انتقال بدید.فرمت فایل tar.gz یک فرمت برای فشرده سازی فایل هاست که خودش از دو فرمت تشکیل شده. فرمت tar برای آرشیو کردن چندین فایل در یک فایل استفاده میشه و فرمت gz(gzip) هم برای فشرده سازی استفاده میشه.بعد از انتقال فایل به سرور، برای خارج کردن فایل از حالت فشرده باید از دستور tar با پارامترهای زیر استفاده کرد:tar -xvzf OpenJDK17U-jdk_x64_linux_hotspot_17.0.8_7.tar.gzپارامترهای استفاده شده در این دستور:پارامترx: برای خارج کردن فایل از حالت آرشیوپارامترz: برای خارج کردن فایل از حالت فشرده با استفاده از gzipپارامترf: برای مشخص کردن مسیر و نام فایلپارامترv: برای نمایش دادن مراحل انجام این کار در ترمینال(در واقع میگه چه فایل هایی به چه صورت داره extract میشه، صرفا جهت نمایش دادنه)در نهایت با انجام دستور بالا یک دایرکتوری ایجاد میشه. برای مثال دایرکتوری با نام زیر:jdk-17.0.8+7حالا باید دایرکتوری رو به مسیر مناسب مطابق با ساختار فایل بندی لینوکس انتقال داد. یکی از مسیرهای مناسب برای نصب بسته های یوزر، مسیر /opt هست(یکی دیگه از مسیرهایی که استفاده میشه usr/local هست). برای انتقال اول یک دایرکتوری با نام jdk با دستور mkdir ایجاد میکنیم و بعد با دستور mv انتقال میدیم:mkdir /opt/jdk mv jdk-17.0.8+7 /opt/jdkدستور mkdir برای ساختن دایرکتوری انجام میشه و دستور mv هم فایل وارد شده در بخش اول رو به مسیر وارد شده در بخش دوم انتقال میده.یکار دیگه هم میشه کرد که در همون زمان که با دستور tar فایل رو extract میکنیم مسیر extract هم بهش بدیم. برای اینکار باز باید با mkdir دایرکتوری مربوطه رو ایجاد کرد و بعد از دستور tar با پارامتر -C استفاده کرد که مسیر extract کردن رو مشخص میکنه:mkdir /opt/jdk tar -xvzf OpenJDK17U-jdk_x64_linux_hotspot_17.0.8_7.tar.gz -C /opt/jdkحالا باید Environment Variable ها رو ست کرد تا بشه از دستور java در همه جای لینوکس استفاده کرد. باید دستورات زیر رو وارد کنیم(متغیر JAVA_HOME رو چون خیلی از برنامه های جاوا بیس ممکنه ازش استفاده کنن باید ست کنیم):export JAVA_HOME=&quot/opt/java/jdk-17.0.8+7&quotexport PATH=$PATH:$JAVA_HOME/binدستور export برای ست کردن variable بطور موقت استفاده میشه یعنی بعد از ریبوت شدن لینوکس دیگه این variable ها وجود ندارد. برای اینکه این مشکل برطرف بشه باید دستورات بالا در در فایل etc/profile وارد کرد.برای اینکار میشه از ادیتورهای vim یا nano استفاده کرد و دو خط دستور بالا رو انتهای این فایل اضافه و فایل رو ذخیره کرد. حالا با دستور زیر باید مطمئن شد جاوا بطور صحیح نصب شده:java --versionOutptu:openjdk 17.0.8 2023-07-18OpenJDK Runtime Environment Temurin-17.0.8+7 (build 17.0.8+7)OpenJDK 64-Bit Server VM Temurin-17.0.8+7 (build 17.0.8+7, mixed mode, sharing)تا اینجا کار نصب تموم شده و میتونید از دستور java استفاده کنید. حالا اگه چندین نسخه از جاوا نصب کردید و میخواید دستور جاوا به یکی از اون نسخه ها اشاره کنه یک راه اینه که مقدار متغیر JAVA_HOME رو به نسخه مورد نظر تغییر بدید یا اینکه از دستور update-alternative کمک بگیرید. این دستور برای مدیریت نسخه های مختلف یک برنامه استفاده میشه. این دستور میاد برای یک دستور دیگه symbolic link میسازه و بهش اولویت میده که بر اساس اولویت داده شده از اون دستور استفاده میشه. باید برای هر دو دستور java و javac این کار انجام شه:update-alternatives --install /usr/bin/java java /opt/jdk/jdk-17.0.8+7/bin/java 10update-alternatives --install /usr/bin/javac javac /opt/jdk/jdk-17.0.8+7/bin/javac 10با پارامتر install در مسیر usr/bin یک symbolic link برای دستور java و javac ساخته میشه و به مسیر نصب جاوا اشاره میکنه. عدد آخر هم مربوط به اولویته این دستور هست. برای مثال اگه نسخه 21 جاوا رو نصب کردید و خواستید جایگزین بشه، باید دستورهای بالا رو با مسیر نصب نسخه 21 جایگزین کنید و عدد اولویت هم بالاتر از 10 بزارید.نصب با استفاده از اینترنت و پکیج منیجردر صورتی که بخواید با استفاده از اینترنت و پکیج منیجر نصب رو انجام بدید ابتدا باید repository مربوط به Temurin رو به Ubuntu اضافه کنید چون تو ریپوهای دیفالتش این پکیج وجود نداره. برای اینکار اول باید GPG Key مربوط به ریپو رو دانلود و اضافه کنیم:mkdir /etc/apt/keyringswget -O - https://packages.adoptium.net/artifactory/api/gpg/key/public | tee /etc/apt/keyrings/adoptium.ascبا دستور mkdir یک دایرکتوری برای ذخیره GPG Key میسازیم. با استفاده از pipe (|) خروجی دستور قبل رو به ورودی دستور بعدی میدیم. اینجا GPG Key مربوط به ریپو رو با wget دانلود کردیم و به ورودی دستور tee دادیم که میاد در مسیر keyrings یک فایل با نام adoptium.asc اضافه میکنه و GPG Key دانلود شده رو اینجا ذخیره میکنه(کاربرد دستور tee خوندن اطلاعات از ورودی و نوشتن اونها در خروجی مشخص شده است)بعد از اینکار نوبت به اضافه کردن ریپو میرسه. در مسیر etc/apt/sources.list.d/ یک فایل با نام adoptium.list میسازیم(با استفاده از دستور touch):touch /etc/apt/sources/list.d/adoptium.listبا استفاده از vim یا nano بازش میکنیم و محتویات زیر رو بهش اضافه میکنیم:deb [signed-by=/etc/apt/keyrings/adoptium.asc] https://packages.adoptium.net/artifactory/deb jammy mainمحتویات بالا فرمت استاندارد اضافه کردن ریپو هست که با توجه به اینکه ریپو deb base هست باید اول deb نوشته بشه و بعد چون GPG Key داره باید مسیر فایلش رو بهش بدیم و بعد آدرس ریپور و در آخر هم code name لینوکس خودمون(که در اینجا jammy main هست) .code name رو تو فایل زیر میتونید پیدا کنید:cat /etc/os-releaseدستور cat محتویات فایل رو نمایش میده. بجای ایجاد فایل و پیدا کردن codename میتونید از دستورات زیر هم اضافه کنید که از فایل مربوطه codename رو برمیداره و محتویات رو تو فایل جدید مورد نظر میریزه:echo &quotdeb [signed-by=/etc/apt/keyrings/adoptium.asc] https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main&quot | tee /etc/apt/sources.list.d/adoptium.listتا اینجای کار ریپو رو اضافه کردیم. برای نصب Temurin کافیه لیست پکیج ها رو اپدیت کنیم و از پکیج منیجر apt برای نصب استفاده کنیم:apt updateapt install temurin-17-jdkبا دستور بالا پکیج temurin 17 دانلود میشه و نصب میشه و در انتها با دستور java --version میتونیم اطلاعات نسخه نصب شده رو مشاهده کنیم.