发布 AUR 软件包 (ArchLinux)

理论上来说, 我们应该平等的对待每一个 GNU/Linux 发行版本. 但是, 因为窝日常使用 ArchLinux, 所以对 ArchLinux 有一些特别的优待, 比如自己做的软件优先为 ArchLinux 打包发布.

本文以软件包 librush-bin 为例, 介绍发布 AUR 软件包的过程.

目录

  • 1 AUR 简介
  • 2 编写 PKGBUILD
  • 3 本地打包测试
  • 4 上传到 AUR
  • 5 总结与展望

1 AUR 简介

相关链接: aur.archlinux.org/

AUR (Arch User Repository, Arch 用户仓库) 是一个允许 ArchLinux 用户上传软件包打包文件 (PKGBUILD) 的地方. 这区别于 ArchLinux 官方维护的软件包仓库.

只要注册一个账号, 就能上传 AUR 软件包, 所以 AUR 软件包的数量很多 (目前有 8.5 万个), 这也是 ArchLinux 的一大优点 (软件包数量多).

使用 AUR 软件包时, 用户下载 PKGBUILD 文件, 在本地生成 (构建) 软件包, 然后使用 pacman 安装. 相比手动编译打包软件, AUR 将这个过程自动化了 (软件包维护者已经做好了), 所以使用起来还是相对比较方便的.

由于 AUR 软件包不是官方维护的, 软件包的质量是没有保证的, 使用起来也是有一定风险的. 但总的来说, AUR 还是一个好东西.

2 编写 PKGBUILD

在开始之前, 请首先阅读下列文档:

不符合要求的软件包可能会被直接删除.

文件 librush-bin/PKGBUILD:

sh 复制代码
# Maintainer: secext2022 <secext2022 at outlook dot com>
pkgname=librush-bin
pkgver=0.1.0a2
pkgrel=1
# https://github.com/fm-elpac/pmim-ibus
pkgdesc="ibus module for pmim (a Chinese pinyin input method)"
arch=('x86_64')
url="https://github.com/fm-elpac/librush"
license=('LGPL-2.1-or-later OR GPL-3.0-or-later')
depends=('ibus>=1.5.29')
source=(
  'librush_release_x86_64-unknown-linux-gnu.tar.zst::https://github.com/fm-elpac/librush/releases/download/v0.1.0-a2/librush_release_x86_64-unknown-linux-gnu.tar.zst'
  'pmim_ibrus.xml')
sha256sums=('1d0a1d257d6d2d4daac56a926c7a40b6215964bd27251e6c4da3e7acfc1b81cf'
            '1ee458d6dc9ad97a4afe9939076675b43f236196eb3bd6e9a5a9e7e41ee1ded6')

build() {
  cd "$srcdir"
}

package() {
  cd "$srcdir"

  install -Dm755 -t "$pkgdir/usr/lib/pmim" target/release/ibrus
  install -Dm644 -t "$pkgdir/usr/share/ibus/component" pmim_ibrus.xml
}

解释:

  • # Maintainer: 文件的开头必须添加软件包维护者的信息.

  • pkgname=librush-bin: 软件包的名称. 预编译的软件包必须使用 -bin 后缀.

  • pkgver=0.1.0a2: 软件包的版本, 和上游发布的版本号保持一致. 注意不能含有 - 字符.

  • pkgrel=1: ArchLinux 软件包的版本, 从 1 开始. 每次 pkgver 更新后, 重置为 1.

  • pkgdesc=: 软件包的描述, 长度不超过 80 字符.

  • arch=('x86_64'): 这个软件包只支持 x86_64 架构的 CPU.

  • url=: 软件项目的网址.

  • license=: 软件包发布使用的许可协议.

  • depends=('ibus>=1.5.29'): 软件包运行所需的依赖. 在安装这个软件包之前, 所有依赖的软件包也会被安装.

  • source=: 构建软件包所需的文件列表 (以及下载网址).

  • sha256sums=: 上述文件的校验值 (hash). 这个不需要手动填写, 运行命令 updpkgsums 自动更新.

  • build(): 编译这个软件需要运行的命令. 因为这个软件已经编译过了, 所以这里没有.

  • package(): 打包这个软件需要运行的命令. 此处只是把两个文件安装 (复制) 到相应的路径.

3 本地打包测试

  • (1) 打包, 执行命令:

    sh 复制代码
    > makepkg

    成功之后就能获得 ArchLinux 格式的软件包:

    sh 复制代码
    > ls -l librush-bin-0.1.0a2-1-x86_64.pkg.tar.zst 
    -rw-r--r-- 1 s2 s2 1503158  3月 8日 09:08 librush-bin-0.1.0a2-1-x86_64.pkg.tar.zst
  • (2) 安装软件包:

    sh 复制代码
    > sudo pacman -U librush-bin-0.1.0a2-1-x86_64.pkg.tar.zst
  • (3) 安装之后可以查看这个软件包都有哪些文件:

    sh 复制代码
    > pacman -Ql librush-bin
    librush-bin /usr/
    librush-bin /usr/lib/
    librush-bin /usr/lib/pmim/
    librush-bin /usr/lib/pmim/ibrus
    librush-bin /usr/share/
    librush-bin /usr/share/ibus/
    librush-bin /usr/share/ibus/component/
    librush-bin /usr/share/ibus/component/pmim_ibrus.xml

    这个软件包很简单, 只有两个文件.

    /usr/lib/pmim/ibrus艾刷 (librush) 模块, 处理与 ibus 输入法框架的接口.

    /usr/share/ibus/component/pmim_ibrus.xml 是 ibus 配置文件, 用于启动运行艾刷模块.


相关文章: 《ibus 源代码阅读 (1)》 juejin.cn/post/734390...

4 上传到 AUR

相关链接:


  • (1) 注册账号并登录. 需要使用电子邮箱 (email).

  • (2) 创建 SSH 密钥对, 比如:

    sh 复制代码
    > ssh-keygen -t ed25519 -C aur-test -f ~/.ssh/id_ed25519-aur-test

    其中 -t ed25519 指定密钥使用的算法. -C aur-test 指定注释. -f ~/.ssh/id_ed25519-aur-test 指定密钥文件的路径.

    注意 ~/.ssh/id_ed25519-aur-test 文件是 私钥 , 千万不要泄露 ! 如果一旦泄露, 请尽快重新生成密钥, 并注销之前使用的密钥 (在 AUR 账户界面设置新的公钥).

  • (3) 在 AUR 账户界面设置自己的 SSH 公钥, 比如:

    sh 复制代码
    > cat ~/.ssh/id_ed25519-aur-test.pub
    ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPza3zpjo/RuKSRk6Kvr5kP9RtfNZ7crujvPqHUM9nfw aur-test

    注意 .pub 结尾的文件是 公钥, 把公钥复制粘贴到设置页面中的文本框.

  • (4) 配置 SSH, 比如:

    sh 复制代码
    > cat ~/.ssh/config
    
    Host aur.archlinux.org
        IdentityFile ~/.ssh/id_ed25519-aur-test
        User aur
  • (5) 测试 SSH 配置:

    sh 复制代码
    > ssh -T aur@aur.archlinux.org
    Welcome to AUR, secext2022! Interactive shell is disabled.
    Try `ssh aur@aur.archlinux.org help` for a list of commands.

    如果一切正常, 会显示类似的信息.

  • (6) 克隆 git 仓库:

    sh 复制代码
    > git -c init.defaultbranch=master clone aur@aur.archlinux.org:librush-bin.git

    因为这个软件包名称之前没有用过, 所以会是一个空仓库.

  • (7) 添加 PKGBUILD 等文件 (git add).

    更新源文件校验值:

    sh 复制代码
    > updpkgsums

    生成 .SRCINFO 文件:

    sh 复制代码
    > makepkg --printsrcinfo > .SRCINFO
  • (8) 提交 (git commit), 然后推送:

    sh 复制代码
    > git push

然后就可以在 AUR 看到发布的软件包啦 ~

不久后就可以搜索到这个软件包:

sh 复制代码
> yay -Ss librush
aur/librush-bin 0.1.0a2-1 (+1 1.00) (已安装)
    ibus module for pmim (a Chinese pinyin input method)

5 总结与展望

发布 AUR 软件包比发布 flathub 应用, 要简单容易快速很多.

相关文章: 《发布 flatpak 应用 (flathub)》 juejin.cn/post/734390...

所以目前 AUR 有 8.5 万个软件包, 而 flathub 只有 2512 个软件.


由于 ibus 输入法框架的限制, 目前只从 flatpak 安装应用是不够的. 在 flatpak 应用安装之后, 用户需要手动配置 ibus (安装 艾刷 ibrus 模块), 才能让整个拼音输入法正常工作.

ArchLinux 用户只需要从 AUR 安装 librush-bin 软件包即可, 这比手动配置容易一点.

未来如果 ibus 做出改变, 能够更好的支持第三方输入法, 可能就不用这么麻烦了.


本文使用 CC-BY-SA 4.0 许可发布.

相关推荐
楼田莉子1 分钟前
仿muduo库的高并发服务器——正则表达式与any类介绍及其简单模拟实现
linux·服务器·c++·学习·设计模式
IT摆渡者4 分钟前
Linux 巡检脚本BASH
linux·运维·bash
minji...5 分钟前
Linux 网络套接字编程(二)从 0 到 1 实现 UDP 回声服务器,recvfrom,sendto
linux·运维·网络·单片机·udp
不败公爵6 分钟前
finsh_thread_entry这个线程是自动启动的
java·linux·服务器
实心儿儿7 分钟前
Linux —— 基础IO — 文件描述符 + 重定向
linux·运维·服务器
计算机安禾9 分钟前
【Linux从入门到精通】第14篇:Linux引导流程浅析——从按下电源到登录界面
linux·服务器·人工智能·面试·知识图谱
雕刻刀10 分钟前
服务器模拟断网
linux·服务器·前端
小樱花的樱花14 分钟前
Linux文件系统的类型和结构
linux·运维·服务器
爱学习的小囧9 小时前
ESXi 8.0 原生支持 NVMe 固态硬盘吗?VMD 配置详解教程
linux·运维·服务器·esxi·esxi8.0
坚持就完事了9 小时前
Linux中的变量
linux·运维·服务器