Manjaro使用


目录:

Manjaro使用

记录所有与Manjaro(基于Arch Linux的开源Linux发行版)有关的信息,可以通过 #Collect/Manjaro 标签进行索引

常用

yay -Sua  # 升级yay至新版本
yay -Ss [package]  # 搜索在线AUR软件包,确认则-S进行安装
yay -Rscnu  [package]  # yay删除包,-R 表示 Remove(移除),-s 删除不需要的依赖关系,-c(cascade)删除软件包及所有依赖于此的软件包,-n 表示 nosave(删除配置文件),-u 表示 unneeded(删除不需要的软件包)
yay -R $(yay -Qdtq)  # 清理孤立软件包
yay -Scc # 更新缓存
# 见https://zhuanlan.zhihu.com/p/346508211

初始化

在Win +R 调出的命令行默认路径创建Python虚拟环境,用来安装更新最新的python包

# 请务必安装English版本,否则路径会带中文
# 用户名统一创建为dhr2333,既能唯一标示又不会暴露真实信息
sudo pacman-mirrors -g  # 排列源
sudo pacman-mirrors -i -c China -m rank   # 更换国内官方镜像源
timedatectl set-ntp true  # 时间同步
vi /etc/pacman.conf
[community]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist
[archlinuxcn]  # 参考 https://www.archlinuxcn.org/archlinux-cn-repo-and-mirror/
Server = https://mirrors.zju.edu.cn/archlinuxcn/$arch
pacman -S archlinuxcn-keyring  # 导入密钥  
pacman -Syyu
pacman -S yay   # yay能下载的软件更多,是从AUR仓库下载的
vim /etc/hosts  # 软件无法下载大概率是网络问题,要么是国内DNS被污染,要么是需要翻墙下载,如果没有通过有效性检查修改文件跳过检查即可
185.199.109.133 raw.githubusercontent.com  # 具体地址根据https://www.ipaddress.com/site/raw.githubusercontent.com网址查询

yay -S bash-completion vim git fcitx5 fcitx5-chinese-addons fcitx5-configtool fcitx5-gtk fcitx5-qt wps-office ttf-wps-fonts xdotool systemd-rc-local keepassxc flameshot net-tools base-devel unzip neofetch ebtables dnsmasq bind tcpdump traceroute iotop albert
yay -S wine google-chrome visual-strdio-code-bin picgo redisinsight chatbox dingtalk-bin obsidian syncthing telegram-desktop wireshark-qt nodejs npm python clash-verge  sunloginclient postman baidunetdisk-bin dbeaver 
yay -S docker docker-compose
yay -S mysql libmysqlclient mysql-clients 
yay -S qemu virt-manager 

hostnamectl set-hostname [主机名]  # 设置主机名,例如办公电脑可以为ironstamp
usermod -aG docker $(whoami)  # 普通用户使用docker
docker network create shared-network  # 所有容器共享网络
usermod -aG kvm $(whoami)  # 普通用户使用KVM
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

安装问题

yay -S libldap24 lib32-gnutls  # 无法安装deepin-wine-wechat时

仓库 yay 安装

分组订阅地址

pip3 install beancount fava
yay -S python-pipenv

yay -S discord
yay -S pandoc texlive-core texlive-bin texlive-latexextra texlive-fontsextra  # 实现将docx导出为pdf的功能
yay -S docker-buildx  # docker构建多平台镜像
yay -S STM32CubeMX  # 嵌入式开发IDE
pacman -S youdao-dict  # 有道词典
pacman -S netease-cloud-music  # 网易云音乐
pacman -S albert  # 快捷键神器,无法安装
pacman -S deepin-creenshot  # 截图
yay -S typore  # MarkDown
yay -S pycharm-community-jre  # 安装pycharm社区版
pacman -S unrar  p7zip
pacman -Sy systemd-rc-local  # 开机自启功能
# 配置系统代理及工具代理
Qv2ray-2.7.0-linux-x64.AppImage  # 工具下载,对于后缀为AppImage的文件,添加执行权限并启动即可
# Vcore核心配置
# 修改配置文件,参考官方文档https://qv2ray.net/lang/zh/getting-started/ & 私人指南https://arch.icekylin.online/prologue.html
[分组订阅地址]  # 分组订阅地址,由https://w1.ddnsgo.xyz/user获取
# 启动系统代理 & 工具配置使用系统代理,如chrome为/usr/bin/google-chrome-stable --proxy-server=socks5://127.0.0.1:1088 %U
# https://thiscute.world/posts/qemu-kvm-usage/#qemukvm-%E8%99%9A%E6%8B%9F%E5%8C%96  虚拟化
yay -S nodejs npm 
yay -S Clementine
pacman search epson  # 打印机驱动搜索
yay -S epson-inkjet-printer-201401w  # 爱普生L310 安装,https://blog.csdn.net/kangear/article/details/79595188,Linux下安装EPSON L310打印机驱动

配置

环境变量

unset http_proxy ; unset https_proxy ; unset HTTP_PROXY ; unset HTTPS_PROXY ;   # 对于postman则需要关闭系统代理

vim /etc/profile   # 所有用户的环境变量和启动脚本
# 终端
export PS1="\[\033[01;32m\][\u@\h\[\033[01;37m\] \W\[\033[01;32m\]]\$\[\033[00m\] "
# 对于chrome,需要添加如下并使用/usr/bin/google-chrome-stable --proxy-server=http://127.0.0.1:7890 %U启动
export http_proxy="http://127.0.0.1:7890"
export https_proxy="http://127.0.0.1:7890"
export HTTP_PROXY="http://127.0.0.1:7890"
export HTTPS_PROXY="http://127.0.0.1:7890"
# 编辑器
export EDITOR=vim
export QT_QPA_PLATFORMTHEME="qt5ct"
export QT_AUTO_SCREEN_SCALE_FACTOR=0
export GTK2_RC_FILES="$HOME/.gtkrc-2.0"
export CLICOLOR=1  # 启用颜色支持
export LSCOLORS=GxFxCxDxBxegedabagaced
# 输入法
# 对于个别软件需要额外配置/usr/bin/dingtalk /usr/bin/wps /usr/bin/et /usr/bin/wpp
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"

vim ~/.bashrc  # 与交互式shell有关的设置
alias ll='ls -lh --time-style=long-iso'
alias la='ls -lah --time-style=long-iso'
alias date='date \+\%Y-\%m-\%d\ \%H:\%M:\%S'  # 设置date命令时间显示风格

vim ~/.config/flatpak/fcitx.conf  # 微信,网易云音乐可能通过该方式启动
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
flatpak --user override --env=GTK_IM_MODULE=fcitx  # 如何无效则添加环境变量
flatpak --user override --env=QT_IM_MODULE=fcitx
flatpak --user override --env=XMODIFIERS=@im=fcitx

KVM

kvm安装windows11

sudo virsh net-start default  # 启用NAT网络
sysctl net.ipv4.ip_forward  # 配置IP转发
sysctl -w net.ipv4.ip_forward=1

SSH

# 将~/.ssh/id_rsa.pub复制到要登录的主机.ssh/authorized_keys中
vim .ssh/config
Host dhr2333
    HostName [服务器IP地址]
    Port 60522
    User root
    IdentityFile ~/.ssh/id_rsa
Host manjaro
    HostName [服务器IP地址]
    Port 8001
    User daihaorui
    IdentityFile ~/.ssh/id_rsa
vim /etc/ssh/sshd_config  # 允许使用密钥认证
PubkeyAuthentication yes  
AuthorizedKeysFile .ssh/authorized_keys

NetworkManager

  • 桥接网络管理(使用以下nmcli工具 或 使用配置文件
sudo systemctl start NetworkManager
sudo systemctl enable NetworkManager
sudo ls -la /etc/NetworkManager/system-connections/  # 有连接配置位于该目录
# 如果宿主机无法为虚拟机提供桥接网络,可以通过nmcli工具创建和配置桥接接口,供虚拟机使用
sudo nmcli connection add type bridge con-name br0 ifname br0  # 添加桥接接口br0
sudo nmcli device status
sudo nmcli connection add type bridge-slave con-name br0-port1 ifname [Device Name] master br0  # 添加桥接接口br0-port1,从端口绑定到物理接口[Device Name],物理接口[Device Name]通过ip a或者其他方式查询
sudo nmcli connection modify br0 ipv4.addresses 10.0.5.69/24 ipv4.gateway 10.0.5.1 ipv4.method manual  # 将静态 IP 地址分配给桥接接口 `br0`
sudo nmcli connection modify br0 ipv4.method auto  # 如果使用 DHCP,可以将 `ipv4.method` 改为 `auto`
sudo nmcli connection up br0  # 激活桥段端口
sudo nmcli connection up br0-port1  # 激活桥接从端口
sudo nmcli connection modify br0 ipv4.dns "8.8.8.8 8.8.4.4" # 修改dns配置后,桥接网络算是正确配置可以使用。或者通过/etc/resolv.conf修改DNS配置

系统快捷键

开机自启服务

systemctl enable --now bluetooth
systemctl enable docker sshd rc-local.service runsunloginclient.service libvirtd
# 启动rc-local后可以使用/etc/rc.local进行控制,见https://cloud.tencent.com/developer/article/1948480

vim /etc/systemd/system/syncthing.service  # 具体脚本命令参考Manage
vim /etc/systemd/system/clash.service
vim /etc/systemd/system/frpc.service

sudo chmod  +x /etc/rc.local
cat /etc/rc.local
docker compose -f /home/daihaorui/桌面/harbor/docker-compose.yml up -d  # 具体需要启动的Docker容器参考Manage
cd /home/daihaorui/桌面/GitHub/chatgpt-on-wechat/ ; pipenv shell ; python app.py
cd .config/mihomo/ ; ./clash-linux
chmod 666 /var/run/docker.sock
# neofetch  # 查看manjaro系统状态,见Obsidian

Git

使用GitHub提交项目代码时,使用"Signing commits"完成验证,需要添加Signing Key

git config --global gpg.format ssh
git config --global user.signingkey .ssh/id_rsa.pub

frp内网穿透

服务器IP地址

vim /etc/frp/frpc.toml
serverAddr = "[服务器IP地址]"
serverPort = 7000

[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 8004  # 需要保证阿里云远程端口为Open

[[proxies]]
Name = "harbor"
Type = "http"
LocalPort = 80
CustomDomains = ["harbor.dhr2333.cn"]

Docker配置

Harbor登录密码

vim /etc/systemd/system/docker.service.d/http-proxy.conf  # 配置所有容器使用代理
[Service]
Environment="HTTP_PROXY=http://10.0.0.74:1081"
Environment="HTTPS_PROXY=http://10.0.0.74:1081"
Environment="NO_PROXY=localhost,127.0.0.1,docker-registry.example.com,.corp"

vim /etc/docker/daemon.json
{
    "experimental": true,  # 启动实验性功能,例如docker-buildx
    "registry-mirrors": ["http://harbor.dhr2333.cn", "https://docker.mirrors.ustc.edu.cn", "http://hub-mirror.c.163.com", "https://registry.docker-cn.com"],
    "insecure-registries": ["http://harbor.dhr2333.cn", "http://harbor.dhr2333.cn:8080","127.0.0.1"]
    "proxies": {  # 可选
        "http-proxy": "http://127.0.0.1:7890",
        "https-proxy": "https://127.0.0.1:7890",
        "no-proxy": "*.test.example.com,.example.org,127.0.0.0/8"
    },
    "dns": ["8.8.8.8"]
}

sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl show --property=Environment docker  # 查看Docker环境变量是否生效

docker login -u admin -p '[Harbor登录密码]' harbor.dhr2333.cn

PicGo配置

截图 + PicGo快速上传

Flameshot

%Y%m%d_%H%M%S_flameshot

Xshell

Dbeaver

chatgpt-on-wechat

次级配置

xset s off  # 关闭屏幕保护程序
xset -dpms  # 禁用 DPMS(能量保护管理系统)

安装Deb包

yay -S  debtap  # 安装deb包工具,用于安装有道云笔记
debtap -u  # 更新
debtap xxx.deb  # 将deb转换为tar.xz包
pacman -U xxx.tar.xz  # 安装

安装旧版/指定版本

  1. 打开 AUR 包仓库
  2. 通过「关键字」找到要安装的包详情页面
  3. 在包详情页面右侧,点击「查看更改」
  4. 找到对应的版本,点击「Commit message」,进入版本详情
  5. 找到「download」链接,下载
  6. 解压下载的压缩包,并在解压后的目录内执行以下命令安装
makepkg -s
sudo pacman -U *.pkg.tar.zst

通过 PKGBUILD 文件打包

$ ls -la /var/cache/pacman/pkg | grep []  # 确定缓存中是否含有包
$ sudo pacman -S --needed base-devel git  # 基本的开发工具
$ tree mysql-pkgbuild/
mysql-pkgbuild/
├── mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz
└── PKGBUILD

1 directory, 3 files

$ sha256sum mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz  # 将获取到的sha256sums填写进 ${SKIP} 中
$ vim PKGBUILD  # 编写打包文件
# Maintainer: dhr2333 <Dai_Haorui@163.com>
pkgname=mysql
pkgver=8.0.26
pkgrel=1
pkgdesc="A fast, multi-threaded, multi-user, and robust SQL database server"
arch=('x86_64')
url="https://www.mysql.com/"
license=('GPL')
depends=('libaio' 'openssl' 'zlib')
makedepends=('cmake' 'gcc' 'make')
source=("https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-${pkgver}-linux-glibc2.12-x86_64.tar.xz")
sha256sums=('abcd1234...')  # 替换为实际的校验和

build() {
  cd "${srcdir}"
  tar -xf "mysql-${pkgver}-linux-glibc2.12-x86_64.tar.xz"
}

package() {
  cd "${srcdir}/mysql-${pkgver}-linux-glibc2.12-x86_64"

  install -d "${pkgdir}/usr/local/mysql"
  cp -r ./* "${pkgdir}/usr/local/mysql"

  install -d "${pkgdir}/usr/bin"
  for bin in "${pkgdir}/usr/local/mysql/bin/"*; do
    ln -s "$bin" "${pkgdir}/usr/bin/$(basename $bin)"
  done

  install -d "${pkgdir}/usr/share/licenses/${pkgname}"
  install -m644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/"
}
$ makepkg -si  # 构建和安装软件包
# 发布到AUR

禁止指定软件版本更新

vim  /etc/pacman.conf
IgnorePkg   = mysql libmysqlclient mysql-clients

修复

引导至救援模式

Error File ‘/boot/vmlinuz-5.15-x86_64’ not found  # 引导系统报错,在更新软件时断电导致无法进入系统
# 解决方法:用U盘装一个Manjaro的启动盘,进U盘的系统里,打开终端。电脑要联网
# 查看你原来那个系统硬盘root分区的设备文件名,例如/dev/sdb2
sudo fdisk -l  # 这里换成上一步你自己查到的设备名
sudo mount -t ext4 /dev/sdb2 /mnt
sudo pacman -Sy arch-install-scripts  # 一定是arch-chroot
arch-chroot /mnt
sudo pacman -Sy linux  # 安装完成后重启即可

开发

https://blog.csdn.net/v6543210/article/details/84504460 # 安装go及vscode及debug调试工具

go env -w GOPROXY=https://goproxy.cn,direct  // go代理,剩下的工作会自动完成

连接交换机

  1. 使用配置线(USB转配置线,配置线转RJ45)连接PC与交换机Console口

  2. 使用软件(minicom或者PuTTY)配置串口(网上有教程)

ls /dev/ttyS*  && ls /dev/ttyUSB*  # 均可,插上配置线后查看多出哪个设备
  1. minicom -s 配置指定设备,配置速率,保存退出后minicom重新连接