Arch packages implementation (#4785)

This PR is from https://github.com/go-gitea/gitea/pull/31037

This PR was originally created by @d1nch8g , and the original source code comes from https://ion.lc/core/gitea.

This PR adds a package registry for [Arch Linux](https://archlinux.org/) packages with support for package files, [signatures](https://wiki.archlinux.org/title/Pacman/Package_signing), and automatic [pacman-database](https://archlinux.org/pacman/repo-add.8.html) management.

Features:

1. Push any ` tar.zst ` package and Gitea sign it.
2. Delete endpoint for specific package version and all related files
3. Supports trust levels with `SigLevel = Required`.
4. Package UI with instructions to connect to the new pacman database and visualised package metadata

![](/attachments/810ca6df-bd20-44c2-bdf7-95e94886d750)

You can follow [this tutorial](https://wiki.archlinux.org/title/Creating_packages) to build a *.pkg.tar.zst package for testing

docs pr: https://codeberg.org/forgejo/docs/pulls/791

Co-authored-by: d1nch8g@ion.lc
Co-authored-by: @KN4CK3R
Co-authored-by: @mahlzahn
Co-authored-by: @silverwind
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/4785
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: Exploding Dragon <explodingfkl@gmail.com>
Co-committed-by: Exploding Dragon <explodingfkl@gmail.com>
This commit is contained in:
Exploding Dragon 2024-08-04 06:16:29 +00:00 committed by Earl Warren
parent 22d3659803
commit f17194ca91
18 changed files with 1896 additions and 0 deletions

View file

@ -3611,6 +3611,22 @@ alpine.repository = Repository Info
alpine.repository.branches = Branches
alpine.repository.repositories = Repositories
alpine.repository.architectures = Architectures
arch.pacman.helper.gpg = Add trust certificate for pacman:
arch.pacman.repo.multi = %s has the same version in different distributions.
arch.pacman.repo.multi.item = Configuration for %s
arch.pacman.conf = Add server with related distribution and architecture to <code>/etc/pacman.conf</code> :
arch.pacman.sync = Sync package with pacman:
arch.version.properties = Version Properties
arch.version.description = Description
arch.version.provides = Provides
arch.version.groups = Group
arch.version.depends = Depends
arch.version.optdepends = Optional depends
arch.version.makedepends = Make depends
arch.version.checkdepends = Check depends
arch.version.conflicts = Conflicts
arch.version.replaces = Replaces
arch.version.backup = Backup
cargo.registry = Setup this registry in the Cargo configuration file (for example <code>~/.cargo/config.toml</code>):
cargo.install = To install the package using Cargo, run the following command:
chef.registry = Setup this registry in your <code>~/.chef/config.rb</code> file: