那些年我们踩过的坑--archlinux

这篇文章是我折腾 archlinux 时遇到的问题汇总。由于本人比较菜,遇到的问题贼拉多,且我老是在折腾的时候忘记时间,常常入迷,很多问题在我解决之后就给忘了,也懒得记了,所以这篇文章只是我遇到的问题的子集,希望能帮助到大家。

这篇文章的部分内容是我在 2021 年左右第一次折腾 archlinux 的时候记录的,不知道还对不对,哈哈。最近我在学渗透,就想给自己整一个武器库,于是翻出了已经退役三个月的19年买的小新14。对于一个年迈的轻薄本来说,运行 windows 可能太过勉强,所以我又踏上了折腾 arch 的道路….

21年的内容我会进行标注,还请自行分辨。所有的尝试我都会保留下来,也算是对当时想法的记录,劳烦大家自己寻找想要的答案哈,嘿嘿

温馨提示: 请善用 ctrl+f

标题前的 “已)” 表示已解决

废话结束,正文开始。

hacking for fun.


已)使用 blackarch 安装脚本装完系统后无法启动

问题详细描述:使用 blackarch 安装脚本 blackarch-install 装完系统,拔出启动盘之后无法启动,甚至无法进入引导。

解决:八成是在分区的时候把固件和分区表没匹配到一块。一般 UEFI – GPT,DOS – MBR

这里建议不要直接通过镜像装 blackarch,可以先装个 archlinux 熟悉一下,再引入 blackarch 软件库即可。

我上来就装了一个完全版的包含所有工具的 blackarch,倒腾了半天好不容易进到系统,结果一更新一堆依赖问题,软件既装不上也卸不成。直接重开。

已)iwd 打不开

1
2
systemctl status iwd.service
systemctl start iwd.service

启动一下 iwd.service如果某个服务没 start,那么从理论上讲此服务应该很难打开emmm

已)找不到网卡

一般使用 ip link [interface] up|down 来启动/禁用网络接口/网卡 ([interface] 表示你的网卡名字,如 eth0,wlan0) 。

但如果你 ip link 没显示网卡,那应该是没装相关驱动。

1
pacman -S linux-firmware

我遇到的情况是本来网卡好好的,突然给掉了,装了驱动之后也没事了。难道我之前忘记装驱动了,那它之前是咋跑的?emmm

无法连接 BUPT-mobile

已)xfce/gnome 屏闪、卡顿

我先装的 xfce,但是进入图形环境之后老时不时闪一下,其每次进入 xfce 时老是乌漆嘛黑一片,需要等个二十来秒,有时后还不显示菜单栏。之后换了 gnome 还是这个问题。

解决:八成是 intel, AMD, NVIDIA 驱动没装,或者没装对版本。具体自己上网搜一下吧。

已)gnome 无法使用蓝牙

问题描述,蓝牙这个开关按不按没反应,估计八成又是那个驱动没装?

md,安装 archlinux 的时候忘记装蓝牙模块了,emm

1
2
sudo pacman -S bluez bluez-utils
systemctl start bluetooth.service

连接蓝牙耳机后,声音一卡一卡的

已)使用 blackarch 库一直提示密钥不正确

我在第一次用 blackarch 库的时候挂了代理,导致密钥一直配不上。后面把代理关了就没事了。

官方给出的解决方案是:Why do I get invalid keyring signature?

已)archlinux 使用 pip 报错:error: externally-managed-environment

运行 dirsearch 时报错

1
2
3
4
5
➜  ~ dirsearch
Traceback (most recent call last):
File "/usr/share/dirsearch/dirsearch.py", line 23, in <module>
from pkg_resources import DistributionNotFound, VersionConflict
ModuleNotFoundError: No module named 'pkg_resources'

依赖问题,我使用 pip 安装了一下 requirements.txt 里面的包,但是报错了,报错信息如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
➜  dirsearch pip install -r requirements.txt
error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try 'pacman -S
python-xyz', where xyz is the package you are trying to
install.

If you wish to install a non-Arch-packaged Python package,
create a virtual environment using 'python -m venv path/to/venv'.
Then use path/to/venv/bin/python and path/to/venv/bin/pip.

If you wish to install a non-Arch packaged Python application,
it may be easiest to use 'pipx install xyz', which will manage a
virtual environment for you. Make sure you have python-pipx
installed via pacman.

note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.

大概意思就是说在 archlinux 下还是尽量使用 pacman 包管理工具,为了防止包管理过于混乱,下载 python 包使用命令:sudo pacman -S python-[package name],这里特指 Python3 的包,具体参看官网说明说明:Python package guidelines

下载特定版本的包:sudo pacman -S python-[package name]=[version]

#todo

  • 当然,也能使用虚拟环境,这个还没学

回到运行 dirsearch 的那个问题,“ModuleNotFoundError: No module named ‘pkg_resources’”,简单 google 一下,发现是 python setuptools 包的问题,链接:No module named pkg_resources

1
sudo pacman -S python-setuptools
1
2
3
4
➜  ~ dirsearch --version
/usr/share/dirsearch/dirsearch.py:23: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
from pkg_resources import DistributionNotFound, VersionConflict
dirsearch v0.4.3

咋又有新问题了,裂开。

rofi -show run 无法输入

已)钉钉无法输入中文

需要先在别的输入框中激活输入法,我的快捷键是 ctrl+space,激活了之后就可以在聊天框里输入中文了。

方法略蠢,但好使。

======== 2024.01.22 更新 =========

用着用着就好了,我也不知道为啥。

已)zsh 终端和 vim 下都不能输入中文, bash 可以

这次折腾,我直接装了 facix5,没遇到这个问题,虽然忘记了曾经遇到的问题和解决办法,但冥冥之中我选择了正确的路,这难道就是折腾的意义?爱了。

======== 2021 start =========

经过进一步折腾发现,无法输入中文并不是因为 zsh 和 bash,而是终端模拟器的问题,在 gnome-terminal 下的 bash 和 zsh 里面均可以使用中文输入法,而在 alacritty( 我经常用的一个终端 ) 下就不行。

==> alacritty 下无法输入中文

查了半天发现,好像是环境变量的问题(虽然我之前也怀疑是这个问题,但是不敢相信T_T),解决环境问题感觉有点麻烦,明明配的都一样为啥就是不行呢,直接人没了

所以解决这个问题的一种办法是将两种终端下的环境变量进行对照,看看那些环境变量在 alacritty 下没有而在 gnome-terminal 下有,然后加上就行。

稍微对照了一下两者的环境变量,发现差别还是蛮大的,反正直接人看傻了。

然后果断放弃,卸掉 fcitx,不会卸载的朋友不要慌,我在下面提供了一条命令,包教包会。当然,是在 archlinux 下的。

1
sudo pacman -Rsc fcitx

直接用最狠的卸载方法,把 -c 都给他安排上。

就这?就这?我 timi 卸了 fcitx 咋用输入法呀,这条命令还把和 fcitx 有关的包卸载的一干二净,我 timi 直接 我 timi…..

不要慌,这不还没完呢吗,放弃 fcitx 拥抱 fcitx5,下个 fcitx5 就没事了。

(完)

:好家伙,早给我说最后一句话不就完了吗。。。

当然,如果能从环境变量解决这个问题更好,以后有时间再说吧,我现在太菜了,直接搞环境变量有点劝退。

就吃了个饭,他又不行了

还是老问题,在除了 alacritty 的其他地方都可以使用中文输入法,说明 fcitx5 是开启着的。

贴一个运行 fcitx5 的返回结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
I2021-06-04 19:18:00.426472 instance.cpp:1371] Override Enabled Addons: {}
I2021-06-04 19:18:00.426521 instance.cpp:1372] Override Disabled Addons: {}
I2021-06-04 19:18:00.428514 addonmanager.cpp:189] Loaded addon wayland
I2021-06-04 19:18:00.431752 addonmanager.cpp:189] Loaded addon xcb
I2021-06-04 19:18:00.433775 addonmanager.cpp:189] Loaded addon quickphrase
I2021-06-04 19:18:00.434194 addonmanager.cpp:189] Loaded addon clipboard
I2021-06-04 19:18:00.434375 addonmanager.cpp:189] Loaded addon imselector
I2021-06-04 19:18:00.441746 addonmanager.cpp:189] Loaded addon keyboard
I2021-06-04 19:18:00.442009 addonmanager.cpp:189] Loaded addon waylandim
I2021-06-04 19:18:00.442199 addonmanager.cpp:189] Loaded addon unicode
I2021-06-04 19:18:00.442928 addonmanager.cpp:189] Loaded addon pinyinhelper
E2021-06-04 19:18:00.443962 addonloader.cpp:57] Failed to create addon: dbus Unable to request dbus name. Is there another fcitx already running?
I2021-06-04 19:18:00.444088 addonmanager.cpp:295] Unloading addon pinyinhelper
I2021-06-04 19:18:00.444131 addonmanager.cpp:295] Unloading addon unicode
I2021-06-04 19:18:00.444169 addonmanager.cpp:295] Unloading addon waylandim
I2021-06-04 19:18:00.444214 addonmanager.cpp:295] Unloading addon keyboard
I2021-06-04 19:18:00.444397 addonmanager.cpp:295] Unloading addon imselector
I2021-06-04 19:18:00.444417 addonmanager.cpp:295] Unloading addon clipboard
I2021-06-04 19:18:00.444449 addonmanager.cpp:295] Unloading addon quickphrase
I2021-06-04 19:18:00.444684 addonmanager.cpp:295] Unloading addon xcb
I2021-06-04 19:18:00.444852 addonmanager.cpp:295] Unloading addon wayland

注销重进一下就解决了,我人傻了。还是没搞清楚来龙去脉,只是现在暂时能用。这怕就是码农的生存之道吗。

======== 2021 end =========

已)vim 无法和系统剪切板交互

这次直接装了 neovim。其实应该可以 ctrl+shift+cctrl+shift+v 直接复制粘贴吧,这两个是在终端下复制粘贴的快捷键。

======= 2024.01.08 更新 ======

直接 ctrl+shift+c 好像不太行,可以看这篇 stackoverflow

在 neovim 中使用命令::checkhealth provider,在没有配置剪切板工具的时候显示如下内容:

1
2
3
4
## Clipboard (optional)
- WARNING: No clipboard tool found. Clipboard registers (`"+` and `"*`) will not work.
- ADVICE:
- :help clipboard

安装 xclipsudo pacman -S xclip,再次 :checkhealth provider

1
2
Clipboard (optional) ~
- OK Clipboard tool found: xclip

选中内容,右键即可复制,可以配置快捷键,如下图所示。不过现在我用 nvim 用的还不太多,就先到此为止了。

======== 2021 start =========

简单来讲就是vim中复制的东西只能在vim中粘贴(y键 & p键),不能在vim之外的其他地方粘贴,没法共享系统剪切板 (clipboard)。

这个问题困扰了我很久,最后发现是 clipboard 的问题,通过下面这条命令可以查看你的vim是否支持 clipboard,如果不支持的话,咋配置都没用

1
vim --version | grep clipboard

如果你的 clipboard 前面显示的是 - 的话,说明你的 vim 不支持 clipboard。这个时候就考虑换个 vim 吧,我直接装了 gvim

在 archlinux 下安装 gvim

1
sudo pacman -S gvim

然后,然后?就没然后了,问题解决。

至于为什么,等学到 vim 寄存器再说吧。

======== 2021 end =========

md,两年了,vim 寄存器还没学

已)在终端下 source ~/.vimrc 报错

一个脑残问题emmm,想起两年前在这个问题上,浪费了那么长时间,我这心里就嘎嘎难受。这个问题已经印在我脑子里了,不过最近回看又知道了 :source $MYVIMRC,学了+忘了=没学..

======== 2021 start =========

今天我兴冲冲地配置了老半天我的 vim, 配置完又兴冲冲地在 zsh 终端下输入source ~/.vimrc,我都想好运行完的结果:一切都朝着预想滴方向进行,然后兴冲冲地在 vim 下快乐地 coding

于是,我轻轻地按下了 enter 键,直接给我报了几个错,瞬间人呆了,傻了,疯了,没了,这咋还报错了呢,啊啊啊啊!!!

ps: 我 21 年这么憨的吗 emmm

1
2
3
4
5
6
7
.vimrc:1: 权限不够:
.vimrc:2: command not found: ==> General\n\n
.vimrc:7: command not found: Sets line number\nset nu
.vimrc:18: 没有那个文件或目录: leader
.vimrc:20: bad math expression: operand expected at ','
.vimrc:22: command not found: Move quickly\nnnoremap J 6j\nnnoremap K 5k\n\nset smarttab
.vimrc:27: = not found

解决方法

source ~/.vimrc 相当于是把 ~/.vimrc,中的每一条命令都在终端 zsh 或者 bash 下执行一遍,所以当然不符合 vimscript 的语法(source .zshrc 玩多了,脑子有点不好使。。。)。

正确方法应该是在 vim 中使用 :source $MYVIMRC 刷新配置文件,或者退出来重进一下就行了。

======== 2021 end =========

已)配置 alacritty,有时候按退格键却变成空格的问题

暂时还没有使用 ssh,还没遇到这个问题。

======== 2021 start =========

这个问题是我在 alaritty 终端使用 ssh 连接到我的服务器上出现的,连接到服务器的终端之后就出现了这个问题,而在 gnome-terminal 下连接就好好的。

解决办法

这个方法是在 github 上这个 alacritty 项目的 issue 下给的。

将 alacritty.yml 配置文件中的实体(entry)env 下的环境变量 $TERM 设置成 xterm-256color

至于原因嘛,还没搞明白

======== 2021 end =========

已)alacritty 需要使用 TOML 配置

alacritty 在 0.13 版本之后使用 .toml 配置文件格式,有关 TOML 的内容可以戳 –> 这里

直接 alaritty migrate 就可以把原来的配置文件 alacritty.yml 转换成 alacritty.toml。当然,前提是 yml 配置的没问题,不像某菜鸡,配置文件写了个错错都没发现(我就说咋改不改配置 alacritty 都没反应呢)。一直到 alaritty migrate 才发现原来的配资都是错的 emmm

更详细的配置说明参看 官方配置文档

alacritty 配滚动条

已)flameshot 截屏软件在gnome下无法使用

问题描述 :

1
2
3
4
5
caishao@archlinux  ~  flameshot gui
Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway.
flameshot: error: Unable to capture screen
flameshot: error: Unable to capture screen
flameshot: info: Screenshot aborted.

解决方法:

使用 gnome-terminal 终端运行可以使用 flameshot gui

配置快捷键所使用的终端命令,我配置的是 Alt+a,跟微信截图一样:

1
2
gnome-terminal -- flameshot gui
gnome-terminal -- bash -c "flameshot gui"

但在截屏的时候会先出现一个 gnome-terminal 窗口,之后才会运行 flameshot gui

1
gnome-terminal -- bash -c "sleep 2; flameshot gui"

可以先让终端睡 2 秒,我们好调整一下窗口的位置。emmm 要被这法子蠢哭了。

======= 2024.01.08 更新 ======

发现了一个比较可行的解决方法(对我来说):因为我平常是 笔记本+外接显示器,截图的时候把鼠标移到想要截图的另一块屏幕上,就不会被弹出的 gnome 终端窗口影响啦。

(方法有点蠢)

不过有一说一,flameshot 功能确实强大,简单好用。

已)archlinux 安装 deb 文件

安装 nrich 时,发现只有 deb 文件。

使用 debtap 转换 deb 包,然后使用 pacman 安装。尽量不要使用 dpkg,可能会与 pacman 冲突,进而损坏 archlinux 系统。参考:在archlinux上安装deb包

1
2
3
4
yay -S debtap   # 通过 AUR 安装 debtap
sudo debtap -u # 更新debtap数据库
debtap xxx.deb # 使用debtap转换deb包
sudo pacman -U xxx.pkg

nrich 真难用啊,早知道不装了。

已)ranger 提示 /bin/sh: line 1: vim: command not found

问题描述:

1
2
➜  ~ ranger
/bin/sh: line 1: vim: command not found

解决方法:

这个问题是因为在使用 ranger 时未更改默认编辑器,默认的编辑器是 /usr/bin/vim 但我使用的是 nvim,默认编辑器通过 $EDITOR 修改。

仅修改当前用户的 $EDITOR,在 ~/.zshrc 中添加一行(如果是 bash 用户,修改 ~/.bashrc):

1
export EDITOR=/usr/bin/nvim

修改所有用户的 $EDITOR,在 /etc/profile.d 目录下创建 editor.sh 并写入:

1
export EDITOR=/usr/bin/nvim

系统启动时会先解析 /etc/profile.d 下的 shell 文件所配置的环境变量,之后再读取用户目录下的配置。

应用程序安装

腾讯会议

1
yay -S wemeet-bin

钉钉

1
yay -S dingtalk-bin

微信

1
yay -S com.qq.weixin.spark