寫在使用 Linux 工作一年後
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 配置 根據系統版本啟用 RPMFusion 自由(free)和非自由(nonfree)的軟件源配置
- 啟用 FDZH 源
參考 -> 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:調配字體渲染的,如果看著字體不舒服,就靠他了
- Fedy:fedora 調教工具,附帶了一些調教腳本以及一些應用商店沒有的應用的安裝渠道
存活指引
安裝配置結束後,接下來介紹下 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 默認的文本編輯器,好用,快速,穩定,但是插件少很多,無法作為主力開發擔當
- 小程序開發工具:https://github.com/cytle/wechat_web_devtools開發小程序必備
有了上面的一堆開發工具相信是可以從容面對日常開發工作了,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 的可執行文件,雙擊他也能運行,那麽我們起動器的目標就是打開這個可執行文件
在 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/[email protected]
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
- 公眾號主要發一些開發相關的技術文章
- 談談自己對技術的理解,經驗
- 也許會談談人生的感悟
- 本人不是很高產,但是力求保證質量和原創
寫在使用 Linux 工作一年後