4.8 KiB
sidebar_position
sidebar_position |
---|
5 |
Upload & Deploy Packages
🚀 Uploading and Deploying an Arch Linux Package on GitHub
Hosting an Arch Linux package on GitHub is a great way to distribute it. Users can download and install your package directly or use your repository for easier management with pacman
. Here's how to do it step-by-step.
1️⃣ Prepare the Package
Ensure you’ve created your Arch package using a PKGBUILD
file.
-
Build the package:
Navigate to your package directory containing the
PKGBUILD
and run:makepkg -si
This will create a
.pkg.tar.zst
file (e.g.,mypackage-1.0-1-x86_64.pkg.tar.zst
). -
Sign the package (optional but recommended):
If you’re distributing the package securely, sign it with your GPG key:
gpg --detach-sign --armor mypackage-1.0-1-x86_64.pkg.tar.zst
This creates a signature file
mypackage-1.0-1-x86_64.pkg.tar.zst.sig
.
2️⃣ Create a GitHub Repository
- Go to GitHub and create a new repository.
- Name the repository (e.g.,
arch-packages
) and add a description. - Initialize it with a README file (optional).
3️⃣ Upload the Package
-
Clone the repository to your local system:
git clone https://github.com/yourusername/arch-packages.git cd arch-packages
-
Copy your package files (
.pkg.tar.zst
and.sig
) to the repository directory:cp ../mypackage-1.0-1-x86_64.pkg.tar.zst . cp ../mypackage-1.0-1-x86_64.pkg.tar.zst.sig .
-
Commit and push the files:
git add mypackage-1.0-1-x86_64.pkg.tar.zst mypackage-1.0-1-x86_64.pkg.tar.zst.sig git commit -m "Add mypackage version 1.0" git push origin main
4️⃣ Set Up a Repository for pacman
To create a repository compatible with pacman
, you need a database file (.db
) and signature file (.db.sig
).
-
Generate the database:
Run
repo-add
to create a repository database for your packages:repo-add myrepo.db.tar.gz mypackage-1.0-1-x86_64.pkg.tar.zst
This will generate files like:
myrepo.db.tar.gz
myrepo.db.tar.gz.sig
(if signed)
Rename
myrepo.db.tar.gz
tomyrepo.db
for convenience:mv myrepo.db.tar.gz myrepo.db mv myrepo.db.tar.gz.sig myrepo.db.sig
-
Add repository files to GitHub:
Copy the
.db
and.sig
files to the repository and push them:git add myrepo.db myrepo.db.sig git commit -m "Add repository database" git push origin main
5️⃣ Serve the Repository on GitHub Pages
-
Enable GitHub Pages for the repository:
- Go to your repository’s Settings > Pages.
- Under Source, select
main
(or the branch you’re using) and set the folder to/root
or/docs
.
-
Note the URL for your repository, which will be in the format:
https://yourusername.github.io/arch-packages/
6️⃣ Configure pacman
to Use Your Repository
-
Add your repository to
/etc/pacman.conf
:[myrepo] SigLevel = Required Server = https://yourusername.github.io/arch-packages
-
Update
pacman
:sudo pacman -Syu
-
Install your package:
sudo pacman -S mypackage
🛠️ Automating Updates with GitHub Actions
To automate the deployment of new packages to GitHub, use GitHub Actions:
-
Create a
.github/workflows/deploy.yml
file in your repository:name: Deploy Arch Linux Package on: push: branches: - main jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v3 - name: Install Arch tools run: | sudo apt update sudo apt install archlinux-keyring devscripts pacman - name: Generate repository database run: | repo-add myrepo.db.tar.gz *.pkg.tar.zst mv myrepo.db.tar.gz myrepo.db mv myrepo.db.tar.gz.sig myrepo.db.sig - name: Commit and push repository updates run: | git add myrepo.db myrepo.db.sig git commit -m "Update repository database" git push origin main
-
Push this file to your repository. The workflow will automatically run on every push to update the repository database.
✅ Final Testing
-
Clone your repository to verify it’s accessible:
git clone https://yourusername.github.io/arch-packages
-
Test package installation from your custom repository as described in step 6.
By following these steps, you'll have a fully functional Arch Linux package repository hosted on GitHub, ready for others to use. 🎉