在Ubuntu使用jEnv管理MC不同服務(wù)器的java需求(附加Ubuntu上MC安裝教程)

--允許轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)說明出處

????????有時(shí)候在一臺(tái)服務(wù)器上運(yùn)行不同版本的minecraft服務(wù)器是很痛苦的事情,尤其是forge的服務(wù)器,我個(gè)人在服務(wù)器上同時(shí)保留有????1.10.2????,????1.12.2????,????1.16.5????,????1.18.2????,????1.19.4????這幾個(gè)版本的服務(wù)器,這些服務(wù)端和其中安裝的mod所需要的java不會(huì)是相同的,我通常需要安裝????java8????,????java10????,????java17????,????java19????等版本,其中一些mod甚至只支持特定的java子版本,因此我的java8保留了????291????361????和????381????三個(gè)子版本,用起來非常麻煩,一般情況下我會(huì)用sh批處理文件指定特定java版本的本地路徑,但是這種指定方法在設(shè)置上特別麻煩,最后我找到了一種解決方法:使用jEnv在命令行條件下很方便的管理mc依賴的java版本。

????????我習(xí)慣使用ubuntu系統(tǒng)運(yùn)行minecraft服務(wù)器,在這篇文章中,我會(huì)為我的主力機(jī)安裝雙系統(tǒng),系統(tǒng)使用最新的Ubuntu23.02,使用linux可以更好的利用電腦性能,我的主力機(jī)是一臺(tái)NUCi7QNX,配置是9750H+RX6600,使用桌面版Ubuntu23.02,采用Ubuntu的原因是Ubuntu系統(tǒng)的圖形化程度很高,在很多操作上可以直接在GUI界面進(jìn)行而不是通過命令行。事實(shí)上我平時(shí)也是在ubuntu上用HMCL玩minecraft的。在我的兩臺(tái)電腦上,使用ubuntu系統(tǒng)游玩minecraft可以比在windows上獲得超過20%的幀數(shù)提升,可能和我一直使用RDNA架構(gòu)的A卡有關(guān)。
????????----本教程的前提是讀者有一定的電腦知識(shí),可以自行安裝系統(tǒng),但是一點(diǎn)也不熟悉linux系統(tǒng)。我也沒有系統(tǒng)學(xué)習(xí)過linux系統(tǒng),所以一些名詞可能不太嚴(yán)謹(jǐn),請(qǐng)讀者理解。
????????----示例中的系統(tǒng)是ubuntu23.02,理論上其他debian和arch等的linux系統(tǒng)都可以這樣配置。
????????----如果你安裝的是Ubuntu的server版本(沒有圖形化界面),流程是差不多一樣的,mc服務(wù)器可以不需要GUI界面的條件下運(yùn)行,我后期會(huì)考慮用ARM版的ubuntu在bash上跑一遍。一些流程可以很方便的在搜索引擎上找到,CSDN上有很多關(guān)于一些指令或者流程的教程,如果你想詳細(xì)了解linux系統(tǒng)的一些內(nèi)容,可以買一本《鳥哥的linux私房菜》粗略看看。
????????----使用windows系統(tǒng)也可以參考這篇教程,在windows上使用jenv會(huì)比ubuntu更方便,大致思路上是一樣的。
????????----因?yàn)閖ava是一門很特殊的語(yǔ)言,理論上java版的mc服務(wù)器在其他架構(gòu)的服務(wù)器上也能運(yùn)行的很好,你甚至可以使用32位的硬件或者arm處理器,但是前提是你能找到為這些arm處理器開發(fā)的linux系統(tǒng),各家的arm處理器的啟動(dòng)代碼都不一樣,所以各家甚至一些arm處理器必須使用特定的linux系統(tǒng)
????????----如果你只是想在ubuntu上玩mc,也可以參考這篇教程的后半部分,但是使用HMCL啟動(dòng)器真的沒必要使用jenv管理java版本,HMCL自身就可以管理不同的java版本,而且提供很舒適的GUI環(huán)境。
????????----命令行環(huán)境是bash,使用zsh的童鞋要注意。
????????----用jenv安裝java最好使用tar.xz的jar壓縮包,建議不要先安裝java,比如通過應(yīng)用商店還是snap還是yum甚至是直接改profile文件之類的方法。

安裝jEnv


????????建議在安裝jenv之前不要直接安裝java。
????????這是jenv的官方網(wǎng)站:
https://www.jenv.be/
????????jenv的官方網(wǎng)站在國(guó)內(nèi)并不能正常訪問,github界面有時(shí)候也有可能打不開,但是gitee上面保留了jenv項(xiàng)目,可以訪問這個(gè)網(wǎng)站。其實(shí)官網(wǎng)的說明文檔很清晰。按照官網(wǎng)說明安裝即可實(shí)現(xiàn)。
????????gitee官網(wǎng):
https://gitee.com/mirrors/jenv
????????下面是對(duì)萌新的進(jìn)一步安裝說明:
????????首先按快捷鍵ctrl+alt+t調(diào)出bash,bash是什么?bash是ubuntu的終端,相當(dāng)于windows的cmd或者powershell。你也可以在應(yīng)用中找到“終端”應(yīng)用,這個(gè)和快捷鍵的作用是一樣的。在桌面或者文件夾GUI中還可以按右鍵選擇下滑菜單中的“在終端打開”,這樣打開的命令行界面會(huì)自動(dòng)導(dǎo)向這個(gè)文件夾的位置,這個(gè)打開的方法非常實(shí)用,尤其是對(duì)于不熟悉命令行的小白。打開終端后一般都是這種界面:

????????界面前邊的????????oooiii222@NUC9i7QNX????????在你的系統(tǒng)中可能不一樣,@前面的是正在使用bash的用戶,一些指令會(huì)需要不同權(quán)限的賬號(hào),linux中權(quán)限最大的用戶是root賬戶,只有root賬戶才能安裝,卸載應(yīng)用,配置,修改一些高度關(guān)于系統(tǒng)的文件和設(shè)置以及開關(guān)機(jī),我們只有在一些步驟中才會(huì)使用root賬戶,平時(shí)mc游玩,服務(wù)器的運(yùn)行以及java版本的切換是不需要root賬號(hào)也不建議用root賬號(hào)的。在冒號(hào)后面接的~表示的是bash目前的位置,$符號(hào)表示賬號(hào)的權(quán)限是管理員,root賬號(hào)是#符號(hào)。
????????按照官網(wǎng)的教程在里面輸入:
git clone https://github.com/jenv/jenv.git ~/.jenv
????????直接復(fù)制上面的指令,但是在bash中,你可能發(fā)現(xiàn)不能直接使用ctrl+c和ctrl+v來復(fù)制和粘貼,事實(shí)上ctrl+c在bash中是終止bash中運(yùn)行的程序的作用,要想在bash中復(fù)制粘貼命令,請(qǐng)使用ctrl+shift+c和ctrl+shift+v。
????????ubuntu可能會(huì)顯示“沒有安裝過git”的提示,這時(shí)候你就需要按照下面提示的命令安裝git,如圖:

????????根據(jù)提示輸入:
sudo apt install git
????????因?yàn)檫@項(xiàng)指令是在安裝軟件,所以需要用“sudo"前綴暫時(shí)使用root權(quán)限,當(dāng)輸入這一條指令之后你可能會(huì)看到這樣的提示:

????????當(dāng)輸入密碼的時(shí)候?yàn)榱税踩?,ubuntu是不會(huì)顯示你輸入的字符的,這時(shí)候輸入安裝系統(tǒng)時(shí)設(shè)置的密碼之后按回車,在讀取到軟件包之后會(huì)出現(xiàn)這樣一行字:“您希望繼續(xù)執(zhí)行嗎?[Y/n]”直接輸入字母y并且回車就會(huì)安裝git這個(gè)軟件。
????????如果你有強(qiáng)迫癥想在安裝后卸載這個(gè)軟件的話,可以使用這串指令:
sudo apt remove --purge git
????????“--purge”后綴表示刪除用戶配置,后面接的是軟件包名字,可以改成其他軟件包的名字。
????????再執(zhí)行一下這一串代碼就可以完成jenv的下載:
git clone https://github.com/jenv/jenv.git ~/.jenv
????????下載完jenv之后就要配置jenv。jenv不是通過deb這樣的安裝包的,它存儲(chǔ)在~/.jenv的地址里面 ,為了在bash里使用jenv的指令,我們需要配置jenv,具體方法就是將jenv的調(diào)用寫入環(huán)境變量,我們使用echo語(yǔ)句來實(shí)現(xiàn)這一點(diǎn),echo語(yǔ)句可以將輸入重定向到文件中,在命令行中輸入這兩行就可以實(shí)現(xiàn):
echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile
????????(回車執(zhí)行后再輸入下一條,一般不會(huì)顯示任何內(nèi)容。)
echo 'eval "$(jenv init -)"' >> ~/.bash_profile
????????這里需要注意的一點(diǎn)是jenv的環(huán)境變量是寫在bash_profile文件里面的,,這相當(dāng)于用戶級(jí)的設(shè)置,因?yàn)椤皛”表示的是用戶的/home地址,所以只有你使用的當(dāng)前賬號(hào)才能調(diào)用jenv,在root賬號(hào)下是不能正常使用jenv的。
????????注入環(huán)境變量后需要讓其發(fā)揮作用,最好的方法就是重啟或者注銷系統(tǒng),我這里展示注銷系統(tǒng)的做法,在右上角找到系統(tǒng)注銷的選項(xiàng):

????????這樣在你重新登陸系統(tǒng)的時(shí)候系統(tǒng)會(huì)重新家在bash_profile文件,然后打開終端輸入jenv,如果一切操作正常的話會(huì)正常顯示:

????????如果你想在root環(huán)境下使用jenv,或者這樣的安裝方法失敗了,那么你可能需要參考下面的內(nèi)容。

一些詳細(xì)的另一種安裝方式和環(huán)境變量的說明以及zsh的支持
????????使用zsh命令行的朋友直接把echo命令導(dǎo)向的文件改成????.zshrc????既可。
????????我們還可以使用vim手動(dòng)寫入這些內(nèi)容。在linux系統(tǒng)中前綴是“.”的文件是隱藏文件,“/”表示的是根目錄地址,“~”表示的是當(dāng)前用戶的home地址。使用快捷鍵調(diào)出終端,并使用ls命令查詢home文件夾中的文件,因?yàn)槲覀円檎译[藏文件,所以要加上“-a”后綴。

????????然后使用vim編輯這個(gè)文件:
vim .bash_profile
????????ubuntu并沒有預(yù)裝VIM軟件,所以你仍需使用:
sudo apt install vim
????????指令自行下載。用vim打開文件后按“i”進(jìn)入編輯模式,將這兩串指令輸入進(jìn)去:
export PATH="$HOME/.jenv/bin:$PATH"
eval? "$(jenv init -)"
????????然后按esc鍵退出編輯,輸入":wq"后回車即可保存文件
????????

????????在保存之后進(jìn)行注銷操作再登陸后就可以載入這個(gè)環(huán)境變量。如果想在root賬號(hào)中使用jenv,就必須修改/etc/profile文件了。這種情況下不用再修改bash_profile文件,因?yàn)樵?etc/profile文件中添加的設(shè)置會(huì)對(duì)所有用戶起作用,一般不建議在這個(gè)文件中添加環(huán)境變量。使用指令:
sudo vim /etc/profile
????????修改該文件,要注意修改該文件需要的等級(jí)是root,如果不使用sudo前綴會(huì)導(dǎo)致保存失敗,這時(shí)候必須使用“:q!”指令強(qiáng)制退出vim并不保存該文件再重新修改該文件。
????????如果使用git命令克隆失敗,這時(shí)候就必須在gitee中下載壓縮包自己配置環(huán)境變量:

????????將該zip文件轉(zhuǎn)移到/home文件夾里面解壓到新建的jenv文件夾里面,這些操作可以在gui界面里面進(jìn)行,因?yàn)間itee的下載必須登陸,我沒有g(shù)itee賬號(hào)也不想有所以這里沒有圖片指示。解壓在/home文件夾里面是為了方便,實(shí)際上你可以將jenv解壓在任何地方。然后在/etc/profile文件或者~/.bash_profile文件加入環(huán)境變量:(jenv地址有變化,注意不能照抄前面的指令)
export?PATH="$HOME/jenv/bin:$PATH"
eval??"$(jenv init -)"
????????或者使用echo注入:
echo 'export PATH="$HOME/jenv/bin:$PATH"' >> ~/.bash_profile
????????(回車執(zhí)行后再輸入下一條,一般不會(huì)顯示任何內(nèi)容。)
echo 'eval "$(jenv init -)"' >> ~/.bash_profile
????????重新登陸系統(tǒng)之后在命令行使用jenv指令查看是否安裝成功。

安裝java并加入jenv,在命令行中選擇特定的java版本
????????在oracle官網(wǎng)里面下載java,在這里我安裝java17和java8做演示,官網(wǎng):
https://www.oracle.com/cn/java/technologies/downloads/
????????在oracle中下載java8需要oracle賬號(hào),免費(fèi)注冊(cè)即可。


????????為了方便管理,我建議直接下載tar.xz封裝的linux版文件,這個(gè)文件本質(zhì)上是個(gè)壓縮包,不是應(yīng)用的安裝包(.deb),請(qǐng)對(duì)應(yīng)自己的CPU架構(gòu),我這里是x64,一般的PC也是x64。下載時(shí)需要登陸oracle賬號(hào):

????????你也可以在下面找到j(luò)re,直接下載jre8,這樣安裝的內(nèi)容會(huì)比java se8少,安裝哪一個(gè)都沒問題。同樣下載tar.xz的包。

????????然后下載java17,同樣下載tar.xz文件,這回不需要oracle賬號(hào):


????????在/home目錄下新建JAVA文件夾,將下載好的java文件放進(jìn)去然后右鍵逐個(gè)解壓。


????????進(jìn)入解壓好的java版本的文件夾中,在上面的地址欄找到下滑菜單,選擇復(fù)制位置:

????????然后調(diào)出終端,輸入指令:
jenv add????????????????在后面按ctrl+shift+v將地址復(fù)制在后面然后回車,如果出現(xiàn):ln:無法創(chuàng)建符號(hào)鏈接 ****** 請(qǐng)重新安裝jenv并重新登陸或者重啟。
????????jenv會(huì)自動(dòng)識(shí)別java版本號(hào)和文件,如果你有強(qiáng)迫癥可以參考man文件去自行修改,我沒有如此強(qiáng)烈的強(qiáng)迫癥就不改了,看不懂man的區(qū)CSDN查查或者問一問都可以解決這個(gè)問題。按照上面的步驟將兩個(gè)java版本都加入jenv中,使用:
jenv global 17
????????切換到j(luò)ava17,同理后面改成其他數(shù)字就是將系統(tǒng)的java切換到其他版本。使用java -version可以查看當(dāng)前java版本。



使用HMCL安裝minecraft并進(jìn)行游玩(后面有服務(wù)器教程)
????????在HMCL官網(wǎng)下載HMCL啟動(dòng)器的linux版本,目前是一個(gè)jar文件(早先是sh的批處理文件),為了方便我直接下載dev測(cè)試版(這絕對(duì)不是因?yàn)槌峭ňW(wǎng)盤的賬號(hào)被我弄丟了的原因)。在/home位置新建“HMCL”文件夾,將jar文件丟到里面。這個(gè)位置也是為了方便而考慮,但是注意不要直接放到桌面,最新的mc版本可能不支持中文路徑,比如1.20.1。
????HMCL需要授予權(quán)限才能執(zhí)行,但是這個(gè)文件是jar文件不是常規(guī)的可執(zhí)行文件,不能在GUI界面直接賦予執(zhí)行權(quán)限,我們要在命令行中為其授予權(quán)限。在文件夾中右鍵點(diǎn)擊“在終端中打開”,這樣打開的bash就會(huì)直接定向到這個(gè)文件夾方便我們操作:

????????然后輸入指令賦予權(quán)限:
sudo chmod -x hmcl-******.jar?
????????或者使用:
sudo chmod 777 hmcl-******.jar

????????實(shí)際上效果是一樣的。指令中的星號(hào)要輸入你下載的hmcl文件的文件名,在輸入到這里的時(shí)候可以按tab鍵自動(dòng)補(bǔ)全,不需要全部輸入。正常情況下不會(huì)有任何提示輸入。然后輸入這串指令啟動(dòng)hmcl,要注意hmcl需要java17,所以要提前將java版本切換到j(luò)ava17:
java -jar hmcl-******.jar

????????如果不想每次重復(fù)輸入指令啟動(dòng)可以將指令寫入一個(gè)sh批處理文件中,以后每次直接執(zhí)行批處理文件就可以啟動(dòng)hmcl,使用touch創(chuàng)建一個(gè)批處理文件,文件名隨意,我這里用“SETUP”,后綴用“bat”和“sh”都可以,但是linux的傳統(tǒng)是用“sh”:
touch SETUP.sh

????????同樣沒有任何提示。然后在文件夾中你就可以找到這個(gè)文件了,可以直接雙擊用文本編輯器打開,在里面輸入啟動(dòng)hmcl的指令就可以:
java -jar hmcl-******.jar
????????如果你想把這個(gè)文件放到桌面上啟動(dòng),將后面的文件名改成該文件的地址就可以,上面的例子可以改成:
java -jar ~/HMCL/hmcl-******.jar
????????最后這個(gè)sh批處理文件還沒有執(zhí)行權(quán)限,這回我們可以直接在gui界面賦予權(quán)限了,右鍵文件選擇屬性,開啟最下面的“作為程序執(zhí)行”:

????????如果你仔細(xì)閱讀了前面的教程或者有一定的linux基礎(chǔ),可以直接在命令行中用vim編輯你的批處理文件(vim SETUP.sh????????????????i????????????????java -jar hmcl-******.jar????????????????[esc]????????????????:wq????????????????[enter]????????????????sudo chmod 777 SETUP.sh)并賦予可執(zhí)行權(quán)限。
????????注意!
????????如果你是單純想在ubuntu上玩minecraft的話真的沒必要安裝jenv,直接安裝java就可以,在命令行輸入java可以直接顯示這幅畫面:

????????按照上面的提示先安裝java17或者java20再安裝java8(如果你想玩老版本的話)就可以,hmcl可以自動(dòng)找到j(luò)ava版本,但是仍需要安裝java17或以上版本的java來第一次啟動(dòng)hmcl。
? ? ????如果你打開java的bin文件夾你可能會(huì)發(fā)現(xiàn)java的可執(zhí)行程序沒有后綴,甚至剛才我們修改的文件也沒有后綴,這是因?yàn)樯衿娴氖莑inux大部分時(shí)候并不需要用后綴來分辨文件類型,linux是通過識(shí)別文件開頭或者末尾的標(biāo)識(shí)來區(qū)分文件種類的,如果在hmcl添加java版本要注意這一點(diǎn),直接選中java文件就可以,不用擔(dān)心該可執(zhí)行文件沒有后綴的問題。

各種服務(wù)器下載地址
????????直接在forge官網(wǎng)上就可以下載forge服務(wù)器的安裝包:
https://files.minecraftforge.net/net/minecraftforge/forge/
????????fabric的同理:
https://fabricmc.net/use/server/
????????原版java(香草版)的服務(wù)器可以在官網(wǎng)下載:
https://www.minecraft.net/zh-hans/download/server
????????原版服務(wù)器只提供了一個(gè)jar包,你可能需要寫一個(gè)sh文件來啟動(dòng)這個(gè)文件,指令參考官網(wǎng)給出的指令。
????????基巖版服務(wù)器官方下載(基巖版服務(wù)器不需要java):
https://www.minecraft.net/zh-hans/download/server/bedrock
????????按照官網(wǎng)指導(dǎo)安裝一般不會(huì)出什么問題。
????????這里我只提供forge版本的安裝示例,forge服務(wù)器一般更為復(fù)雜,其他服務(wù)端的安裝方法也可以參考這個(gè)。

Forge服務(wù)端的安裝(1.19.4為例)
????????在官網(wǎng)下載相應(yīng)版本的jar文件:

????????Forge官網(wǎng)提供了Latest(最新)版本和Recommended(推薦)版本的jar包,直接下載Recommended版本即可。在/home地址處新建一個(gè)文件夾,我新建了“FORGE1.19.4”文件夾,你也可以采用其他名字,將jar文件放到文件夾中,右鍵選擇“在終端中打開”,然后輸入指令啟動(dòng)該jar文件:
java -jar forge-******-installer.jar????????????????(不要直接輸進(jìn)去,補(bǔ)全自己的forge文件名)

????????選擇“Install server”選項(xiàng),然后將服務(wù)器的安裝地址定向到該文件夾中:

????????下載可能會(huì)失敗,你可能需要重新下載,但是現(xiàn)在forge在國(guó)內(nèi)是可以正常下載服務(wù)端的,下載完成之后就可以直接刪除jar安裝文件了,留著也沒有什么用。(如果你的服務(wù)器第一次安裝失敗還可以刪掉這個(gè)jar安裝文件產(chǎn)生的日志文件,也沒什么用)然后文件夾中剩下的文件應(yīng)該是這樣的:

????????forge為我們保留了很方便的批處理文件來啟動(dòng)服務(wù)端,在linux下.bat和.sh兩個(gè)文件我們都可以使用,按照l(shuí)inux的傳統(tǒng)我刪除了run.bat,然后運(yùn)行run.sh:

????????然后我們就需要在新生成的eula文件中同意授權(quán),這是在同意minecraft服務(wù)端的一些條例,只不過這種方法比較特殊。直接打開eula.txt文件,將其中的false改稱true:

????????然后就可以再啟動(dòng)一次服務(wù)器:

????????服務(wù)器的GUI界面和bash上面顯示的是同步的,在gui上和bash上輸入指令也是一樣的。使用“stop”來關(guān)閉服務(wù)器,這樣可以避免服務(wù)器保存失敗,以后就可采用這種方法關(guān)閉服務(wù)器。在服務(wù)器啟動(dòng)的時(shí)候出現(xiàn)的“Preparing spawn area **%”是生成或加載區(qū)塊的意思,如果該進(jìn)度沒有進(jìn)行到100%,你的服務(wù)器就已經(jīng)崩潰,這時(shí)要排查mod或者java版本兼容性的問題:


????????第一次啟動(dòng)服務(wù)器之后,你可能需要修改server.properties來修改服務(wù)器內(nèi)容(比如離線模式,沒有正版賬號(hào)的情況下必須開啟這個(gè)選項(xiàng)),具體修改方法可以參考wiki:
https://minecraft.fandom.com/zh/wiki/Server.properties
????????內(nèi)網(wǎng)穿透,ipv6,端口映射等服務(wù)器開放方法我以后可能會(huì)寫一篇文章詳細(xì)講解,如果你想在本地路由器或者當(dāng)前電腦上驗(yàn)證服務(wù)器,可以在相應(yīng)版本的mc上找到多人游戲中的添加服務(wù)器,然后直接輸入本地環(huán)回地址:
127.0.0.1
????????進(jìn)行聯(lián)機(jī)驗(yàn)證,mod服務(wù)器一定要保證服務(wù)端mod同步。如果服務(wù)器要安裝mod可以直接把mod丟到服務(wù)器的mod文件夾中,在控制臺(tái)中輸入:
op ******
????????即可賦予某人op權(quán)限,一些進(jìn)階設(shè)置可以在wiki中查詢,比如白名單等方法。

????????一鍵三連是支持我更新文章的動(dòng)力謝謝大家。
--允許轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)說明出處