Ubuntu 22.04.1 LTS Desktop 生產力環境搭建

語言: CN / TW / HK

highlight: agate

不幸

一個夏日炎炎的下午,喝著咖啡,耍著電腦,突然Ubuntu22.04.1的推送順著WiFi就來了。心想這都推出有一陣子了,應該趨於“成熟”,便開始升級。不幸總是在不經意間降臨,就在升級Firefox的snap時,升級程式就這麼卡住了……先是Firefox的升級程式卡主,然後整個更新程式卡主。當時的想法:大不了reinstall吧,多次在圖形介面中無法重啟,最後在命令列中reboot,於是悲劇就發生了:電腦再次啟動時,提示系統損壞,聯絡管理員……

掙扎

按照Windows或Mac的慣性思路,遭遇安裝過程中意外重啟導致的安裝失敗,可以通過重複安裝步驟來修復。在官網下載Ubuntu22.04.1的安裝程式,並製作為啟動盤。引導電腦,選擇reinstall。結果安裝程式一個大大的警告貼在我臉上:大致意思是我只有一個分割槽(自從不用FAT32檔案系統後就再沒分割槽),安裝程式將會刪除所有檔案,並格式化磁碟……眼前一黑……

數分鐘後,我接受了現實。選擇直接用U盤啟動Ubuntu最小系統,掛載電腦的SSD,先把工程資料夾全部打包

tar -vzcf ./backup.tar.gz ./Engineerings

如果不打包也能備份,但是碎片檔案過多(170萬個檔案),這個備份和恢復過程可能需要數個小時。我選擇先壓縮,然後備份壓縮包。打包過程大約過了半小時,然後將打包檔案(7G)複製到移動SSD中。保險期間,再將檔案扔到蘋果系統中檢查是否有錯。

新生

選擇直接安裝系統,選擇不要使用線上更新(這樣安裝過程會更快),不多久就裝好了,再連上WiFi,更新系統。先說說第一眼感受:20和22的差別不大,GUI確實漂亮一些(但有限)。不知道20LTS的一些老Bug是否有被修復,這可能需要一些時日來體會了。以下是關於安裝軟體和配置系統的備忘,有興趣的同學可以拿去參考。經過一段時間的摸索,終於將系統安裝完畢。順便整理了整個安裝與配置過程,算是(3年前)Ubuntu18開發環境的一個升級吧。

基礎

軟體源

APT

先將軟體庫替換到國內的映象伺服器(以下是阿里雲映象),因為某些原因,如果不改動源的設定,可能會造成一些影響:

``` sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak sudo sed -i 's/http://cn.archive.ubuntu.com/http://mirrors.aliyun.com/g' /etc/apt/sources.list

更新

sudo apt update && sudo apt upgrade -y ```

Ubuntu在國內已經搭建了映象,即便是不替換源,速度也不至於像從前那樣龜速,比較顯著的感受在Ubuntu商店已經比以前快很多,然而這個國內並沒有三方映象(可能時因為軟體總體還是很糟糕,沒人願意去做吧)。

Nala

Nala是APT的外殼,相比apt有更好看的表現(字元介面),並能夠更方便地配置映象地址。通過執行:

sudo nala fetch

nala會跑完500多個映象伺服器,並列出響應速度最快的前16個伺服器,我們可以選擇一個或者多個(多個就用空格隔開)。其餘操作根APT一致,例如installupdateupgrade。如果選用Nala作為軟體管理,那麼下文中的apt命令都改為nala即可。

```

新增 Nala 源

echo "deb http://deb.volian.org/volian/ scar main" | sudo tee /etc/apt/sources.list.d/volian-archive-scar-unstable.list wget -qO - http://deb.volian.org/volian/scar.key | sudo tee /etc/apt/trusted.gpg.d/volian-archive-scar-unstable.gpg > /dev/null

更新原生倉庫,並安裝Nala

sudo apt update && sudo apt install nala -y

Nala 探測最快的映象地址

sudo nala fetch ```

常用類庫與基礎工具

  • 常用的編譯工具
  • git / zsh / curl / wget:阿里雲的code.aliyun.com服務加強了git基於ssh-rsa的認證,所以需要設定特定的配置檔案,不然否則會造成無法git賬戶無法ssh連線
  • neovim:經常會在字元介面中做一些檔案小改動的操作,neovim非常合適。
  • oh-my-zsh / power line 10k:顏值即正義(如果需要這個,先安裝下文的Nerd字型,並設定命令列的預設字型為Nerd系列,再回到這一步)。
  • OpenSSH-Server:偶爾會把電腦留在公司,但又突然像要某個檔案……
  • 壓縮與解壓縮
  • 其他工具:tmux:分屏,tree:目錄檢視

``` sudo apt install make gcc libtool libtool-bin autoconf automake cmake g++ pkg-config -y sudo apt install git zsh curl wget -y ssh-genkey

設定 .ssh/config 檔案,Host還可以用 * 替代

tee ~/.ssh/config <<-'EOF' Host code.aliyun.com User git PubkeyAcceptedAlgorithms +ssh-rsa HostkeyAlgorithms +ssh-rsa EOF

sudo apt install neovim

oh-my-zsh

sh -c "$(curl -fsSL http://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Change default shell to zsh

chsh -s $(which zsh)

power line 10k

git clone --depth=1 http://github.com/romkatv/powerlevel10k.git ~/powerlevel10k echo 'source ~/powerlevel10k/powerlevel10k.zsh-theme' >>~/.zshrc

ssh server

sudo apt install openssh-server

壓縮與解壓縮

sudo apt install 7zip unrar zip unzip

分屏

sudo apt install tmux tree ```

輸入法

目前搜狗輸入法與Ubuntu22還是有一點相容性問題:如果不使用zsh作為預設shell還是可以選擇搜狗輸入法,否則fcitx程式會無法啟動搜狗輸入法。解決方法目前只能使用系統自帶的智慧拼音。

搜狗拼音

搜狗輸入法。如果在安裝時時區(Timezone)選擇國內,則直接從第4步開始:

  1. Settings -> Region & Language -> Manage Installed Languages;

  1. Install / Remove Languages,第一次開啟會安裝依賴;
  2. 然後勾選Chinese (Simplified);
  3. 安裝fcitx > sudo apt install fcitx -y(--fix-missing)
  4. 第1步的方式開啟語言支援,Keyboard選擇輸入框架 Fcitx4
  5. 刪除ibus輸入法 sudo apt remove --purge ibus
  6. 安裝搜狗輸入法sudo dpkg -i ~/Downloads/sogoupinyin_4.xxx.deb
  7. 安裝依賴 sudo apt install libqt5qml5 libqt5quick5 libqt5quickwidgets5 qml-module-qtquick2 libgsettings-qt1
  8. 重啟系統,並右上角看到鍵盤圖示\
  9. 選擇Configiure,進行配置
  10. Input Method Configuration對話方塊的下面,點+
  11. 彈出Add input method對話方塊,去掉預設選中的Only Show Current Language選項,在搜尋框中輸入sogou
  12. 一路OK和關閉。
智慧拼音
  1. Settings -> Region & Language - > Manage Installed Languages
  2. 確保有漢語(中國)已經安裝,沒有安裝點Install / Remove Languages 新增
  3. 確保Keyboard input method system是IBus
  4. Settings -> Keyboard -> Input Sources 新增
  5. 選擇Chinese,在子選項中選擇 Chinese (Intelligent Pinyin)

如果覺得智慧拼音的UI過於單調,或希望調整字型大小,可以通過Extension ManagerIBus Tweaker的外掛,對IBus輸入法配置。

Screenshot from 2022-09-10 11-31-16.png

Chrome瀏覽器

沒啥好說的,官方網站下載,登入賬號後所有外掛會自動同步,以下是我的常用外掛:

| ID | 名稱 | 描述 | | -------------------------------- | ----------------------- | --------------- | | poahndpaaanbpbeafbkploiobpiiieko | Display #Anchors | 顯示網頁錨點 | | mihcahmgecmbnbcchbopgniflfhgnkff | Google Mail Checker | Gmail郵箱檢測 | | oldceeleldhonbafppcapldpdifcinji | Grammar & Spell Checker | 英語語法與拼寫檢測 | | chklaanhfefbnpoihckbnefhakgolnmc | JSONVue | 檢測純JSON資料並格式化 | | mooikfkahbdckldjjndioackbalphokd | Selenium IDE | 前端測試 | | dhdgffkkebhmkfjojejmpbldmpobfkfo | Tampermonkey | 油猴 | | cjpalhdlnbpafiamejdnhcphjbkeiagm | uBlock Origin | 廣告遮蔽(有時候它會用力過猛) | | nhdogjmejiglipccpnnnanhbledajbpd | Vue.js devtools | VUE 程式除錯 | | gppongmhjkpfnbhagpmjfkannfbllamg | Wappalyzer | 分析網站採用哪些技術棧 |

Firefox 瀏覽器

Ubuntu22 系統內建snap版本的Firefox瀏覽器,受限於snap應用,不能使用三方應用,並且開啟速度不如正常安裝的軟體。所以,一般有三種選擇: 1. 作為偶爾一用的除錯工具,無視它,可以跳過這小節; 2. 索性解除安裝掉,眼不見為淨; 3. 解除安裝snap版本,再重新安裝完整的Firefox;

sh sudo snap remove firefox sudo add-apt-repository ppa:mozillateam/ppa echo ' Package: * Pin: release o=LP-PPA-mozillateam Pin-Priority: 1001 ' | sudo tee /etc/apt/preferences.d/mozilla-firefox echo 'Unattended-Upgrade::Allowed-Origins:: "LP-PPA-mozillateam:${distro_codename}";' | sudo tee /etc/apt/apt.conf.d/51unattended-upgrades-firefox sudo apt install firefox

字型

開發者常用Nerd Fonts和Mono等寬字型,還有這裡

http://github.com/ryanoasis/nerd-fonts

http://www.nerdfonts.com/font-downloads

字型檔案(ttf)下載後,直接用系統自帶的Fonts Manager開啟並安裝到系統中,也可以手動安裝(我認為手動安裝更快,拷貝到相關目錄,執行清理快取即可)

``` sudo mkdir /usr/local/share/fonts/somefonts sudo cp ~/Downloads/fonts.ttf /usr/local/share/fonts/somefonts

重新整理字型庫快取,只有這樣才能在不重啟的情況下,在一些編輯器中看到系統中已經安裝(複製)的字型

fc-cache -f -v ```

常用中文字型有:

私有云(ownCloud)

curl http://download.owncloud.com/desktop/ownCloud/stable/latest/linux/Ubuntu_22.04/INSTALL.sh | sudo bash

直接可以完成下載和安裝,就是那個gpg證書版本老了,每次會有提示。

開發環境

既然是程式設計師的電腦,自然離不開開發環境。我主要從事Web全棧程式開發,從伺服器的資料庫到前段的CSS都有涉及。另外一方面,除了開發工作外,有許多優秀的工具是原始碼下載使用的,所以需要相關的語言環境作為支撐。

  • NodeJS:建議使用nvm管理工具以及nrm的類庫源管理,一臺電腦上同時安裝多個NodeJS版本
  • Python:同樣,使用anaconda 可以管理多個python版本庫,還附帶了常用的python工具箱
  • Docker:直接用官方提供的安裝指令碼,並同時安裝docker-compose
  • 其他開發語言:Go / Ruby / Rust / Lua
  • Java JRE

```

多版本的NodeJS管理工具 -> nvm

curl -o- http://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash

當前Node下安裝映象源,注意切換Node版本後還要重新安裝和設定

npm i -g npm nrm

[] Python 從 http://www.anaconda.com/ 下載最新版 anaconda

wget http://repo.anaconda.com/archive/Anaconda3-2022.05-Linux-x86_64.sh | bash

curl -sSL http://get.docker.com/ | sh

新增Docker的普通使用者許可權,更新後需要重啟

sudo usermod -aG docker $USER

安裝docker-compose

pip3 install pyqt5 pyqtwebengine pathlib docker-compose

修改Docker的國內映象,推薦使用阿里雲的映象(每個賬戶可以有一個免費映象)

sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["http://****.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker

Go http://go.dev/dl/ 找到最新版

GO_LATEST=1.19.linux-amd64 wget http://go.dev/dl/go${GO_LATEST}.tar.gz -O ~/Downloads/go.tar.gz sudo tar -C /usr/local -xzf ~/Downloads/go.tar.gz

需要加入到配置中

export PATH=$PATH:/usr/local/go/bin

ruby

sudo apt install ruby-full -y

Rust 選擇預設安裝(直接回車)

curl --proto '=https' --tlsv1.2 -sSf http://sh.rustup.rs | sh

Lua http://www.lua.org/download.html 找到最新版

LUA_LATEST=5.4.4 wget http://www.lua.org/ftp/lua-${LUA_LATEST}.tar.gz -O ~/Downloads/lua.tar.gz tar zxf lua.tar.gz cd lua-${LUA_LATEST} make linux test sudo make install

Java JRE/JDK 二選一

sudo apt install default-jdk sudo apt install openjdk-18-jdk ```

圖形介面工具

有些工具可以通過snap安裝,由於Ubuntu預裝了Snapcraft,可以直接用。如果沒有的,則先安裝snapd

  • VSCode:程式設計師第一神器 ,可以直接從官網下載deb包檔案,但缺點是每次升級都得去官網下載(Ubuntu下不像Windows或Mac靜默下載重啟更新),所以最好是用apt安裝,每次update可以附帶著一起升級了,下載速度也快。需要手動新增gpg證書和安裝包源。
  • XMind,思維導圖工具,幾年的進化已經有用非常漂亮的介面,且免費版本已經足夠日常使用。
  • Marktext:Markdown編輯器
  • GIMP [Snap]:Linux下的Photoshop
  • VLC [Snap]:卡片必備
  • Redis Desktop Manager [Snap]:redis的GUI客戶端
  • DBeaver:支援主流的關係型資料庫的GUI客戶端,免費版也足夠用
  • Studio 3T:Java開發的MongoDB客戶端,前不久開放免費使用(30天后限制功能也能用),替代Robo 3T
  • Sublime:圖形介面下,純文字檔案備用編輯器
  • FileZilla:SSH或FTP拷貝檔案還是很方便的
  • aMule:電驢下載工具
  • Darktable[Snap]:圖片瀏覽工具
  • Kazam:錄屏軟體
  • bleachbit:系統清理工具
  • draw.io:草圖繪製工具
  • Angry IP Scanner:區域網地址掃描工具

```

VSCode 下載並生成證書,自動更新

wget -O- http://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor | sudo tee /usr/share/keyrings/vscode.gpg echo "deb [arch=amd64 signed-by=/usr/share/keyrings/vscode.gpg] http://packages.microsoft.com/repos/vscode stable main" | sudo tee /etc/apt/sources.list.d/vscode.list sudo apt update && sudo apt install code -y

sudo snap install vlc redis-desktop-manager gimp darktable darwio

Studio 3T http://studio3t.com/download/ 下載

wget http://download.studio3t.com/studio-3t/linux/2022.7.2/studio-3t-linux-x64.tar.gz -o ~/Downloads

tar -C ~/Downloads -xzf ~/Downloads/studio-3t-linux-x64.tar.gz bash ~/Downloads/studio-3t-linux-x64.sh

Sublime

wget -qO - http://download.sublimetext.com/sublimehq-pub.gpg | sudo gpg --dearmor -o /usr/share/keyrings/sublimetext-keyring.gpg echo "deb [arch=amd64 signed-by=/usr/share/keyrings/sublimetext-keyring.gpg] http://download.sublimetext.com/ apt/stable/" | sudo tee /etc/apt/sources.list.d/sublime-text.list sudo apt update && sudo apt install sublime-text -y

FileZilla

sudo apt install amule filezilla kazam bleachbit -y ```

主題與擴充套件

Ubuntu擁有不遜於蘋果的美觀和可定製特性,根據個人的喜好調教工作環境可以提高不少工作效率。

擴充套件

  • Blur my shell:super+A 的那個luanch pad 的背景改為模糊(而不是純色)
  • cpufreq:gnome左上顯示當前CPU頻率,第一次點選圖示安裝效能設定工具。此時可以刪除調系統自帶的效能設定irqbalanc。記得將電腦效能改為平衡模式balance
  • caffine:禁止系統進入休眠模式
  • TopHat:系統資源使用監控。需要另外安裝gir1.2-gtop-2.0

主題

Gnome-look找自己喜歡的主題包,事先安裝gnome-tweaks / gnome-shell-extensions,通過extension-manager 開啟user-theme。以Orchis為例(方法大同小異):

  1. 克隆主題原始碼到本地
  2. 在原始碼目錄中執行install,此時指令碼會將所需要的以來選項和檔案都處理完成

第二種方法(全手動)

  1. 在主目錄下(~/)建立兩個隱藏目錄.themes.icons
  2. 下載主題資源包,解壓縮到對應的目錄中
  3. 開啟tweak選擇對應的主題

推薦關注必應牆紙,每天都會更新bing上的美圖,看中後可以直接作為桌面背景使用。

```

gnome 擴充套件管理工具

sudo apt install gnome-shell-extension-manager

gnome 主題管理

sudo apt install gnome-tweaks gnome-shell-extensions chrome-gnome-shell -y ```

命令列工具

  • htop 監控
  • neofetch:炫耀用系統概覽資訊
  • preload :分析使用者習慣,在重啟電腦後預載入應用程式,實現秒開程式的效果

sudo apt install htop neofetch preload -y

Windows 虛擬機器

Linux已經可以完成大部分的工作,但是還不是全部。有些專門的軟體也許只能在Windows作業系統下執行,面對這種情況,可以選擇VirtualBox+Windows7的組合。

http://www.virtualbox.org/wiki/Linux_Downloads

echo "deb [arch=amd64 signed-by=/usr/share/keyrings/oracle-virtualbox-2016.gpg] http://download.virtualbox.org/virtualbox/debian jammy contrib" | sudo tee /etc/apt/sources.list.d/virtual-box.list wget -O- http://www.virtualbox.org/download/oracle_vbox_2016.asc | sudo gpg --dearmor --yes --output /usr/share/keyrings/oracle-virtualbox-2016.gpg sudo apt update && sudo apt --fix-broken install && sudo apt install virtualbox-6.1

除了非得執行Windows的程式所要使用到虛擬機器外,其實大部分辦公需求可以用Android模擬器

環境設定

根據自己的使用習慣調整系統的風格:

  • 調整dock位置(螢幕下方居中)並設定隱藏(擴大顯示面積);
  • Theme的基礎顏色
  • 非常好用的桌面切換快捷鍵:Ctrl+Alt+左右方向鍵:快速切換工作桌面。Ctrl+Shift+Alt+左右方向:將當前視窗帶到新工作區
  • 快捷鍵設定 Settings -> Keyboard -> Keyboard Shortcuts,以下僅供參考:
    1. Launchers:開啟命令列 Super+`,資料夾F2,計算器F3,瀏覽器F1,開啟設定F12
    2. Navigation:隱藏所有視窗(顯示桌面)Super+M
    3. Custom Shortcuts:設定其他常用程式
  • 開啟日落護眼模式:settings-> displays->Night Light
  • 設定隨機啟動軟體(圖形介面,GNOME)Super+A,輸入startup
  • 移除不用的軟體包:sudo apt autoremove
  • 執行.AppImage檔案:sudo apt install libfuse2然後在檔案的許可權中選擇執行即可雙擊開啟。
  • 設定Termianl為半透明背景(透過介面能看到後面的視窗,有些場景下非常好用)
  • 膝上型電腦:開啟電池百分比顯示
  • 如果是高解析度螢幕,則需要開啟更細節的縮放比例,預設情況下只有成倍增加,開啟後可以25%一檔調整。
  • 設定頭像和開啟指紋
  • 設定一些命令列下的快捷命令,如:檢視各分割槽剩餘空間,檢視ip地址,從命令列中複製到剪下板;
  • 將系統同時開啟檔案數量調高到26萬

```

.zshrc 加入縮寫配置,常用命令

檢視各分割槽的剩餘空間

alias df='df -h -x squashfs -x tmpfs -x devtmpfs -x overlay'

檢視網路IP地址(ipv4)

alias ip='ip -4 -br address'

命令列下的複製到貼上板

alias cc='xclip -sel clip < '

簡化docker容器輸出標格

alias dps='docker ps --format "{{.ID}}\t{{.Status}}\t{{.Ports}}\t{{.Names}}"'

同時開啟檔案數

sudo echo "vm.max_map_count=262144" >> /etc/sysctl.conf sysctl -w vm.max_map_count=262144 ```

一些備忘

有些軟體需要手動安裝,並指定搜尋路徑。但是這些軟體又不會在desktop的軟體中出現,這是就需要稍微操作

  1. $HOME/.local/share/applications/中建立.desktop檔案,具體建立方式隨便找個別的檔案照貓畫虎即可。
  2. 執行命令 update-desktop-database $HOME/.local/share/applications/更新

修改應用程式關聯,mime檔案型別,在:/usr/share/applications/default.list

桌面程式啟動一般更新在:$XDG_DATA_DIRS/applications

命令列或一些無法設定字型的介面中的奇怪的中文字型問題解決:以管理員身份修改/etc/fonts/conf.avail/64-language-selector-perfer.conf XML檔案,將fontconfig.alias[sans-serif].prefer.family 加入一個喜歡的中文字型即可。尋找中文字型名稱可以開啟Font Manager選擇(字型同名)

```xml

sans-serif .PingFang SC serif monospace

```

總結

作為主要用於開發的電腦,毫不誇張地說,Ubuntu要比Windows強不少。且不談開發環境無限接近伺服器(用WindowsServer就當我沒說),程式的編譯速度(C語言編譯ESP32原始碼,相差3倍)、檔案系統與文字的相容性都要強於Windows。可供選擇的軟體非常豐富,不管是ARM、AMD64或X86的架構,如果會自行編譯,幾乎暢通無阻。如果習慣用命令列,那種精準的指令操作以及強大的指令碼編排會讓你再也回不去(圖形介面)。

略有不足的地方主要體現在國內的一些軟體。例如會議軟體,微信等。不過騰訊會議和釘釘有Linux版本可供下載。實在不幸還可以藉助虛擬技術和WINE來彌補缺陷。一定要說Linux最大的缺點,就是遊戲:目前可以用STEAM,但其中大部分遊戲沒Linux版本,就完全無法運行了。

有相當多的開發者在Windows10/11中安裝WSL(1或者2)包括我,但還是受制於Windows的效能需求,會被“吃掉”不少資源。如果Linux優化夠好,可以讓一臺7年前的輕便膝上型電腦仍可服役,換成Windows怕是隻能碼字。

11.jpg

22.jpg