Ubuntu 22.04.1 LTS Desktop 生产力环境搭建
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
一致,例如install
,update
和upgrade
。如果选用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步开始:
- Settings -> Region & Language -> Manage Installed Languages;
- Install / Remove Languages,第一次开启会安装依赖;
- 然后勾选Chinese (Simplified);
- 安装
fcitx
>sudo apt install fcitx -y
(--fix-missing) - 第1步的方式打开语言支持,Keyboard选择输入框架
Fcitx4
- 删除ibus输入法
sudo apt remove --purge ibus
- 安装搜狗输入法
sudo dpkg -i ~/Downloads/sogoupinyin_4.xxx.deb
- 安装依赖
sudo apt install libqt5qml5 libqt5quick5 libqt5quickwidgets5 qml-module-qtquick2 libgsettings-qt1
- 重启系统,并右上角看到键盘图标\
- 选择
Configiure
,进行配置 - 在
Input Method Configuration
对话框的下面,点+
- 弹出
Add input method
对话框,去掉默认选中的Only Show Current Language
选项,在搜索框中输入sogou
- 一路OK和关闭。
智能拼音
- Settings -> Region & Language - > Manage Installed Languages
- 确保有
汉语(中国)
已经安装,没有安装点Install / Remove Languages
添加 - 确保Keyboard input method system是
IBus
- Settings -> Keyboard -> Input Sources 添加
- 选择
Chinese
,在子选项中选择Chinese (Intelligent Pinyin)
如果觉得智能拼音的UI过于单调,或希望调整字体大小,可以通过Extension Manager
找IBus Tweaker
的插件,对IBus
输入法配置。
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为例(方法大同小异):
- 克隆主题源代码到本地
- 在源代码目录中执行install,此时脚本会将所需要的以来选项和文件都处理完成
第二种方法(全手动)
- 在主目录下(~/)建立两个隐藏目录
.themes
和.icons
- 下载主题资源包,解压缩到对应的目录中
- 打开
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,以下仅供参考:
Launchers
:打开命令行 Super+`,文件夹F2,计算器F3,浏览器F1,打开设置F12Navigation
:隐藏所有窗口(显示桌面)Super+MCustom 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的软件中出现,这是就需要稍微操作
- 在
$HOME/.local/share/applications/
中创建.desktop
文件,具体创建方式随便找个别的文件照猫画虎即可。 - 执行命令
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
```
总结
作为主要用于开发的电脑,毫不夸张地说,Ubuntu要比Windows强不少。且不谈开发环境无限接近服务器(用WindowsServer就当我没说),程序的编译速度(C语言编译ESP32源代码,相差3倍)、文件系统与文本的兼容性都要强于Windows。可供选择的软件非常丰富,不管是ARM、AMD64或X86的架构,如果会自行编译,几乎畅通无阻。如果习惯用命令行,那种精准的指令操作以及强大的脚本编排会让你再也回不去(图形界面)。
略有不足的地方主要体现在国内的一些软件。例如会议软件,微信等。不过腾讯会议和钉钉有Linux版本可供下载。实在不幸还可以借助虚拟技术和WINE来弥补缺陷。一定要说Linux最大的缺点,就是游戏:目前可以用STEAM,但其中大部分游戏没Linux版本,就完全无法运行了。
有相当多的开发者在Windows10/11中安装WSL(1或者2)包括我,但还是受制于Windows的性能需求,会被“吃掉”不少资源。如果Linux优化够好,可以让一台7年前的轻便笔记本电脑仍可服役,换成Windows怕是只能码字。