本新手是windows陣營的碼農,服務端、客戶端都用的都是windows的,近來在虛機上裝了個Ubuntu16.04LTS,覺得玩不溜,先記錄出來。本新手在學習新事物時比較喜歡做類比,用新的知識與先前把握的進行對比,有些比較具象、隱晦的概念,有可能透過對比,就理解了其意義。
這次是由於必須安裝配置pycharm,所以,順便把配置Ubuntu16.04LTS環境變數過程中的一些理解記錄出來。第一步是要把jdk環境配置好,pycharm是jetbrains的其中一個產品,該公司的其他產品有webstorm、PHPStorm。在windows上安裝佈署jdk非常簡單雙擊安裝程序,之後配置環境變量,對無擴充名的Unix體系(確切地說是Unix以及類Unix的操作系統陣營,後稱Unix陣營吧)的文件系統如何運行安裝程式毫無概念,於是上網查找Ubuntu上jdk的安裝方式,大約是有兩種方式,用apt-get命令添加ppa源安裝或則在官網下載linux平台的安裝包,其中的一個博文推薦用apt -get指令安裝,說是這樣可以手動更新,我其實不懂哪些意思啦,於是就用這些方式裝了,雖然可以手動更新嘛。這麼,就去了解了apt-get與ppa源是哪些鬼?
apt-get可以理解為系統自帶整合的工具,與windows的ping、telnet類似,它的作用就是拿來管理軟體包。其實有沒比它更好的工具,我沒繼續研究下去,相對其他同類工具的利弊之處,自然也就不清楚了,不過就這樣用了。
至於ppa源linux修改用戶環境變數,在Unix陣營的精神就是開源,其實是有個軟體基金會存在,這兒我把他看成官方的軟體庫,而這個軟體庫是由官方維護的,這個官方就看成是Unix陣營。能在此軟體庫發佈的軟體都必須經過官方檢驗,簡單的理解就是透過品質檢測的新軟體或新版本能夠上,哪些alpha版、beta版的基本不能直接上,通常到了穩定即將版能夠上。所以就有了ppa源這樣的概念,ppa源雖然可以看作是民間的軟體庫,在此發布的軟體門檻就沒官方的這麼高。裡面會好多軟體的最新版本,但多數都是alpha、beta之類的。
曉得apt-get和ppa後,繼續了jdk的安裝,Ubuntu雖然早已自帶了jdk,openjdk,而且經了解,還有個oraclejdk,大約就是米UI與原生Android的關係,不過還好有查openjdk與oraclejdk的區別,才不經意見到有些人建議不要移除Ubuntu自帶的openjdk,緣由是Ubuntu的個別功能或組件是依賴openjdk,卸了可能會有意想不到的後果。至於,具體有哪些不良影響,沒去深入了解,所以,愉快地不卸載,繼續安裝oraclejdk。
sudoadd-apt-repositoryppa:webupd8team/java#添加webupd8team/java軟體庫,這種後降低的軟體庫會添加到/etc/apt/sources.list.d這個路徑裡,運行這個命令後,在sources.list.d上面會產生webupd8team-ubuntu-java-xenial.list和webupd8team-ubuntu-java-xenial.list.save兩個文件,刪掉這兩個文件就是移除該軟體庫
sudoapt-getupdate#相當於重新讀取最新的變更
sudoapt-getinstalloracle-java8-installer#安裝oraclejdk
到這就卡住了,不曉得是不是由於操作問題引起的還是哪些緣由,其實雖說仍然裝不上這個oraclejdk,運行java就提示“有default-jdk、openjdk等等,嘗試apt-getinstall安裝”,而且清單裡並沒有oraclejava8等相關字樣啊,於是在網上一翻搜救,忘了在哪裡見到的似乎說Ubuntu14之後就不支持ppa源安裝了,沒有驗證真偽,並且自覺得這個oraclejdk一直沒裝上。於是果斷捨棄用ppa來源安裝,改用自己下載安裝套件的方式。
上oracle官網,找到linux版本jdk,有個tar壓縮包和一個rpm後綴的,沒見過rpm的,就把它理解為須要自己編譯的含源碼的包,果斷選擇比較眼熟的tar壓縮包,300多兆,下載,真是誰用誰曉得,等了半天都沒下好,200m的專線啊,原先自帶的firefox下載天生龜速。之後,沒辦法折騰了一翻,把uget aria2給配置上了,並且期盼的鵜鶘般的速率並沒有帶來,最後弄明白可能的誘因就是uget aria2並沒有向迅雷那樣天生適宜我們國人用的命(迅雷會手動在網路上其他節點尋找資源,可能uget aria2是長城以外的基因linux修改使用者環境變數,所以無法帶來迅雷的體驗)。最後,就用宿主機下載,之後用U盤拷到虛機裡,還好Unix陣營能支援ntfs、fat32格式的儲存介質,相反windows就沒這麼友善了,windows本身並不支援ext2/ext3(還是我不曉得?)。
#好不容易,把oraclejdk的安裝包弄到手,開始安裝,這些方式的安裝非常簡單,解壓到指定目錄即可,主要就是要清楚配置的機制,上面講了一堆屁話,總算步入主題。
Unix陣營的檔案系統與windows的不同,windows的是c、d、e、f盤等等不同的分區,而Unix陣營的就是跟Android的差不多,應當是Android是基於linux核心的,主要的有/home、/bin、/boot、/etc、/lib、/root、/usr、/var等,經過了解後,我把oraclejdk解壓縮到了/usr/lib/jvm路徑下,主要是由於這個路徑下方還有Ubuntu起初自備的各類jdk版本,包括上面提及的openjdk,所以也把oraclejdk也放在此。接出來須要更改環境變量了,Unix陣營有好幾種配置環境變量的方式,這些說法雖然不嚴謹,由於ubuntu環境變量的原理與windows的沒多大差異,都是分系統變量與用戶變量,至於所說的幾種方式linux shell,不過是每種方式配置在不同的文件裡,而這種文件在不同階段會被加載,如/etc/profile是所有用戶的變量,會在每位次登陸或則每啟動一個bash實例時就會載入;~/.bashrc則是目前使用者變量,每次該使用者登入或則啟動一個bash實例時會載入;還有~/.bash_profile和~/.profile只在登陸時加載,差異是~/.bash_profile只提供給bash讀取,而~/.profile提供給各類shell讀取,如csh、tcsh、dash等。
這兒我把環境變數配置到了/etc/profile檔案上,Ubuntu可以用自帶的gedit編輯,其實也可以用vim和emacs,這種都相當於windows的記事本程式但比記事本功能強悍,用慣了記事本,多多少少會有點不習慣這種文字編輯器。
sudogedit/etc/profile#用gedit開啟profile檔
#文件末尾添加以下內容
exportJAVA_HOME=/usr/lib/jvm/jdk1.8.0_121#內所提及的oraclejdk解壓縮的路徑
exportJRE_HOME=${JAVA_HOME}/jre#javaruntimeenvironment
exportCLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib#classpath,這兒跟windows的一樣,必須加一個點
exportPATH=${JAVA_HOME}/bin:$PATH#path
##這兒雖然與windows相差無幾了,只是多個用:而不是;隔開
##重新讀取環境變數
source/etc/profile
假如是windows,jdk的安裝配置已然結束,dos運行java或則javac就不再是哪些「java不是內部命令」之類的,而Ubuntu的還沒結束,假如還沒配置默認jdk版本,在term上面輸java可能還是會提示你「有default-jdk、openjdk等等,試試apt-getinstall安裝」。還須要繼續配置,我把他理解成配置命令映射。
sudoupdate-alternatives--configjava#偵測系統是否早已有安裝過jdk
update-alternatives:錯誤:無java的候選項#輸出倘若沒安裝過jdk,系統是不能辨識java指令的,即沒配置過指令映射
建立java、javac、jar、javah、javap指令映射 sudoupdate-alternatives--install/usr/bin/javajava/usr/lib/jvm/jdk1.7.0_60/bin/java1 sudoupdate-alternatives--install/usr/bin/javacjavac/usr/lib/jvm/jdk1.7.0_60/bin/javac1sudoupdate-alternatives--install/usr/bin/jarjar/usr/lib/jvm/jdk1.7.0_60/bin/jar1
sudoupdate-alternatives--install/usr/bin/javahjavah/usr/lib/jvm/jdk1.7.0_60/bin/javah1
#sudoupdate-alternatives--install/usr/bin/javapjavap/usr/lib/jvm/jdk1.7.0_60/bin/javap1 sudoupdate-alternatives--install/usr/bin/javajava/usr/lib/jvm/jdk1.8.0_121/bin/java2 sudoupdate-alternatives--install/usr/bin/javacjavac/usr/lib/jvm/jdk1.8.0_121/bin/javac2 sudoupdate-alternatives--install/usr/bin/jarjar/usr/lib/jvm/jdk1.8.0_121/bin/jar2### ###sudoupdate-alternatives--install/usr/bin/javahjavah/usr/lib/jvm/jdk1.8.0_121/bin/javah2### ###sudoupdate-alternatives--install/usr/bin/javapjavap/usr/lib/jvm/jdk1.8.0_121/bin/javap2###以上創建各命令的映射用的是update-alternatives命令,--install表示安裝,install旁邊的路徑可以看作是windows裡的一個快捷方法,linux裡其實叫軟鏈接,中間的java就是我們命令列用的時侯的java,java旁邊的路徑是快捷方法實際聯接的源程序,這兒兩個版本的快捷方法都指向了同一個,只是實際的源程序不同,最後的數字是優先權,值越大,越優先linux指令vi,我們在term上面執行java-version指令,bash會依照優先權選擇回應的版本,可執行下列指令切換不同版本的回應來源程式
sudoupdate-alternatives--configjava
#有2個候選項可用來替換java(提供/usr/bin/java)。
選擇路徑優先狀態
----------------------------------------------- -------------
0/usr/lib/jvm/jdk1.8.0_121/bin/java301手動模式
1/usr/lib/jvm/java-8-openjdk-i386/jre/bin/java300自動模式
*2/usr/lib/jvm/jdk1.8.0_121/bin/java301自動模式
要維持目前值[*]請按,或則鍵入所選的編號:1
update-alternatives:使用/usr/lib/jvm/java-8-openjdk-i386/jre/bin/java來在自動模式中提供/usr/bin/java(java)
依照提示輸入不同編號即可切換,當然也可以透過變更環境變數的java_home實作切換
最後,還把python預設的編譯器換成了anaconda2的,這樣就不用自己麻煩地把各類科學估算包去下載出來
ty@Ubuntu:/$sudoupdate-alternatives--configpython
有3個候選項可用來替換python(提供/usr/bin/python)。
#選擇路徑優先狀態
----------------------------------------------- -------------
0/home/ty/anaconda2/bin/python2.7302手動模式
*1/home/ty/anaconda2/bin/python2.7302自動模式
2/usr/bin/python2.7301自動模式
3/usr/bin/python3.5300自動模式
要維持目前值[*]請按,或則鍵入所選的編號:1
在term裡運行python指令,可以直接importnumpy了
python
Python2.7.13|Anaconda4.3.0(32-bit)|(default,Dec202016,23:08:16)
[GCC4.4.720120313(RedHat4.4.7-1)]onlinux2
以上是apt-get與ppa源是什麼鬼?與apt-get來源的區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!