发布 AUR 软件包 (ArchLinux)

首发日期 2024-03-09, 以下为原文内容:


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

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

目录

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

1 AUR 简介

相关链接: https://aur.archlinux.org/

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

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

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

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

2 编写 PKGBUILD

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

  • https://wiki.archlinux.org/title/AUR_submission_guidelines
  • https://wiki.archlinux.org/title/Arch_package_guidelines
  • https://wiki.archlinux.org/title/Arch_User_Repository
  • https://wiki.archlinux.org/title/Package_Maintainer_guidelines
  • https://wiki.archlinux.org/title/PKGBUILD

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

文件 librush-bin/PKGBUILD:

# 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/ibrusinstall -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) 打包, 执行命令:

    > makepkg
    

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

    > ls -l librush-bin-0.1.0a2-1-x86_64.pkg.tar.zst 
    -rw-r--r-- 1 s2 s2 1503158  38日 09:08 librush-bin-0.1.0a2-1-x86_64.pkg.tar.zst
    
  • (2) 安装软件包:

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

    > 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)》 https://blog.csdn.net/secext2022/article/details/136099328

4 上传到 AUR

相关链接:

  • https://aur.archlinux.org/
  • https://wiki.archlinux.org/title/AUR_submission_guidelines

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

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

    > 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 公钥, 比如:

    > cat ~/.ssh/id_ed25519-aur-test.pub
    ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPza3zpjo/RuKSRk6Kvr5kP9RtfNZ7crujvPqHUM9nfw aur-test
    

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

  • (4) 配置 SSH, 比如:

    > cat ~/.ssh/configHost aur.archlinux.orgIdentityFile ~/.ssh/id_ed25519-aur-testUser aur
    
  • (5) 测试 SSH 配置:

    > 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 仓库:

    > git -c init.defaultbranch=master clone aur@aur.archlinux.org:librush-bin.git
    

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

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

    更新源文件校验值:

    > updpkgsums
    

    生成 .SRCINFO 文件:

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

    > git push
    

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

在这里插入图片描述

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

> 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)》 https://blog.csdn.net/secext2022/article/details/136526447

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


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

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

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


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/281028.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

构建一个前端智能停车可视化系统

引言 随着城市化进程的加速&#xff0c;停车难问题日益突出。智能停车可视化系统通过实时展示停车场的车位信息&#xff0c;帮助用户快速找到空闲车位&#xff0c;提高停车效率。 目录 引言 一、系统设计 二、代码实现 1. 环境准备 2. 安装依赖 3. 创建停车场组件 4. 集…

【蓝桥杯入门记录】继电器、蜂鸣器及原理图分析

一、继电器、继电器概述 &#xff08;1&#xff09;蜂鸣器原理 蜂鸣器的发声原理由振动装置和谐振装置组成&#xff0c;而蜂鸣器又分为无源他激型与有源自激型&#xff0c;蜂鸣器的发声原理为: 1、无源他激型蜂鸣器的工作发声原理是&#xff1a;方波信号输入谐振装置转换为声…

Docker容器化技术(docker-compose示例:部署discuz论坛和wordpress博客,使用adminer管理数据库)

安装docker-compose [rootservice ~]# systemctl stop firewalld [rootservice ~]# setenforce 0 [rootservice ~]# systemctl start docker[rootservice ~]# wget https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-linux-x86_64创建目录 [rootse…

HarmonyOS NEXT应用开发之跨文件样式复用和组件复用

介绍 本示例主要介绍了跨文件样式复用和组件复用的场景。在应用开发中&#xff0c;我们通常需要使用相同功能和样式的ArkUI组件&#xff0c;例如购物页面中会使用相同样式的Button按钮、Text显示文字&#xff0c;我们常用的方法是抽取公共样式或者封装成一个自定义组件到公共组…

JavaEE 初阶篇-深入了解操作系统中的进程与 PCB

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 关于计算机是如何进行工作的 “常识” 1.1 关于寄存器、缓存与内存是如何配合 CPU “工作” 2.0 操作系统概述 2.1 操作系统内核 2.2 进程 2.3 PCB 2.3.1 PCB 属性…

QT增加线程函数步骤流程

在使用线程的时候&#xff0c;不仅要关注线程开启的时机&#xff0c;同时还要关注线程安全退出&#xff0c;这样才能保证程序的健壮性&#xff0c;如果线程开启的较多&#xff0c;且开启关闭比较频繁&#xff0c;建议使用线程池来处理。开启线程有三种方式&#xff1a;第一种C的…

【vue baidu-map】实现百度地图展示基地,鼠标悬浮标注点展示详细信息

实现效果如下&#xff1a; 自用代码记录 <template><div class"map" style"position: relative;"><baidu-mapid"bjmap":scroll-wheel-zoom"true":auto-resize"true"ready"handler"><bm-mar…

怎么轻松制作证件照?推荐这三款制作工具!

在日常生活中&#xff0c;我们经常需要制作各种证件照&#xff0c;如身份证、护照、驾驶证等。为了帮助大家快速、便捷地制作证件照&#xff0c;我将在本文中推荐三款优秀的证件照制作工具&#xff0c;包括国内外的软件&#xff0c;满足不同用户的需求。1.水印云 水印云是一款国…

MQ组件之RabbitMQ学习

MQ组件之RabbitMQ入门 同步调用和异步调用 在微服务架构中&#xff0c;服务之间的调用有同步调用和异步调用两种方式。 我们使用OpenFeign去调用是同步调用&#xff0c;同步调用的缺点很明显&#xff0c;在下图的场景中&#xff0c;支付完成后需要调用订单服务、仓库服务、短…

SpringBoot集成WebService

1&#xff09;添加依赖 <dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-spring-boot-starter-jaxws</artifactId><version>3.3.4</version><exclusions><exclusion><groupId>javax.validation<…

九.pandas绘图基础

目录 九.pandas绘图基础 1-柱状图 --参数stackedTrue堆积 --参数figsize(宽,高) --自定义横坐标 --设置字体&显示负号 2.箱型图 3. 折线图 九.pandas绘图基础 Pandas的DataFrame和Series&#xff0c;在matplotlib基础上封装了一个简易的绘图函数, 使得我们在数据处…

17.WEB渗透测试--Kali Linux(五)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;16.WEB渗透测试--Kali Linux&#xff08;四&#xff09;-CSDN博客 1.ettercap简介与使用…

丘一丘正则表达式

正则表达式(regular expression,regex,RE) 正则表达式是一种用来简洁表达一组字符串的表达式正则表达式是一种通用的字符串表达框架正则表达式是一种针对字符串表达“简洁”和“特征”思想的工具正则表达式可以用来判断某字符串的特征归属 正则表达式常用操作符 操作符说明实…

倪诗韵古琴雷期展示,琴体秀气

音色通透、细腻&#xff0c;灵敏度高&#xff0c;好不好自己听吧&#xff0c;绝对是入门演奏利器。想不想听试音&#xff1f;试音已经发出来了&#xff0c;但是这床琴已经订出去了&#xff0c;不过琴友可以听听雷期的音色&#xff0c;那就关注我吧

Streamlit实战手册:从数据应用到机器学习模型部署

Streamlit实战手册&#xff1a;从数据应用到机器学习模型部署 简介Streamlit核心功能介绍Streamlit的安装创建第一个Streamlit应用界面布局与导航数据处理与展示 Streamlit的进阶应用交互式组件按钮复选框单选按钮滑块 图表与可视化使用Matplotlib绘图使用Plotly创建交互式图表…

视频号下载助手失效了?如何解决下载视频问题!

在刷短视频的时候难免会遇到部分的视频号视频下载不下来&#xff0c;那我们该如何解决视频号下载问题呢&#xff1f; 视频号下载助手解决方案 视频号下载助手失效分为两种情况! 1、可以解析&#xff0c;但不能下载 根据使用视频号下载助手常见的问题&#xff0c;我们发现会有…

超声波气象站和气象雷达有什么区别

TH-CQX5超声波气象站和气象雷达在气象监测领域各自扮演着重要的角色&#xff0c;但它们的工作原理和应用范围存在明显的区别。 首先&#xff0c;超声波气象站的工作原理主要基于超声波在大气中的传播特性。它利用超声波发射器向周围环境发射超声波信号&#xff0c;并通过测量这…

Emotion Prompt-LLM能够理解并能通过情感刺激得以增强

Large Language Models Understand and Can be Enhanced by Emotional Stimuli 情感智能对我们的日常行为和互动产生了显著的影响。尽管大型语言模型&#xff08;LLMs&#xff09;被视为向人工通用智能迈进的一大步&#xff0c;在许多任务中表现出色&#xff0c;但目前尚不清楚…

MES管理系统在生产计划与排产调度流程中的应用

在现代工业生产中&#xff0c;MES管理系统已经成为企业优化生产流程、提升生产效率的重要工具。MES管理系统在生产计划与排产调度中的具体应用&#xff0c;不仅能够帮助企业更好地控制生产过程&#xff0c;还能实现资源的合理配置&#xff0c;从而提高企业的整体竞争力。 首先&…

5G网络架构与组网部署03--5G网络组网部署

1. SA组网与NSA组网 &#xff08;1&#xff09;NSA 非独立组网&#xff1a;终端同时接入4G基站和5G基站&#xff0c;只能实现5G部分功能 &#xff08;2&#xff09;SA组网【最终目标】&#xff1a;5G基站可以单独提供服务&#xff0c;接入的是5G核心网 区别&#xff1a;同一时间…