喔,看到這個標題千萬不要以為我要寫和王垠前輩一樣的內容啊,嘿嘿。不過在這裡還是獻上王垠前輩的那篇文章的連結吧:完全用 Linux 工作[1]。
首先介紹本篇文章產出的時間,現在是 2020/08/22。在三,四天之前,我其實並沒有寫這篇文章的打算,但是這三,四天以來,我一直在忙活從 Ubuntu18 換到 Debian10 Buster 的事情,沒有時間寫代碼,手確實有些癢了。你可能想像不到,我這個之前一直使用 Ubuntu 的人,只是切換到 Debian 就花這麼長時間,你可能以為我是在勸退各位同學,其實不是的,我只是想表達:我對 Linux 並不熟悉,這其中一部分原因是我使用的是對用戶較為友好的發行版 Ubuntu,另一部分原因是我仍然沒有那麼大的動力去學習 Linux,即使它一直作為我的日常使用。
這篇文章並不是吹噓或貶低 Windows 和 Linux 系統,而是想記錄一下我一直以來使用 Linux 作為日常學習的心得,以及這幾天再度折騰 Debian 以來的感觸。
為什麼我要從 Windows 切換到 Linux?Windows 是商業軟體,這使它具備易用的性質。Linux 是自由軟體,這使得它擁有開源的性質。
易用軟體通常帶來的是對用戶的友好度,以致於 Windows 發展至今,被許許多多的普通用戶所採用。自由軟體通常帶來的是其社區的發展,所以你現在可以在網上看到許多如 ask ubuntu 這樣的論壇。
我非常贊同《完全用 Linux 工作》中的一個觀點: UNIX 不是計算機專家的專利。
我對這句話的理解就是:即使你學習或工作的方向不是計算機,但你仍然可以去學習 Unix/Linux,如果你是計算機方向的同學,那麼,你就更應該去學習 Unix/Linux 了。
但這只是我從 Win 切換到 Linux 的一部分原因,另一個很重要的原因是我受夠了 Windows 的 「易用性」。這裡的易用性並不是說我排斥 Windows 的人性化,而是因為人性化給我帶來了很多學習上的困難。舉個很簡單的慄子:你在學習一項技術的時候,無論是否有面試造火箭的需要,你是否都會好奇想了解其原理和實現,即使你可能知道它很複雜。
為什麼你會好奇一個事物的源頭?
我個人認為的答案是:有趣的事情就在眼前,為什麼不去了解它呢?
而 Windows 只是有趣,但它並不在「眼前」。
我個人的體驗哈,不知道有沒有同學和我一樣的經歷,在很多時候,你的 Windows 可能會出現一些莫名奇妙的問題,但你卻不知道如何解決它,你只能求助搜尋引擎,當你解決完問題後,你不會想要去了解為什麼會發生這種問題,因為 Windows 太龐大了。
就比如: 我現在安裝了 Git,使用起來沒有任何問題。但等到過一段時間後,Git 莫名奇妙的不能使用了,明明你啥都沒幹。更甚之,有一些流氓問題或流氓軟體不能被解決和被屏蔽。
問題出現了,總得要解決吧,所以此時你開始在網際網路上查詢相關問題的解決方法,如果你的運氣好,那麼有人可能遇到過和你出現相同的問題,你也因此可能會得到答案。不過一般的答案只是教你怎麼解決的,如打開註冊表,添加或刪除某個 key,你不會想要知道為什麼做,因為對於初學者來說,當你看到註冊表那麼多的內容時,你只想著不出錯就行了,哪還有心思去學習這玩意啊。如果你的運氣不好,且並沒有更換系統的打算,那麼你可能會將就著使用,但此時,你的心裡可能已經衍生了對 Windows 的厭煩情緒。
我對流氓軟體的定義是:當你想讓一個軟體如你的想法停止運行或停止彈出廣告的時候,這個軟體不能或不能做的很好的達到你的要求時,這就是一個流氓軟體。你也許會說,每個人都有不同的要求,軟體怎麼可能達到每個人的標準呢?但我指的是停止和停止彈出廣告等這樣最基本的訴求,如果一個軟體連最基本的訴求都實現不了,又何必再使用它呢?
綜上所述,我從 Window 切換到 Linux 的最主要的原因有:學習和自由。
是的,你不得不承認 Linux 是你學習計算機的非常好的環境,與 C/C++天然的集成,比你在 Windows 上冷冰冰的安裝一個 IDE 就開始敲起代碼來,顯得多了那麼一點感覺。
還有一點,可能有的同學和我一樣,剛接觸 Linux 的時候,是在 Windows 上安裝一個虛擬機環境或使用 Docker 來進行學習。不可否認,這確實是在 Windows 上學習 Linux 的主要途徑了,但是你有沒有感覺到,你在採取這種方式學習的時候,對 Linux 始終有種陌生感,似乎我只是在為了學習而學習。
產生這種想法的主要原因就是你沒有融入到 Linux 環境之中,當你融入到 Linux 環境之中時,你不再只是需要學習那些操作命令,你會不可避免的遇到某個你從來沒有接觸過的問題,這個問題不是你在 Windows 上「丟失圖標」的那種煩人問題,而可能是令你有些害怕的因為 Nvidia 的驅動而黑屏的問題。你也會在網際網路上查詢為什麼會出現這種問題,但你得到的並不是「修改註冊表」這種答案,而是會學習到:為什麼 Nvidia 在 Linux 上會出現這種問題?我怎麼做才能解決驅動問題?其他驅動是否也有類似 Nvidia 這種問題?當你解決問題後,你的電腦開始正常工作了,你便開始使用它作為你的日常使用...
關於使用 Linux 學習的原因的最後一點是我認為自己不夠慎獨,不夠克制。 當我使用 Windows 的時候,並不能完全克制住自己接觸那些新鮮遊戲的念頭,我玩起遊戲來,通常會連續很長時間,可能是一天-_-。不過我並不是說 Linux 上沒有遊戲,相反,Linux 是對很多遊戲的支持是很好的,你可以玩到很多遊戲,但你是否會因為使用 Linux 對遊戲不再那麼執著,至少我是如此了。這一點可以歸結為「使用 Linux 對戒遊戲有幫助吧」 ,哈哈。
再談談自由:
我對自由的理解是:軟體在你的掌控之中,你可以了解它的每一部分,你可以去到你想到達的地方,不受任何限制,這隻取決於你願不願意。
來看看基本的 Linux 目錄吧:
Linux目錄這些目錄你可能有很多都不認識,但沒關係,因為這就是 Linux 系統(大部分)所有的目錄了,你稍微了解下,就知道這些目錄裡放的是什麼文件了。
這也是我個人的體驗而已,總之,Linux 的自由是一種開源精神,比我描述的可大的多。至於 Windows,我到現在連 C 盤的目錄放了些什麼都不太熟悉,但我並不是在貶低 Windows,因為這就是 Windows 易用性的代價,相應的,Linux 作為自由軟體,它也有很多缺點。
Linux 作為日常使用的缺點硬體驅動問題硬體驅動問題一般是在安裝 Linux 時會出現的問題,根據個人電腦配置的不同,你的電腦的硬體驅動可能與要安裝的 Linux 發行版不兼容,導致系統出現相應的問題。我這幾天對驅動問題最深刻的體會就明白了為啥 Linus 大神會吐槽: 「Nvidia Fuck You」。很多驅動廠商對 Linux 系統是閉源的,你可以下載這些廠商的驅動,但是能不能用,或者用起來有什麼毛病都得你自己買單。
隨著 Linux 開始在普通用戶中變得流行起來,我相信今後 Linux 的生態會發展的越來越好,且現在很多 Linux 發行版對各種硬體的兼容性也越來越好,就以我之前使用的 Ubuntu18 來說,Nvidia,Wifi,藍牙等驅動使用都是沒啥問題的。我現在使用的 Debian10 Buster 對 Nvidia 的支持可能還不是那麼好,使用起來總有一些小毛病,不過無傷大雅,其實沒毛病我還有點不適應,不是說 Debian 是 Ubuntu 的爸爸嗎,哈哈。
軟體問題不得不承認的一點是 Linux 的軟體生態確實沒有 Windows 那麼豐富,你在考慮切換系統之前,必須先調查清楚 Linux 上是否有你必需的軟體,你所需的軟體是否支持跨平臺或者是否有可替代的應用。我個人對軟體要求較為簡單,大部分都是生產力工具,其他的應用如娛樂軟體之類的都可以使用網頁版作為替代。如果你在 Linux 系統上想嘗試遊戲的話,我認為也是 OK 的,因為我也嘗試過 Linux Dota2 ,體驗非常好(不是廣告-_-)。不過大多數國內遊戲廠商對 Linux 的支持都是很差的,所以如果過不了這道坎,也不要切換系統了。
軟體問題其實可以分為 2 部分看待,一部分就是剛剛介紹過的生態問題,另一部分就是當你在使用某些軟體的時候,總會出現某些小 Bug。
就以 Fcitx 來說,Fcitx 是一款通用的 Linux 輸入法框架,被稱為小企鵝輸入法,很多輸入法都是在 Fcitx 之上開發的,如搜狗,Googlepinyin,Sunpinyin 等。使用過 Fcitx 的同學可能會遇到這種問題:當你在使用 Fcitx 在某些軟體上打字時,候選框並不會跟隨你光標的位置,而是總會固定在某一個位置,並且你無法改變,這個問題是我目前見過的最大 Bug。不過這個 Bug 只在部分軟體上有,在 Chrome,Typora 上都沒有這個問題,這讓我懷疑是軟體的國際化問題,而非 Fcitx 問題。
所以第二個部分總結起來就是某些軟體可能會出現某些未知的 Bug,你得尋求解決的辦法,或者忍耐使用,使用 Linux 也是得犧牲一些代價的。
你真的需要完全使用 Linux 嗎?說到這裡,其實我想借用知乎某位前輩的話來表達一下我的真實想法: 「Linux 最好的地方在與開放自由,最大的毛病也是在這裡。普通人沒有能力去選擇,也沒有時間做選擇。透明就一定好麼?也有很多人喜歡被安排啊!「 (知乎 - 漢卿[2])
就像我開頭說過的: 「我對 Linux 並不熟悉,這其中一部分原因是我使用的是對用戶較為友好的發行版 Ubuntu,另一部分原因是我仍然沒有那麼大的動力去學習 Linux,即使它一直作為我的日常使用。」
我完全使用 Linux 是為了學習和自由,我確實在 Linux 上感受到了自由,且學到了很多東西,但我卻一直沉溺在這種使用 Linux 帶來的滿足感之中,並不能真正理解 Linux 給我們帶來的到底是什麼。
這次從 Ubuntu 切換到 Debian 的原因是我想嘗試換個新的環境,但是當我花了 3,4 天后,我明白了:我只是呆在一個地方久了,想換個新地方而已,但老地方不一定壞,因為我都沒怎麼了解過這個老地方,就像當初我從 Windows 換到 Linux 那樣,我都沒有深入的了解過 Windows 就換了,那一段時間我還抱怨 Windows 的各種缺點,現在看來,非常可笑。
結尾一文把想說的話幾乎都給說了,個人文筆有限,且本文主觀意識太強,如果覺得本文不符合您的胃口,就當看個笑話吧。
我使用 Debian/Ubuntu 時遇到的問題以下內容是我在 Debian10 Buster 下遇到的問題以及相關解決辦法, 使用 Ubuntu 和 Debian 其他版本的同學也可借鑑。
PS:歡迎各位同學在此處寫下你遇到的問題和解決辦法。
IDEA 編輯 Markdown 預渲染問題這個問題花了我很長時間。
當我安裝 IDEA 後,使用它編輯 markdown 文件的時候,就出現了如下圖所示的情況:
Debian10下IDEA的Markdown預渲染問題你可以看到右邊渲染的畫面明顯有問題。剛開始的時候我一度懷疑是 IDEA 版本的問題, 於是我又安裝 IDEA 其他版本,但也沒有任何作用,這時我懷疑是顯卡的原因:
我的電腦配置可以看到使用的是 Intel 的核顯,於是當我查詢相關資料,使用腳本將核顯換為了獨顯,這裡沒留截圖,當你換到獨顯後, 圖形會顯示獨顯的配置,使用 nvidia-smi 命令可以查看獨顯使用狀態。於是我滿懷期待的打開 IDEA,但還是無濟於事。當我以為真的是 Debian 的 Bug 的時候, 我又發現 Bumblebee 可以管理顯卡,何不一試?於是我安裝 Bumblebee 後,使用 optirun 命令啟動 IDEA,沒想到啊, 還真是可以:
我真的就很奇怪,同樣是使用了獨顯,為什麼 optirun 啟動就可以正常顯示。於是我後來又查詢 optirun 是否開啟了 gpu 加速,但很可惜,我並沒有得到相關答案,不過這讓我確定了這個問題出現在 顯卡上。如果有知道原因的同學,敬請告之,感激不盡。
wifi 適配器找不到我猜(不確定)這個問題應該發生在大多數使用聯想筆記本的同學的電腦上,不止 Debian,且 Ubuntu 也有這個問題。當安裝完系統後,我們打開設置會發現 wifi 一欄顯示 「wifi 適配器找不到」 此類的錯誤信息。這個問題的大概原因是:無線網絡適配器被阻塞了,需要手動將電腦上的 wifi 開關打開,而在我的筆記本上並 wifi 開關, 所以可以猜測是聯想網絡驅動的問題。可以使用 rfkill list all 命令查詢你的 wlan 是否被阻塞了,沒有此命令的同學可以使用
sudo apt-get install rfkill安裝,當 wlan 顯示 Hard blocked: true , 就證明你的無線驅動被阻塞了。解決辦法是將阻塞無限驅動的那個模塊從內核中移除掉,直接在 /etc/modprobe.d 目錄下編輯 blacklist.conf 文件,其內容為:
blacklist ideapad_laptop文件名不一定要與我的一致,但是要以.conf 結尾。你可以將 modprobe.d 目錄下的文件理解為黑名單文件, 當 Linux 啟動時就不會加載 conf 文件指定的模塊, 這裡的 ideapad_laptop 就是我們需要移除的那個無線模塊。
後遺症:當我們移除 ideapadlaptop 模塊後,以後開機的時候,有時會出現 藍牙適配器找不到的情況,之前在 Ubuntu 上卻並未發現這種問題, 看來 Debian 在驅動方面沒有 Ubuntu 做的好,不過這也是可以理解的, 而且大多數時候還是可以正常使用的--。
XMind 安裝XMind 是使用 Java 編寫的,依賴於 Openjdk8。所以在 Linux 上使用 XMind, 首先需要有 Openjdk8 的環境。其次啟動的時候需要編寫 Shell 腳本來啟動(不是唯一辦法,但卻是非常簡單的辦法),沒想到吧,我也沒想到, 這也是我趟過很多坑才玩出來的。
首先我們需要準備一張 XMind 的軟體啟動圖片:XMind.png, 這個我已經放到目錄[3] 下了,需要的同學請自取。
其次我們進入 XMind_amd64 目錄下,32 位系統的同學進入 XMind_i386 目錄, 我們創建並編輯 start.sh 腳本,其內容為:
#!/bin/bash
cd /home/guang19/SDK/xmind/XMind_amd64 (這個路徑為你的XMind腳本的路徑)
./XMind這個腳本的內容很簡單吧,當啟動腳本的時候,進入目錄,直接啟動 XMind。
腳本寫完後需要讓它能夠被執行,使用
chmod +x start.sh命令讓 start.sh 可以被執行。
此時你可以嘗試執行 ./start.sh 命令來啟動 XMind,啟動成功的話, 就已經完成了 99%了,如果啟動不成功,可以再檢測下前面的步驟是否有誤。
如果以後你只想用 Shell 啟動 XMind 的話,那麼到此也就為止了,連上面所說的圖片都不需要了。如果你想更方便的啟動的話,那麼就需要創建桌面文件啟動。在 Debian/Ubuntu 下,你所看到的桌面文件,都存儲在 /usr/share/applications 目錄下面(也有的在.local/share/applications 目錄下),這個目錄下文件全是以.desktop 結尾。我們現在就需要在這個目錄下創建 xmind.desktop 文件(名字可以不叫 xmind)。
其內容為:
[Desktop Entry]
Encoding=UTF-8
Name=XMind
Type=Application
Exec=sh /home/guang19/SDK/xmind/XMind_amd64/start.sh
Icon=/home/guang19/SDK/xmind/XMind.png我們暫時只需要理解 Icon 和 Exec 屬性。Icon 就是你在桌面上看到的應用的圖標,把 Icon 的路徑改為你 XMind.png 的路徑就行了。再看 Exec 屬性,當我們在桌面上點擊 XMind 的圖標的時候,就會執行 Exec 對應的命令或腳本, 我們把 Exec 改為 start.sh 文件的路徑就行了,別掉了 sh 命令,因為 start.sh 是腳本, 需要 sh 命令啟動。
以上步驟完成,保存 desktop 文件後,你就可以在桌面上看到 XMind 應用了。
Fcitx 候選框的定位問題這個問題貼一張我處境的截圖就明白了:
Fcitx候選框定位問題可以看到我的光標定位在第 207 行,但是我輸入法的候選框停留在 IDEA 的左下角。為什麼我要說停留在 IDEA 的左下角?因為就目前我的使用而言,這個問題只在 IDEA 下存在, 不僅是 Debian,Ubuntu 也存在這種問題,我個人認為這應該是 IDEA 的問題, 查到的相關文章大部分都是說 Swing 的問題,看來這個問題還真是比較困難了。如果有同學知道解決辦法,還請不吝分享,非常感謝。
參考資料[1]完全用 Linux 工作: https://www.douban.com/group/topic/12121637/
[2]知乎 - 漢卿: https://www.zhihu.com/question/309704636
[3]目錄: https://github.com/guang19/framework-learning/tree/dev/img/linux
*版權聲明:轉載文章和圖片均來自公開網絡,版權歸作者本人所有,推送文章除非無法確認,我們都會註明作者和來源。如果出處有誤或侵犯到原作者權益,請與我們聯繫刪除或授權事宜。