寫在使用 Linux 工作一年後

RuijunLi發表於2018-10-25

start

去年公司空了幾臺桌上型電腦,當時看了下似乎配置比我用的乞丐版 air 略高一些,而且除了 ssd 以外還有一個 1T 的大硬碟,加上後面可能會有一段時間不做 iOS 了,那就不需要 macOS 了,於是順了一臺過來桌上用來打算做開發機,當時可選的方案有 Windows 10 和 Linux,思考了下機器上 60G 的 ssd 估計是不能裝那麼多東西的,而 Windows 要把好多東西裝到 D 盤,其實用起來好麻煩,感覺自己不太會用,於是選擇了 Linux

本文寫在我使用 Linux 作為開發環境後的三個月,也就是主力開發環境為純 Linux 環境,偶爾使用虛擬機器做配合,Linux 是天生為喜歡折騰的人準備的,當然也是為了知道自己想要做什麼和想要什麼的人準備的,所以本文的目的是為了以 Linux 作為生產開發環境為目標的人準備的,如果只有想要裝個 Linux 的想法,或者只有想要試試玩玩的想法,個人建議使用自己熟悉的環境(Windows 或者 macOS)搭配虛擬機器從完整配置一個 ArchLinux 開始學習

本文主要是為了將要以 Linux 作為自己主力開發環境的同學準備的一些意見建議,以及自己的踩坑經歷,如果你想要以 Linux 作為主力開發環境可以把本文作為開始,但是本文絕對不是結束,linux 的折騰是無止境的

好處和壞處

  • 好處
    • 開箱即用的開發環境,和 macOS 一樣,Linxu 幾乎為所有主流開發平臺、語言提供了開箱即用的環境
    • 大量開箱即用的開源工具,後來我喜歡上了 Kate(KDE 上提供的一個文字編輯器,雖然外掛少,但是本身功能完善)
    • 很少讓人分心的東西(沒有 QQ,基本沒有遊戲)
    • 超好用的終端模擬器
    • 很多好用的開源工具,有些甚至帶到了 mac 上繼續使用
    • 高度可配置,只要你有心思,外表想做成什麼樣都可以
    • 折騰
    • 折騰
    • 折騰
  • 壞處
    • 折騰
    • 折騰
    • 折騰
    • 沒有 QQ,只能虛擬機器或者 wine,smart qq 訊息或者群多,就二了
    • 微信,只有 web 微信,或者經過 electronic 包裝的 Electronic-Wechat 或者非官方的 wewechat,但是一直用 web 版本微信,容易被封號,前幾天我被封號了,使用者反饋了,理所當然的未果,用了兩週虛擬機器,莫名的解封了
    • 高度可配置,雙刃劍,配置的後果,殺敵1000,起碼自損300,用了一些暗色系主題。。。結果有些文字,button 看不清了,wps 的表格居然變黑了(暫時懶得解,用 libreoffice 其實挺順暢的,之前在 mac 上這東西可卡了)

Linux 中折騰,既是好處也是壞處,好的地方是讓你知道盒子裡到底是哪個齒輪壞了,壞的地方是找來找去,發現盒子裡齒輪沒壞,只是每個齒輪都有那麼一丟丟不正常,所以我一直覺得開源那幫人其實是非常不靠譜的,如果沒有需求,真心不需要折騰 Linux,你看得沒錯,我在勸退

開始折騰

上面介紹完了,有興趣的同學繼續往下看吧,接下來我們開始正題吧,Linux 之路折騰無限,但是作為開發環境,我們需要在折騰和穩定之間找到平衡點

折騰的背景

下面是我在 Linux 世界探索(碰壁)以及對我使用 Linxu 有幫助的一些經驗,希望對大家有用

  • 很多的 Windows 安裝經驗和 Linux 安裝經驗,多體驗不同的發行版,找到合適自己使用的,以前電腦效能很差跑虛擬機器很費勁,對於現在電腦來說,有虛擬機器會很方便你的學習
  • 通過配置一個完整的 ArchLinux 環境,學習整個 Linux 系統的配置,啟動,桌面環境相關的所有基礎知識
  • 4年的 macOS 使用經驗,大家別說,從 macOS 遷移到 Linux 除了開發者們給我們準備的各色精緻的 mac 應用以外,整個遷移過程非常順滑
  • 知道自己想要什麼
  • 遇到問題能自己解決

上面幾點,是我這次能成功把工作環境遷移到 Linux 的一個基本保障,接下來我在下面列下我折騰了哪些東西,讓我的工作絲般順滑

發行版選擇

作為生產開發環境不同於實驗研究環境,最主要是需要穩定能夠持續支援工作,至少不經常崩潰或者每過幾個月就需要重灌系統。我曾經在大學時候和工作以後,體驗過很多主流的發行版(這裡說主流就是真的主流主要包括,Debina,Fedora,Ubuntu,openSuse,ArchLinux),最終選擇了 Fedora 27(當時是測試版,但是我相信自己有坑能踩過並且正式版還有一個月就釋出了,不太信自己的同學可以在選擇的時候選擇正式版,畢竟是用於支援生產開發的環境,最主要是穩如老狗)

  • 排除的理由
    • Debian:排除,裝的次數太少了,熟悉程度不高
    • Ubuntu:安裝了兩次,每次都有奇奇怪怪的問題(可能跟我安裝的是非 LTS 版本有關)
    • openSusu:上大學的時候用的最多的就是他,但是那時候總有些奇奇怪怪的問題沒辦法解決
    • ArchLinux:太過於折騰,工作以後裝了幾次,從安裝到桌面環境,一般需要一到兩天的時間,個人感覺堅守 Arch 的簡單哲學 pacman 其實沒有 dnf 那麼完善,但是如果初學 linux,那麼這個是首選
  • 選擇的理由
    • 我第一次折騰 Linux 的時候,嘗試了 RedHat 9,之後嘗試了 Fedora Core(那時候 Fedora 的原名),選擇 Fedora 有種熟悉的配方的感覺
    • 伺服器大多數用 CentOS,依然是熟悉的配方的感覺,將來部署應用也會有熟悉的味道
    • 知呼看介紹,Fedora 是 Linux 的 Cutting-Edge,想要體驗最新最棒的 Linux 就靠他了
    • 兩次 Ubuntu 的安裝失敗。。。讓我懷疑這最廣的發行版,不是為我準備的(我真不是黑 Ubuntu,在想要切換的一開始就想到他了,也動手裝上了)

桌面環境的選擇

Linux 上的開放性,所以,我們在不喜歡當前用著的桌面環境的時候,可以換一個。。。這似乎是個很美好的事情。。。但是很遺憾,開源社群再次 show 出了他們的不靠譜

最終我選擇了 GNOME on Xorg,原因如下:

  • KDE 依然是炫技的平臺,高階大氣上檔次,但是各種 bug 不斷
  • GNOME on Wayland,不能用 shutter 截圖,偶爾整個 GNOME 掛,Wayland 離穩定使用還有一些距離
  • 雖然 GNOME 的臃腫是大家一直詬病的問題,但是我只是需要一個常用的工作環境,並不想花一兩天去折騰,而 GNOME 確實符合這個需求
  • 感覺 GNOME 的檔案管理器跟 Finder 很類似,稍微好用一些了

為什麼不直接全盤命令列?

  • 我雖然熟悉以及喜愛命令列,但是我倡導合適的地方使用合適的工具,我們主要的目的是工作,而不是炫技,並不是所有人都能只用命令列完成所有工作
  • 相比每次找到專案路徑,敲入 push,pull 我還是喜歡用點下滑鼠就能 push pull 程式碼還能分組庫的 GitEye
  • VSCode – 我的主力開發工具,並沒有命令列版
  • 圖形介面下,有 Tilix 這樣方便的神器,可以類似 iTerm 一樣分割視窗各種,也有 Hyper 這樣能隨意擴充套件的現代命令列工具
  • 多視窗管理,對,我還要聊天呢

這裡可以說下,個人建議使用 KDE 或者 GNOME,因為我的目的是穩定,當然大家也可以嘗試其他的桌面環境,畢竟 linux 最大的優勢就是開放

安裝

安裝指引

  • 需要材料
    • 網路
    • fedora live 映象,可以到 Fedora 官網 下載
    • 一個 4G 的優盤(live 映象大約 1.7G ~ 2G 左右,大一點沒啥壞處)
    • Etcher 用於將 live 映象寫入優盤中

上面就是安裝 fedora 需要的所有材料了

  • 安裝步驟
    • 使用 Etcher 將 fedora 的映象寫入到優盤中
    • 重啟電腦,在 BIOS 中設定通過優盤啟動
    • 啟動後會進入到 fedora 的 live 介面中,在 live 介面中找到安裝程式並開啟
    • 根據提示選擇安裝位置,語言,市區等各種東西,之後點選開始安裝,這樣就開始了安裝之旅

因為安裝的時候我沒有截圖,這裡用虛擬機器開啟了映象給大家看下安裝介面,等待半小時左右,就可以安裝完成了,安裝完成後重啟就會進入到新的系統了,我們就進入純 linxu 的世界了

系統調配

安裝完成後,這只是一個剛好可以用,並附帶了 GNOME 所附帶的大部分應用程式的系統,那麼離我們可以使用,其實還是有距離的,接下來我會介紹我對系統的初步調配

將消耗空間的東西連結到磁碟上去

我的初衷就是為了想要一個啟動快速的系統,並且能安裝大量應用,所以第一步,我將會把很多消耗磁碟空間的路徑連結到 1T 的機械硬碟上(哎呀,好長,下面統一叫 HDD 了),如果這一步失敗了,那麼也不會有剩下的步驟了,連結後給我的感覺是,整體系統速度並沒有變慢很多,不過在開啟大應用(比如 Jetbrain 家的大型 Java 應用)時會有一些卡頓,但是開啟後,整個使用體驗是很流暢的,不過也因為本機記憶體不是很大(8G)所以應用開多了還是會卡,特別開了虛擬機器以及某些大型 Java 應用的時候很容易出現卡頓的現象

下面是我電腦上磁碟使用的截圖,data 1 - 3 就是 HDD(切勿嘲笑別人取名無力),這裡沒有顯示 home 的分割槽,我的 home 分割槽大約是 20G,root 分割槽大約是 40G(當然還有 boot 啊之類的分割槽,這個在選擇自動分割槽的時候,安裝程式會幫你搞定)

磁碟截圖

  • data1 作為 home 的延伸,主要用來存放文件,開發中的專案等
  • data2 用作虛擬機器儲存空間,單獨分割槽,方便管理
  • data3 就是這一環節的主角了,大部分的系統應用都連結到了這裡

不過我並不是一次性把所有的路徑連結好的,而是在用的過程中發現 SSD 空間不足的時候,找到一些消耗空間大的路徑,把他連結到 HDD 上,這裡是我連結的一部分路徑,供大家參考下:

  • ~/.icons~/.themes:主題和圖示路徑,連結這個主要是裝主題方便
  • ~/.local:當前使用者的應用資料,連結這個幫你解決大部分的空間問題
  • ~/.var:當前使用者的 var 路徑,一部分(主要是 flatpak 打包的)應用會把資料寫到這個路徑
  • /opt:部分應用會安裝到這個路徑
  • /var/lib/flatpak:flatpak 的應用會安裝到這裡
  • /var/log:日誌

把這些路徑連結後,相信磁碟空間會空閒出很多了,這樣小 SSD 的電腦也能愉快玩耍了

另外,除了上面的路徑外,還有一些比較特殊的路徑也會佔用大量空間,這裡也列舉下

  • ~/.stack:學 haskell 的時候,stack 是 haskell 的包管理器,通過 stack 安裝的包會在這裡
  • ~/.nixnote:nixnote 是 linux 下的 evernote 實現,他的資料會放這裡
  • /usr/share/dotnet:.net 相關的東西,老佔空間了
  • /usr/lib64/ghc-x.x.x:haskell 的編譯器,老佔空間了

除了這些如果大家在使用過程中發現某個路徑,或者某個應用特別佔空間,也可以把他們連結到 HDD 上,節約 SSD 上寶貴的空間

安裝大概率用得到的包

參考 -> RPMFusion 配置 根據系統版本啟用 RPMFusion 自由(free)和非自由(nonfree)的軟體源配置

參考 -> FDZH 配置 根據系統啟用 FDZH 中的源,同時 FDZH 的 wiki 中也包含了一些常用軟體的安裝配置,大家可以參考下

  • 重新整理下 dnf 源

第一次安裝完成,或是新增了 RPMFusion 和 FDZH 的源後,需要重新整理一下 dnf 的源,這樣我們就能安裝到新新增的軟體包了

sudo dnf update --refresh

複製程式碼
  • 安裝 Development Tools 軟體組

Development Tools 包含了開發使用到的各種工具,所以我們首先要把他裝上

sudo dnf group install "KDE Plasma Workspaces"

複製程式碼
  • 安裝 KDE

這一步是可選的,如果喜歡 KDE 的,那麼可以輸入下面的命令安裝

sudo dnf group install "KDE Plasma Workspaces"

複製程式碼
  • 看看還需要什麼

使用 Linux 作為主力環境最方便的地方就是我們需要什麼那麼就安裝什麼,可以使用下面的命令看下還有些什麼軟體組可以安裝使用

dnf group list

複製程式碼

配置工具系統

  • Font Tweaks Tool:調配字型渲染的,如果看著字型不舒服,就靠他了

Font Tweaks Tool

  • Fedy:fedora 調教工具,附帶了一些調教指令碼以及一些應用商店沒有的應用的安裝渠道

Fedy

存活指引

安裝配置結束後,接下來介紹下 linux 的日常存活指引

開發存活指引

本文介紹是以主力使用 Linux 開發為主,所以優先介紹開發使用到的工具,其實大部分工具都是開源或是跨平臺的,在其他系統中我們也能用到

  • Visual Studio Code:微軟搞的開原始碼編輯器,個人認為最好的編輯器之一,曾經我覺得我不會放棄 vim 的,後來真香
  • CherryTree:程式碼筆記上品,程式碼貼大集合,也是跨平臺的(Mac 上沒有獨立包,最近嘗試達了一個,但是始終不是那麼順利)
  • Tilix:媲美 iTerm 的終端模擬器
  • GitEye:基於 eclips 平臺開發的 git 工具
  • Zeal:linux 上的 Dash,文件庫相容 Dash 的,並且也可以直接下載 Dash 的文件
  • Jetbrains:全家桶,不得不說 Jetbrains 為我們提供了最好用的 IDE 系列,要說缺點的話,那就一個字 —— 貴!
  • StarUML:畫 UML 的好工具,跨平臺
  • neovim:作為 vim 黨,這個必推,雖然現在主力已經是 VSCode 了,但是我也要 VSCode 摻著 vim 外掛才能真香
  • MySQL Workbench:MySQL 官方提供的資料庫工具,只用 MySQL 沒有比他好的
  • DataGrip:多資料庫連結工具,貴!
  • GitKraken:相比 GitEye 是一個更好看的 git 客戶端,不過只能免費用於開源專案
  • Kate:KDE 預設的文字編輯器,好用,快速,穩定,但是外掛少很多,無法作為主力開發擔當
  • 小程式開發工具:github.com/cytle/wecha…開發小程式必備

有了上面的一堆開發工具相信是可以從容面對日常開發工作了,linux 上除了 DataGrip,Navicat 之類的商業軟體以外確實沒找到很好用的多資料庫連結工具,這點算是一個遺憾了,大家要是有推薦的可以聯絡我

虛擬機器建議

如果虛擬系統是 linux 系並且不使用 GUI,建議直接使用系統自帶的 qemu 或是 kvm,另外不要使用 GNOME 帶的 Boxes,Boxes 是為了簡化虛擬機器操作而開發的應用,但是實際上還不是很成熟,建議安裝 Virtual Machine Manager 作為虛擬機器管理工具,雖然 Virtual Machine Manager 上手會比 Boxes 稍微麻煩一些,但是可配置性要好很多,並且 qemu 和 kvm 對共享檔案系統支援要好一些,據說檔案讀寫速度接近原生

並且 qemu 是系統服務,Virtual Machine Manager 只是一個管理介面,在啟動好虛擬機器後,我們可以直接 ssh 上虛擬機器即可操作,無需繼續開著管理介面,並且在系統 UI 崩潰的時候,虛擬機器服務並不會崩潰,也不會影響我們執行在虛擬機器中的程式

如果虛擬系統是 Windows 系或是使用 GUI 的 linux,那麼建議使用 Virtual Box 或 VMWare 商業軟體,qemu 在圖形化作業系統上始終並不是很好用,經常有滑鼠位移,速度慢之類的問題

日常存活指引

日常存活主要包括了聊天和 Office 辦公系列,以及筆記之類的日常應用

  • ElectronWechat:微信聊天必備
  • WPS:Linux 上唯一能叫做 Office 的工具
  • LibreOffice:Linux 上第二的 Office 工具,這也是對多編碼 csv 檔案支援最好的工具,就算是 MS 家的 Excel 也沒這個對多編碼 csv 支援好用,如果需要從資料庫導資料做報表之類的,建議一定裝一個
  • Nextcloud:如果你有一個私人的伺服器,那麼建議部署一個 ownCloud 或是 Nextcloud 作為檔案共享使用,同步檔案絲般順滑,同時還能提供部分應用使用
  • QOwnNote:比較好的跨平臺筆記軟體,搭配 Nextcloud 使用完美實現筆記同步
  • Typora:好用跨平臺 markdown 寫作工具,可以將 markdown 輸出為 pdf 和 html 頁面,本文就是用 Typora 和 Kate 共同完成寫作
  • Firefox:忘了 chrome 吧,firefox 才是最好用的,哈哈哈哈哈
  • CopyQ:好用的剪貼簿管理工具

為沒有程式起動器的應用新增程式起動器

程式起動器我們可以理解是 Windows 裡面的快捷方式,linux 中很多應用最主要就是執行二進位制檔案,但是有些應用卻沒有提供一個起動器(在 Launcher 中),這讓我們每次開啟的時候還需源通過命令列去執行,當然還有的應用更過分比如用 python 寫的,還需要用 python 去找到那個應用的指令碼去執行,既然我們都進入圖形介面了,那不能倒退啊,這裡說下怎麼建立起動器

這裡我用 Typora 來舉例,Typora 並沒有提供 rpm 包裝,也沒有在 dnf 的軟體源中,所以 Typora 在下載後就是一個樸實無奇的壓縮包,解壓後,就是一堆檔案,看下圖我圈起來那個檔案,那就是 Typora 的可執行檔案,雙擊他也能執行,那麼我們起動器的目標就是開啟這個可執行檔案

Typora

在 linux 中,每一個起動器都對應一個 desktop 檔案,所有的 desktop 檔案都在 /usr/local/share/applications 路徑下,使用者自己的起動器,也可以放到 ~/.local/share/applications 路徑下,接下來我們來看看起動器的內容,起動器其實就是一個文字檔案,告訴系統如何啟動這個應用

Name=Typora
Comment=Markdown Writer
Exec=/home/noark9/data1/Applications/Typora/current/Typora
Icon=/home/noark9/data1/Applications/Typora/current/resources/app/asserts/icon/icon_512x512@2x.png
StartupWMClass=Typora
Terminal=false
Type=Application
Encoding=UTF-8
Categories=Productive;
Name[en_US]=Typora.desktop
複製程式碼

這裡就描述了 Typora 這個應用如何啟動,之後把這個檔案放到 /usr/local/share/applications 或是 ~/.local/share/applications 路徑下,這樣在應用程式中就能看到他了,在 /usr/local/share/applications 路徑下還有很多起動器,大家在自己寫的時候可以多多參考

讓心情愉悅的指引

心情愉悅啊,那就包括一些娛樂活動了

  • VLC:看電影的不二之選
  • Steam:其實支援 Linux 的遊戲還挺多的
  • OpenRA:紅警的開源實現,支援線上對戰,玩起來其實挺開心的
  • ioquake3:Quake3 的開源實現,玩起來炒愛心的
  • DosBox:DOS 模擬器,玩 DOS 遊戲專用,還可以裝個 Win 3.1 在裡面,方便管理檔案
  • dolphin:wii 模擬器,wii 遊戲走起

end

使用了 linux 一年以後,我發現我已經可以很好的在 linux 桌面下存活了,也能很好的完成我的工作,我並不推崇大家盲目的上 linux,畢竟這並不是一個想上就能上的系統,在使用過程中還是遇到了很多奇奇怪怪的問題,也有作死把桌面環境網路全搞掛最後自己恢復的時候,但是 linux 確實是一個能鍛鍊人的好系統,使用 linxu 能大大增強自己查詢資料的能力,解決問題的能力,以及獨立思考的能力

本來本文應該是今年年初的時候就會寫完了,所以這裡最早的標題是在使用 Linux 工作三個月後,直到年末了,我也開始用回 Mac 後才完成本文的撰寫,但是本文依然是完全在 linxu 下撰寫完成,並未使用到 Mac 做任何的輔助,中途由於我的失誤把 GNOME,KDE 等桌面環境解除安裝了,並且刪掉了網路卡驅動後重新配置了網路卡驅動和重新安裝桌面環境,導致部分我使用的部分應用已經沒有安裝在系統裡面了,這樣也讓我遺失了一些資料

大家也可以經常看看 Fedora Magazine ,我挺喜歡 Fedora Magazine 的,裡面經常有有趣的開源工具和 linux 使用經驗分享

最後歡迎大家訂閱我的微信公眾號 Little Code

Little Code

  • 公眾號主要發一些開發相關的技術文章
  • 談談自己對技術的理解,經驗
  • 也許會談談人生的感悟
  • 本人不是很高產,但是力求保證質量和原創寫在使用 Linux 工作一年後

相關文章