Raspberry Pi 4B的Linux游记(三):在Manjaro ARM上配置AUR软件源、管理硬件接口

0. 前言

Manjaro是基于 Arch Linux的发行版,自然也继承了Arch Linux的特点——更新策略激进、AUR覆盖的软件包多等等

笔者选择Manjaro的理由其实比较简单——不喜欢Ubuntu那种大版本升级的策略,滚动更新可以更及时的用到bug修复、新特性等等……至于为什么不选择Arch Linux ARM,那是因为alarm项目没有提供64位userland

1. 切换分支

如果有人像笔者一样喜欢试用不稳定的测试版软件,那么这一部分绝对可以给你提供很大帮助——自由切换Manjaro ARM的更新分支!

首先,Manjaro ARM同主线一样具有三个不同的分支,分别是stabletestingunstable,从稳定性的角度来说,stable > testing > unstable——自然unstable分支的软件应该是三者中最新的,也是最不稳定的

下面叙述一下如何通过pacman-mirrors命令自由切换分支:

1.1 从stable分支切换到其他分支
  1. 首先修改路径/etc/pacman.d/mirrors/下的镜像源描述文件,在上一篇文章中,我们新建了名为“China”的文件,这里我们仍旧修改它——将服务器地址中的stable修改为$branch,然后保存退出即可

  2. 输入如下命令:

    $ sudo pacman-mirrors -b testing -c China
    

    其中-b选项代表branch,即分支的意思,这里选择了较为稳定的testing分支,-c选项代表国家,这里我们选择国内的镜像源,具体来说是清华的镜像源,速度会较快一些

  3. 更新数据库并更新软件:

    $ sudo pacman -Syu
    

这一步完成后,系统的更新分支就切换完成了

1.2 回退到stable分支

如果在新的分支中遭遇无法解决的bug,也可以退回稳定分支:

  1. 使用上面第二步的命令,将其中的testing切换为stable即可
  2. 可以选择使用这个命令降级软件版本:
    $ sudo pacman -Syyuu # -uu代表强制降级
    
    也可以选择不降级软件包,这样在当前testing分支合并至stable分支之前,已安装的包都会比分支中的包新,从而在等待分支合并的时间内无法进行软件升级(事实上也无必要升级)

2. 配置AUR

AUR,全称Arch User Repository,是由用户自行维护的软件仓库,官方也经常将其中的一些优秀软件集成到pacman仓库中“转正”,可以说正是因为AUR,Arch系列的发行版才有了足够的可玩性,而且,AUR和下一步硬件管理的操作息息相关

一般来说,对AUR而言常用的包管理工具有两个,分别是yayyaourt,更多的工具信息可以在这里找到

但是这里推荐yay,理由有二:

  • 根据Arch Wiki的信息,yaourt已经停止开发
  • yay具有和pacman命令极为相似的语法

要使用AUR源,首先应该安装yay和一些必要的依赖:

$ sudo pacman -S yay base-devel

之后,设置国内的AUR镜像源以加快访问速度:

$ yay --aururl "https://aur.tuna.tsinghua.edu.cn" --save # 注意不要使用sudo提权

3. 管理硬件接口

3.1 安装raspi-config

在AUR仓库中有第三方打包完成的二进制包,只需要一条命令即可安装:

$ yay -S raspi-config
3.2 启用csi接口

CSI接口即树莓派板载的摄像头接口,要启用摄像头接口需要修改/boot/config.txt以修改内核的启动行为

首先检查/boot/目录下是否有start_x.elffixup_x.dat这两个文件,如果没有,需要安装树莓派4B的Bootloader扩展:

$ sudo pacman -S raspberrypi-bootloader-x

安装完成后,/boot/目录下应该有我们所需要的的文件了,这个时候在/boot/config.txt末尾添加一行start_x=1,保存以后重启树莓派即可,但是这个时候没有raspistill等命令,还是无法使用摄像头

这个时候,还是要去万能的AUR中去寻找:

$ yay -S raspberrypi-userland-aarch64-git # 这是一个源码包,yay会自动编译安装它

这个git包内是Raspbian提供的一系列常用命令,编译时也许有几处小错误,但是不影响最后的编译成功,编译完成后这一系列文件将被安装在/opt/vc目录下,如果要使用这些命令,将/opt/vc/bin添加到环境变量中即可

3.3 管理GPIO

首先,一个很不幸的消息,wiringPi的作者因为某个公司薅羊毛而放弃了这个库的开发和维护,这是去年八月份的事情,具体原因见作者博客

那么这里不再使用这个库进行GPIO的管理,如果使用python进行编程的话,推荐安装rpi.gpio,应该使用pip来安装它:

# 0. 安装python3-pip
$ sudo pacman -S python-pip
# 1. pip更换国内pypi源
$ pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
# 2. 升级pip
$ pip install -U pip
# 3. 安装rpi.gpio
$ pip install rpi.gpio

如果想使用C/C++控制GPIO,那么建议安装pigpio库,可以在AUR仓库中找到它,也可以在这里找到最新版本,除了C语言库之外,该库还拥有用于python和node.js的派生版本,可以使用npm命令安装node.js派生版,也可以在AUR仓库中找到python的派生版本:

$ yay -Ss pigpio
3.4 管理蓝牙

前几篇文章就心心念念的要写蓝牙部分……可惜我无论如何都连接不上我的小米蓝牙音箱,遂放弃,这里简要阐述一下使用蓝牙必要的软件包

首先,bluez是Linux官方的蓝牙协议栈,其次,树莓派4B需要一个单独的软件包来使得该协议栈可以和硬件交互,因此只需要安装这两个包即可:

$ sudo pacman -S bluez pi-bluetooth

安装完成以后,就可以使用bluetoothctl命令查看和管理蓝牙设备了

3.5 音频接口(3.5mm)

要使用3.5mm音频接口需要修改/boot/config.txt文件,添加dtparam=audio=on语句,不过在Manjaro ARM中,音频接口默认是打开的

不如,下一篇讲一讲如何在命令行中播放音乐?

你可能感兴趣的:(RaspberryPi,C/C++,Python)