Ahmad Hoghooghi
Ahmad Hoghooghi
خواندن ۳ دقیقه·۵ سال پیش

نصب جاوا ۱۱ روی فدورا ۳۰

می خوام جاوا ۱۱ (OpenJDK) و با استفاده از command line روی fedora 30 نصب کنم. یک سری سوال دارم که به تدریج این جا خواهم نوشت و براشون دنبال جواب خواهم گشت.

یک روش نصب دیگه هم وجود داره، تو اون روش یک فایل tar.gz و دانلود و بعد extract می کنیم و ... برای اطلاعات بیشتر می تونی به این لینک بری.

کدوم پکیج و باید نصب کنم؟

از دستور

sudo dnf search jdk

شروع کردم. لیست جون داری نشون داد در نتیجه سعی می کنم لیست و به این شکل محدود ترش کنم:

dnf search jdk | grep 11 |grep x86

و نتیجه به این شکل می شه:

وقتی دستور dnf دنبال jdk برای معماری x86 می گرده به چی می رسه؟
وقتی دستور dnf دنبال jdk برای معماری x86 می گرده به چی می رسه؟

حالا سوال اینه که فرق اینا چیه و باید کدوم و نصب کنم. به نظر میاد باید این دو تا پکیج و نصب کنم.

java-11-openjdk.x86_64 : OpenJDK Runtime Environment 11 java-11-openjdk-devel.x86_64 : OpenJDK Development Environment 11

البته با این دستور:

sudo dnf install java-11-openjdk sudo dnf install java-11-openjdk-devel

حذف نسخه دیفالت

  • چه کنم که نسخه ی openJDK قبلی که روی لینوکس هست پاک بشه؟

این کار و نکن! پکیج های زیادی هستند که به openjdk ای که روی سیستم نصب هست وابسته اند. مثل libreoffice بهتره jdk ای که می خوای و نصب کنی و لینک ها رو به درستی برقرار کنی تا وقتی با command line کار می کنی به جاوایی که تو می خوای اشاره کنه. و اون هم سرجاش بمونه! به هر حال این دستور مقدمات پاک کردن و فراهم می کنه:

sudo dnf remove java-1.8.0-openjdk-headless-1:1.8.0.201.b09-6.fc30.x86_64

با اجرای این دستور متوجه می شی که چقدر از پکیج های مهم لینوکس و می خواد پاک کنه. پس دست نگه دار و مشکل و با استفاده از Linux Alternative System حل کن!

چی به کجا لینک شده

[ahmad@localhost java]$ which java /usr/bin/java [ahmad@localhost java]$ ll /usr/bin/java lrwxrwxrwx. 1 root root 22 Jul 19 14:02 /usr/bin/java -> /etc/alternatives/java [ahmad@localhost ~]$ ll /etc/alternatives/java lrwxrwxrwx. 1 root root 72 Jul 19 14:02 /etc/alternatives/java -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-6.fc30.x86_64/jre/bin/java

حالا اگه بریم داخل این فولدر چی خواهیم دید؟

ahmad@localhost ~]$ cd /usr/lib/jvm [ahmad@localhost jvm]$ ls -la drwxr-xr-x. 5 root root 4096 Jul 19 14:02 java-11-openjdk-11.0.3.7-5.fc30.x86_64 drwxr-xr-x. 3 root root 4096 Apr 26 06:55 java-1.8.0-openjdk-1.8.0.201.b09-6.fc30.x86_64

روال مشابه ای و می شه برای دستور javac هم طی کرد.

لینوکس دیفالت سیستم دیگه چیه؟

شما PATH و ببین:

[ahmad@localhost java-11-openjdk-11.0.3.7-5.fc30.x86_64]$ echo $PATH /home/ahmad/.local/bin:/home/ahmad/bin:/usr/share/Modules/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin

داخل usr/bin یک java هست که به etc/alternatives/ اشاره می کنه. از طرفی با استفاده از دستور زیر می تونیم بگیم اونی که توی etc/alternatives/ هست به کجا اشاره کنه. در نتیجه بدون این که نیاز باشه یک ورژن و پاک کنیم می تونیم همون و داشته باشیم ولی بگیم java ای که داخل usr/bin/ هست در نهایت از کدوم جاوا استفاده کنه:

sudo update-alternatives --config java
تنظیم java دیفالت
تنظیم java دیفالت

از بخش بالا می تونیم ۲ رو انتخاب کنیم تا java نسخه ۱۱ به عنوان نسخه دیفالت انتخاب بشه. همین کار و برای دستور javac هم می شه چک کرد.

تنظیم javac دیفالت
تنظیم javac دیفالت

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

java --version javac --version

کجا نصب می شه؟

تو بخش «چی به کجا لینک شده» تقریبا جایی که جاوا نصب شده رو پیدا کردم. اگر هر دو پکیج openjdk و openjdk-devel و نصب کنیم در نهایت ب همچین منظره ای مواجه می شیم:

محتویات bin
محتویات bin

به نظر میاد آنچه لازم داریم نصب شده. جاوا هم در داخل PATH هست. خب حالا بریم سراغ تنظیم JAVA_HOME.

بهترین جا برای ویرایش PATH و تعریف JAVA_HOME کجاست؟

نظر ها مختلفه ولی ما می ریم که JAVA_HOME و توی etc/profile/ تنظیم کنیم. جاهای دیگه ای هم هست که می شه این کار و کرد، تفاوتشون بماند برای بعد...

تا این جای قضیه می دونم که جاوا داخل این فولدر نصب شده:

usr/lib/jvm/java-11-openjdk-11.0.3.7-5.fc30.x86_64

بهتره بدونیم توی فولدر etc/alternatives/ چند تا لینک به این فولدر وجود داره:

links to java installation folder in /etc/alternatives
links to java installation folder in /etc/alternatives

به هر حال فایل etc/profile/ و برای ویرایش باز می کنم و این سطر و اضافه می کنم.

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

source /etc/profile

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

javajava11opejdkfedorafedora30
شاید از این پست‌ها خوشتان بیاید