{"id":20730399,"url":"https://github.com/kriansa/pacom","last_synced_at":"2025-06-24T23:04:21.913Z","repository":{"id":141848658,"uuid":"325193909","full_name":"kriansa/pacom","owner":"kriansa","description":"Pacom - the Pacman Companion","archived":false,"fork":false,"pushed_at":"2021-12-21T21:30:50.000Z","size":76,"stargazers_count":11,"open_issues_count":0,"forks_count":1,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-04-23T22:02:05.721Z","etag":null,"topics":["arch-linux","aur","package-manager","pacman"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kriansa.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-12-29T05:24:07.000Z","updated_at":"2024-03-25T23:31:12.000Z","dependencies_parsed_at":null,"dependency_job_id":"84456862-895a-4103-bdf9-413204f5e839","html_url":"https://github.com/kriansa/pacom","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/kriansa/pacom","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kriansa%2Fpacom","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kriansa%2Fpacom/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kriansa%2Fpacom/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kriansa%2Fpacom/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kriansa","download_url":"https://codeload.github.com/kriansa/pacom/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kriansa%2Fpacom/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261771064,"owners_count":23207212,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arch-linux","aur","package-manager","pacman"],"created_at":"2024-11-17T05:11:26.410Z","updated_at":"2025-06-24T23:04:21.863Z","avatar_url":"https://github.com/kriansa.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# :package: pacom - Pacman companion\n\nA _very small_ AUR package manager for Arch Linux with support to **private PKGBUILDs** and\n**version locking**.\n\n```sh\n# Manually approve a new package\n\u003e pacom add https://github.com/myself/MY_PKGBUILDs#my-custom-package/v1.0/PKGBUILD\n\n# Now, install it without questions asked\n\u003e pacom build --install --all\n```\n\nPacom relies on a local package database to store the trusted packages and their versions. Once a\npackage is approved and added there (it's a simple _git clone_), you can reinstall it anytime, and\neven share your trusted package database among users or other computers you use.\n\nThe support for private packages means you don't need to upload all your personal packages to _AUR_.\nInstead just use any git source (such as your own Github), in any chosen location (PKGBUILDs don't\nneed to be at the root path) and just specify it when adding to Pacom.\n\n## Non features\n\nPacom philosophy is to be a single-responsibility program, very close to what one would do if they\ndidn't have a AUR helper installed (`git pull \u0026\u0026 makepkg`).\n\nIt is meant to be a separate program, and not a \"all-in-one\" that wraps Pacman commands. It targets\nthe more advanced users that understand and will benefit from the two applications individually.\n\nMoreover, it does not aim to be a frontend for AUR either - for that you have very mature tools such\nas the [aur web][aur-web] or [aurutils][aurutils].\n\n## Features\n\n* Support for packages not listed on AUR, such as PKGBUILDs found on Github\n* Package version locking\\*\n* Uses a separate Pacman repository\n* Uses a separate GPG home repository to keep your own GNUPGHOME clean\n* Remove command actually delete package files from the Pacman repo\n* Support for split-packages (_see `pacom add --help` for more info_)\n* No untrusted PKGBUILD sourcing\n* Modular and well-documented codebase - easy to maintain and collaborate\n* Uses the power of Git and SQLite as databases and doesn't reinvent the wheel\n* Well-documented interface: just type `pacom [\u003csubcommand\u003e] --help` when in doubt :memo:\n* Shipped as a single-file: if you want, you can just download the binary and include it on your\n  dotfiles.\n\n## What's new on V2\n\nPacom now uses a separate GNUPGHOME database. This means that you no longer need to pollute your own\nGNUPGHOME by trusting keys from build repositories, making it hard to idenfity real people you\ncommunicate with. Now, if a build fails due to a missing GPG key, you can simply add the key to\nPacom's PGP trust database (very similarly to what you already know) by:\n\n```sh\n\u003e pacom gpg --recv-keys \u003cpackager_key\u003e\n```\n\nAnd that's it. The trust database is already synchronized to your git database, so as long as you\nhave a remote configured, every change in PGP trust will be automatically pushed.\n\nThis is a breaking change. If you want the previous behavior back, you can export the environment\nvariable `USE_SYSTEM_GPG` and all `pacom` commands will use the user GNUPGHOME instead.\n\n### Package version locking?\n\nWhen you add a package on `pacom` database - which is essentially a git repository - what it\nactually does behind the scenes is cloning that package into Pacom's git central \"database\" as a\n[git submodule][git-submodule]. This repository can be synced with a remote and you are able to\nshare that package version metadata with other Arch setups that you own and make your life easier --\nyou won't need to manually approve that package version on all your boxes. Of course, when that\npackage updates, then you will need to re-approve it.\n\nThis mechanism also allows you to easily rebuild your entire system without being disrupted by the\npackage manager asking you to approve that PKGBUILD.\n\n## Dependencies\n\n1. A local Pacman repository\n2. A git repository for tracking and package version locking\n\n## Setup\n\n1. Install [`pacom`][pacom-aur] from AUR -- you can do it manually now, but don't worry, as soon as\n   you install it then you can manage its installation within Pacom itself (inception?)\n2. Create the git and pacman repositories by running `pacom init`\n3. Make sure you follow the steps described by the output of that command\n4. _Optionally_ but recommended, you can setup a remote for syncing the changes in your git-db. That\n\t can be done by cd-ing into pacom git-db and setting up a normal git remote.\n\n## Configuration\n\nPacom will run with just the steps above. However, there are some advanced settings that are\nconfigurable and here they are documented, just in case. These configuration are done by setting\nenvironment variables, so if you really need them, make sure they are exported on your shell before\nyou run any `pacom` subcommand.\n\n* `PACOM_BASE_PATH` - By default, `pacom` will setup its databases on `$XDG_DATA_HOME/pacom` or\n\t`$HOME/.local/share/pacom`. Set this variable if you want it on a different path.\n* `USE_SYSTEM_GPG` - Use your system's `GNUPGHOME` instead of the one exclusive for pacom-managed\n\tpackages. This is the default on v1.\n\n## Releasing\n\n1. Bump the `VERSION` file\n2. `make`\n3. A single binary is created at the `build` dir\n4. Ship it as you like -- or update the [PKGBUILD][pacom-aur].\n\n## License\n\nThe contents of this repository is licensed under the [Apache v2 License](LICENSE).\n\n[aur-web]: https://aur.archlinux.org/\n[aurutils]: https://github.com/AladW/aurutils\n[git-submodule]: https://git-scm.com/book/en/v2/Git-Tools-Submodules\n[pacom-aur]: https://aur.archlinux.org/packages/pacom/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkriansa%2Fpacom","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkriansa%2Fpacom","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkriansa%2Fpacom/lists"}