a framework for package management
Failed to load latest commit information.
bin fix running scripts in the repo Sep 23, 2017
ci/cibuildwheel-bins travis-ci: add lists of rpm urls to update for cibuildwheel containers Nov 28, 2017
config Revert "use https for gentoo distfiles mirror by default" Nov 25, 2017
doc move to using pkgdist from snakeoil Jun 12, 2018
ebd Fix listing pkg_config & pkg_nofetch in DEFINED_PHASES Sep 18, 2018
examples more py3 conversions Apr 12, 2018
requirements requirements: update pip shim Jun 18, 2018
shell shell/pkgcore.sh: _choose(): break retry loop after 3 invalid inputs Dec 3, 2017
src skip hidden and backup files for portage config and profile files Sep 22, 2018
tests tests.ebuild.test_ebuild_src: os.stat_float_times() was removed in py… Sep 22, 2018
.coveragerc move tests to root dir Apr 11, 2018
.gitattributes Squashed 'pkgdist/' content from commit 1675f6b Jul 23, 2015
.gitignore git: ignore some more generated files Jul 13, 2015
.readthedocs.yml rtd: install straight from setup.py instead of using pip Jun 12, 2018
.travis.yml travis-ci: test under py-3.8 and don't allow py-3.7 failures Sep 21, 2018
AUTHORS add myself to authors list Dec 4, 2013
BSD fix copyright date range Mar 11, 2016
GPL2 bunch of fixups from my branch, copyright/license updates May 15, 2008
LICENSE update license info Mar 18, 2015
MANIFEST.in move tests to root dir Apr 11, 2018
NEWS.rst update news Sep 27, 2017
README.rst move to >=py3.6 only Apr 11, 2018
setup.cfg setup: add explicit build_docs command to build html docs Jan 24, 2016
setup.py ebd: re-suffix bash libs using '.bash' instead of '.lib' Jun 18, 2018
tox.ini tox: add py37 support Sep 21, 2018


pypi test coverage Documentation Status


pkgcore is a framework for package management; via the appropriate class plugins, the design should allow for any underlying repository/config/format to be used; slackware's tgzs being exempted due to lack of any real metadata, and autopackage format being exempted due to the fact they effectively embed the manager in each package (pkgcore does require being able to treat the pkg as data, instead of autopackage's method of handing resolution/all manager ops off to the package script).


pclean: clean distfiles, binpkgs, and builds dirs

pclonecache: clone a repository cache

pconfig: query configuration info

pebuild: low-level ebuild operations, go through phases manually

pinspect: inspect repository related info

pmaint: repository maintenance (syncing, copying...)

pmerge: dependency resolution, fetching, (un)merging, etc.

pquery: query repository info, revdeps, pkg search, vdb search, etc.


At least python version 3.6, and snakeoil — a utility library with misc optimizations split out of pkgcore for others to use.


Installing latest pypi release in a virtualenv:

pip install pkgcore

Installing from git in a virtualenv:

git clone https://github.com/pkgcore/pkgcore.git
./pkgcore/requirements/pip.sh ./pkgcore

Installing from a tarball or git repo:

python setup.py install


Official documentation is provided on readthedocs with alternative formats available for download.


A standalone test runner is integrated in setup.py; to run, just execute:

python setup.py test

In addition, a tox config is provided so the testsuite can be run in a virtualenv setup against all supported python versions. To run tests for all environments just execute tox in the root directory of a repo or unpacked tarball. Otherwise, for a specific python version execute something similar to the following:

tox -e py36


For support and development inquiries join #pkgcore on Freenode.

For bugs and feature requests please create an issue on Github.