发布 AUR 软件包 (ArchLinux)

news2024/9/21 0:36:52

首发日期 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/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) 打包, 执行命令:

    > 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/config
    
    Host aur.archlinux.org
        IdentityFile ~/.ssh/id_ed25519-aur-test
        User 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.coloradmin.cn/o/1537253.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

leecode1793 | 好子数组的最大分数 | 求给高度矩阵最大值

题目我就不念了&#xff0c;就一个字难理解&#xff0c;给的题总是这么难懂&#xff0c;总感觉出题人的语文是体育老师教的&#xff1f; 还有就是思维转变&#xff0c;才能能好的理解&#xff1f;一味的钻牛角尖死理解&#xff0c;效果不好 思维的转变 >悟性&#xff1f;&am…

以RISC-V架构的CLIC中断机制讲解:中断咬尾、中断抢占、中断晚到

1、中断的相关属性 中断所属特权模式&#xff08;M模式 > S模式 > U模式&#xff09;中断等级&#xff1a;决定是否能够抢占当前的中断中断优先级&#xff1a;影响中断的仲裁&#xff0c;优先级高时优先被响应中断编号&#xff1a;区分中断&#xff0c;影响中断的仲裁 …

农业四情监测系统的工作原理

农业四情监测系统的工作原理【TH-Q1】农业四情监测系统是一种应用现代科技手段&#xff0c;以实现对农田环境信息的实时监测和数据采集的系统。这一系统通过对农田的土壤、气象、病虫害以及作物生长状况等四个方面的实时监测&#xff0c;帮助农民和农业管理者更好地了解和掌握农…

数据结构:详解【栈和队列】的实现

目录 1. 栈1.1 栈的概念及结构1.2 栈的实现1.3 栈的功能1.4 栈的功能的实现1.5 完整代码 2. 队列2.1 队列的概念及结构2.2 队列的实现2.3 队列的功能2.4 队列的功能的实现2.5 完整代码 1. 栈 1.1 栈的概念及结构 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的…

opencv自定义间隔帧获取视频转存为图片的GUI界面实现

该程序功能只将mp4转为jpg 希望得到您的指导 非常感谢您观看我的博客&#xff0c;我的博客是为了记录我的学习过程同时保留我的某些可重复利用代码以方便下次使用。如果您对我的博客有任何建议还请您不吝指出&#xff0c;非常感谢您对我的指导。 背景 在实现opencv逐帧获取…

js处理数组分类

const obj [{"groupingType": "1","remark": "梨花带雨","totalRmbMoney": 7,"kyeGroupingType": "广州一组"},{"groupingType": "2","remark": "99","…

js 实现动画的两种方案对比:setTimeout vs RAF (requestAnimationFrame)

setTimeout 需手动控制频率&#xff0c;页面隐藏后仍会执行动画&#xff0c;更加耗费性能。 requestAnimationFrame 简称 RAF , 会在浏览器中每次刷新屏幕时调用一个函数&#xff0c;用于创建平滑的动画&#xff0c;因为它会自动适应屏幕的刷新率&#xff0c;无需手动控制频率。…

搭建自己的博客-拾壹博客

写在前面 唠叨两句 作为一个技术开发人员&#xff0c;没有一个自己的博客&#xff0c;人生注定缺少点什么东西&#xff0c;是不是&#xff1f;最近研究了一些博客搭建&#xff0c;本文是使用开源项目”拾壹博客“进行搭建。 推荐等级 所需技术难度&#xff1a;4星 后续自定义…

Redis中的缓存击穿

缓存击穿 缓存击穿问题也叫热点key问题&#xff0c;就是一个被高并发访问并且缓存重建业务较复杂的key突然失效了&#xff0c;无数的请求访问会在瞬间给数据库带来巨大压力。 &#x1f914;现象分析&#xff1a; 当线程1查询缓存时&#xff0c;未命中&#xff0c;于是从数据…

2004-2022年各省化学需氧量数据(无缺失)

2004-2022年各省化学需氧量数据&#xff08;无缺失&#xff09; 1、2004-2022年 2、范围&#xff1a;31省 3、指标&#xff1a;化学需氧量 4、来源&#xff1a;各省年鉴、国家统计局、环境年鉴 5、指标解释&#xff1a;化学需氧量(COD)排放量指工业废水中COD排放量与生活污…

python的O2O生鲜食品订购flask-django-nodejs-php

用户只能通过一些类似软件进行查看生鲜超市&#xff0c;这样的管理方式仍然是比较机械传统的&#xff0c;本文通过对市面上常见的线上管理系统与现实生活中结合问题的讨论&#xff0c;从一个微信小程序的O2O生鲜食品订购角度进行需求分析&#xff0c;提供一些新的思路&#xff…

2024年阿里云2核4G服务器价格30元、165元和199元1年

阿里云2核4G服务器租用优惠价格&#xff0c;轻量2核4G服务器165元一年、u1服务器2核4G5M带宽199元一年、云服务器e实例30元3个月&#xff0c;活动链接 aliyunfuwuqi.com/go/aliyun 活动链接如下图&#xff1a; 阿里云2核4G服务器优惠价格 轻量应用服务器2核2G4M带宽、60GB高效…

外卖店优先级c++

题目 输入样例&#xff1a; 2 6 6 1 1 5 2 3 1 6 2 2 1 6 2输出样例&#xff1a; 1样例解释 6时刻时&#xff0c;1 号店优先级降到 3&#xff0c;被移除出优先缓存&#xff1b;2 号店优先级升到 6&#xff0c;加入优先缓存。 所以是有 1 家店 (2 号) 在优先缓存中。 思路 …

整数和浮点数在内存中存储

整数在内存中的存储 整数的2进制表⽰⽅法有三种&#xff0c;即原码、反码和补码。 对于整形来说&#xff0c;数据存放内存中的其实是补码。 在计算机系统中&#xff0c;数值一律用补码来表示和存储。原因是&#xff0c;使用补码&#xff0c;可以使符号位和数值域统一处理&am…

手撕LRU 最近最少使用缓存淘汰策略 + LinkedHashMap

LRU 最近最少使用缓存淘汰策略 1 LRU 算法就是一种缓存淘汰策略2 手撕LRU3 LinkedHashMap 常见面试题 1 LRU 算法就是一种缓存淘汰策略 计算机的缓存容量有限&#xff0c;如果缓存满了就要删除一些内容&#xff0c;给新内容腾位置。但问题是&#xff0c;删除哪些内容呢&#x…

【算法】双指针的应用

文章目录 前言1. 移动零&#xff08;easy&#xff09;2. 复写零&#xff08;easy&#xff09;3. 快乐数&#xff08;medium&#xff09;4. 盛水最多的容器&#xff08;medium&#xff09;5. 有效三角形的个数&#xff08;medium&#xff09;6.和为 s 的两个数字&#xff08;eas…

diffusion model(十四): prompt-to-prompt 深度剖析

infopaperPrompt-to-Prompt Image Editing with Cross Attention Controlgithubhttps://github.com/google/prompt-to-promptOrg:Google Research个人复现https://github.com/myhz0606/diffusion_learning个人博客主页http://myhz0606.com/article/p2p 1 前言 基于扩散模型&a…

【OpenSSH】Windows系统使用OpenSSH搭建SFTP服务器

【OpenSSH】Windows系统使用OpenSSH搭建SFTP服务器 文章目录 【OpenSSH】Windows系统使用OpenSSH搭建SFTP服务器一、环境说明二、安装配置步骤1.下载完成后&#xff0c;传至服务器或者本机并解压至C:/Program Files/目录下2.打开PowerShell终端3.进入到包含ssh可执行exe文件的文…

线性顺序表算法库

list.cpp 具体函数实现 #include <stdio.h> #include "list.h" #include <malloc.h>/************************************************** ①函数名: CreateList 功 能: 用数组构建顺序表 参 数: ①SqList *&L:传入的线性表 ②ElemType a[]:使用…

网络安全是什么? 为什么要学网络安全 ?网络安全怎么学习?

网络安全是什么&#xff1f; 网络安全是指保护计算机网络、网络设备、应用程序、数据和用户免受非法访问、攻击、破坏或泄漏的过程和技术。网络安全包括多个领域&#xff0c;例如网络防御、漏洞管理、加密技术、身份验证和访问控制等等。 网络安全非常重要&#xff0c;因为现…