Arch的使用笔记

发布于 2018-12-26  93 次阅读


触linux一两年了,一直都是走马观花,在体验过Ubuntu和Mint之后,我最终选择了Arch,小巧简单、文档丰富、社区完善、高度定制化...这些无不吸引着我(还有就是因为Arch娘可爱啊(逃。这篇文章主要记录日常使用中遇到的问题及解决方案(说明:大多数解决方法来源于网络,不保证在经过很长时间后还会有用,只作为一个参考)。环境:DE是KDE Plasma,双系统,和Win 10共存,引导使用rEFInd。

不断更新中...

系统

Pacman相关

降级

有时候我们升级一些软件会遇到bug,这时就需要降级了
降级十分简单,首先查看 /var/cache/pacman/pkg/ 有没有旧版本的包,有的话直接 sudo pacman -U path/to/包名 就行。
如果你已经删除了旧版本的包,那就需要在 https://archive.archlinux.org 去下载相应的包了。下载完成后与前面一致,执行 sudo pacman -U path/to/包名 就行。
如果你不想更新某个软件,只需要在 /etc/pacman.conf 中加一行:

IgnorePkg   =   包名    ## 包名可以不用软件版本号

手动更改PKGBUILD

  1. yay -G <package_name>
  2. edit the PKGBUILD
  3. makepkg -si

卸载make install编译安装的软件

一般来说,make install完了目录下会有一个install_mainfest.txt的文件记录了安装的所有内容,
然后 xargs rm < install_manifest.txt 就可以了。
如果没有这个文件,可以自己重新make install,从log中过滤出install信息了。
注意 sudo
另外,建议使用 --prefix=/path/you/want/to/install/ 来编译安装,卸载时只需要删除目录即可

无法更新

无法锁定数据库

$ sudo pacman -Syu
:: 正在同步软件包数据库...
错误:无法升级 core (无法锁定数据库)
错误:无法升级 extra (无法锁定数据库)
错误:无法升级 community (无法锁定数据库)
错误:无法升级 archlinuxcn (无法锁定数据库)
错误:无法升级 archlinuxfr (无法锁定数据库)

如果你确认软件包管理器没有在运行,
你可以删除 /var/lib/pacman/db.lck。

$ sudo rm /var/lib/pacman/db.lck

文件系统中已存在***

例如

$ sudo pacman -Syu
错误:无法提交处理 (有冲突的文件)
libbloom: 文件系统中已存在 /usr/lib/libbloom.so.1 
发生错误,没有软件包被更新。
Error installing repo packages

一般来讲是修复缺少动态库链接的bug,所以更新过程需要覆盖

pacman -Suy --overwrite usr/lib/libbloom.so.1

禁用独立显卡

安装Bumblebee和bbswitch

bbswitch作为一个模块存在,安装后可以使用

$ modprobe bbswitch ##将其加载
$ rmmod bbswitch ##将其卸载
$ cat /proc/acpi/bbswitch ##查看其独立显卡运行状态。

关闭/开启独立显卡的指令为

tee /proc/acpi/bbswitch <<<OFF ## 关闭
tee /proc/acpi/bbswitch <<<ON ##开启

若执行关闭后查看状态仍为ON,可能是因为独立显卡的驱动仍在运行,无法关闭。可以通过dmesg查询错误信息:

$ dmesg |tail -1
bbswitch: device 0000:01:00.0 is in use by driver 'nvidia', refusing OFF

我们可以将驱动nvidia模块卸载

$ rmmod nvidia

使用bbswitch时默认的 NVIDIA 电源状态

$ vim  /etc/modprobe.d/bbswitch.conf
options bbswitch load_state=0 unload_state=1

关机时启用NVIDIA显卡

$ vim /etc/systemd/system/nvidia-enable.service
[Unit]
Description=Enable NVIDIA card
DefaultDependencies=no

[Service]
Type=oneshot
ExecStart=/bin/sh -c 'echo ON > /proc/acpi/bbswitch'

[Install]
WantedBy=shutdown.target

然后以root权限运行systemctl enable nvidia-enable.service以启用服务。

安装视频硬件解码驱动

具体可查看:archlinux wiki

sudo pacman -S libva-intel-driver libvdpau-va-gl libva-intel-driver  ##Intel VA-API和VDPAU开源驱动
sudo pacman -S libva-vdpau-driver mesa mesa-vdpau ##NVIDIA  VA-API和VDPAU开源驱动

每次内核更新WARNING

每次内核更新都会看到这两个WARNING

==> WARNING: Possibly missing firmware for module: aic94xx
==> WARNING: Possibly missing firmware for module: wd719x 

如果是普通用户不用去管,忽略即可

Of importance is that this module is entirely unnecessary for most users.
It's simply a warning as these are commonly used modules for SAS/SCSI Disk Controllers in server hardware.
It's not recommended that you install these if you don't have such hardware in your system.
If you don't know what they are, don't install them.
Because if you did know what they are you'd know if you needed them to get your disks working.

没有ifconfig

ArchLinux安装后是没有ifconfig命令的,是因为以前net-tools属于base组,装base时自动就装上了,现在哪个组都不属于了,这些工具需要单独安装。其中ifconfigroutenet-tools包中,nslookupdigdnsutils包中,ftptelnet等在inetutils包中,ip命令在iproute2包中。

sudo pacman -S net-tools dnsutils inetutils iproute2

使用串口连接树莓派

su
pacman -S screen #Arch Linux默认没有安装screen
modprobe ch341 #加载驱动程序
dir /dev | grep 'tty' #确认CH341的块设备为/dev/ttyUSB0
stty -F /dev/ttyUSB0 115200 #设定波特率
chmod 666 /dev/ttyUSB0
screen /dev/ttyUSB0 115200 #打开screen使用串口块设备

软件

网易云

似乎出来deepin网易云会有各种bug,这里我找到的解决方法是:将启动命令改为XDG_CURRENT_DESKTOP=DDE netease-cloud-music %U

WPS

似乎离不开office啊,周围人都在用,,,wps对微软office兼容性较高

公式无法正常显示

安装 ttf-wps-fonts(AUR)

KDE中Microsoft Office文件格式被识别为Zip

sudo rm /usr/share/mime/packages/wps-office-*.xml
sudo update-mime-database /usr/share/mime

使用 GTK+ UI

WPS 默认的 UI 为 Qt,事实上其捆绑的 Qt 为 4.7.4,从而因为版本不符,无法正常加载 qtcurve 之类的主题。

可以修改{{Ic|/usr/share/applications/wps-office-{wps,wpp,et}.desktop}}一劳永逸设定:

Exec=/usr/bin/{wps,wpp,et} -style gtk+ %f

JetBrains系软件

我使用过Idea和Clion,更新系统会出现jdk或者jre的错误。尝试

sudo pacman -Syyu --ignore jre
sudo pacman -Syyu --ignore jdk

如果出现××已经存在、××无法读取的情况,先卸载jdk、jre再安装
记得一定先装jre再装jdk,不然JetBrains系软件不能启动

sudo pacman -S jre
sudo pacman -S jdk

Chromium不能观看Netflix

https://aur.archlinux.org/packages/chromium-widevine/ 下载安装 chromium-widevine即可。

git clone https://aur.archlinux.org/chromium-widevine.git
cd chromium-widevine
makepkg -sri

BBR

唔,这个主要是给树莓派用的

What:

https://github.com/google/bbr

One Command:

sudo modprobe tcp_bbr

Turn on:

echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p
sysctl net.ipv4.tcp_available_congestion_control
sysctl net.ipv4.tcp_congestion_control

Enable It:

echo "net.core.default_qdisc=fq" >> /etc/sysctl.d/tcp-bbr.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.d/tcp-bbr.conf

Check:

lsmod | grep bbr