ALT Package Registry
Publish ALT packages for your user or organization.
Requirements
Section titled “Requirements”To work with the ALT registry, you need to use a HTTP client like curl to upload and a package manager like apt-get to consume packages.
In ALT Linux, the apt-get command is provided by APT-RPM, a version of APT adapted for RPM packages.
This differs from the APT used in Debian or Ubuntu, which is designed for DEB packages.
The following examples use apt-get.
Configuring the package registry
Section titled “Configuring the package registry”To register the RPM registry add the url to the list of known sources to the config file in the /etc/apt/sources.list.d/ directory:
rpm https://hoyoship.example.com/api/packages/{owner}/alt/{group}.repo {arch} classic| Placeholder | Description |
|---|---|
owner | The owner of the package. |
group | Optional: Everything, e.g. empty, example1, test/example1. |
arch | Architecture. |
Example:
# without a group and architecture x86_64rpm https://hoyoship.example.com/api/packages/testuser/alt/alt.repo x86_64 classic
# with the group 'example1' and architecture noarchrpm https://hoyoship.example.com/api/packages/testuser/alt/group/example1.repo noarch classicIf the registry is private, provide credentials in the URL. You can use a password or a personal access token:
rpm https://{username}:{your_password_or_token}@hoyoship.example.com/api/packages/{owner}/alt/{group}.repo {arch} classicYou have to add the credentials to the URLs in the created .list file in /etc/apt/sources.list.d/ too.
Publish a package
Section titled “Publish a package”To publish a RPM package (*.rpm), perform a HTTP PUT operation with the package content in the request body.
PUT https://hoyoship.example.com/api/packages/{owner}/alt/{group}/upload| Parameter | Description |
|---|---|
owner | The owner of the package. |
group | Optional: Everything, e.g. empty, example1, test/example1. |
Example request using HTTP Basic authentication:
# without a groupcurl --user your_username:your_password_or_token \ --upload-file path/to/file.rpm \ https://hoyoship.example.com/api/packages/testuser/alt/upload# with the group 'group/example1'curl --user your_username:your_password_or_token \ --upload-file path/to/file.rpm \ https://hoyoship.example.com/api/packages/testuser/alt/group/example1/uploadIf you are using 2FA or OAuth use a personal access token instead of the password. You cannot publish a file with the same name twice to a package. You must delete the existing package version first.
The server responds with the following HTTP Status codes.
| HTTP Status Code | Meaning |
|---|---|
201 Created | The package has been published. |
400 Bad Request | The package is invalid. |
409 Conflict | A package file with the same combination of parameters exist already in the package. |
Delete a package
Section titled “Delete a package”To delete a RPM package perform a HTTP DELETE operation. This will delete the package version too if there is no file left.
DELETE https://hoyoship.example.com/api/packages/{owner}/alt/{group}.repo/{architecture}/RPMS.classic/{package_file_name.rpm}| Parameter | Description |
|---|---|
owner | The owner of the package. |
group | Optional: The package group. |
package_file_name.rpm | The package file name. |
architecture | The package architecture. |
Example request using HTTP Basic authentication:
# without a groupcurl --user your_username:your_token_or_password -X DELETE \ https://hoyoship.example.com/api/packages/testuser/alt/alt.repo/x86_64/RPMS.classic/test-package.rpm
# with the group 'group/example1'curl --user your_username:your_token_or_password -X DELETE \ https://hoyoship.example.com/api/packages/testuser/alt/group/example1.repo/x86_64/RPMS.classic/test-package.rpmThe server responds with the following HTTP Status codes.
| HTTP Status Code | Meaning |
|---|---|
204 No Content | Success |
404 Not Found | The package or file was not found. |
Install a package
Section titled “Install a package”To install a package from the RPM registry, execute the following commands:
# use latest versionapt-get install {package_name}# use specific versionapt-get install {package_name}-{package_version}