最近一年发现重装机器系统的频率有点高,在最近在公司又重新装了一次之后,终于痛下决心打算记录下配置的踩坑经验。
本人是在实习的时候,后端当时全员 Linux Desktop,装了 Ubuntu 16.04 之后,一直稳定工作了大半年,算是初入 Linux,当时 Ubuntu 的稳定给本人留下极深的印象。回想起来倒不是觉得他们有极客精神,而是因为穷 QAQ,没有钱支撑全员 Mac。
首先先解释为啥要 Linux Desktop,撇开开源精神之类这些意识形态的东西,个人觉得最大的好处就是对比其他系统,Linux 硬件要求最低和运行效率最高,还有不用考虑任何有关乱码或者 docker 这些形形色色的坑。
再解释为啥是 Ubuntu,而不是 Arch 等其他发行版。
闲着无聊的时候,用笔记本发流行的发行版都折腾了一遍,Arch 当时给本人留下了不少的阴影就是容易挂滚,频率且挺高。而且个人很不喜欢这个发行版的粉丝,堪称邪教,暗搓搓的优越感让本人很不适,不知道为啥玩个发行版还会有鄙视链。Arch 教众言必称 AUR,KISS,滚动发行、时刻最新,虽然牛逼得不行,但是事实上没人会在公司里用 Arch 跑服务。有一说一,Arch wiki 确实可以看看,Arch 教徒里吹 wiki 这一点上算是没得黑的。
个人是 Debian 粉。毕业前某个周末快速看了一遍 Debian 手册和 wiki 之后心里有种感觉,就是它了。个人是比较喜欢线上 Debian 的系统,本地 Ubuntu 的开发机器。Debian 系的发行版很稳定,且内核版本都很新。论真 · 开源精神 Debian 最纯正,坚持 GNU,没有商业公司驱动,都是社区用爱发电,且社区不弱于商业公司。Arch 粉丝可以说 Debian 本身不算好用,但是不能反驳他的通用性和社区,Debian 支持最多的架构,不管是树莓派这种板子,还是路由器,x86 服务器,还是个人电脑上。不管是 github 上开源的软件还是商业软件 Linux 这块基本都有 deb 包。选择了 Debian,就选择了最广大的社区。还有可以仔细观察下每年各种 Linux 杂七杂八的榜单,看一下 Debian 系的发行版占了多少。
选择 Ubuntu 是因为他比 Debian 多了很多驱动,对新手很友好,你遇到的问题在 ask ubuntu,stackoverflow 上都能搜到。如果不是很喜欢 GNOME,也可以尝试基于 Debian 的 KDE 的发行版,不再赘述。最后复读一下为什么选 Ubuntu,第一是基于 Debian,比 Centos 系内核要新的多,又比 Arch 相对稳定。对新手最友好,遇见问题在社区基本都能搜到答案。其次是对桌面来说比较省心,虽然臃肿,占用资源大,但是基本不用去额外安装什么。
推荐当前最新版本(以 20.04 为最新稳定发行版为例)的上一个版本,比如 18.04 是出到 18.04.5 以上了,优先选择 18.04 的最新版 18.04.6 。现在 20.04 出到了 20.04.4 了,个人是觉得一般发行版出到了 4 和 4 以上也可以尝试入坑了。
进入正题,安装 Ubuntu 遇到的一些问题和推荐的配置。首先个人是推荐不要过分折腾桌面的 UI 和一些美化的效果,这方面不是 Linux 真正的优点,相对来说没那么有价值,工作的时候接触过几个 Linux 高手,基本都是很原生朴素的桌面,不影响他们解决核心问题。当然如果对这方面特别有兴趣还是兴趣第一。
首先安装的时候启动盘可以选用 ventoy 这种比较新且好用的开源工具。推荐安装的时候语言选用英语,选用中文的话,路径会变成中文,有时候会出现一些意想不到的 bug,可以安装完成后把语言环境设置成中文但是记得不要把路径也改成中文。安装的时候选用最 mini 模式的安装,速度快。时区上海即可。
安装完成之后,看网络的有线无线是否有问题,一般来说是没有问题。但是这星期安装完之后发现联想 thinkbook14p 居然无线的驱动居然有问题。查了一下社区找到方案 rtw89,按照 readme 编译执行即可。如果有网卡显卡等硬件驱动问题一般搜社区都能找到方案。
首先强调一下想拥有好的工作学习体验最重要的是网速,能换源的地方一定要先都换源,其次是有一个体验良好的机场或者自建梯子。
apt 的阿里腾讯清华源这些用下来个人觉得都大差不差,都挺稳定好用的。也可以让机器自己选择,点下 Select Best Server 按钮即可。
更改完 apt 代理后,执行更新
sudo apt update
sudo apt upgrade
Golang,Rust 这些比较工作相关也需要设置好代理。
npm install -g cnpm --registry=https://registry.npmmirror.com
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
其余的代理可自行搜索。一定要有换源的概念,这些对日常开发体验提升非常重要。
其次是拥有一个稳定,体验良好的机场或者自建梯子。这里不做推荐,可以去社区或者朋友那咨询。一般现在都支持 Clash 的订阅。个人也是用的 Clash,比较推荐。
选好 Linux AMD64 分支的二进制压缩包后,这里是 1.9.0。解压好,然后记得加权限。
mv clash-linux-amd64-v1.9.0 clash # 重命名
chmod a+x clash # 加权限
./clash -d . # 启动命令,机场订阅文件(config.yaml)和 clash 同一个目录
可以自己写成脚本,每次开机自动执行启动脚本或者手动都可以。
更改 git 代理。
git config --global http.proxy 'socks5://127.0.0.1:7891'
git config --global https.proxy 'socks5://127.0.0.1:7891'
命令行有时候也需要翻墙,比如 curl 下载一些东西的时候。可以写一个脚本,每次下载前 source 一下。
export http_proxy="socks5://127.0.0.1:7891"
export https_proxy="socks5://127.0.0.1:7891"
wget 这种是不支持 socks5 代理的,可以走 tsocks 解决。
sudo apt install tsocks
更改 /etc/tsocks.conf
,把下面对应的几项更改好。
local = 192.168.1.0/255.255.255.0
server = 127.0.0.1
server_type = 5
server_port = 7891
如果 apt 有时候添加了一些国外站点的源,每次 apt update 更新的时候下载不动,也可以让 apt 走代理
sudo apt -o Acquire::http::proxy="socks5h://127.0.0.1:7891/" update
多说一句下载最新版本 Golang、 Node 的时候可以选择用 ppa 来下载,也可以直接二进制来下载,一般官方都有文档介绍,可以无脑一步一步复制粘贴下载。
比如 Golang Wiki 有专门介绍 Ubuntu ppa 下载最新版的方法。
sudo add-apt-repository ppa:longsleep/golang-backports
sudo apt update
sudo apt install golang-go
也可以使用二进制来下载。官方也有保姆教程。
rm -rf /usr/local/go && tar -C /usr/local -xzf go1.17.7.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin # 这行加进 /etc/profile
比如 Node 有二进制下载安装的 wiki 页面,也有 PPA 包管理下载的方案。
总之越是新手越要仔细看文档,不要自己想当然,不然折腾这些挫败感比较强容易退坑。
输入法这块个人推荐搜狗,百度都可以。一直用下来没什么很大的痛点。推荐搜狗的官网教程进行安装,一步一步别漏掉。
终端这块选择比较多,个人用的是深度的终端。
sudo apt update -y
sudo apt install -y deepin-terminal
个人用过其他终端也推荐 kitty,hyper。看个人习惯喜好。
选择深度终端为默认终端的方法
# ubuntu没有直接设置 deepin-terminal 为默认终端的方式,所以采用先安装其他终端,然后替换其他终端的方式
sudo apt install -y deepin-terminal terminator
echo -e "2 \n"|sudo update-alternatives --config x-terminal-emulator
sudo mv /usr/bin/terminator /usr/bin/terminator.bak
sudo ln -s /usr/bin/deepin-terminal /usr/bin/terminator
办公三件套这块推荐 wps,这块没有其他更好的选择,不过 wps 用下来没有广告也挺稳定好用。
截图软件个人使用 shutter。
sudo add-apt-repository ppa:linuxuprising/shutter
sudo apt update
sudo apt install shutter
视频播放器个人推荐 vlc。
sudo apt install vlc
解压工具用的 unar。
sudo apt install -y unar
音乐播放器推荐网抑云。
办公日常交流可以上 slack,tg。国外的 IM 软件 Linux 客户端都好用,推荐使用。
虚拟机推荐 vmware,一些 windows 上的工作比如迅雷下载之类的问题需要装个 win 虚拟机。
开发工具这块 Jetbrains Vscode Neovim 等都支持 Linux 平台,萝卜青菜各有所爱,就不再推荐。
gnome 桌面(非 gnome 请跳过)也有扩展,推荐在 chrome 上下载 GNOME Shell integration** **这个扩展。对扩展感兴趣的可以去官网上找找喜欢的。
sudo apt install gnome-shell-extensions # 安装 shell 扩展
sudo apt install gnome-tweaks # 控制 Gnome Shell 选项
截图
[模拟 dock](Dash To Dock)
监控机器
监控网络
微信拉出来单独分类是因为堪称毒瘤,印象里就在 Deepin 系统上能开箱即用。
我个人是用的这个 repo 来安装,还有一个维护更老的仓库。
wget -O- https://deepin-wine.i-m.dev/setup.sh | sh # 移植仓库添加到系统
sudo apt-get install com.qq.weixin.deepin # 安装微信
推荐把 repo 的 README 读完。
摘几个高频问题的解决方案。
sudo apt install libjpeg62:i386
# 有多种原因,主要是字体的原因
sudo apt install ttf-wqy-microhei #文泉驿-微米黑
sudo apt install ttf-wqy-zenhei #文泉驿-正黑
sudo apt install xfonts-wqy #文泉驿-点阵宋体
如果上面字体安装无效,可以尝试方法1和方法2。
最好是把 windows 的所有字体都安装一遍,参考此解决方法。
2k 4k 显示器参考此解决方案。
强烈建议不要选笔记本分辨率为 3k 的情况。。。。。至今为止没找到合适的方法
这几天碰到的问题,搜了下更新了 wine 这个都遇到了这个问题,暂时无解,解决方案是回退版本。参考此 Issue。
说个暴论,腾讯的生态在 Linux 上就是毒瘤,其他软件比如 TIM 还是腾讯会议,Linux 客户端同样是一坨屎,最近使用腾讯会议使用的时候全是噪音根本没法用,也不知道为啥官方要放 deb 出来,还不如不做。所以鼓励大家使用 Slack 或者 Tg 来聊天办公。
遇见问题多去 Issue 区搜索,一般都能搜到。链接1 链接2
我个人使用是 oh-my-zsh 和 zinit 管理插件,zsh 有很多插件提高生产力的,有兴趣的可以去 github 上挨个体验。
个人比较推荐的插件有
p10k
zsh-autosuggestions
fast-syntax-highlighting
starship
spaceship
fzf-tab
z.lua
还有一些社区的插件可以慢慢体验
比如
git
sudo
command-not-found 等。
我的 zshrc 配置:
# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
# Initialization code that may require console input (password prompts, [y/n]
# confirmations, etc.) must go above this block; everything else may go below.
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
fi
export ZSH="$HOME/.oh-my-zsh"
source $ZSH/oh-my-zsh.sh
### Added by Zinit's installer
if [[ ! -f $HOME/.local/share/zinit/zinit.git/zinit.zsh ]]; then
print -P "%F{33} %F{220}Installing %F{33}ZDHARMA-CONTINUUM%F{220} Initiative Plugin Manager (%F{33}zdharma-continuum/zinit%F{220})…%f"
command mkdir -p "$HOME/.local/share/zinit" && command chmod g-rwX "$HOME/.local/share/zinit"
command git clone https://github.com/zdharma-continuum/zinit "$HOME/.local/share/zinit/zinit.git" && \
print -P "%F{33} %F{34}Installation successful.%f%b" || \
print -P "%F{160} The clone has failed.%f%b"
fi
source "$HOME/.local/share/zinit/zinit.git/zinit.zsh"
autoload -Uz _zinit
(( ${+_comps} )) && _comps[zinit]=_zinit
# Load a few important annexes, without Turbo
# (this is currently required for annexes)
zinit light-mode for \
zdharma-continuum/zinit-annex-as-monitor \
zdharma-continuum/zinit-annex-bin-gem-node \
zdharma-continuum/zinit-annex-patch-dl \
zdharma-continuum/zinit-annex-rust
# Load powerlevel10k theme
zinit ice depth"1" # git clone depth
zinit light romkatv/powerlevel10k
zinit for \
light-mode zdharma-continuum/fast-syntax-highlighting
zinit light zsh-users/zsh-autosuggestions
zinit ice from"gh-r" as"program"
zinit light junegunn/fzf
zinit ice from"gh-r" as"program" mv"docker* -> docker-compose" bpick"*linux*"
zinit load docker/compose
zinit ice as"program" atclone"rm -f src/auto/config.cache; ./configure" \
atpull"%atclone" make pick"src/vim"
zinit light vim/vim
zinit ice as"program" pick"$ZPFX/bin/git-*" make"PREFIX=$ZPFX"
zinit light tj/git-extras
zinit light starship/starship
zinit light spaceship-prompt/spaceship-prompt
zinit light skywind3000/z.lua
zinit light Aloxaf/fzf-tab
zinit snippet OMZ::plugins/git/git.plugin.zsh
zinit snippet OMZ::plugins/command-not-found/command-not-found.plugin.zsh
zinit snippet OMZ::plugins/extract/extract.plugin.zsh
zinit snippet OMZ::plugins/sudo/sudo.plugin.zsh
zinit snippet OMZ::plugins/fzf/fzf.plugin.zsh
### End of Zinit's installer chunk
alias ls='exa --long --header --git'
alias find='fd'
alias grep='rg'
# 粘贴
pasteinit() {
OLD_SELF_INSERT=${${(s.:.)widgets[self-insert]}[2,3]}
zle -N self-insert url-quote-magic # I wonder if you'd need `.url-quote-magic`?
}
pastefinish() {
zle -N self-insert $OLD_SELF_INSERT
}
zstyle :bracketed-paste-magic paste-init pasteinit
zstyle :bracketed-paste-magic paste-finish pastefinish
export RUSTUP_DIST_SERVER="https://rsproxy.cn"
export RUSTUP_UPDATE_ROOT="https://rsproxy.cn/rustup"
# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
(( ! ${+functions[p10k]} )) || p10k finalize
上面的配置里有很多 go 和 rust 写的命令行,参考这个 repo。感兴趣的可以挨个安装体验。
推荐:
fzf (推荐完整阅读 README,极大提升效率和心情愉悦)
bat fd rg exa(这四个都是 rust 写的命令行,性能和提升都友好很多)
tldr (linux 命令行例子,碰到用的比较少的命令时很提高生产力)
可以找社区的插件挨个体验。
推荐下跟开发者比较相关的插件。
油猴插件推荐几个开发者相关的
我这一块只推荐这个人的主题,我觉得足够好看。
再啰嗦一次,个人不是很推荐花很大经历去折腾 UI。这不是 Linux Desktop 真正的优势。