ArchLinux 使用记录
ArchLinux 使用记录
零
强烈推荐阅读:Arch Linux 安装使用教程 和 archlinux 简明指南 。 这两本书都是内容非常详尽的 Arch Linux 安装和使用教程,包括Arch Linux安装、基本配置、日产使用、常用软件安装等内容,可以帮助初学者解决很多问题。
笔者本人使用笔记本单固态应硬盘安装windows10 + ArchLinux双系统,推荐按照 archlinux 简明指南 的安装步骤进行安装。
安装过程需要注意:
清楚你即将使用的命令做了什么,不要一味回车回车…
按照教程的大纲,分模块进行,分清每一块做了什么,不要一行一行,遇见一个敲一个,先通读知晓这一块是做什么之后,返回来按照自己需要的去做。
不要过分地“多线程”操作试图节省时间,稳中前进,不出错就是最快的。
仔细对照好输入的命令是否正确,确认每个命令的结果是否符合预期。
Arclinux 中文论坛 众多 Archlinux 使用者汇集的地方,同时有着较为官方的信息和软件包,很多问题可以在这里解决。
部分命令记录
1 | sudo fdisk -l # 查看磁盘和分区信息 |
以下命令需要安装后才能使用:
1 | tree -A 使用ASNI绘图字符显示树状图而非以ASCII字符组合 |
##Pacman包管理:
1 | sudo pacman -Syu # 升级系统 |
系统服务的操作与介绍
Linux 系统中运行着各种服务,你需要掌握查询,变更服务状态的方式。同时对创建服务最好也有大致的了解。这里讲述命令systemctl
的用法。以 dhcpcd 为例
1 | systemctl start dhcpcd # 启动服务 |
换源-阿里云
编辑文件/etc/pacman.d/mirrorlist
:
1 | sudo vim /etc/pacman.d/mirrorlist |
在镜像源列表最顶端添加:
1 | Server = http://mirrors.aliyun.com/archlinux/$repo/os/$arch |
1 | sudo pacman -Syy && sudo pacman -S archlinuxcn-keyring # 安装 archlinuxcn-keyring 包导入GPG key |
安装yay
1 | sudo pacman -S yay |
设置某个命令不再需要 sudo 输入密码
1 | sudo vim /etc/sudoers # 编辑配置文件 |
常见问题及其解决
使用yay命令时报错:
1
搜索 AUR 时出错: response decoding failed: invalid character '<' looking for
- 解决:
1
yay --aururl "https://aur.archlinux.org" --save
- 解决:
Telegram无法登陆:
- 解决:
SETTING中添加地址,使用代理,port选择代理所使用端口号。
- 解决:
连接显示器无法使用:
- 解决:
根据Linux 安装使用教程中显卡驱动所描述进行即可。
- 解决:
VSCode无法唤出外部终端:
- 解决:
.vscode
文件中设置启用外部终端,在settings.json
文件中加入”terminal.external.linuxExec”: “/usr/bin/konsole”, “”内指要调用的终端bin/konsole。
- 解决:
在升级系统(syu)时,出现以下内容:
1
2
3
4
5
6
7
8错误:python-markdown: 来自 "Caleb Maclennan <alerque@archlinux.org>" 的签名是勉强信任的
:: 文件 /var/cache/pacman/pkg/python-markdown-3.3.6-1-any.pkg.tar.zst 已损坏 (无效或已损坏的软件包 (PGP 签名)).
打算删除吗? [Y/n]
错误:trash-cli: 来自 "Alexander Epaneshnikov <alex19ep@archlinux.org>" 的签名是勉强信任的
:: 文件 /var/cache/pacman/pkg/trash-cli-0.21.10.24-1-any.pkg.tar.zst 已损坏 (无效或已损坏的软件包 (PGP 签名)).
打算删除吗? [Y/n]
错误:无法提交处理 (无效或已损坏的软件包)
发生错误,没有软件包被更新。解决:
终端输入:
sudo pacman-key --init && sudo pacman-key --populate && sudo pacman -Syyu
可能的方法:
sudo pacman -S archlinux-keyring
使用Docker
安装:
1
2
3
4
5
6
7sudo pacman -S docker # 安装Docker -Ss搜索Docker软件包
sudo systemctl enable docker.service # 开启Docker开机自启动服务
sudo systemctl start docker.service # 启动Docker服务
# 安装好docker后自动建立了docker组,不需要自己添加docker组,只需要把当前工作用户加入docker组即可
sudo gpasswd -a $USER docker # 把工作用户加入Docker组,避免使用root账号工作
#重启系统生效
sudo systemctl disable docker.service # 关闭开机自启动服务获取镜像:
1
2
3
4
5
6
7
8
9
10
11docker pull archlinux # 下载镜像
docker image ls # 列出镜像列表
docker ps -a # 列出容器列表
docker run -it archlinux /bin/bash # 用所给镜像启动一个新的容器
docker run --rm -it --net=host gpt-academic # 用所给镜像启动一个新的容器
docker exec -it <CONTAINER_NAME> bash # 进入一个正在运行的docker(在容器内部创建一个子进程)
docker stop [contaionerID] # 终止镜像
docker rmi $(docker images -q) # 删除所有镜像
docker stop $(docker ps -aq) # 停止所有容器
docker container rm [contaionerID] # 删除一个处于终止状态的容器
docker container rm $(docker images -q) # 删除所有容器配置镜像:
启动镜像,配置初始开发环境,安装了一些包(可能有些没有用),
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18docker run -t -i archlinux /bin/bash # 启动镜像
# 在docker内输入以下内容
sed -i '1i Server = http://mirrors.aliyun.com/archlinux/$repo/os/$arch' /etc/pacman.d/mirrorlist \
&& sed -i '1i Server = https://mirrors.tencent.com/archlinux/$repo/os/$arch' /etc/pacman.d/mirrorlist \
&& sed -i '$i [archlinuxcn]' /etc/pacman.conf \
&& sed -i '$i SigLevel = TrustAll' /etc/pacman.conf \
&& sed -i '$i Server = https://repo.archlinuxcn.org/$arch' /etc/pacman.conf \
&& sed -i -r 's/^NoExtract\s*=\s*.*/# \0/g' /etc/pacman.conf \
&& pacman -Syyu --noconfirm \
&& pacman -Sy --noconfirm archlinuxcn-keyring && pacman -Su --noconfirm\
&& pacman -Syy --noconfirm git vim neovim zsh oh-my-zsh-git jdk-openjdk jdk8-openjdk jdk11-openjdk \
maven yay zsh python3 go nodejs npm yarn tmux python2 zsh-autosuggestions zsh-syntax-highlighting \
zsh-theme-powerlevel10k ranger python-pip python-neovim wl-clipboard fzf ripgrep man-db \
gcc clang base-devel wqy-zenhei noto-fonts-cjk wget unzip thefuck \
&& ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& pacman -Scc --noconfirm \
&& rm -rf /var/lib/pacman/sync/* /var/cache/pacman/pkg/* \
&& echo "" > /var/log/pacman.log精简版本:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16sed -i '1i Server = http://mirrors.aliyun.com/archlinux/$repo/os/$arch' /etc/pacman.d/mirrorlist \
&& sed -i '1i Server = https://mirrors.tencent.com/archlinux/$repo/os/$arch' /etc/pacman.d/mirrorlist \
&& sed -i '$i [archlinuxcn]' /etc/pacman.conf \
&& sed -i '$i SigLevel = TrustAll' /etc/pacman.conf \
&& sed -i '$i Server = https://repo.archlinuxcn.org/$arch' /etc/pacman.conf \
&& sed -i -r 's/^NoExtract\s*=\s*.*/# \0/g' /etc/pacman.conf \
&& pacman -Syyu --noconfirm \
&& pacman -Sy --noconfirm archlinuxcn-keyring && pacman -Su --noconfirm\
&& pacman -Syy --noconfirm git vim neovim \
maven yay go npm yarn tmux \
ranger python-pip python-neovim wl-clipboard fzf ripgrep man-db \
gcc clang base-devel wqy-zenhei noto-fonts-cjk wget unzip thefuck \
&& ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& pacman -Scc --noconfirm \
&& rm -rf /var/lib/pacman/sync/* /var/cache/pacman/pkg/* \
&& echo "" > /var/log/pacman.log配置vscode:
下载插件:Remote Development Pack(包含Remote-Containers),Docker。打开插件,在CONTAINERS中右键Attach Visual Studio Code,在vscode中运行了镜像,重新安装一些扩展,当作一个新的archlinux一样使用。
容器和本地间的文件传输:
1
2
3docker ps -a # 获得容器ID
docker cp 本地文件路径 ID全称:容器路径 # 本地文件复制到容器
docker cp ID全称:容器文件路径 本地路径 # 容器文件复制到本地
Typora+PicGo+Github图床
整体遵循:https://juejin.cn/post/6844904137407086600#heading-8
- 创建GIthub仓库并创建Token并复制
- 下载PicGo(app)并配置,包括时间戳命名,选择github图床,仓库名,分支用main,设定Token
- 下载并配置node.js
- 配置Typora并测试图床
编译安装从 GitHub 下载的源码
执行以下命令,生成 Makefile 文件:
./autogen.sh
如果下载的源代码中已经包含了 Makefile 文件,则可以跳过此步骤。
执行以下命令,配置编译选项:
./configure
configure 脚本会检查系统环境和依赖库,并生成 Makefile 文件。可以通过指定不同的选项来定制编译过程。
例如,可以使用 –prefix 选项指定安装目录,使用 –enable-shared 选项生成共享库等。
执行以下命令,开始编译:
make
这个命令会编译源代码,并生成可执行文件或共享库等。
执行以下命令,安装编译好的文件:
sudo make install
这个命令会将编译好的文件安装到系统中,通常是 /usr/local 目录。 如果在执行 configure 或 make 命令时遇到了错误,可以根据错误信息进行调整。通常情况下,错误信息会提示缺少依赖库或者系统环境不兼容等问题。
安装deb包
- 使用yay安装debtap。
yay -S debtap
- 升级的debtap。
sudo debtap -U
- 转换deb包,生成一个
yourfile.zst
文件。sudo debtap yourfile.deb
(接两次回车) - 安装转换后的包。
sudo pacman -U yourfile.zst
压缩文件
-c
:生成一个新的归档文件-f
:输出到文件中,-z
&-j
:将 tar 压缩成 gzip 和 bzip2 格式。archive
:压缩文件的名称/path/to/folder
:要压缩的文件夹的路径。1
2
3
4
5
6# 将文件夹压缩成 .tar 文件:
copy codetar -cf archive.tar /path/to/folder
# 将文件夹压缩成 .tar.gz 文件:
copy codetar -czf archive.tar.gz /path/to/folder
# 将文件夹压缩成 .tar.bz2 文件:
copy codetar -cjf archive.tar.bz2 /path/to/folder
安装QQ
1 | yay -Ss linuxqq # 在AUR查找linuxQQ |
登陆后闪退的可能解决办法:
删除~/.config/QQ
下的所有文件,重启QQ进行登陆并在设置里关闭QQ自己的更新。
其他问题请自行在Google或者在Arch中文社区寻找解决方案
安装 fcitx5及中文输入法
1 | sudo pacman -S fcitx5-im |
sudo vim /etc/environment
,添加如下内容,之后重启输入法:
1 | GTK_IM_MODULE=fcitx |
在设置中找到输入法,添加输入法,选拼音
中文标点消失:
编辑~/.config/fcitx/data/punc.mb.zh_CN,自行查找
[ctrl+.]
安装zsh
编辑配置文件:
1 | vim ~/.zshrc |
目前的:
1 |
|
##为一个文件或目录创建一个符号链接:
在/usr/local/local
中存有已经建立的符号链接,在/usr/share
中有通过自行下载的装包安装的软件,如通过官网安装包安装的code。
输入ln -s [文件/目录路径] [建立后的软链接名称]
,即可建立链接。如:ln -s /usr/share/code/code code
更改默认Jva环境
安装Java环境(Java-20-jdk)
1 | sudo pacman -Sy --needed --noconfirm jdk |
输入
1 | archlinux-java status |
若出现类似下面,即为安装成功
1 | Available Java environments: |
若 java-21-openjdk 为 default 则已成功将 java21 设置为默认环境,若不是,则输入
1 | sudo archlinux-java set java-20-openjdk[你想要设为默认的java环境名] |
后输入archlinux-java status
查看, java-21-openjdk 已是 default
1 | Available Java environments: |
ArchLinux内存管理
清除 Arch Linux 上的包缓存和AUR 软件包
在
/var/cache/pacman/pkg/
目录中存有下载的每个软件包;在
/home/Yuanmxc/.cache/yay
存有从 AUR 下载的软件包。这些软件包包括升级前的旧包,如果更新破坏了软件包,便于回滚到以前的版本。
1
2
3
4
5
6# 删除当前上面两个文件中未安装的所有软件包
sudo pacman -Sc
yay -Sc
# -cc 标志删除所有缓存的包
sudo pacman -Scc
yay -Scc删除孤立的软件包
1
2sudo pacman -Qtdq 查看删除孤立的软件包
sudo pacman -Rns $(pacman -Qtdq)清理日志,设置了固定大小为50M,多的日志会被删掉。
1
sudo journalctl --vacuum-size=50M
python 使用 pip 遇到问题
1 |
|
解决:
1 | sudo rm /usr/lib/python3.12/EXTERNALLY-MANAGED # python路径和版本要与系统中的相对应 |
修改用户名及用户目录
- 切换终端,用root账户登录;
- 编辑/etc/passwd文件,将旧用户名替换为新用户名;
- 编辑/etc/shadow文件,将旧用户名替换为新用户名;
- 编辑/etc/group文件,将旧用户名替换为新用户名;
- 重命名home文件: mv /home/oldusername /home/newusername
注:目录名的改变会导致一些固定路径的配置项发生错误,需要手动修改路径。
Linux 修改U盘名称
1 | sudo pacman -S mtools # 安装工具 |
安装使用 valgrind 检测内存泄露
1 | sudo pacman -S valgrind |
syu升级软件包出现错误:
1 | google-chrome: 文件系统中已存在 /opt/google/chrome/CHROME_VERSION_EXTRA |
解决:
1 | yay -S google-chrome --overwrite='/opt/*' --overwrite='/usr/*' |
手动编译安装一些软件包,依赖库
1 | sudo pacman -S base-devel # 安装必要编译工具和依赖项,已安装不用再安装 |
KDE 显示相关
安装 optimus-manager(AUR & GIthub) 及 optimus-manager-qt 来进行 GPU 管理,适合 AMD+Nvida 独显用户,主要是便于连接显示器和显卡切换,方案参考来自 archlinuxstudio的显卡驱动部分。
部分可能用到的命令。
1 | cat /sys/bus/pci/devices/0000\:01\:00.0/power/runtime_status # 查看 Nvida 是否active |
从530.41驱动版本开始,出现了卡被锁定在低功耗限制的情况(参见GitHub问题483)。 NVIDIA 驱动程序已禁用使用 nvidia-smi
命令手动设置功率限制的功能,因此许多笔记本电脑陷入低功耗和性能不佳的困境。
要解决此问题(对于 Ampere 一代或更新版本),请启动/启用 nvidia-powerd.service
,这将启用 DynamicBoost。
1 | systemctl status nvidia-powerd.service # 查看状态 |
查看磁盘信息
也可使用 fdisk -l
等命令进行查看,这里采用 lsblk
1 | lsblk |
假设U盘为 sdc
卸载设备
1 | # 卸载 sdc |
格式化成功后,再次查看磁盘信息时,上面提到的3个分区就不存在了
1 | # 格式化成功后,再次查看磁盘信息时,上面提到的3个分区就不存在了 |
制作系统启动盘
采用 dd
命令将系统镜像写入U盘。执行完毕后,Ubuntu
系统启动盘就制作好了。
1 | # if=镜像的路径, of=写入的磁盘, status=progress方便查看下进度 |
使用ssh连接远程主机
在 Arch Linux 上,SSH 客户端是 OpenSSH 软件包的一部分:
1 | sudo pacman -Syu |
生成一对新的ssh密钥:
在终端中,使用以下命令生成一对新的 SSH 密钥:
1 | ssh-keygen -t rsa -b 4096 -C "your_email@example.com" |
这将在 ~/.ssh/
目录下生成一个 RSA 4096 位的密钥对。私钥为id_rsa
,公钥为id_rsa.pub
编辑 ~/.ssh/config
文件以便快速方便地连接多个主机:
1 | Host myserver |
这样你可以通过 ssh myserver
来连接,而不需要每次都输入完整的命令。
安装并且切换不同版本的 java 环境:
1 | # pacman 或者 yay 安装不同版本,可同时存在 |
安装/更新软件包出错
问题:
更新 google-chrome 时报错无法安装 python-ninja
,需要手动处理,
解决:
方法一:清除缓存并重新下载
尝试清除 python-ninja
的缓存并重新下载源文件:
1 | yay -Scc python-ninja |
方法二:手动删除源文件并重新安装
如果清除缓存后问题仍然存在,你可以手动下载并验证源文件:
进入缓存目录:
1
cd ~/.cache/yay/python-ninja
删除现有的
python-ninja-1.11.1.3.tar.gz
文件:1
rm python-ninja-1.11.1.3.tar.gz
重新运行
yay
进行构建:1
yay -S python-ninja