引子

好久没在个人网站上写东西了,我都快成为成年老鸽了(笑),这次总算是在学期开始之际(假期里为啥不写呢)写点新东西。

这题目其实起得不太好,光看题目给人一种从 Windows 迁移到 Debian 的感觉。事实上是我(在半个月前)终于配好了台式机,工作环境就需要从原用 HP 笔记本上的 Ubuntu 迁移到台式机上了;另外一方面老友最近正好在忙着将工作环境从 Windows 迁移到 Ubuntu 上,想想这正好是一个总结一下工作环境配置的机会 —— 整理记录一下我的个人配置好让我以后迁移环境时有个参考;写点个人体会大概也能给初入 Linux 的用户提供一点小小的帮助。

系统选择

在此我当然是选择了 Debian,因为习惯了 deb 包体系的缘故(笑)。我用 Ubuntu 的一年多时间里还没有经历过大版本升级,所以我也不算是「深受 Ubuntu 其害」。Debian 官方源里的包比 Ubuntu 齐全很多,一般也认为比 Ubuntu 更加稳定,滚动升级的 testing 和 unstable 源也免去了大版本升级的麻烦(实用性强);另外官网也不再是 com 结尾而是 org 结尾了,支持硬件架构和内核之多也不愧为真正的「通用操作系统」(信仰足)。

至于源的选择方面,我倒是因为 testing 源内只有 firefox-esr 直接把源换成了 sid。另外并不建议直接安装 testing 源,推荐先安装 stable 源的镜像,装好驱动后再升级到 testing 或者 sid。实际使用下来也并没有什么问题,除了 apt 升级或者安装新包时不能再无脑回车了(依赖比 stable 源的软件肯定要复杂不少)。

源和包管理器(前端)

虽然说应该拥抱开源,出于性能等实际考虑闭源驱动还是要装的(当然也包括其他闭源的包),于是就需要在 /etc/apt/sources.list 末尾手动添加这一行(以 sid 为例):

1
2
3
# 当然 http://cdn-fastly.deb.debian.org/debian 也可以
# 或者比较传统的 ftp.cn.debian.org 之类的
deb http://deb.debian.org/debian sid contrib non-free

另外如果想临时安装其他源里的包,可以先修改 /etc/apt/sources.list 再使用 apt 的 -t 选项。在此以在 sid 上安装 stretch 的 ghc-mod 为例:

1
2
3
sudo echo "deb http://deb.debian.org/debian stretch main contrib non-free" >> /etc/apt/sources.list
sudo apt update
sudo apt install -t stretch ghc-mod

如果是高版本添加低版本的源的话,source.list 不用改回去也没什么;反之还是在安装完后把添加的源注释掉吧,不然某次 apt upgrade 之后发现包的版本都不对了就不太好了。

至于版本升级的话,只需要改好源后 sudo apt update && sudo apt upgrade && sudo apt dist-upgrade 就可以了,还是挺方便的。

包管理器方面还是推荐一下 aptitude 吧,毕竟在解决依赖方面还是要比 apt 好很多了。另外推荐一个前端 apt-fast,它默认调用 aria2c 多线程下载软件二进制包。在此从 ppa 安装:

1
2
3
4
5
sudo add-apt-repository ppa:apt-fast/stable
# 若导入密钥失败,则需手动导入
# sudo apt-key adv --keyserver keyserver.ubuntu.com --recv CA8DA16B
sudo apt update
sudo apt install apt-fast

安装完成后初次运行会弹出设置界面,之后就可以通过 aria2c 对软件包下载进行加速了。

硬件驱动

Debian 上面可没有 Ubuntu 那个方便的驱动管理器了,不过基本上主流硬件相关信息都可以在官方 wiki 上查到。驱动安装完成后可以通过 lsmod 命令查看加载的内核模块(驱动)。Nvidia 显卡方面我基本默认配置…… 能够正常运行吧,不过显卡高负载运行一晚上后稳定性还是稍微差了点。

Shell

zsh 和 oh-my-zsh 这一对老搭档。命令提示符主题我用了自定义的纯 ASCII 字符主题,连带 .zshrc 从笔记本上复制过来就可以用了。当初选 zsh 的一大原因是它和 bash 高度兼容,不过得把 unsetopt NOMATCH 这一行加入 ~/.zshrc 内才算是真的高度兼容。

编辑器

主力编辑器是 vim。值得一提的是 Debian 源内的「vim」是没有脚本语言支持的版本,「vim-nox」才是添加了 python3、perl、ruby 和 lua 支持的版本。拓展管理器方面我选择了 vim-plug,速度快依赖少也自带方便的命令。迁移的话复制一下 ~/.vimrc:PlugInstall 一下就可以了。

桌面环境和终端模拟器

KDE 和 i3wm。使用平铺式窗口管理器时双手不用离开键盘,方向键切换窗口也更加快速(当然前提是键盘用起来足够顺手),不过有的 GUI 软件运行起来会出现一些缩放问题,于是再选择了长得好看的 KDE。i3wm 的终端模拟器选择了同属 LXQt 项目的 QTerminal。i3wm 的迁移只需要复制(数个)配置文件即可,KDE 记得有导入导出键盘快捷键配置的功能,不过并没有实际尝试过。

字体和输入法

Qt 这一套东西虽然长得挺好看的,不过中英文混排时有字体上下无法对齐的 bug,这个问题的解决办法可以参考这篇文章。Debian 源里没有 meslo 家族字体,得手动安装。个人自用的其他字体可以用以下命令安装:

1
2
3
sudo apt install fonts-noto-cjk fonts-noto-cjk-extra # 标准显示用 CJK 字体,显示优先级在 ~/.fonts.conf 中定义
sudo apt install fonts-wqy-microhei fonts-wqy-zenhei # 处理文档时会用到
sudo apt install fonts-ubuntu-console # 包含 Ubuntu Mono,仅 testing/sid non-free 有,用于 i3status

Emoji 方面我选择了 EmojiOne Color(主要还是因为 Google 的 Noto Color Emoji 越做越难看),需要另外手动安装。

编程字体和图标方面…… 我不太用那些有点花哨的图标(当然那些 Linux 发行版图标一点都不花哨)(另外很多图标源里也没有),如果有这方面的需要的话可以参考 nerd-fonts 或者另外自行安装。

至于字体渲染,Debian 上可以使用命令 sudo dpkg-reconfigure fontconfig-config 进行一定程度的配置。个人选择分别是「Native」、「None」、「Always」和「No」。

输入法也是个挺麻烦的问题,早前因为 ibus 的哪个记不起来的问题改用了 fcitx。在通过包管理器安装 fcitx、fcitx-rime 之后就可以通过 fcitx-config-gtk3 进行一定的配置了。如果希望拼音输入支持云联想的话可以另外安装 fcitx-libpinyin 和 fcitx-module-cloudpinyin 并使用 libpinyin 输入法(rime 暂不支持这个模块);日文输入法在此选择了 fcitx-anthy 这个包,韩文输入法没记错的话就只有 fcitx-hangul 可用了。接下来不要忘记在开机自启动项内添加 fcitx,KDE 下有 autostart 配置,i3wm 下直接在 ~/.config/i3/config 最后加入 exec --no-startup-id fcitx 即可。最后还需要修改环境变量以激活 fcitx 输入法,个人的做法是在 ~/.xprofile~/.xsession 这两个文件内同时加入以下内容:

1
2
3
4
5
6
7
8
export XIM=fcitx
export XIM_PROGRAM=/usr/bin/fcitx
export XIM_ARGS=
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export QT4_IM_MODULE=fcitx
export DEPENDS="fcitx"
export XMODIFIERS="@im=fcitx"

浏览器

之前提到了最新版 firefox 只有在 sid 源内才有提供,于是可以选择按照官方教程从压缩包安装,也可以在 apt install 后面跟上 -t sid(当然要先添加 sid 源了),或者直接升级到 sid 免除后续其他类似烦恼吧(笑)。firefox 中文支持需要另外安装 firefox-l10n-zh-cn。另外,Debian 源终于可以直接安装 chromium 而不需要写成 chromium-browser 了。

另外个人习惯是按下鼠标中键后上下移动滚屏(还是很早前在用 Windows 7 时养成的),firefox 默认关闭了这一功能,需要去 about:config 下修改 general.autoScroll 项以启用这一功能。

音乐播放

同样是老朋友 mpd,具体的配置可以见之前的文章之前的文章。不过之前说到的前端 cantata 不同步问题其实是一个乌龙,是因为我没有把 cantata 设置成和后端同步。这方面还有一些小问题,之后(几年后)我可能会另外整理一篇发布。

SSH & GPG

SSH 方面复制粘贴 ~/.ssh/ 下众文件即可,当然我也没有安装 sshfs 之类的功能增强软件。

GPG 方面 sid 源内的默认安装是 gpg2,可使用以下命令转移 gpg 私钥:

1
2
3
4
5
6
7
gpg --list-secret-keys # 列出所有私钥
gpg --export-secret-keys -a $KEY_ID > keyfile.asc # 导出私钥
gpg --import keyfile.asc # 导入私钥
gpg --edit-key $KEI_ID # 修改信任等级
# 以下为 gpg shell 内命令
gpg> trust # 选择信任等级
gpg> save # 应用设置

开发依赖

CUDA

Debian 源里直接有 CUDA,这方面看上去比 Ubuntu 方便了不少。如果从源安装的话在安装显卡驱动之后只需要安装 nvidia-cuda-dev 和 nvidia-cuda-toolkit 应该就可以了。不过问题是源里面只有 CUDA 8.0 和 CUDA 9.1/9.2,而最新版 tensorflow 预编译版只支持 CUDA 9.0。那么没有办法,在官网下载 CUDA 9.0 时注意只能选择 run 版的安装包,deb 版的会引入 Ubuntu 包名的依赖然后把依赖搞乱。如果已经事先安装了驱动的话就可以跳过安装驱动的步骤,直接安装 CUDA。安装完毕后不要忘记通过包管理器安装 libcuda1 这个包,不然还是无法成功使用 tensorflow。

nodejs

Debian 源里直接有 nodejs,不过版本相对来说比较低,也没有自带 npm(当然源里的 python 也没有自带 pip)。我没有做过测试,还是直接额外添加了 nodejs 10.x.x 的源从源安装。安装完毕之后可以再通过命令 sudo npm i -g n 安装 nodejs 的版本管理工具 n,或者通过命令 sudo npm i -g yarn 安装更好用的(但是会打小报告的)包管理器 yarn。

命令行软件

mutt

命令行邮件客户端,经久不衰。网上的教程大多是 mutt+(msmtpesmtp)+(getmailfetchmail) 的配置,不过为了减少依赖(以及人懒),我直接用了 mutt 近两年引入的内建 IMAP 客户端和 SMTP 客户端。迁移方面直接把 ~/.muttrc 和(可能使用的) ~/.mutt/* 复制粘贴一下就可以了;配置文件方面可以参考英文 ArchWiki 的这个页面;增强功能方面可以参考这篇文章。另外不熟悉 mutt 键位的用户可以在任何界面按下 ? 键获取当前界面键位的详细介绍。

weechat

我暂时只用 slack,那就装上这个外加 wee-slack 就可以方便地吹水了。当然命令行是没法显示图片啊文件啊代码片段的,还得用用浏览器啊。

ncmpcpp

配置文件位置在 ~/.ncmpcpp/config。本体是用 C++ 写成的 mpd 命令行前端,算是经久不衰的软件了吧。

neofetch

命令行系统信息展示,替代 screenfetch,可以通过 stable(stretch)及之后的源直接安装。

htop & glances

两个命令行系统进程及性能监视器,替代系统自带的 top,前者会具体展示每个 CPU 核心的负载,后者会展示磁盘和网络负载。虽然说后者有点作为前者替代出场的意思,但是具体还是看个人偏好,当然两个都装也完全没问题。

nload & iftop

两个命令行网络监视器 —— 前者详细展示各网卡负载、网络流量及对应条形图;后者列出各进程网络使用情况,注意后者在 /usr/sbin 下,Debian 下需要 sudo 后才能识别。

ranger & rifle

命令行文件管理器搭档,无需详细配置即可使用,配置可继续参照英文 ArchWiki

feh & zathura

这两个软件应该就不算传统意义上的命令行软件了:前者是简化的看图工具,后者是简化的 PDF 阅读器。另外前者也是 i3wm 下设置桌面背景的工具。

scrot

截屏软件,通过配置在 i3wm 下和 PrintScreen 键绑定。具体操作是在 ~/.config/i3/config 内插入 bindsym Print exec scrot ~/Pictures/Screenshot_%Y%m%d_%H%M%S.jpg -q 100 这一行,按住 $mod+Shift+r 原地重启 i3wm 就可以了。不过使用 scrot 生成的截图不包括鼠标,如果有这方面需求的话可以选择 spectacle 或者 gimp 之类的软件。

redshift

命令行版 f.lux,可纯手动控制,不过也有 gnome-shell-extension-redshiftplasma-applet-redshift-control 两个桌面环境集成组件。在终端内输入 redshift -O 4000 可以使输出色温降低到 4000K,redshift -x 可以使输出色温还原为默认。

图形界面软件

libreoffice

唔,主体没啥好说的,只是需要另外安装 libreoffice-gtk3 或者 libreoffice-kde5 等包才能让 fcitx 输入法、系统主题等等在 libreoffice 上正常工作。

krita

位图操作软件(望天),界面比 GIMP 看起来要现代多了,sid 源里也有,很方便就能拿来用了。具体我不是干这方面的,几年以后可能有什么心得吧(笑)。

typora

清爽风格 Markdown 编辑器,需要通过以下命令安装:

1
2
3
4
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys BA300B7755AFCFAE
sudo add-apt-repository 'deb https://typora.io/linux ./'
sudo apt-get update
sudo apt-get install typora

没记错的话 Linux 下没有多少比较好看的(主打)Markdown 编辑器…… 唔,那就这个吧。

其他软件分发方式

传统包管理器之外主要就三种软件分发方式:AppImage、Snap 和 Flatpak。其中 Snap 和 Flatpak 都是在沙箱中运行的,Snap 由 Canonical 公司主导,Flatpak 由 RedHat 公司主导。两个平台上都有 Slack 客户端、Discord 客户端之类的软件,现在暂时没有多大区别,根据个人喜好安装即可。

尾声

嘛晚上写东西还是要准备点零食啊,其他暂时没有要补充的了,如果有的话还是留给下一篇吧(笑)。

另外这学期比上学期还要忙啊(望天),真不该去选什么绘图通识课的。