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

می خوام جاوا ۱۱ (OpenJDK) و با استفاده از command line روی fedora 30 نصب کنم. یک سری سوال دارم که به تدریج این جا خواهم نوشت و براشون دنبال جواب خواهم گشت.یک روش نصب دیگه هم وجود داره، تو اون روش یک فایل tar.gz و دانلود و بعد extract می کنیم و ... برای اطلاعات بیشتر می تونی به این لینک بری.کدوم پکیج و باید نصب کنم؟از دستورsudo dnf search jdkشروع کردم. لیست جون داری نشون داد در نتیجه سعی می کنم لیست و به این شکل محدود ترش کنم:dnf search jdk | grep 11 |grep 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 نسخه ۱۱ به عنوان نسخه دیفالت انتخاب بشه. همین کار و برای دستور javac هم می شه چک کرد.تنظیم javac دیفالتدر نتیجه باید برای دستور های زیر نسخه ی مناسب و دریافت کنید:java --version javac --versionکجا نصب می شه؟تو بخش «چی به کجا لینک شده» تقریبا جایی که جاوا نصب شده رو پیدا کردم. اگر هر دو پکیج openjdk و openjdk-devel و نصب کنیم در نهایت ب همچین منظره ای مواجه می شیم:محتویات 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 به هر حال فایل etc/profile/ و برای ویرایش باز می کنم و این سطر و اضافه می کنم.فایل و ذخیره می کنیم و می بندیم، برای اعمال تغییرات فوق هم می تونیم این دستور و بزنیم:source /etc/profileبا این دستور می شه نتیجه نهایی کار و چک کرد: