系統選擇 目前市面上主流的桌面操作系統在大多數人眼裡只有Windows和MacOS,那為什麼我沒選擇它們兩呢? 首先,不選MacOS的原因,就是太貴。當然這是我的原因不是蘋果的原因,我最早使用Linux寫代碼的時候是2018年,那時候剛畢業上班不久,根本買不起Mac(雖然現在也覺得有點貴)。 在沒有 ...
系統選擇
目前市面上主流的桌面操作系統在大多數人眼裡只有Windows和MacOS,那為什麼我沒選擇它們兩呢?
首先,不選MacOS的原因,就是太貴。當然這是我的原因不是蘋果的原因,我最早使用Linux寫代碼的時候是2018年,那時候剛畢業上班不久,根本買不起Mac(雖然現在也覺得有點貴)。
在沒有接觸Linux之前,我也是使用Winows的。眾所周知,其實Windows也是收費的,那時候用的基本是破解版本的Windows系統。雖然當時買筆記本電腦會預裝Windows系統,但是預裝的基本都是家庭版。依稀記得當時Windows家庭版無法開啟某些Windows功能(沒記錯的話當時是無法開啟Windows的虛擬化功能),所以就算我買了預裝Windows系統的筆記本電腦,依然還是需要自行重裝Windows專業版系統,那時候就是使用激活軟體破解Windows專業版。但是作為程式員,我個人是很反感破解軟體的,因為我不想以後我寫的軟體也被別人破解。然後在某些機緣巧合之下,我加入了一些Linux愛好者社區,慢慢開始接觸Linux桌面。
重新認識Linux
我第一次接觸Linux是大學的課程,那時候教學用的是Centos。那時候在我印象中Linux就是黑乎乎的命令行視窗,只能部署一些服務端的的程式,畢業以後從事Java後端開發,接觸的Linux也是服務端版本,所以我根本不知道Linux還有桌面環境!
直到一次偶然的機會,在B站刷到一位大佬自己整活的Linux桌面,相當個性化,讓我深受震撼。然後就開始根據視頻信息去搜索Linux桌面相關的知識,也因此加入了一些Linux社區,從此開始我的Linux桌面探險之旅。
Linux桌面
在開始介紹我的Linux探險之旅前,先簡單說一下Linux的組成,Linux的組成部分可以分為以下三個主要部分:
「Linux內核(Kernel)」: Linux內核是操作系統的核心,負責管理硬體資源,提供系統服務,以及允許軟體應用進行控制硬體的基礎。它是一個由Linus Torvalds在1991年首次發佈的開源軟體項目,至今仍在不斷的發展和更新中。GitHub - torvalds/linux: Linux kernel source tree。 「Linux發行版(Distributions)」: Linux發行版是基於Linux內核的操作系統,包括了內核以及一套完整的軟體和應用程式,如GNU工具集、桌面環境、辦公軟體等。每個發行版都可能有不同的包管理系統、預設桌面環境、預裝軟體、用戶界面以及獨特的安裝和配置工具。常見的Linux發行版包括Ubuntu、Fedora、Debian、CentOS、Arch Linux、Red Hat Enterprise Linux等。 「桌面環境(Desktop Environment, DE)」: 桌面環境是提供圖形用戶界面(GUI)的軟體集合,使得用戶可以通過圖形視窗和菜單進行交互,而不是僅通過命令行。桌面環境通常包括視窗管理器、圖標、工具欄、文件管理器、終端模擬器等組件。常見的桌面環境有GNOME、KDE Plasma、XFCE等。
Linux內核和發行版以及桌面環境的組合提供了所需的完整Linux桌面系統。用戶可以根據自己的需要選擇合適的發行版和桌面環境,以滿足個人偏好和特定用途。
這裡再順便提一下GNU和Linux的關係,可能大家經常會看到”GNU/Linux“這樣的辭彙。
GNU和Linux是兩個密切相關但各自獨立的概念,它們共同構成了現代Linux操作系統的基礎:
「GNU」: GNU是一個自由軟體操作系統項目,由Richard Stallman在1983年啟動,目的是創建一個完全由自由軟體組成的操作系統。"GNU"是"GNU's Not Unix"的遞歸縮寫,表明GNU雖然類似於Unix,但不包含任何Unix代碼。GNU項目創建了許多用於操作系統的核心組件,如GNU Compiler Collection (GCC)、GNU C Library (glibc)和GNU Core Utilities (coreutils)。GNU項目也提倡自由軟體哲學,推動了GNU通用公共許可證(GPL)的編製和普及。
今天談論的Linux操作系統,通常指的是"GNU/Linux"系統,它是指使用Linux內核和GNU軟體及工具的操作系統。Linux提供了操作系統的核心,即內核,而GNU提供了構建完整操作系統所需的許多基本工具和庫。
但是大多數情況下,通常將整個操作系統簡稱為"Linux",但嚴格來講,當包括了大量GNU軟體的時候,它應該被稱為"GNU/Linux"。
那些年我折騰過的Linux桌面
上面給大家說了,在安裝Linux的時候我們需要考慮三個部分,Linux內核、發行版、桌面環境(DE)。但是發行版其實就是Linux內核+工具集,所以發行版是依賴Linux內核才能運行的。因此大多數時候你選擇了一個發行版裡面就包含了內核,就不需要再選擇Linux內核了(安裝完成後可以更換內核)。
而我第一款Linux桌面系統是Ubuntu+GNOME(DE 桌面環境)的組合。至於為什麼是Ubuntu+GNOME,因為在那時候我只接觸過Centos和Ubuntu。而我去網上搜索Centos和Ubuntu的桌面版本時,大多數網站都是建議Ubuntu桌面,事實上也是如此。而Ubuntu桌面版預設的桌面環境(DE)就是GNOME。
這麼多年過去了,我陸續使用過很多Linux發行版和DE的不同組合。發行版使用過Manjaro、大蜥蜴、Debian、Deepin(非UOS)、Arch、CutfishOS等,桌面環境使用過GNOME、KDE、XFCE、DDE(國產Deepin DE)、I3等。目前(2024-03-11)使用的是Arch+KDE,在寫這篇文章的時候剛好KDE6發佈了,這幾天也折騰了一下KDE6,給大家看看效果:
使用Linux遇到的問題?
上面講了我是如何選擇Linux桌面的,接下來講講大家可能最關心的問題,那就是Linux桌面能不能像Windows和MacOS那樣正常辦公或者開發?
Linux桌面相比Windows和MacOS目前最大的問題就是生態,我記得我剛開始使用Linux桌面的時候國內很多軟體都沒有Linux版本,大多數情況下都是使用Wine等技術來相容使用Windows版本。目前情況改善了很多,目前主流的國產辦公軟體都有Linux版本了,比如我們常用的釘釘、飛書、騰訊會議等。QQ、微信也都出了Linux原生版本。
這裡不得不吐槽一下騰訊了,QQ是2023年開始推出全平臺重構版本的,在這之前的QQ Linux版本幾乎就不可用;而微信截至目前(2024-3-11)還只有一個原生Linux測試版本,而且還有白名單限制僅限UOS和麒麟系的Linux發行版使用。反觀人家WPS,Linux版本的WPS一直都沒有廣告,雖然前不久WPS也官宣Windows版本去掉廣告了,而且WPS Linux版本一直活躍更新,功能也不比Windows版本少。
而開發相關的軟體,作為Java後端常用的Idea、DataGrip、Navicat等都有Linux版本,其他的開發工具大多數也都有Linux版本,比如VsCode。這裡不得不說國外的軟體在全平臺支持上確實要比國內軟體好太多了。
這裡給大家列一下我常用的一些軟體:
功能 | 軟體名稱 | 官方地址 |
---|---|---|
截圖 | Flameshot | https://flameshot.org/ |
郵件 | Mailspring | https://www.getmailspring.com/ |
文件管理 | Spacedrive | https://github.com/spacedriveapp/spacedrive |
文檔處理 | Wps | https://www.wps.com/office/linux/ |
看圖 | Gthumb | https://github.com/GNOME/gthumb |
SSH | Xterminal | https://xterminal.cn/ |
視頻剪輯 | Kdenlive | https://kdenlive.org/zh/ |
字幕 | Arctime | https://arctime.org/ |
Java IDE | IntelliJ IDEA | https://www.jetbrains.com/idea/ |
DataBase IDE | DataGrip | https://www.jetbrains.com/datagrip/ |
Vpn | V2raya | https://v2raya.org/ |
輸入法 | Rime + Fcitx5 | https://rime.im/ |
文本編輯 | Neovim | https://neovim.io/ |
系統備份 | Timeshift | https://github.com/linuxmint/timeshift |
介面測試 | Insomnia | https://insomnia.rest/ |
Redis客戶端 | Redisinsight | https://github.com/RedisInsight/RedisInsight |
終端 | Warp | https://www.warp.dev/ |
Linux桌面的優缺點
在這裡總結一下我認為的Linux桌面的優點和缺點。
優點: 開源免費,無論是Windows還是MacOS都是收費的,而Linux是開源免費的,開源項目總比閉源項目在安全性上更可靠。 發行版眾多,Linux有很多發行版,可以根據自己的喜好選擇不同的發行版,不會像Windows和MacOS那樣被一家公司或者組織束縛。 自由度高,Linux上面你可以隨便折騰,一個發行版可以換不同的桌面環境,不會像Windows和MacOS那樣只有一個桌面環境,而且桌面環境可以高度個性化。 穩定性好,Linux的穩定性比Widnows要好很多,這也是伺服器操作系統大多數都是Linux的原因之一。 技術支持好,這個跟發行版有很大的關係,比如我正在使用的Arch Linux,有非常完善的Wiki系統,而且有非常活躍的社區。當你在使用中出現問題,絕大多數情況下你都可以在Arch wiki上找到解決方案,極少數找不到解決方案的問題你也可以在Arch社區發帖提問,會有很多熱心的大佬給你提供建議和幫助。這點我想如果你不是Widnows企業用戶的話估計很難得到技術支持。
缺點: 軟體生態差,目前Linux相比Windows和MacOS最大的問題就是軟體應用生態不足了,但是如果只是普通辦公和開發也完全足夠了。 對新手不友好,雖然Linux桌面環境已經在努力改善了,但是依然會出現很多和開發相關的名詞和知識,對於非電腦行業的朋友可能不太友好。 游戲支持差,對於喜歡玩游戲的朋友來說,Linux就不適合了,雖然Steam也有Linux版,但是裡面可玩的游戲很少。
上面的優缺點我認為是對所有人都適用的,我作為Java後端使用Linux開發還有其他的優勢:
容器化技術原生支持,比如Docker,就是使用Linux命名空間(namespaces)和資源隔離(CGroups)實現的。 Linux上寫的Java代碼直接部署在Linux伺服器上能避免一些操作系統差異引起的bug,雖然Java號稱跨平臺的,但是還是可能會因為一些操作系統上的差異導致的bug。比如Tomcat預設埠是80,如果你在Widnows上開發是能正常運行的,但是你將寫好的程式打包到Linux上以非root用戶是無法運行的,因為Linux上1024以下的埠是普通用戶無法使用的。 能學習更多的Linux知識,對於工作中需要使用Linux的人來說,這確實能提升技術能力。
以上就是我分享的為什麼使用Linux做開發的經驗,當然也不是勸大家使用Linux桌面,這個根據個人情況自己決定,本文只是純經驗分享。
本文使用 markdown.com.cn 排版