mirror of
https://gitea.com/gitea/docs.git
synced 2026-07-21 10:17:42 +00:00
Add Cargo package registry (#21888)
This PR implements a [Cargo registry](https://doc.rust-lang.org/cargo/) to manage Rust packages. This package type was a little bit more complicated because Cargo needs an additional Git repository to store its package index. Screenshots:    --------- Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
This commit is contained in:
@@ -1213,6 +1213,7 @@ Task queue configuration has been moved to `queue.task`. However, the below conf
|
|||||||
- `CHUNKED_UPLOAD_PATH`: **tmp/package-upload**: Path for chunked uploads. Defaults to `APP_DATA_PATH` + `tmp/package-upload`
|
- `CHUNKED_UPLOAD_PATH`: **tmp/package-upload**: Path for chunked uploads. Defaults to `APP_DATA_PATH` + `tmp/package-upload`
|
||||||
- `LIMIT_TOTAL_OWNER_COUNT`: **-1**: Maximum count of package versions a single owner can have (`-1` means no limits)
|
- `LIMIT_TOTAL_OWNER_COUNT`: **-1**: Maximum count of package versions a single owner can have (`-1` means no limits)
|
||||||
- `LIMIT_TOTAL_OWNER_SIZE`: **-1**: Maximum size of packages a single owner can use (`-1` means no limits, format `1000`, `1 MB`, `1 GiB`)
|
- `LIMIT_TOTAL_OWNER_SIZE`: **-1**: Maximum size of packages a single owner can use (`-1` means no limits, format `1000`, `1 MB`, `1 GiB`)
|
||||||
|
- `LIMIT_SIZE_CARGO`: **-1**: Maximum size of a Cargo upload (`-1` means no limits, format `1000`, `1 MB`, `1 GiB`)
|
||||||
- `LIMIT_SIZE_COMPOSER`: **-1**: Maximum size of a Composer upload (`-1` means no limits, format `1000`, `1 MB`, `1 GiB`)
|
- `LIMIT_SIZE_COMPOSER`: **-1**: Maximum size of a Composer upload (`-1` means no limits, format `1000`, `1 MB`, `1 GiB`)
|
||||||
- `LIMIT_SIZE_CONAN`: **-1**: Maximum size of a Conan upload (`-1` means no limits, format `1000`, `1 MB`, `1 GiB`)
|
- `LIMIT_SIZE_CONAN`: **-1**: Maximum size of a Conan upload (`-1` means no limits, format `1000`, `1 MB`, `1 GiB`)
|
||||||
- `LIMIT_SIZE_CONDA`: **-1**: Maximum size of a Conda upload (`-1` means no limits, format `1000`, `1 MB`, `1 GiB`)
|
- `LIMIT_SIZE_CONDA`: **-1**: Maximum size of a Conda upload (`-1` means no limits, format `1000`, `1 MB`, `1 GiB`)
|
||||||
|
|||||||
109
doc/packages/cargo.en-us.md
Normal file
109
doc/packages/cargo.en-us.md
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
---
|
||||||
|
date: "2022-11-20T00:00:00+00:00"
|
||||||
|
title: "Cargo Packages Repository"
|
||||||
|
slug: "packages/cargo"
|
||||||
|
draft: false
|
||||||
|
toc: false
|
||||||
|
menu:
|
||||||
|
sidebar:
|
||||||
|
parent: "packages"
|
||||||
|
name: "Cargo"
|
||||||
|
weight: 5
|
||||||
|
identifier: "cargo"
|
||||||
|
---
|
||||||
|
|
||||||
|
# Cargo Packages Repository
|
||||||
|
|
||||||
|
Publish [Cargo](https://doc.rust-lang.org/stable/cargo/) packages for your user or organization.
|
||||||
|
|
||||||
|
**Table of Contents**
|
||||||
|
|
||||||
|
{{< toc >}}
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
To work with the Cargo package registry, you need [Rust and Cargo](https://www.rust-lang.org/tools/install).
|
||||||
|
|
||||||
|
Cargo stores informations about the available packages in a package index stored in a git repository.
|
||||||
|
This repository is needed to work with the registry.
|
||||||
|
The following section describes how to create it.
|
||||||
|
|
||||||
|
## Index Repository
|
||||||
|
|
||||||
|
Cargo stores informations about the available packages in a package index stored in a git repository.
|
||||||
|
In Gitea this repository has the special name `_cargo-index`.
|
||||||
|
After a package was uploaded, its metadata is automatically written to the index.
|
||||||
|
The content of this repository should not be manually modified.
|
||||||
|
|
||||||
|
The user or organization package settings page allows to create the index repository along with the configuration file.
|
||||||
|
If needed this action will rewrite the configuration file.
|
||||||
|
This can be useful if for example the Gitea instance domain was changed.
|
||||||
|
|
||||||
|
If the case arises where the packages stored in Gitea and the information in the index repository are out of sync, the settings page allows to rebuild the index repository.
|
||||||
|
This action iterates all packages in the registry and writes their information to the index.
|
||||||
|
If there are lot of packages this process may take some time.
|
||||||
|
|
||||||
|
## Configuring the package registry
|
||||||
|
|
||||||
|
To register the package registry the Cargo configuration must be updated.
|
||||||
|
Add the following text to the configuration file located in the current users home directory (for example `~/.cargo/config.toml`):
|
||||||
|
|
||||||
|
```
|
||||||
|
[registry]
|
||||||
|
default = "gitea"
|
||||||
|
|
||||||
|
[registries.gitea]
|
||||||
|
index = "https://gitea.example.com/{owner}/_cargo-index.git"
|
||||||
|
|
||||||
|
[net]
|
||||||
|
git-fetch-with-cli = true
|
||||||
|
```
|
||||||
|
|
||||||
|
| Parameter | Description |
|
||||||
|
| --------- | ----------- |
|
||||||
|
| `owner` | The owner of the package. |
|
||||||
|
|
||||||
|
If the registry is private or you want to publish new packages, you have to configure your credentials.
|
||||||
|
Add the credentials section to the credentials file located in the current users home directory (for example `~/.cargo/credentials.toml`):
|
||||||
|
|
||||||
|
```
|
||||||
|
[registries.gitea]
|
||||||
|
token = "Bearer {token}"
|
||||||
|
```
|
||||||
|
|
||||||
|
| Parameter | Description |
|
||||||
|
| --------- | ----------- |
|
||||||
|
| `token` | Your [personal access token]({{< relref "doc/developers/api-usage.en-us.md#authentication" >}}) |
|
||||||
|
|
||||||
|
## Publish a package
|
||||||
|
|
||||||
|
Publish a package by running the following command in your project:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
cargo publish
|
||||||
|
```
|
||||||
|
|
||||||
|
You cannot publish a package if a package of the same name and version already exists. You must delete the existing package first.
|
||||||
|
|
||||||
|
## Install a package
|
||||||
|
|
||||||
|
To install a package from the package registry, execute the following command:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
cargo add {package_name}
|
||||||
|
```
|
||||||
|
|
||||||
|
| Parameter | Description |
|
||||||
|
| -------------- | ----------- |
|
||||||
|
| `package_name` | The package name. |
|
||||||
|
|
||||||
|
## Supported commands
|
||||||
|
|
||||||
|
```
|
||||||
|
cargo publish
|
||||||
|
cargo add
|
||||||
|
cargo install
|
||||||
|
cargo yank
|
||||||
|
cargo unyank
|
||||||
|
cargo search
|
||||||
|
```
|
||||||
@@ -26,6 +26,7 @@ The following package managers are currently supported:
|
|||||||
|
|
||||||
| Name | Language | Package client |
|
| Name | Language | Package client |
|
||||||
| ---- | -------- | -------------- |
|
| ---- | -------- | -------------- |
|
||||||
|
| [Cargo]({{< relref "doc/packages/cargo.en-us.md" >}}) | Rust | `cargo` |
|
||||||
| [Composer]({{< relref "doc/packages/composer.en-us.md" >}}) | PHP | `composer` |
|
| [Composer]({{< relref "doc/packages/composer.en-us.md" >}}) | PHP | `composer` |
|
||||||
| [Conan]({{< relref "doc/packages/conan.en-us.md" >}}) | C++ | `conan` |
|
| [Conan]({{< relref "doc/packages/conan.en-us.md" >}}) | C++ | `conan` |
|
||||||
| [Conda]({{< relref "doc/packages/conda.en-us.md" >}}) | - | `conda` |
|
| [Conda]({{< relref "doc/packages/conda.en-us.md" >}}) | - | `conda` |
|
||||||
|
|||||||
Reference in New Issue
Block a user