- 09
- 3
- 4
- 文章类型
- 完全原创 —— 转载请标注作者
0x00 啥是AUR
Arch 用户软件仓库(Arch User Repository,AUR)是为用户而建、由用户主导的 Arch 软件仓库。AUR 中的软件包以软件包生成脚本(PKGBUILD)的形式提供,用户自己通过 makepkg 生成包,再由 pacman 安装。创建 AUR 的初衷是方便用户维护和分享新软件包,并由官方定期从中挑选软件包进入 community 仓库。本文介绍用户访问和使用 AUR 的方法。(从Arch Wiki - Arch 用户软件仓库 (AUR)抄的)
简单来说,
0x01 创建账号&配置提交环境
你可以去这里注册你的AUR账户。
如果你注册好了,那么恭喜你,你注册好了。不过,你要配置一下这会让你的电脑被我偷走的时候,阻止我在你的AUR仓库造反。 下面我将会告诉你该怎么做。当然,你也可以去上面提到的
要创建新的密钥对,你可以这么做:
然后,你可以去你账户的配置页面 (https://aur.archlinux.org/account/<你的用户名>/edit) 添加
你还需要告诉你的
这样,你应该就可以提交你的包了。
0x02 创建仓库
这很简单,你只要找一个你觉得合适的存储位置,然后执行:
你应该会看到你甚至可以开一瓶可乐来祝贺它的诞生。
0x03 创建一个PKGBUILD
如果你不想抄我的,你可以去这里。当然,你也可以让男人告诉你,只要执行
对于各种变量的解释,你可以去上述的
在做完了一切之后,你最好
0x04 提交你的包
造好了
然后你就可以提交了:
之后,你应该能在你的
Arch 用户软件仓库(Arch User Repository,AUR)是为用户而建、由用户主导的 Arch 软件仓库。AUR 中的软件包以软件包生成脚本(PKGBUILD)的形式提供,用户自己通过 makepkg 生成包,再由 pacman 安装。创建 AUR 的初衷是方便用户维护和分享新软件包,并由官方定期从中挑选软件包进入 community 仓库。本文介绍用户访问和使用 AUR 的方法。(从Arch Wiki - Arch 用户软件仓库 (AUR)抄的)
简单来说,
AUR就是Arch User在互联网上分享自己制作的软件包的地方。如果你很感兴趣,你应该去Wiki看一看,里面东西挺多的。0x01 创建账号&配置提交环境
你可以去这里注册你的AUR账户。
如果你注册好了,那么恭喜你,你注册好了。不过,你要配置一下
SSH Public Key,让AUR的服务器知道这是你。你最好生成一个新的SSH 密钥对,因为Arch Wiki让我这么做。 Wiki中索取更多细节。要创建新的密钥对,你可以这么做:
Bash:
$ ssh-keygen -f ~/.ssh/aur # 这会在~/.ssh下创建aur(私钥)和aur.pub(公钥)
然后,你可以去你账户的配置页面 (https://aur.archlinux.org/account/<你的用户名>/edit) 添加
~/.ssh/aur.pub内的内容。你应该把他们放在 SSH Public Key: 后的文本框里面,然后在页面底部填写你的密码,更新一下就可以了。你还需要告诉你的
git在连接aur.archlinux.org的时候使用这对密钥,可以在.ssh/config里添加这些:
代码:
Host aur.archlinux.org
IdentityFile ~/.ssh/aur
User aur
这样,你应该就可以提交你的包了。
0x02 创建仓库
这很简单,你只要找一个你觉得合适的存储位置,然后执行:
Bash:
$ git -c init.defaultbranch=master clone ssh://aur@aur.archlinux.org/<pkgbase>.git # 此处的<pkgbase>应该改成你的包名。
你应该会看到
warning: You appear to have cloned an empty repository.。这是在告诉你,你拉取了一个不存在的仓库。如果它真的不存在,那么它马上就要存在了。0x03 创建一个PKGBUILD
PKGBUILD就是一个告诉makepkg怎么造一个软件包的文件。你可以先看一下我的:
代码:
# Maintainer: TurboHsu <hsuturbo@outlook.com>
pkgname=munager-git
_pkgname=munager
pkgrel=1
pkgver=0.1.1.r0.gcc90098
pkgdesc="Music managing utils which can fetch lyrics and do sync."
arch=('any')
url="https://github.com/TurboHsu/munager"
license=('Apache')
makedepends=('git' 'go')
provides=('munager')
source=("git+${url}.git#branch=main")
pkgver() {
cd "${srcdir}"/"${_pkgname}"/
git describe --long --tags | sed 's/^v//;s/\([^-]*-g\)/r\1/;s/-/./g'
}
build() {
cd "${srcdir}"/"${_pkgname}"/
go build -ldflags="-s -w -linkmode external -extldflags \"${LDFLAGS}\"" \
-trimpath \
-buildmode=pie \
-mod=readonly \
-modcacherw \
.
}
package() {
cd "${srcdir}"/"${_pkgname}"/
install -Dm 755 munager -t "${pkgdir}"/usr/bin
}
sha256sums=('SKIP')
如果你不想抄我的,你可以去这里。当然,你也可以让
manman PKGBUILD,man就会告诉你更多细节。对于各种变量的解释,你可以去上述的
man page里面查找,里面有详细的定义。这里我就说几个。_pkgname是我自己定义的一个变量,你可以看到我在build()中引入了它。在克隆仓库之后,我需要进入源码的目录。当然,你如果想要直接写死,也是可以的。pkgver()会自动更新pkgver的版本号。如果你尝试写一个从最新源码编译的软件包,这会很有用。而且,如果你在构建从VCS编译的软件包,你最好看看这个。build()中编译go的参数来自这里,主要是为了让程序不包含构建时的目录,以免产生一些问题。要不然,makepkg会告诉你:WARNING: Package contains reference to $srcdirpackage()中的install来自coreutils,它在这里做的事情实际上就是复制一些文件,并且给他们加上你设置的权限。这样会比较规范,我猜。在做完了一切之后,你最好
makepkg一下,看看有没有什么问题。0x04 提交你的包
造好了
PKGBUILD之后,你还需要生成一下.SRCINFO。你可以这么做:
Bash:
$ makepkg --printsrcinfo > .SRCINFO
然后你就可以提交了:
Bash:
$ git add PKGBUILD .SRCINFO # 添加你的PKGBUILD和.SRCINFO
$ git commit -m "Blah blah" # Commit
$ git push # Push
之后,你应该能在你的
AUR上看见你的包了。别人应该也就可以用yay之类的来装它们。
最后编辑: