Debian 系相关 

Last Update: 2024-06-16

目录

安装相关的问题

安装时找不到一些硬件的驱动

官网下载的 ISO 映像里不带 nonfree 的固件。直接把这个 ISO 写到 U 盘进行安装,可能会导致安装过程中报找不到网卡、阵列卡等硬件的驱动的错误。

写入硬盘镜像到 U 盘之后。去官网下载 nonfree 固件的压缩包,名字类似这样的 debian_9_stretch_20200209_firmware.tar.gz 。官网下载下来的名字是 firmware.tar.gz

把里面的文件解压到 U 盘的 firmware 文件夹下。之后按照正常步骤安装。

sudo apt install -y apt-transport-https 装好包以后就能支持 https 传输协议了。

系统日志报无法加载模块

DMS 模块无法加载:

Jan 30 22:55:46 j4105 kernel: i915 0000:00:02.0: firmware: failed to load i915/glk_dmc_ver1_04.bin (-2)
Jan 30 22:55:46 j4105 kernel: firmware_class: See https://wiki.debian.org/Firmware for information about missing firmware
Jan 30 22:55:46 j4105 kernel: i915 0000:00:02.0: Direct firmware load for i915/glk_dmc_ver1_04.bin failed with error -2
Jan 30 22:55:46 j4105 kernel: i915 0000:00:02.0: [drm] Failed to load DMC firmware i915/glk_dmc_ver1_04.bin. Disabling runtime power management.
Jan 30 22:55:46 j4105 kernel: i915 0000:00:02.0: [drm] DMC firmware homepage: https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/i915

搜索 Debian 软件包的内容 ,可以找到 glk_dmc_ver1_04 这个文件在 firmware-misc-nonfree 包中。

apt install firmware-misc-nonfree 可以解决问题。

系统日志报无法加载驱动

比较常见的是螃蟹网卡没有驱动的问题。

$ dmesg | grep firmware
[ 178.948233] r8169 0000:03:00.0: firmware: failed to load rtl_nic/rtl8168e-3.fw (-2)
[ 178.948252] r8169 0000:03:00.0: Direct firmware load for rtl_nic/rtl8168e-3.fw failed with error -2
[ 178.948257] r8169 0000:03:00.0 enp3s0: unable to load firmware patch rtl_nic/rtl8168e-3.fw (-2)

non-free 源中的 firmware-realtek 包里包含了多数螃蟹网卡的驱动,使用 apt search firmware-realtek 查看包的详细信息, Description 部分描述了包内都有哪些驱动。

如果这个包内包含的驱动和网卡型号符合, apt install firmware-realtek 安装后重启系统,网卡驱动就能正常加载了。

系统日志报需要升级 microcode

[Firmware Bug]: TSC_DEADLINE disabled due to Errata; please update microcode to version: 0xb2 (or later)

出现这个问题时,升级 BIOS 才是比较靠谱的做法。但在无法更新 BIOS 的时候,使用 apt install intel-microcode (contrib 和 non-free 软件源内的包) 也可以更新 microcode,但重装系统之后 microcode 又回到了旧版。

包管理问题

本地软件源

安装系统用的 ISO 文件可作为本地软件源,在断网情况下提供部分软件的安装包。

执行 sudo mount -o loop </path/to/debian.iso> </path/to/mount_point> 挂载 ISO 文件。

执行 sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak 备份源列表。

然后 sudo vim /etc/apt/sources.list 加入如下内容:

deb [trusted=yes] file://</path/to/mount_point> <system_name>

apt 本地源配置完成。

网络软件源

先给个例子,清华大学的 Debian Buster 软件源会有如下内容:

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security buster/updates main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security buster/updates main contrib non-free

源码镜像一般不用,注释了也没有问题。

在使用网络软件源升级系统后,系统内部可能会留下一些不再有用的链接。

sudo symlinks -r /usr | grep dangling 查找 /usr 目录下不再有用的链接。

sudo symlinks -r -d /usr 删除 /usr 目录下不再有用的链接。

backports 软件

注意第 6 7 两行:

deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free

它表示使用 backports 源,即 反向移植 的内容。

据 Debian 官方说法,这个 backports 里的包多数来自于 Debian 的 testing 版本。少数来自于 unstable 版本。

这些软件包经过调整和重新编译后可以在 Debian 稳定版中使用,但依旧存在与其他属于 stable 版本的软件发生冲突的可能。

谨慎使用这个源吧。

proposed-updates 软件

官方源也有一类软件放在 <version_name>-proposed-updates 下。

Debian 大版本 release 后还有小版本的更新,比如 10.1, 10.2, 10.3 等,这些 release 被称为 point release

这个 proposed-updates 的目的是为下一次的 point release 做准备工作。

也就是说,软件包下一次 point release 要发布的更新先放在 proposed-updates 中,积累到一定的量之后正式发布 point release。

使用 proposed-updates 软件源可以提前更新下个小版本的软件,也就只对软件更新的早晚产生影响。

所以,这个源可用可不用。

dpkg

查看安装状态

dpkg -l | grep '<package_name>' 查看软件安装状态。

这时一般会出现有两个 (或者三个) 字母组成的 flag:

  1. 第一个字母: 所需的状态 desired package state (selection state)
    • u 未知 unknown
    • i 安装 install
    • r 删除/卸载 remove / deinstall
    • p 清除 (也删除配置文件) purge (remove including config files)
    • h 保持 hold
  2. 第二个字母: 当前包状态 current package state
    • n 未安装 not-installed
    • i 已安装 installed
    • c 仅安装配置文件 config-file` (only the config files are installed)
    • U 解包 unpacked
    • F 由于某种原因配置失败 half-configured (configuration failed for some reason)
    • h 由于某种原因安装失败 half-installed (installation failed for some reason)
    • W 等待来自另一个包的触发器 triggers-awaited (package is waiting for a trigger from another package)
    • t 已被触发 triggers-pending (package has been triggered)
  3. 第三个字母通常情况下是一个空格,看不到: 错误状态 error state
    • R 包破损,需要重新安装 reinst-required (package broken, reinstallation required)

安装与卸载

执行 sudo dpkg -i <package-file-name>.deb 完成安装。这里的 -i 表示 install。

执行 sudo dpkg -r <package-file-name> 移除软件包。

执行 dpkg -l | grep '<package-file-name>' 查看包安装状态。 rc 表示软件包已经删除 Remove,但配置文件 Config-file 还在。

执行 sudo dpkg -P <package-file-name> 彻底删除软件包。包括配置文件。

执行 sudo dpkg -l | grep "^rc" | awk '{print $2}' | xargs sudo dpkg -P 删除所有 rc 包的残余配置文件。

显示最近安装的软件包

Linux 系统保存了所有发生事件的日志。可以参考最近安装软件包的日志。

缓存清理

清理 apt 缓存文件

Debian 系系统在 /var/cache/apt/archives 中保留 deb 包的缓存文件。

sudo du -sh /var/cache/apt 查看当前缓存文件的空间占用情况。

sudo apt-get autoclean 清理过时的软件包。

sudo apt-get clean 移除所有 apt 缓存中的软件包。

上两条命令清理得不是非常干净,会残留 kb 级的缓存,但不过如果很久没清理的话,效果很好。

删除不被依赖的包

sudo apt-get autoremove 移除系统不再需要的依赖库和软件包。

被删除的这些包是为了满足某个包的依赖关系,被自动安装的,此时已不再需要。这条命令也会删除系统中的 linux 旧内核 (有更精确的操作方法,但是操作比较麻烦,这里略过)。

命令执行后,配置文件依旧在相应位置。

sudo apt-get autoremove --purge 可以同时清除软件包和软件的配置文件。

清除残余配置文件

dpkg --list | grep "^rc" 查看残余的配置文件。结果是这样的:

mgz@albb:~$ dpkg --list | grep "^rc"
rc  linux-image-4.19.0-10-amd64    4.19.132-1                   amd64        Linux 4.19 for 64-bit PCs (signed)
rc  linux-image-4.19.0-9-amd64     4.19.118-2+deb10u1           amd64        Linux 4.19 for 64-bit PCs (signed)
rc  ntp                            1:4.2.8p12+dfsg-4            amd64        Network Time Protocol daemon and utility programs

rc 表示软件包已经删除 R emove,但配置文件 C onfig-file 还在。

执行 sudo dpkg -l | grep "^rc" | awk '{print $2}' | xargs sudo dpkg -P 删除所有 rc 包的残余配置文件。

字体相关问题

安装字体

要在 Linux 上安装字体,只要把字体文件放入对应目录,再用 fc-cache 命令生成对应字体的信息缓存即可。这个命令通常搭配 -rv 参数,其中 -r 表示忽略已有缓存信息,重新生成所有的缓存文件;-v 参数表示显示命令执行的详细过程。

fc-cache -rv 命令执行过程中通常有以下输出:

...
<$HOME>/.local/share/fonts
/usr/local/share/fonts
/usr/share/fonts
<$HOME>/.fonts
/usr/share/fonts/X11
/usr/share/fonts/cMap
/usr/share/fonts/cmap
/usr/share/fonts/opentype
/usr/share/fonts/truetype
/usr/share/fonts/type1
/usr/share/fonts/X11/100dpi
/usr/share/fonts/X11/75dpi
/usr/share/fonts/X11/Type1
/usr/share/fonts/X11/encodings
/usr/share/fonts/X11/misc
/usr/share/fonts/X11/util
/usr/share/fonts/cmap/adobe-cns1
/usr/share/fonts/cmap/adobe-gb1
/usr/share/fonts/cmap/adobe-japan1
/usr/share/fonts/cmap/adobe-japan2
/usr/share/fonts/cmap/adobe-korea1
/usr/share/fonts/opentype/urw-base35
/usr/share/fonts/truetype/dejavu
/usr/share/fonts/truetype/droid
/usr/share/fonts/truetype/liberation
/usr/share/fonts/truetype/noto
/usr/share/fonts/truetype/vlgothic
/usr/share/fonts/truetype/wqy
/usr/share/fonts/type1/urw-base35
/usr/share/fonts/X11/encodings/large
...

第 1 4 两行指出,用户可以把字体文件放在 ~/.local/share/fonts 和 ~/.fonts 中 (通常使用前者)。所以,安装字体只要把字体文件放在 ~/.local/share/fonts 或 ~/.fonts 中,再执行 fc-cache -rv 生成字体缓存,就算完成字体安装。