-
Notifications
You must be signed in to change notification settings - Fork 1
/
build-aur-bab94b3d.js
52 lines (52 loc) · 27.9 KB
/
build-aur-bab94b3d.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import{_ as i}from"./ValaxyMain.vue_vue_type_style_index_0_lang-bf8ee3fd.js";import{_ as D,p as y,c as C,w as e,o as d,e as h,a as s,d as l,b as o,r as t,f as A}from"./app-4433fae6.js";import"./YunFooter.vue_vue_type_script_setup_true_lang-80290804.js";import"./YunCard.vue_vue_type_style_index_0_lang-e4df850e.js";import"./YunPageHeader.vue_vue_type_script_setup_true_lang-80be03ea.js";const ks=JSON.parse('{"title":"构建自己的 AUR 软件包","description":"","frontmatter":{"title":"构建自己的 AUR 软件包","toc":true,"date":"2022-11-03T20:36:18.000Z","tags":["Linux","PKGBUILD","AUR"],"categories":["Linux"],"cover":null},"headers":[{"level":2,"title":"前期准备","slug":"前期准备","link":"#前期准备","children":[{"level":3,"title":"AUR 账号","slug":"aur-账号","link":"#aur-账号","children":[]},{"level":3,"title":"必要环境安装","slug":"必要环境安装","link":"#必要环境安装","children":[]},{"level":3,"title":"makepkg","slug":"makepkg","link":"#makepkg","children":[]}]},{"level":2,"title":"构建 AUR 包","slug":"构建-aur-包","link":"#构建-aur-包","children":[{"level":3,"title":"编写 PKGBUILD 文件","slug":"编写-pkgbuild-文件","link":"#编写-pkgbuild-文件","children":[]},{"level":3,"title":"测试软件包","slug":"测试软件包","link":"#测试软件包","children":[]},{"level":3,"title":"上传至 AUR 仓库","slug":"上传至-aur-仓库","link":"#上传至-aur-仓库","children":[]}]},{"level":2,"title":"参考资料","slug":"参考资料","link":"#参考资料","children":[]}],"relativePath":"pages/posts/linux/build-aur.md","path":"/home/runner/work/YlYZ/YlYZ/pages/posts/linux/build-aur.md","lastUpdated":1686297441000}'),r=JSON.parse('{"title":"构建自己的 AUR 软件包","description":"","frontmatter":{"title":"构建自己的 AUR 软件包","toc":true,"date":"2022-11-03T20:36:18.000Z","tags":["Linux","PKGBUILD","AUR"],"categories":["Linux"],"cover":null},"headers":[{"level":2,"title":"前期准备","slug":"前期准备","link":"#前期准备","children":[{"level":3,"title":"AUR 账号","slug":"aur-账号","link":"#aur-账号","children":[]},{"level":3,"title":"必要环境安装","slug":"必要环境安装","link":"#必要环境安装","children":[]},{"level":3,"title":"makepkg","slug":"makepkg","link":"#makepkg","children":[]}]},{"level":2,"title":"构建 AUR 包","slug":"构建-aur-包","link":"#构建-aur-包","children":[{"level":3,"title":"编写 PKGBUILD 文件","slug":"编写-pkgbuild-文件","link":"#编写-pkgbuild-文件","children":[]},{"level":3,"title":"测试软件包","slug":"测试软件包","link":"#测试软件包","children":[]},{"level":3,"title":"上传至 AUR 仓库","slug":"上传至-aur-仓库","link":"#上传至-aur-仓库","children":[]}]},{"level":2,"title":"参考资料","slug":"参考资料","link":"#参考资料","children":[]}],"relativePath":"pages/posts/linux/build-aur.md","path":"/home/runner/work/YlYZ/YlYZ/pages/posts/linux/build-aur.md","lastUpdated":1686297441000}'),u={name:"pages/posts/linux/build-aur.md",data(){return{data:r,frontmatter:r.frontmatter}},setup(){y("pageData",r)}},F=s("p",null,"最近在写装机脚本的时候,发现我以前在网上随便找的 SDDM 主题没有对应的 AUR 包,为了方便以后安装,干脆就打一个包好了,顺便把里面英文的提示改成中文的,也免去了手动装依赖的麻烦",-1),g={id:"前期准备",tabindex:"-1"},m={id:"aur-账号",tabindex:"-1"},k=s("p",null,"注册 AUR 账号,注意,不同于 ArchWiki 的账号",-1),_={id:"必要环境安装",tabindex:"-1"},E=s("p",null,"确保已安装完整的 base-devel",-1),B=s("div",{class:"language-shell zsh"},[s("span",{class:"copy"}),s("pre",{class:"shiki material-theme-palenight",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#FFCB6B"}},"paru"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"-S"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"--needed"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"base-devel")]),l(`
`),s("span",{class:"line"})])])],-1),f=s("p",null,"安装 PKGBUILD 检查工具 namcap (可选)",-1),b=s("div",{class:"language-shell zsh"},[s("span",{class:"copy"}),s("pre",{class:"shiki material-theme-palenight",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#FFCB6B"}},"paru"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"-S"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"namcap")]),l(`
`),s("span",{class:"line"})])])],-1),U={id:"makepkg",tabindex:"-1"},v={id:"构建-aur-包",tabindex:"-1"},x=s("p",null,"总体上分为两步,编写 PKGBUILD 文件,然后使用 makepkg 来构建出 AUR 包",-1),L={id:"编写-pkgbuild-文件",tabindex:"-1"},P=s("p",null,"pacman 自带有几个 PKGBUILD 的例子",-1),R=s("div",{class:"language-shell zsh"},[s("span",{class:"copy"}),s("pre",{class:"shiki material-theme-palenight",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#FFCB6B"}},"/usr/share/pacman")]),l(`
`),s("span",{class:"line"},[s("span",{style:{color:"#FFCB6B"}},"├──"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"keyrings")]),l(`
`),s("span",{class:"line"},[s("span",{style:{color:"#FFCB6B"}},"│ "),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"├──"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"archlinuxcn.gpg")]),l(`
`),s("span",{class:"line"},[s("span",{style:{color:"#FFCB6B"}},"│ "),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"├──"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"archlinuxcn-revoked")]),l(`
`),s("span",{class:"line"},[s("span",{style:{color:"#FFCB6B"}},"│ "),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"├──"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"archlinuxcn-trusted")]),l(`
`),s("span",{class:"line"},[s("span",{style:{color:"#FFCB6B"}},"│ "),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"├──"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"archlinux.gpg")]),l(`
`),s("span",{class:"line"},[s("span",{style:{color:"#FFCB6B"}},"│ "),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"├──"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"archlinux-revoked")]),l(`
`),s("span",{class:"line"},[s("span",{style:{color:"#FFCB6B"}},"│ "),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"└──"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"archlinux-trusted")]),l(`
`),s("span",{class:"line"},[s("span",{style:{color:"#FFCB6B"}},"├──"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"PKGBUILD.proto"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#676E95","font-style":"italic"}},"#PKGBUILD的示例")]),l(`
`),s("span",{class:"line"},[s("span",{style:{color:"#FFCB6B"}},"├──"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"PKGBUILD-split.proto")]),l(`
`),s("span",{class:"line"},[s("span",{style:{color:"#FFCB6B"}},"├──"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"PKGBUILD-vcs.proto")]),l(`
`),s("span",{class:"line"},[s("span",{style:{color:"#FFCB6B"}},"└──"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"proto.install"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#676E95","font-style":"italic"}},"#.install脚本的示例")]),l(`
`),s("span",{class:"line"})])])],-1),I=s("p",null,"PKGBUILD 的语法和 bash 一致,同时内置了两个重要变量",-1),z=s("blockquote",null,[s("p",null,[l("[!NOTE] srcdir This points to the directory where "),s("em",null,"makepkg"),l(" extracts or symlinks all files in the source array.")])],-1),w=s("blockquote",null,[s("p",null,[l("[!NOTE] pkgdir This points to the directory where "),s("em",null,"makepkg"),l(" bundles the installed package, which becomes the root directory of your built package.")])],-1),G=s("ul",null,[s("li",null,"srcdir 就是解压后的 source 所在的文件夹的绝对路径"),s("li",null,"pkgdir 会被当作系统的根目录")],-1),K=s("p",null,"官方的 PKGBUILD 示例写的非常详细,实际上我这种简单的需求是用不着那么多变量的,以下是我的 PKGBUILD",-1),$=s("div",{class:"language-bash PKGBUILD"},[s("span",{class:"copy"}),s("pre",{class:"shiki material-theme-palenight",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#A6ACCD"}},"pkgname"),s("span",{style:{color:"#89DDFF"}},"="),s("span",{style:{color:"#C3E88D"}},"sddm-swish-zh"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#676E95","font-style":"italic"}},"#包名")]),l(`
`),s("span",{class:"line"},[s("span",{style:{color:"#A6ACCD"}},"pkgver"),s("span",{style:{color:"#89DDFF"}},"="),s("span",{style:{color:"#F78C6C"}},"1.0"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#676E95","font-style":"italic"}},"#版本号")]),l(`
`),s("span",{class:"line"},[s("span",{style:{color:"#A6ACCD"}},"pkgrel"),s("span",{style:{color:"#89DDFF"}},"="),s("span",{style:{color:"#F78C6C"}},"1"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#676E95","font-style":"italic"}},"#发布号,可以理解为小版本号,完整的版本号为 pkgname-pkgrel")]),l(`
`),s("span",{class:"line"},[s("span",{style:{color:"#A6ACCD"}},"pkgdesc"),s("span",{style:{color:"#89DDFF"}},"="),s("span",{style:{color:"#89DDFF"}},'"'),s("span",{style:{color:"#C3E88D"}},"A login theme for SDDM Display Manager."),s("span",{style:{color:"#89DDFF"}},'"'),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#676E95","font-style":"italic"}},"# 包描述")]),l(`
`),s("span",{class:"line"},[s("span",{style:{color:"#A6ACCD"}},"arch"),s("span",{style:{color:"#89DDFF"}},"=("),s("span",{style:{color:"#89DDFF"}},"'"),s("span",{style:{color:"#C3E88D"}},"any"),s("span",{style:{color:"#89DDFF"}},"'"),s("span",{style:{color:"#89DDFF"}},")"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#676E95","font-style":"italic"}},"#软件包适用的架构")]),l(`
`),s("span",{class:"line"},[s("span",{style:{color:"#A6ACCD"}},"url"),s("span",{style:{color:"#89DDFF"}},"="),s("span",{style:{color:"#89DDFF"}},'"'),s("span",{style:{color:"#C3E88D"}},"https://github.com/Meow-2/Swish"),s("span",{style:{color:"#89DDFF"}},'"'),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#676E95","font-style":"italic"}},"#软件官网")]),l(`
`),s("span",{class:"line"},[s("span",{style:{color:"#A6ACCD"}},"license"),s("span",{style:{color:"#89DDFF"}},"=("),s("span",{style:{color:"#89DDFF"}},"'"),s("span",{style:{color:"#C3E88D"}},"GPL3"),s("span",{style:{color:"#89DDFF"}},"'"),s("span",{style:{color:"#89DDFF"}},")"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#676E95","font-style":"italic"}},"#许可证")]),l(`
`),s("span",{class:"line"},[s("span",{style:{color:"#A6ACCD"}},"depends"),s("span",{style:{color:"#89DDFF"}},"=("),s("span",{style:{color:"#89DDFF"}},"'"),s("span",{style:{color:"#C3E88D"}},"qt5-graphicaleffects"),s("span",{style:{color:"#89DDFF"}},"'"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#89DDFF"}},"'"),s("span",{style:{color:"#C3E88D"}},"qt5-quickcontrols2"),s("span",{style:{color:"#89DDFF"}},"'"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#89DDFF"}},"'"),s("span",{style:{color:"#C3E88D"}},"qt5-svg"),s("span",{style:{color:"#89DDFF"}},"'"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#89DDFF"}},"'"),s("span",{style:{color:"#C3E88D"}},"sddm"),s("span",{style:{color:"#89DDFF"}},"'"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#89DDFF"}},"'"),s("span",{style:{color:"#C3E88D"}},"plasma-framework"),s("span",{style:{color:"#89DDFF"}},"'"),s("span",{style:{color:"#89DDFF"}},")"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#676E95","font-style":"italic"}},"#依赖的其他包")]),l(`
`),s("span",{class:"line"},[s("span",{style:{color:"#A6ACCD"}},"source"),s("span",{style:{color:"#89DDFF"}},"=("),s("span",{style:{color:"#89DDFF"}},'"${'),s("span",{style:{color:"#A6ACCD"}},"pkgname"),s("span",{style:{color:"#89DDFF"}},"}"),s("span",{style:{color:"#C3E88D"}},".tar.gz::"),s("span",{style:{color:"#89DDFF"}},"${"),s("span",{style:{color:"#A6ACCD"}},"url"),s("span",{style:{color:"#89DDFF"}},"}"),s("span",{style:{color:"#C3E88D"}},"/archive/refs/tags/"),s("span",{style:{color:"#89DDFF"}},"${"),s("span",{style:{color:"#A6ACCD"}},"pkgver"),s("span",{style:{color:"#89DDFF"}},"}"),s("span",{style:{color:"#C3E88D"}},".tar.gz"),s("span",{style:{color:"#89DDFF"}},'"'),s("span",{style:{color:"#89DDFF"}},")"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#676E95","font-style":"italic"}},"#源码")]),l(`
`),s("span",{class:"line"},[s("span",{style:{color:"#A6ACCD"}},"md5sums"),s("span",{style:{color:"#89DDFF"}},"=("),s("span",{style:{color:"#89DDFF"}},"'"),s("span",{style:{color:"#C3E88D"}},"c42620c36097b1c28345eae982184e00"),s("span",{style:{color:"#89DDFF"}},"'"),s("span",{style:{color:"#89DDFF"}},")"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#676E95","font-style":"italic"}},"#与source对应的md5")]),l(`
`),s("span",{class:"line"}),l(`
`),s("span",{class:"line"},[s("span",{style:{color:"#82AAFF"}},"package"),s("span",{style:{color:"#89DDFF"}},"()"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#89DDFF"}},"{")]),l(`
`),s("span",{class:"line"},[s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#FFCB6B"}},"mkdir"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"-p"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#89DDFF"}},'"${'),s("span",{style:{color:"#A6ACCD"}},"pkgdir"),s("span",{style:{color:"#89DDFF"}},"}"),s("span",{style:{color:"#C3E88D"}},"/usr/share/sddm/themes"),s("span",{style:{color:"#89DDFF"}},'"')]),l(`
`),s("span",{class:"line"},[s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#FFCB6B"}},"cp"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"-r"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#89DDFF"}},'"${'),s("span",{style:{color:"#A6ACCD"}},"srcdir"),s("span",{style:{color:"#89DDFF"}},"}"),s("span",{style:{color:"#C3E88D"}},"/Swish-"),s("span",{style:{color:"#89DDFF"}},"${"),s("span",{style:{color:"#A6ACCD"}},"pkgver"),s("span",{style:{color:"#89DDFF"}},'}"'),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#89DDFF"}},'"${'),s("span",{style:{color:"#A6ACCD"}},"pkgdir"),s("span",{style:{color:"#89DDFF"}},"}"),s("span",{style:{color:"#C3E88D"}},"/usr/share/sddm/themes/Swish-"),s("span",{style:{color:"#89DDFF"}},"${"),s("span",{style:{color:"#A6ACCD"}},"pkgver"),s("span",{style:{color:"#89DDFF"}},"}"),s("span",{style:{color:"#C3E88D"}},"/"),s("span",{style:{color:"#89DDFF"}},'"')]),l(`
`),s("span",{class:"line"},[s("span",{style:{color:"#89DDFF"}},"}")]),l(`
`),s("span",{class:"line"})])])],-1),S=s("p",null,[l("除了必要的包信息,其中最重要的就是 source 变量和 package 函数了,source 变量的值就是源码的所在,一般是一个 HTTP 或 FTP 地址,可以通过在前面加 "),s("code",null,"name::"),l(" 的方式来重命名下载下来的压缩包")],-1),N=s("p",null,"package 函数会在一切就绪后执行,在 package 函数之前还有 prepare、build、check 函数用于执行一些准备、编译构建、检查测试之类的工作,因为我的包不需要从源码编译,所以直接在 package 函数里进行简单的复制就好了",-1),T=s("p",null,"此外,可以在 depends 数组内指定依赖包,md5sums 是针对下载下来的 source 压缩包的,可以使用 md5sum 工具计算,也可以不写这个数组,或者用 'SKIP' 来跳过某个数组元素的检查",-1),Y=s("p",null,"编写完 PKGBUILD,就可以在本地安装软件包了",-1),M={id:"测试软件包",tabindex:"-1"},O=s("p",null,"在 PKGBUILD 所在文件夹尝试生成软件包,makepkg 会自动寻找当前文件夹下的 PKGBUILD",-1),W=s("div",{class:"language-shell zsh"},[s("span",{class:"copy"}),s("pre",{class:"shiki material-theme-palenight",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#FFCB6B"}},"makepkg")]),l(`
`),s("span",{class:"line"})])])],-1),q=s("p",null,"之后会得到",-1),Z=s("div",{class:"language-shell zsh"},[s("span",{class:"copy"}),s("pre",{class:"shiki material-theme-palenight",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#FFCB6B"}},"./Swish")]),l(`
`),s("span",{class:"line"},[s("span",{style:{color:"#FFCB6B"}},"├──"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"pkg")]),l(`
`),s("span",{class:"line"},[s("span",{style:{color:"#FFCB6B"}},"├──"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"PKGBUILD")]),l(`
`),s("span",{class:"line"},[s("span",{style:{color:"#FFCB6B"}},"├──"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"src")]),l(`
`),s("span",{class:"line"},[s("span",{style:{color:"#FFCB6B"}},"├──"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"Swish-1.0.tar.gz"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#676E95","font-style":"italic"}},"#下载的source")]),l(`
`),s("span",{class:"line"},[s("span",{style:{color:"#FFCB6B"}},"└──"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"swish-zh-sddm-theme-git-1.0-1-any.pkg.tar.zst"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#676E95","font-style":"italic"}},"#makepkg生成的AUR软件包")]),l(`
`),s("span",{class:"line"})])])],-1),V=s("p",null,[l("可以看出 makepkg 生成的 AUR 包格式"),s("code",null,"$pkgname-$pkgver.pkg.tar.gz.zst")],-1),H=s("p",null,"看看这个包的信息是否符合你的预期,以我的包为例",-1),J=s("div",{class:"language-shell zsh"},[s("span",{class:"copy"}),s("pre",{class:"shiki material-theme-palenight",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#FFCB6B"}},"paru"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"-Qlp"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"swish-zh-sddm-theme-git-1.0-1-any.pkg.tar.zst")]),l(`
`),s("span",{class:"line"},[s("span",{style:{color:"#676E95","font-style":"italic"}},"# 列出软件包的文件放置位置")]),l(`
`),s("span",{class:"line"},[s("span",{style:{color:"#FFCB6B"}},"paru"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"-Qip"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"swish-zh-sddm-theme-git-1.0-1-any.pkg.tar.zst")]),l(`
`),s("span",{class:"line"},[s("span",{style:{color:"#676E95","font-style":"italic"}},"# 列出软件包的基本信息")]),l(`
`),s("span",{class:"line"})])])],-1),Q=s("p",null,"尝试安装卸载 AUR 包",-1),j=s("div",{class:"language-shell zsh"},[s("span",{class:"copy"}),s("pre",{class:"shiki material-theme-palenight",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#FFCB6B"}},"paru"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"-U"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"swish-zh-sddm-theme-git-1.0-1-any.pkg.tar.zst")]),l(`
`),s("span",{class:"line"},[s("span",{style:{color:"#FFCB6B"}},"paru"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"-Rsn"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"swish-zh-sddm-theme-git")]),l(`
`),s("span",{class:"line"})])])],-1),X=s("p",null,"检查包的逻辑性",-1),ss=s("div",{class:"language-shell zsh"},[s("span",{class:"copy"}),s("pre",{class:"shiki material-theme-palenight",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#FFCB6B"}},"namcap"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"PKGBUIL[]"),s("span",{style:{color:"#89DDFF"}},"()"),s("span",{style:{color:"#C3E88D"}},"D")]),l(`
`),s("span",{class:"line"},[s("span",{style:{color:"#FFCB6B"}},"namcap"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"swish-zh-sddm-theme-git-1.0-1-any.pkg.tar.zst")]),l(`
`),s("span",{class:"line"})])])],-1),ls=s("p",null,"以上都没什么问题就可以上传至 AUR 了",-1),es={id:"上传至-aur-仓库",tabindex:"-1"},as=s("ol",null,[s("li",null,"将 SSH 公钥添加到 AUR 账户"),s("li",null,"在 PKGBUILD 所在文件夹初始化 Git 仓库 (文件夹应尽量干净 ),并添加远程 AUR 仓库,仓库名是你的软件包名")],-1),os=s("div",{class:"language-shell zsh"},[s("span",{class:"copy"}),s("pre",{class:"shiki material-theme-palenight",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#FFCB6B"}},"git"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"init")]),l(`
`),s("span",{class:"line"},[s("span",{style:{color:"#FFCB6B"}},"git"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"remote"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"add"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"aur"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"ssh:https://[email protected]/"),s("span",{style:{color:"#89DDFF"}},"<"),s("span",{style:{color:"#C3E88D"}},"pkgnam"),s("span",{style:{color:"#A6ACCD"}},"e"),s("span",{style:{color:"#89DDFF"}},">"),s("span",{style:{color:"#C3E88D"}},".git")]),l(`
`),s("span",{class:"line"})])])],-1),ns=s("ol",{start:"3"},[s("li",null,"生成 .SRCINFO 文件并提交")],-1),ts=s("div",{class:"language-shell zsh"},[s("span",{class:"copy"}),s("pre",{class:"shiki material-theme-palenight",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#FFCB6B"}},"makepkg"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"--printsrcinfo"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#89DDFF"}},">"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},".SRCINFO")]),l(`
`),s("span",{class:"line"},[s("span",{style:{color:"#FFCB6B"}},"git"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"add"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"PKGBUILD"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},".SRCINFO")]),l(`
`),s("span",{class:"line"},[s("span",{style:{color:"#FFCB6B"}},"git"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"commit"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"-m"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#89DDFF"}},'"'),s("span",{style:{color:"#C3E88D"}},"First Commit"),s("span",{style:{color:"#89DDFF"}},'"')]),l(`
`),s("span",{class:"line"},[s("span",{style:{color:"#FFCB6B"}},"git"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"push"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"--set-upstream"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"aur"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"master")]),l(`
`),s("span",{class:"line"})])])],-1),rs=s("p",null,"另外,本地的分支名一定要是 master,而不能是其他的",-1),cs=s("div",{class:"language-shell zsh"},[s("span",{class:"copy"}),s("pre",{class:"shiki material-theme-palenight",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#FFCB6B"}},"git"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"branch"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"-m"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#89DDFF"}},"<"),s("span",{style:{color:"#C3E88D"}},"原分支"),s("span",{style:{color:"#A6ACCD"}},"名"),s("span",{style:{color:"#89DDFF"}},">"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#C3E88D"}},"master"),s("span",{style:{color:"#A6ACCD"}}," "),s("span",{style:{color:"#676E95","font-style":"italic"}},"# 分支名改为 master")]),l(`
`),s("span",{class:"line"})])])],-1),ps=s("p",null,[l("一段时间后,就可以通过 "),s("code",null,"paru -Ss"),l(" 查找到打包的软件了")],-1),is={id:"参考资料",tabindex:"-1"};function Ds(n,ys,Cs,ds,c,hs){const a=A,p=i;return d(),C(p,{frontmatter:c.frontmatter,data:c.data},{"main-content-md":e(()=>[F,h(" more "),s("h2",g,[l("前期准备 "),o(a,{class:"header-anchor",href:"#前期准备","aria-hidden":"true"},{default:e(()=>[l("#")]),_:1})]),s("h3",m,[l("AUR 账号 "),o(a,{class:"header-anchor",href:"#aur-账号","aria-hidden":"true"},{default:e(()=>[l("#")]),_:1})]),k,s("h3",_,[l("必要环境安装 "),o(a,{class:"header-anchor",href:"#必要环境安装","aria-hidden":"true"},{default:e(()=>[l("#")]),_:1})]),E,B,f,b,s("h3",U,[l("makepkg "),o(a,{class:"header-anchor",href:"#makepkg","aria-hidden":"true"},{default:e(()=>[l("#")]),_:1})]),s("p",null,[l("pacman 提供了 makepkg 脚本来帮助自动化地构建 packages makepkg 通过 /etc/makepkg.conf 进行配置,一般不需要进行配置 如果有需求可以参考 "),o(a,{href:"https://wiki.archlinux.org/title/Makepkg#Configuration",target:"_blank",rel:"noreferrer"},{default:e(()=>[l("makepkg - ArchWiki")]),_:1})]),s("h2",v,[l("构建 AUR 包 "),o(a,{class:"header-anchor",href:"#构建-aur-包","aria-hidden":"true"},{default:e(()=>[l("#")]),_:1})]),x,s("h3",L,[l("编写 PKGBUILD 文件 "),o(a,{class:"header-anchor",href:"#编写-pkgbuild-文件","aria-hidden":"true"},{default:e(()=>[l("#")]),_:1})]),P,R,I,z,w,G,K,$,S,N,T,Y,s("h3",M,[l("测试软件包 "),o(a,{class:"header-anchor",href:"#测试软件包","aria-hidden":"true"},{default:e(()=>[l("#")]),_:1})]),O,W,q,Z,V,H,J,Q,j,X,ss,ls,s("h3",es,[l("上传至 AUR 仓库 "),o(a,{class:"header-anchor",href:"#上传至-aur-仓库","aria-hidden":"true"},{default:e(()=>[l("#")]),_:1})]),as,os,ns,ts,rs,cs,ps,s("h2",is,[l("参考资料 "),o(a,{class:"header-anchor",href:"#参考资料","aria-hidden":"true"},{default:e(()=>[l("#")]),_:1})]),s("ol",null,[s("li",null,[o(a,{href:"https://wiki.archlinux.org/title/Arch_User_Repository_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)",target:"_blank",rel:"noreferrer"},{default:e(()=>[l("Arch User Repository (简体中文) - ArchWiki")]),_:1})]),s("li",null,[o(a,{href:"https://wiki.archlinux.org/title/Creating_packages_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)",target:"_blank",rel:"noreferrer"},{default:e(()=>[l("Creating packages (简体中文) - ArchWiki")]),_:1})]),s("li",null,[o(a,{href:"https://wiki.archlinux.org/title/Arch_package_guidelines_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)",target:"_blank",rel:"noreferrer"},{default:e(()=>[l("Arch package guidelines (简体中文) - ArchWiki")]),_:1})]),s("li",null,[o(a,{href:"https://wiki.archlinux.org/title/PKGBUILD_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)",target:"_blank",rel:"noreferrer"},{default:e(()=>[l("PKGBUILD (简体中文) - ArchWiki")]),_:1})]),s("li",null,[o(a,{href:"https://wiki.archlinux.org/title/Makepkg",target:"_blank",rel:"noreferrer"},{default:e(()=>[l("makepkg - ArchWiki")]),_:1})])])]),"main-header":e(()=>[t(n.$slots,"main-header")]),"main-header-after":e(()=>[t(n.$slots,"main-header-after")]),"main-nav":e(()=>[t(n.$slots,"main-nav")]),"main-content":e(()=>[t(n.$slots,"main-content")]),"main-content-after":e(()=>[t(n.$slots,"main-content-after")]),"main-nav-before":e(()=>[t(n.$slots,"main-nav-before")]),"main-nav-after":e(()=>[t(n.$slots,"main-nav-after")]),comment:e(()=>[t(n.$slots,"comment")]),footer:e(()=>[t(n.$slots,"footer")]),aside:e(()=>[t(n.$slots,"aside")]),"aside-custom":e(()=>[t(n.$slots,"aside-custom")]),default:e(()=>[t(n.$slots,"default")]),_:3},8,["frontmatter","data"])}const _s=D(u,[["render",Ds]]);export{ks as __pageData,_s as default};