mirror of
https://codeberg.org/Toasterson/ips.git
synced 2026-04-10 13:20:42 +00:00
204 lines
No EOL
4.4 KiB
Markdown
204 lines
No EOL
4.4 KiB
Markdown
# pkg6repo
|
|
|
|
pkg6repo is a Rust implementation of the Image Packaging System (IPS) repository management utility. It is designed to replace the pkgrepo command from the original IPS implementation.
|
|
|
|
## Installation
|
|
|
|
To build and install pkg6repo, you need to have Rust and Cargo installed. Then, you can build the project using:
|
|
|
|
```bash
|
|
cargo build --release
|
|
```
|
|
|
|
The binary will be available at `target/release/pkg6repo`.
|
|
|
|
## Usage
|
|
|
|
pkg6repo provides several subcommands for managing package repositories:
|
|
|
|
### Create a Repository
|
|
|
|
Create a new package repository:
|
|
|
|
```bash
|
|
pkg6repo create /path/to/repository
|
|
```
|
|
|
|
You can specify the repository version (default is 4):
|
|
|
|
```bash
|
|
pkg6repo create --version 4 /path/to/repository
|
|
```
|
|
|
|
### Add Publishers
|
|
|
|
Add publishers to a repository:
|
|
|
|
```bash
|
|
pkg6repo add-publisher -s /path/to/repository example.com
|
|
```
|
|
|
|
### Remove Publishers
|
|
|
|
Remove publishers from a repository:
|
|
|
|
```bash
|
|
pkg6repo remove-publisher -s /path/to/repository example.com
|
|
```
|
|
|
|
You can perform a dry run to see what would be removed without actually removing anything:
|
|
|
|
```bash
|
|
pkg6repo remove-publisher -n -s /path/to/repository example.com
|
|
```
|
|
|
|
### Get Repository Properties
|
|
|
|
Get repository properties:
|
|
|
|
```bash
|
|
pkg6repo get -s /path/to/repository
|
|
```
|
|
|
|
You can specify specific properties to get:
|
|
|
|
```bash
|
|
pkg6repo get -s /path/to/repository publisher/prefix
|
|
```
|
|
|
|
### Set Repository Properties
|
|
|
|
Set repository properties:
|
|
|
|
```bash
|
|
pkg6repo set -s /path/to/repository publisher/prefix=example.com
|
|
```
|
|
|
|
You can set publisher-specific properties:
|
|
|
|
```bash
|
|
pkg6repo set -s /path/to/repository -p example.com repository/origins=http://example.com/repository
|
|
```
|
|
|
|
### Display Repository Information
|
|
|
|
Display information about a repository:
|
|
|
|
```bash
|
|
pkg6repo info -s /path/to/repository
|
|
```
|
|
|
|
### List Packages
|
|
|
|
List packages in a repository:
|
|
|
|
```bash
|
|
pkg6repo list -s /path/to/repository
|
|
```
|
|
|
|
You can filter by publisher:
|
|
|
|
```bash
|
|
pkg6repo list -s /path/to/repository -p example.com
|
|
```
|
|
|
|
You can also filter by package pattern:
|
|
|
|
```bash
|
|
pkg6repo list -s /path/to/repository example/package
|
|
```
|
|
|
|
### Show Package Contents
|
|
|
|
Show contents of packages in a repository:
|
|
|
|
```bash
|
|
pkg6repo contents -s /path/to/repository
|
|
```
|
|
|
|
You can filter by package pattern:
|
|
|
|
```bash
|
|
pkg6repo contents -s /path/to/repository example/package
|
|
```
|
|
|
|
You can also filter by action type:
|
|
|
|
```bash
|
|
pkg6repo contents -s /path/to/repository -t file
|
|
```
|
|
|
|
### Rebuild Repository Metadata
|
|
|
|
Rebuild repository metadata:
|
|
|
|
```bash
|
|
pkg6repo rebuild -s /path/to/repository
|
|
```
|
|
|
|
You can skip catalog or index rebuilding:
|
|
|
|
```bash
|
|
pkg6repo rebuild -s /path/to/repository --no-catalog
|
|
pkg6repo rebuild -s /path/to/repository --no-index
|
|
```
|
|
|
|
### Refresh Repository Metadata
|
|
|
|
Refresh repository metadata:
|
|
|
|
```bash
|
|
pkg6repo refresh -s /path/to/repository
|
|
```
|
|
|
|
You can skip catalog or index refreshing:
|
|
|
|
```bash
|
|
pkg6repo refresh -s /path/to/repository --no-catalog
|
|
pkg6repo refresh -s /path/to/repository --no-index
|
|
```
|
|
|
|
### Import pkg5 Repository
|
|
|
|
Import a pkg5 repository (directory-based or p5p archive) into a pkg6 repository:
|
|
|
|
```bash
|
|
pkg6repo import-pkg5 --source /path/to/pkg5/repository --destination /path/to/pkg6/repository
|
|
```
|
|
|
|
You can specify a specific publisher to import:
|
|
|
|
```bash
|
|
pkg6repo import-pkg5 --source /path/to/pkg5/repository --destination /path/to/pkg6/repository --publisher example.com
|
|
```
|
|
|
|
#### Importing from a Directory-Based Repository
|
|
|
|
To import from a directory-based pkg5 repository:
|
|
|
|
```bash
|
|
pkg6repo import-pkg5 --source /path/to/pkg5/repository/directory --destination /path/to/pkg6/repository
|
|
```
|
|
|
|
The source directory should contain the pkg5 repository structure with a `publisher` directory and a `pkg5.repository` file.
|
|
|
|
#### Importing from a p5p Archive
|
|
|
|
To import from a p5p archive:
|
|
|
|
```bash
|
|
pkg6repo import-pkg5 --source /path/to/repository.p5p --destination /path/to/pkg6/repository
|
|
```
|
|
|
|
The p5p archive should be a valid pkg5 repository archive with the standard pkg5 repository structure.
|
|
|
|
#### Notes
|
|
|
|
- If the destination repository doesn't exist, it will be created automatically.
|
|
- If no publisher is specified, the first publisher found in the source repository will be used.
|
|
- The import process extracts files from the source repository, decompresses them if necessary, and adds them to the destination repository.
|
|
- After importing, the catalog and search index are automatically rebuilt.
|
|
|
|
## License
|
|
|
|
This project is licensed under the same license as the original IPS implementation. |