# 零
强烈推荐阅读:Arch Linux 安装使用教程 和 archlinux 简明指南 。 这两本书都是内容非常详尽的 Arch Linux 安装和使用教程,包括 Arch Linux 安装、基本配置、日产使用、常用软件安装等内容,可以帮助初学者解决很多问题。
笔者本人使用笔记本单固态应硬盘安装 windows10 + ArchLinux 双系统,推荐按照 archlinux 简明指南 的安装步骤进行安装。
安装过程需要注意:
清楚你即将使用的命令做了什么,不要一味回车回车...
按照教程的大纲,分模块进行,分清每一块做了什么,不要一行一行,遇见一个敲一个,先通读知晓这一块是做什么之后,返回来按照自己需要的去做。
不要过分地 “多线程” 操作试图节省时间,稳中前进,不出错就是最快的。
仔细对照好输入的命令是否正确,确认每个命令的结果是否符合预期。
Arclinux 中文论坛 众多 Archlinux 使用者汇集的地方,同时有着较为官方的信息和软件包,很多问题可以在这里解决。
# 部分命令记录
sudo fdisk -l # 查看磁盘和分区信息 | |
df-h # 显示文件系统磁盘空间使用情况 | |
sudo umount /dev/sdX # 卸载 U 盘,“/dev/sdX” 为你要卸载的 U 盘设备名称。 | |
sudo mkfs.vfat /dev/sdX # 将 U 盘格式化为 FAT32 文件系统 / | |
printenv # 查看所有的环境变量 | |
echo &PATH # 查看特定环境变量的值(echo $http_proxy) | |
export http_proxy="http://127.0.0.1:7890" # 设置代理服务器,设置 http_proxy 和 https_proxy 环境变量 | |
export https_proxy="http://127.0.0.1:7890" |
以下命令需要安装后才能使用:
tree -A 使用ASNI绘图字符显示树状图而非以ASCII字符组合 | |
-C 使用颜色区分文件类型 | |
-N 支持显示中文字符 | |
-a 显示隐藏文件(以.开头) | |
-d 只显示目录 | |
-h 使用人易读的单位显示文件大小 | |
-L [num] 指定显示的最大深度 |
##Pacman 包管理:
sudo pacman -Syu # 升级系统 | |
sudo pacman -S package_name # 安装软件包 | |
sudo pacman -Syu package_name # 升级系统并安装软件包,ArchLinux 不支持部分升级,建议用此命令先升级再安装 | |
sudo pacman -Syyu # 升级系统 yy 标记强制刷新 u 标记升级动作 | |
sudo pacman -Ss package_name # 搜索包含相关内容的软件包 | |
sudo pacman -R package_name # 删除软件包 | |
sudo pacman -Qi package_name # 查看软件包信息 | |
sudo pacman -Q # 查看安装的软件包 | |
sudo pacman -Rs package_name # 删除软件包,及其所有没有被其他已安装软件包使用的依赖包 | |
sudo pacman -Si package_name # 从数据库中搜索软件包的信息 | |
sudo pacman -Qdt # 找出孤立包 Q 为查询本地软件包数据库 d 标记依赖包 t 标记不需要的包 dt 合并标记孤立包 | |
sudo pacman -Rs $(pacman -Qtdq) # 删除孤立软件包 | |
sudo pacman -U abc.pkg.tar.gz # 安装下载的 abc 包,或新编译的本地 abc 包 | |
sudo pacman -Fy # 更新命令查询文件列表数据库 | |
sudo pacman -F xxx # 当不知道某个命令属于哪个包时,用来查询某个 xxx 命令属于哪个包 | |
sudo pacman -Sc # 清理没有安装的所有缓存包,和没有被使用的同步数据库 | |
yay -Syu # 升级官方和 AUR 的软件包,包括 pacman, -syyu 强制升级 | |
yay -S abc # 安装 abc 包 | |
yay -Ss abc | grep 已安装 # 搜索已安装且包含 abc 的包 | |
yay -R 包名 # 删除软件包 (不包括前后缀,版本号) | |
sudo rm /var/lib/pacman/db.lck # 删除 /var/lib/pacman/db.lck 锁 |
# 系统服务的操作与介绍
Linux 系统中运行着各种服务,你需要掌握查询,变更服务状态的方式。同时对创建服务最好也有大致的了解。这里讲述命令 systemctl
的用法。以 dhcpcd 为例
systemctl start dhcpcd # 启动服务 | |
systemctl stop dhcpcd # 停止服务 | |
systemctl restart dhcpcd # 重启服务 | |
systemctl reload dhcpcd # 重新加载服务以及它的配置文件 | |
systemctl status dhcpcd # 查看服务状态 | |
systemctl enable dhcpcd # 设置开机启动服务 | |
systemctl enable --now dhcpcd # 设置服务为开机启动并立即启动这个单元: | |
systemctl disable dhcpcd # 取消开机自动启动 | |
systemctl daemon-reload dhcpcd # 重新载入 systemd 配置 扫描新增或变更的服务单元 不会重新加载变更的配置 加载变更的配置用 reload |
# 换源 - 阿里云
编辑文件 /etc/pacman.d/mirrorlist
:
sudo vim /etc/pacman.d/mirrorlist |
在镜像源列表最顶端添加:
Server = http://mirrors.aliyun.com/archlinux/$repo/os/$arch |
参考:阿里云开发者社区 > 镜像站 > archlinuxcn
sudo pacman -Syy && sudo pacman -S archlinuxcn-keyring # 安装 archlinuxcn-keyring 包导入 GPG key |
# 安装 yay
sudo pacman -S yay | |
#安装完成后再次更新 | |
yay -Syyu && yay -Sys |
# 常见问题及其解决
使用 yay 命令时报错:
搜索 AUR 时出错: response decoding failed: invalid character '<' looking for
- 解决:
yay --aururl "https://aur.archlinux.org" --save
Telegram 无法登陆:
- 解决:
SETTING 中添加地址,使用代理,port 选择代理所使用端口号。
- 解决:
连接显示器无法使用:
- 解决:
根据 Linux 安装使用教程中显卡驱动所描述进行即可。
- 解决:
VSCode 无法唤出外部终端:
- 解决:
.vscode
文件中设置启用外部终端,在settings.json
文件中加入 "terminal.external.linuxExec": "/usr/bin/konsole", "" 内指要调用的终端 bin/konsole。
- 解决:
在升级系统(syu)时,出现以下内容:
错误: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
安装:
sudo 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 # 关闭开机自启动服务
获取镜像:
docker 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) # 删除所有容器
配置镜像:
启动镜像,配置初始开发环境,安装了一些包(可能有些没有用),
docker 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
精简版本:
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 \
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 一样使用。
容器和本地间的文件传输:
docker 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
:要压缩的文件夹的路径。
# 将文件夹压缩成 .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
yay -Ss linuxqq # 在 AUR 查找 linuxQQ | |
yay -S linuxqq # 从 AUR 安装 linuxqq | |
sudo pacman -Rns linuxqq # 删除 linuxqq 及不再需要的依赖 |
# 登陆后闪退的可能解决办法:
删除 ~/.config/QQ
下的所有文件,重启 QQ 进行登陆并在设置里关闭 QQ 自己的更新。
其他问题请自行在 Google 或者在 Arch 中文社区寻找解决方案
# 安装 fcitx5 及中文输入法
sudo pacman -S fcitx5-im | |
sudo pacman -S fcitx5-chinese-addons fcitx5-rime |
sudo vim /etc/environment
,添加如下内容,之后重启输入法:
GTK_IM_MODULE=fcitx | |
QT_IM_MODULE=fcitx | |
XMODIFIERS=@im=fcitx | |
SDL_IM_MODULE=fcitx |
在设置中找到输入法,添加输入法,选拼音
# 中文标点消失:
编辑~/.config/fcitx/data/punc.mb.zh_CN,自行查找
[ctrl+.]
# 安装 zsh
# 编辑配置文件:
vim ~/.zshrc |
目前的:
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p12k-instant-prompt-${(%):-%n}.zsh" ]]; then | |
source "${XDG_CACHE_HOME:-$HOME/.cache}/p11k-instant-prompt-${(%):-%n}.zsh" | |
fi | |
ZSH=/usr/share/oh-my-zsh/ | |
ZSH_THEME="powerlevel10k/powerlevel10k" | |
plugins=( | |
sudo | |
git | |
autojump | |
zsh-syntax-highlighting | |
zsh-autosuggestions | |
) | |
ZSH_CACHE_DIR=$HOME/.cache/oh-my-zsh | |
if [[ ! -d $ZSH_CACHE_DIR ]]; then | |
mkdir $ZSH_CACHE_DIR | |
fi | |
source $ZSH/oh-my-zsh.sh | |
# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh. | |
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh | |
# other name | |
alias sp='sudo pacman' | |
alias syyu='yay -Syyu' # 强制升级系统和软件包 | |
alias syu='yay -Syu' # 升级系统和软件包 | |
alias c='clear' # 清屏 | |
alias e='exit' # 退出终端 | |
alias qq='rm -rf ~/.config/QQ/ && linuxqq &' # 启动 QQ 时删除文件 | |
# git 快捷键 cd+add+commit+push+cd | |
# 将本地 Note 仓库提交到 gihub | |
alias gpn='cd /home/origin/Code/repository/Note && git add . && git commit -m \"update\" && git push && cd -' | |
# 将本地 Code_c 仓库提交到 gihub | |
alias gpc='cd /home/origin/Code/repository/Code_c && git add . && git commit -m \"update\" && git push && cd -' | |
# 将本地 Code_cc 仓库提交到 gihub | |
alias gpcc='cd /home/origin/Code/repository/Code_cc && git add . && git commit -m \"update\" && git push && cd -' | |
# 将本地 Python 仓库提交到 gihub | |
alias gppy='cd /home/origin/Code/repository/Code_py && git add . && git commit -m \"update\" && git push && cd -' | |
# 将本地 my-xv6-labs-2022 仓库提交到 gihub | |
alias gplab='cd /home/origin/Code/repository/my-xv6-labs-2022 && git add . && git commit -m \"update\" && git push &&cd -' | |
export GOPATH="$HOME/go" | |
export PATH="$PATH:/usr/lib/go/bin:$GOPATH/bin" | |
export PATH=/usr/sbin:$PATH |
## 为一个文件或目录创建一个符号链接:
在 /usr/local/local
中存有已经建立的符号链接,在 /usr/share
中有通过自行下载的装包安装的软件,如通过官网安装包安装的 code。
输入 ln -s [文件/目录路径] [建立后的软链接名称]
,即可建立链接。如: ln -s /usr/share/code/code code
# 更改默认 Jva 环境
# 安装 Java 环境(Java-20-jdk)
sudo pacman -Sy --needed --noconfirm jdk |
输入
archlinux-java status |
若出现类似下面,即为安装成功
Available Java environments: | |
java-21-jdk | |
java-21-openjdk | |
java-8-openjdk (default) |
若 java-21-openjdk 为 default 则已成功将 java21 设置为默认环境,若不是,则输入
sudo archlinux-java set java-20-openjdk[你想要设为默认的java环境名] |
后输入 archlinux-java status
查看, java-21-openjdk 已是 default
Available Java environments: | |
java-21-jdk | |
java-21-openjdk (default) | |
java-8-openjdk |
# ArchLinux 内存管理
清除 Arch Linux 上的包缓存和 AUR 软件包
pacman -Scc
yay -Scc
Arch Linux 在 /var/cache/pacman/pkg/ 目录中存储下载的每个软件包,包括升级。如果更新破坏了软件包,便于回滚到以前的版本。 /home/origin/.cache/yay 存有 AUR 的软件包。下面的名令将从缓存 /var/cache/pacman/pkg/ 中删除当前未安装的所有包。在命令中添加另一个 **-c**(最后有两个 c)标志将删除所有缓存的包。
删除孤立的软件包
sudo pacman -Qtdq 查看删除孤立的软件包
sudo pacman -Rns $(pacman -Qtdq)
清理日志,设置了固定大小为 50M,多的日志会被删掉。
journalctl --vacuum-size=50M
# python 使用 pip 遇到问题
pip install scikit-learn | |
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. |
解决:
sudo rm /usr/lib/python3.11/EXTERNALLY-MANAGED |
# 修改用户名及用户目录
- 切换终端,用 root 账户登录;
- 编辑 /etc/passwd 文件,将旧用户名替换为新用户名;
- 编辑 /etc/shadow 文件,将旧用户名替换为新用户名;
- 编辑 /etc/group 文件,将旧用户名替换为新用户名;
- 重命名 home 文件: mv /home/oldusername/home/newusername
注:目录名的改变会导致一些固定路径的配置项发生错误,需要手动修改路径。
# Linux 修改 U 盘名称
sudo pacman -S mtools # 安装工具 | |
sudo vim /etc/mtools.conf # 然后修改配置文件 | |
# 在这个文件最后添加下面一行 | |
mtools_skip_check=1 | |
sudo mlabel -i /dev/sdb1 ::DISK2 # sdb1 是 U 盘,SISK2 是修改后的名称(自动改大写) | |
sudo eject /dev/sdb1 # 修改完成 |