[![tests](https://github.com/JGoutin/repoup/actions/workflows/tests.yml/badge.svg)](https://github.com/JGoutin/repoup/actions/workflows/tests.yml)
[![codecov](https://codecov.io/gh/JGoutin/repoup/branch/main/graph/badge.svg?token=29y1Q2iVjo)](https://codecov.io/gh/JGoutin/repoup)
[![PyPI](https://img.shields.io/pypi/v/repoup.svg)](https://pypi.org/project/repoup)
Repoup is a utility to manage packages repositories stored on the cloud from serverless
functions. For instance, it can manage an RPM repository stored on S3 from an AWS lambda
function.
Features:
* Repository initialization.
* Packages addition and deletion.
* Packages signature.
* Multiple repository management with a single instance.
* Autodetection of the repository to update based on the package name information
(Architecture, OS version, package format).
Supported repositories:
* RPM: `.rpm` packages repositories used with DNF/YUM Linux package managers.
* DEB: `.deb` packages repositories used with APT Linux package managers.
Supported cloud:
* AWS: AWS S3 (or compatible) as storage with optional Cloudfront CDN.
AWS Lambda as repository updater.
# Installation
The package is available on PyPI and can be installed using Pip:
```bash
pip install repoup
```
By default, only the minimum dependencies are installed. It is possible to install
more dependencies using the following extras:
* `speedups`: Optional libraries to improve performance.
* `rpm`: RPM repositories support.
* `deb`: DEB repositories support.
* `aws`: AWS cloud provider support.
For instance:
```bash
pip install repoup[rpm,speedups]
```
For DEB repositories, the `python-apt` package is also recommended to improve
performance. The version of this package available on PyPI is really outdated, so it is
recommended to use the version packaged with your OS. Ensure the Python interpreter used
is the system interpreter in this case or that it can import this package.
## Packages and metadata signature extra requirements:
The `gnupg` (Version 2.1 or more) command is required.
GPG keys with passwords also requires that the `gpg-agent` is not already started or is
started with the `--allow-preset-passphrase` parameter.
### RPM packages
To sign RPM package, the `rpm-sign` package is required.
#### Signature verification
If the repository is called with `gpg_verify=True` to activate signature verification
after signing, the `rpm` command require to be run as Root. This is required to add
and remove the public key to the keyring.
It is possible to set the `RPM_GPG_REQUIRE_SUDO=1` environment variable to
automatically use `sudo`. This requires that `sudo` does not require password.
### DEB Packages.
To sign DEB package, the `debsigs` package is required.
Raw data
{
"_id": null,
"home_page": "https://github.com/JGoutin/repoup",
"name": "repoup",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.9,<4",
"maintainer_email": "",
"keywords": "repository,packages,rpm",
"author": "J.Goutin",
"author_email": "jgoutin@accelize.com",
"download_url": "https://files.pythonhosted.org/packages/7c/e5/eebae7b544a73c1007e4ed07a234f2a32f92c755c51b497fb68a6a606079/repoup-1.0.0b26.tar.gz",
"platform": null,
"description": "[![tests](https://github.com/JGoutin/repoup/actions/workflows/tests.yml/badge.svg)](https://github.com/JGoutin/repoup/actions/workflows/tests.yml)\n[![codecov](https://codecov.io/gh/JGoutin/repoup/branch/main/graph/badge.svg?token=29y1Q2iVjo)](https://codecov.io/gh/JGoutin/repoup)\n[![PyPI](https://img.shields.io/pypi/v/repoup.svg)](https://pypi.org/project/repoup)\n\nRepoup is a utility to manage packages repositories stored on the cloud from serverless\nfunctions. For instance, it can manage an RPM repository stored on S3 from an AWS lambda\nfunction.\n\nFeatures:\n\n * Repository initialization.\n * Packages addition and deletion.\n * Packages signature.\n * Multiple repository management with a single instance.\n * Autodetection of the repository to update based on the package name information \n (Architecture, OS version, package format).\n\nSupported repositories:\n\n * RPM: `.rpm` packages repositories used with DNF/YUM Linux package managers.\n * DEB: `.deb` packages repositories used with APT Linux package managers.\n\nSupported cloud:\n\n * AWS: AWS S3 (or compatible) as storage with optional Cloudfront CDN. \n AWS Lambda as repository updater.\n\n# Installation\n\nThe package is available on PyPI and can be installed using Pip:\n\n```bash\npip install repoup\n```\n\nBy default, only the minimum dependencies are installed. It is possible to install\nmore dependencies using the following extras:\n\n* `speedups`: Optional libraries to improve performance.\n* `rpm`: RPM repositories support.\n* `deb`: DEB repositories support.\n* `aws`: AWS cloud provider support.\n\nFor instance:\n\n```bash\npip install repoup[rpm,speedups]\n```\n\nFor DEB repositories, the `python-apt` package is also recommended to improve \nperformance. The version of this package available on PyPI is really outdated, so it is\nrecommended to use the version packaged with your OS. Ensure the Python interpreter used\nis the system interpreter in this case or that it can import this package.\n\n## Packages and metadata signature extra requirements:\n\nThe `gnupg` (Version 2.1 or more) command is required.\n\nGPG keys with passwords also requires that the `gpg-agent` is not already started or is \nstarted with the `--allow-preset-passphrase` parameter.\n\n### RPM packages\n\nTo sign RPM package, the `rpm-sign` package is required.\n\n#### Signature verification\n\nIf the repository is called with `gpg_verify=True` to activate signature verification\nafter signing, the `rpm` command require to be run as Root. This is required to add \nand remove the public key to the keyring.\n\nIt is possible to set the `RPM_GPG_REQUIRE_SUDO=1` environment variable to \nautomatically use `sudo`. This requires that `sudo` does not require password.\n\n### DEB Packages.\n\nTo sign DEB package, the `debsigs` package is required.\n",
"bugtrack_url": null,
"license": "AGPL-3.0-or-later",
"summary": "Serverless package repository updater",
"version": "1.0.0b26",
"split_keywords": [
"repository",
"packages",
"rpm"
],
"urls": [
{
"comment_text": "",
"digests": {
"md5": "328dfa00bf38feaf2bc4d2020c1bcc7c",
"sha256": "75d5acd67d79a66fe2e175b52d4208ff7b92ed7ba744f00dafdaa8d2bd565d87"
},
"downloads": -1,
"filename": "repoup-1.0.0b26-py3-none-any.whl",
"has_sig": false,
"md5_digest": "328dfa00bf38feaf2bc4d2020c1bcc7c",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9,<4",
"size": 38956,
"upload_time": "2022-12-01T09:49:37",
"upload_time_iso_8601": "2022-12-01T09:49:37.005658Z",
"url": "https://files.pythonhosted.org/packages/d1/3b/a35552b40c3c0bf424b95b250294a528b99a014bfe7abed974506a03019e/repoup-1.0.0b26-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "9b40af47eac4cac4c51c43725a865251",
"sha256": "abfba5dc739f4327839c76633a166439b46d5e3b807a9d8eae0c1b5f80aade7c"
},
"downloads": -1,
"filename": "repoup-1.0.0b26.tar.gz",
"has_sig": false,
"md5_digest": "9b40af47eac4cac4c51c43725a865251",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9,<4",
"size": 35638,
"upload_time": "2022-12-01T09:51:04",
"upload_time_iso_8601": "2022-12-01T09:51:04.610713Z",
"url": "https://files.pythonhosted.org/packages/7c/e5/eebae7b544a73c1007e4ed07a234f2a32f92c755c51b497fb68a6a606079/repoup-1.0.0b26.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2022-12-01 09:51:04",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": "JGoutin",
"github_project": "repoup",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "repoup"
}