1. 程式人生 > 實用技巧 >寫給工程師的 Ubuntu 20.04 最佳配置指南

寫給工程師的 Ubuntu 20.04 最佳配置指南

寫給工程師的 Ubuntu 20.04 最佳配置指南

張磊 微信公眾號:BaronTalk

最近 Ubuntu 釋出了 20.04 LTS 版本,我也在第一時間安裝體驗。由於各種 Linux 發行版本並不像 MacOS、Windows 一樣開箱即用,因此需要做很多配置。每次配置都需要查閱各種資料,雖然網路上有很多配置文章,但基本上都會存在一些問題:

  1. 只教怎麼做,不說為什麼;
  2. 文件陳舊,不更新;
  3. 內容缺失,不豐富;......

因此我希望整理一份最佳配置指南,除了記錄需要做什麼,還會說明背後的原理和技術背景。一方面方便自己今後查閱,另一方面也想將這份指南分享給大家,並和大家一起逐步完善它。所以,這是一份會持續更新的、有實操有原理、內容豐富的最佳配置指南。

關注公眾號BaronTalk,回覆 Ubuntu 即可下載最新的 PDF 版本配置文件。

一. 系統配置

1. 關閉 sudo 密碼

為了避免每次使用 sudo 命令時都輸入密碼,我們可以將密碼關閉。操作方法:

  1. 終端輸入命令sudo visudo,開啟 visudo;
  2. 找到%sudo ALL=(ALL:ALL) ALL這一行修改為%sudo ALL=(ALL:ALL) NOPASSWD:ALL
有安全風險,請謹慎使用

2. 修改軟體源

Ubuntu 預設的軟體源是境外的,速度上會有些問題,我們可以在「Software & Updates」(軟體和更新)中選擇國內的映象。

3. 更新系統

# 更新本地包資料庫
sudo apt update

# 更新所有已安裝的包(也可以使用 full-upgrade)
sudo apt upgrade

# 自動移除不需要的包
sudo apt autoremove

這裡補充幾個常用的清理命令:

  • apt autoclean: 將已刪除軟體包的.deb安裝檔案從硬碟中刪除;
  • apt clean: 同上,但會把已安裝的軟體包的安裝包也刪除掉;
  • apt autoremove: 刪除為了滿足其他軟體包的依賴而安裝,但現在不再需要的軟體包;
  • apt remove [軟體包名]: 刪除已安裝的軟體包(保留配置檔案);
  • apt --purge remove [軟體包名]: 刪除已安裝包(不保留配置檔案)。

4. 高分屏適配

預設情況高分屏下 UI 元素顯得過小,因此需要調整介面的縮放比例。Ubuntu20.04 預設是 GNOME 桌面,GNOME 可以在Settings>Displays(設定>顯示)中開啟 HiDPI 支援,以整數倍來調整螢幕比例。也可以通過如下命令的來設定:

# scaling-factor 僅能設定為整數 1=100%,2=200% 3=300% ......
gsettings set org.gnome.desktop.interface scaling-factor 2

整數倍的縮放設定,在部分裝置上 UI 元素要麼顯得過大,要麼顯得過小,因此我們需要進一步調整。

使用下面的命令檢視你 Linux 裝置上的 Window System(圖形介面協議),通常是 Wayland/X11

echo $XDG_SESSION_TYPE

Wayland

如果是 wayland,使用下面的命令啟動實驗性的非整數倍縮放功能。

gsettings set org.gnome.mutter experimental-features "['scale-monitor-framebuffer']"

之後再次開啟Settings>Displays,就可以選擇非整數倍縮放(125%、150%、175%)。Ubuntu20.04 已經在Settings>Displays中提供了圖形化的介面來開啟實驗性的非整數倍的縮放功能,因此無需通過上面的命令來開啟。

我試驗下來,這種方式無法在我的裝置上正常設定非整數倍縮放。我判斷是因為 Ubuntu20.04 預設的 Window System 是 X11 而不是 Wayland,如果你的裝置上是 Wayland,應該是可以正常設定的。或者你在登陸桌面系統時選擇 Ubuntu On Wayland 理論上也是可以的。

X11

對於 X11,我們可以同時使用 scaling-factor 和 xrandr 來實現非整數倍縮放,這可以使 TTF 字型被正確縮放,防止單獨使用 xrandr 時出現的模糊現象。你可以使用 gsettings 或者在Settings>Displays中來指定放大係數,並用 xrandr 指定縮小系數。

首先將介面縮放係數設定為「UI看起來太大」的最小系數,通常是 2(200%),如果不夠大就繼續嘗試 3 甚至更大的係數。然後使用 xrandr 來設定縮小系數,我自己設定的是 1.25,如果 UI 看起來太大就提高係數,反之就降低係數。命令如下:

xrandr --output DP-4 --scale 1.25x1.25

使用上述命令你可能會遇到warning: output DP-4 not founnd; gnoring的提示,或者執行命令後介面無任何變化。此時你需要執行xrandr命令來檢視你的 output 引數(也就是當前顯示介面的名稱,日誌中顯示 connected 的就是),比如我裝置上的是 DP-4。

正確執行完命令後可能會出現 UI 元素過小的情況,回去Settings>Displays中看看,是不是整數倍縮放被還原成了 100%,如果是重新選擇合適的縮放比例即可(比如 200%)。

重啟後 xrandr 的設定會失效,我們可以設定個啟動自動執行的指令碼,比如 start-service.sh :

# start-service.sh
#!/bin/bash
xrandr --output DP-4 --scale 1.25x1.25
exit 0

接著給 start-service.sh 授予執行許可權

bash sudo chmod +x start-service.sh

然後在 Ubuntu 中搜索「sartup Applications」(啟動應用程式) ,將指令碼新增進去:

至此就能完美的支援 4K 屏顯示了。

5. 安裝 Python2

Ubuntu20.04 自帶了 python3,但是某些第三方工具或者指令碼還是用的 python2,因此我們需要自行安裝

apt install python

6. 安裝 Git

apt install git

7. 中文輸入法

由於搜狗輸入法目前還不支援Ubuntu20.04,加之其對高分屏支援不太友好,因此不再折騰選擇了 ibus-libpinyin。

# 安裝
sudo apt install ibus-libpinyin 
sudo apt install ibus-clutter

接著在應用程式中找到「Language Support」(語言支援),更改「Keyboard input method system」(鍵盤輸入法系統)為「IBUS」。重啟系統,然後在Settings>Region & Language>Input Sources(設定>區域與語言>輸入源)中新增「Chinese(Intelligent Pinyin)」(中文(智慧拼音))就可以使用中文輸入法了。


二. 打造你的命令列工具(Terminator && ZSH)

1. 安裝 Terminnator

如果你用慣了 Mac 平臺下的 iTerm2,一定會對它的分屏功能戀戀不忘,然而 Ubuntu 自帶的 Terminal 並不好用。好在 Linux 下有各種開源 Terminal,個人比較推薦 Terminator,強大如 iTerm2,一樣支援分屏。

# 安裝
sudo add-apt-repository ppa:gnome-terminator
sudo apt update
sudo apt install terminator

Terminator 預設的介面比較醜,不過配置靈活,大家可以根據喜好自行調整。

2. 配置 Shell(安裝 zsh 和 oh-my-zsh)

搞定了 Terminal,接下來配置 Shell。執行下面的命令:

cat /etc/shells

可以看到 Ubuntu 已經內建了各種 Shell:

/bin/bash
/bin/csh
/bin/dash
/bin/ksh
/bin/sh
/bin/tcsh

市面上常用的 Linux 發行版本通常預設使用的 Shell 都是 bash,但 zsh 要遠比 bash 強大的多。

# 安裝 zsh
apt install zsh

# 將 zsh 設定為系統預設 shell
sudo chsh -s /bin/zsh

不過 zsh 的配置太複雜,好在有人開發了oh-my-zsh,可以讓我們更方便的配置 zsh。

# 自動安裝,如果你沒安裝 git 需要先安裝 git
wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh

# 或者也可以選擇手動安裝
git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc

重啟 Terminal 你就能發現變化。

3. ZSH 配置

zsh 的配置主要集中在 ~/.zshrc 檔案裡,比如我們可以給常用命令配置別名:

alias cls='clear'
alias ll='ls -l'
alias la='ls -a'
alias vi='vim'
alias grep="grep --color=auto"

或者選擇 zsh 的主題

ZSH_THEME="robbyrussell"

oh-my-zsh 內建了很多主題,對應的主題檔案存放在 ~/.oh-my-zsh/themes 目錄下,你可以根據自己的喜好選擇或者編輯主題。

4. ZSH 外掛安裝

oh-my-zsh 還支援各種外掛,存放在 ~/.oh-my-zsh/plugins 目錄下。這裡推薦幾款:

autojump:快速切換目錄外掛

# 安裝
apt install autojump

# 使用
j Document/

zsh-autosuggestions:命令列命令鍵入時的歷史命令建議外掛

# 安裝
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

zsh-syntax-highlighting:命令列語法高亮外掛

# 安裝
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

外掛安裝好後需要在 ~/.zshrc 檔案裡配置後方可使用,配置如下:

# 開啟 ~/.zshrc 檔案,找到如下這行配置程式碼,在後面追加外掛名
plugins=(其他外掛名 autojump zsh-autosuggestions zsh-syntax-highlighting)

5. 有趣的命令列小玩具

配置好Terminator 和 ZSH 後,我們還可以為命令列新增些有趣的小玩具。

CMatrix()

終端黑客帝國屏保
# 安裝
sudo apt install cmatrix

# 執行(加上 -lba 引數看起來更像電影,加上 -ol 引數起來更像 Win/Mac 的屏保)
cmatrix

效果圖:

Steam Locomotive()

終端小火車動效
# 安裝
sudo apt install sl

# 執行
sl

效果圖:

Screenfetch()

The bash Screenshot Information Tool,用於在終端顯示系統資訊及 ASCII 化的 Linux 發行版圖示
# 安裝
sudo apt install screenfetch

# 執行
screenfetch

效果圖:


三. 軟體安裝

1. 安裝Clash(搭個tizi,你懂的)

第一步:到下載最新的 Linux 版 Clash,例如:clash-linux-amd64-v0.19.0.gz。解壓後得到一個可執行檔案 clash-linux-amd64-v0.19.0:

tar -zxvf clash-linux-amd64-v0.19.0.gz

第二步:使用 mv 命令移動到 /usr/local/bin/clash:

sudo mv clash-linux-amd64-v0.19.0 /usr/local/bin/clash

第三步:終端輸入 sudo chmod +x /usr/local/bin/clash 新增執行許可權;

sudo chmod +x /usr/local/bin/clash

第四步:終端執行 clash 命令,執行 clash;

# 執行 clash
clash

此時會在 /home/{使用者ID}/.config/clash 目錄下生成兩個檔案:config.yaml 和 Country.mmdb;編輯 config.yaml 檔案,配置代理伺服器資訊和規則,部分商家會提供yaml檔案,下載後 copy 過來即可;

重啟 clash(關閉並重新開啟終端,執行 clash 命令)以載入更新後的配置檔案;

保持 clash 執行,開啟瀏覽器訪問 clash.razord.top 進行策略配置、選擇代理線路等等(可能需要根據提示輸入IP、埠和口令,具體內容可在 config.yaml 中檢視;

繼續保持 clash 執行,在系統網路設定中設定手動代理Settings>Network>Network Proxy>Manual(設定>網路>代理>手動),配置資訊參考 config.yaml 或者啟動 clash 時終端輸出的日誌。此時就可以通過 clash 訪問網路了。

按照前面的方式配置好後,每次系統啟動時都需要開啟終端,執行 clash 命令,並且終端不可以關閉,否則整個 clash 程序就結束了。如果不想一直保持終端開啟,可使用 nohup clash 命令啟動後臺執行。或者希望開機自啟動 clash,可將nohup clash這段命令加入到前面提到的 start-service.sh 指令碼的最後。

2. 安裝Typroa(開源MarkDown編輯器)

# or run:
# sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys BA300B7755AFCFAE
wget -qO - https://typora.io/linux/public-key.asc | sudo apt-key add -

# add Typora's repository
sudo add-apt-repository 'deb https://typora.io/linux ./'
sudo apt update

# install typora
sudo apt install typora

3. JetBrains 全家桶

安裝 JetBrains 的ToolBox App後可以無腦一鍵安裝旗下各種 IDE,包括 Android Studio。

4. 其它應用程式安裝

對於官網已經提供了 Ubuntu 版本 .deb 安裝檔案的,可在官網下載 .deb 安裝檔案後,執行下面的命令安裝:

# 安裝
sudo apt install ./<file>.deb

如果你是較早的 Linux 發行版本,需要使用下面的命令安裝(下同):

sudo dpkg -i <file>.deb
sudo apt-get install -f # Install dependencies

部分應用下載地址:

注:部分應用程式並不受 Scale 縮放係數的控制,因此即使在Settings>Displays(設定>顯示)中將 Scale 設定為了 200% 後,UI 元素在高分屏下依舊顯示過小。比如:ZOOM、網易雲音樂等,為了解決這一問題可使用下面的命令來啟動,即可正常顯示。

# 啟動zoom,縮放倍數可根據需要自行調整
QT_SCALE_FACTOR=2 zoom

# 啟動網易雲音樂
QT_SCALE_FACTOR=2 netease-cloud-music

5. 使用 Deepin-Wine 安裝 QQ/TIM/微信/Office/...

對於官網未提供了 Ubuntu 版本 .deb 安裝檔案,但 deepin 中有的應用程式,可以使用 Deepin-Wine 來安裝。

wine 是一種在 Linux 平臺實現了部分 Windows 系統 API 的技術,可以讓使用者在 Linux 平臺無縫使用 Windows 平臺的應用程式。

deepin-wine 是國內的深度社群在 deepin linux 上經過改造的 wine 程式,並且社群在 deepin-wine 之上移植了很多的 Windows 軟體,比如微信、QQ、TIM等。

github 上有人開發了一個專案deepin-wine-ubuntu,將 deepin-wine 及其之上適配好的各種 deb 軟體包遷移到了 Ubuntu 上。要安裝微信、QQ等軟體,我們需要先安裝 deep-wine-ubuntu。方法如下:

# 首先 clone deepin-wine-ubuntu 原始碼到本地
git clone [email protected]:wszqkzqk/deepin-wine-ubuntu.git

# 切換到原始碼目錄
cd deepin-wine-ubuntu

# 安裝指令碼授權
sudo chmod +x install_2.8.22.sh

# 安裝 deep-wine-ubuntu
./install_2.8.22.sh

deep-wine-ubuntu 安裝完成之後,我們就可以下載深度社群提供的各種 deb 軟體,具體安裝方同第 4 小節的安裝方式:

# 安裝
sudo apt install ./<file>.deb

深度社群提供的各種 deb 軟體下載地址:

部分軟體下載地址:

更多安裝方法及軟體地址可以參考

如果你的系統語言非中文,通過 deepin-wine 啟動的軟體中文會出現亂碼。你需要將 /opt/deepinwine/tools/run.sh 檔案中 WINE_CMD 這一行修改為:
WINE_CMD="LC_ALL=zh_CN.UTF-8 deepin-wine"

6. 安裝 rpm 格式的軟體

很多軟體只提供了 rpm 格式的安裝包,並未提供 deb 格式的安裝包,比如:xmind。因此我們需要將其轉為 deb 安裝包在再進行安裝。這裡我們拿 xmind 來舉例,看看如何操作。

比如我們下載了 xmind 安裝包 XMind-2020.rpm:

# 新增 Universe 倉庫(如果未新增)
sudo add-apt-repository universe

# 更新
sudo apt update

# 安裝 Alien
sudo apt install alien

# 將.rpm 包轉換為.deb 包(當前目錄下會生成一個 deb 安裝包,比如:XMind-2020.deb)
sudo alien XMind-2020.rpm

# 安裝
sudo dpkg -i XMind-2020.deb

四. 桌面美化

1. 安裝 tweek

sudo apt install gnome-tweak-tool

2. 安裝外掛擴充套件支援

# 讓 gnome 支援外掛擴充套件
sudo apt install gnome-shell-extensions 

# chrome 瀏覽器擴充套件支援,可以使用瀏覽器安裝外掛
sudo apt install chrome-gnome-shell

3. 常用外掛清單

更多擴充套件外掛大家自行在https://extensions.gnome.org上探索吧。

4. 主題

可在GNOME-LOOK上下載各種桌面主題、Shell 主題、圖示(icon)主題

安裝桌面或者 shell 主題

# 解壓下載的主題檔案
tar -xvf FileName.tar //解壓

# 將解壓後的主題檔案拷貝到 /usr/share/themes
sudo cp -r FileName /usr/share/themes

安裝 icon 主題

# 解壓下載的主題檔案
tar -xvf FileName.tar //解壓

# 將解壓後的主題檔案拷貝到 /usr/share/icons
sudo cp -r FileName /usr/share/icons

之後開啟 Tweeks 選擇安裝的主題即可

5. 桌布

推薦幾個下載 4K 8K 超高清桌布的網站:

最後貼一張美化後的桌面(Applications Theme: SURU++; Icons Theme: Reversal)


五. 使用問題記錄

問題一:Windows、Ubuntu 雙系統時間不統一

如果你是雙系統,安裝完 Ubuntu 設定好系統時間後,回到 Windows 會發現時間不統一。為了理解為什麼,我們得先了解點基礎知識:

  • UTC(Coordinated Universal Time),協調世界時(世界統一時間);
  • GMT(Greenwich Mean Time),格林威治標準時間。

Windows 與類 Unix 系統(Unix/Linux/Mac)看待系統硬體時間的方式是不一樣的:

  • Windows 把計算機硬體時間當作本地時間(local time),所以在 Windows 系統中顯示的時間跟 BIOS 中顯示的時間是一樣的。
  • 類 Unix 系統把計算機硬體時間當作 UTC, 所以系統啟動後會在該時間的基礎上,加上電腦設定的時區數(比中國就加8),因此 Ubuntu 中顯示的時間總是比 Windows 中顯示的時間快 8 小時。

當你在 Ubuntu 中把系統顯示的時間設定正確後,計算機硬體時間就變成了在這個時間上減去 8 小時,所以當你切換成 Windows 系統後慢了8小時,就是這個原因。

解決方案:在 Ubuntu 中把計算機硬體的時間改成系統顯示時間,即禁用 Ubuntu 中的 UTC

timedatectl set-local-rtc 1 --adjust-system-clock

問題二:Ubuntu 迴圈登陸

這個問題是我在 Ubuntu19.10 版本遇到的,20.04 版本中我沒做驗證,不確定是否有同樣的問題。

在解決問題之前,先補充一個關鍵知識點:顯示管理器(Display Manager),它用來提供圖形化登陸,向用戶顯示圖形化登陸介面,並處理使用者身份驗證。Linux 中常見的顯示管理器包括 gdm3、kdm、LightDM等:

  • gdm3: gdm3 是 gdm 的繼承者,它是 GNOME 的顯示管理器;
  • kdm: kdm 是 KDE 的顯示管理器;
  • LightDM: LightDM 是一個輕量級的顯示管理器,他是顯示管理器的規範解決方案。

原因:

實操驗證,初步斷定是因為設定中開啟了自動登陸,觸發了 dgm3 的某種 bug 導致的。(Ubuntu19.10 預設使用的是 GNOME 桌面系統, 而 gdm3 是 GNOME 的顯示管理器)

解決方案:使用 LightDM 替換 gdm3

第一步:安裝 LightDM(由於你現在無法進入圖形化桌面,因此需要你在登陸頁面使用 ctl + alt + F2 快捷鍵進入命令列模式,輸入賬號密碼登陸,然後使用下面的命令安裝)

sudo apt-get install lightdm

安裝完成後,系統會自動彈框要求你選擇當前系統中已安裝的顯示管理器,選擇 lightdm。

第二步:重啟

sudo reboot

重啟完就能正常登陸了。

這時候你會發現登陸介面變了,如果你想切回之前的登陸介面,在進入系統後把自動登陸關閉,然後實現下面的命令重新選擇 gdm3 顯示管理器即可(需重啟生效)

sudo dpkg-reconfigure gdm3
並不是把自動登陸關閉後 gdm3 的 bug 就一定能規避掉,這一點可能只適用於我安裝的 Ubuntu19.10;我這裡說的原因也不一定適用所有人。但有一點可以肯定的是,如果出現迴圈登陸的情況,更換顯示管理器通常是能解決問題的。

如果你想檢視當前系統正在執行的顯示管理器,可以使用下面的命令:

cat /etc/X11/default-display-manager

問題三:NVIDIA 驅動修復

Ubuntu 20.04 自帶了 nvidia 顯示卡驅動,但是被我不小心玩壞了。主要表現在:

  1. 前面提到的 xrandr 命令失效,無法實現小數倍縮放;
  2. NVIDIA X Server Settings 客戶端開啟空白;
  3. 命令列執行nvidia-settings命令出錯;
  4. Settings>Displays(設定>顯示)中無法設定多種解析度等等。

如果你也和我遇到同樣的問題,或者希望手動安裝顯示卡驅動,可以按照下面的方式操作。(需要首先到NVIDIA 官網下載你裝置對應的顯示卡驅動)

# 先安裝一些依賴庫
sudo apt install build-essential libglvnd-dev pkg-config

# 停止桌面管理器,進入命令列摸索
sudo telinit 3

# 刪除已安裝的 nvidia 驅動
sudo apt purge "nvidia*"

# 手動安裝顯示卡驅動
sudo bash NVIDIA-Linux-x86_64-440.82.run 

# 重啟
sudo reboot

更多顯示卡驅動的安裝方式可參考: