# GitLab Package Registry administration

> 原文：[https://docs.gitlab.com/ee/administration/packages/](https://docs.gitlab.com/ee/administration/packages/)

*   [Enabling the Packages feature](#enabling-the-packages-feature)
*   [Changing the storage path](#changing-the-storage-path)
    *   [Changing the local storage path](#changing-the-local-storage-path)
    *   [Using object storage](#using-object-storage)
    *   [Migrating local packages to object storage](#migrating-local-packages-to-object-storage)

# GitLab Package Registry administration[](#gitlab-package-registry-administration-premium-only "Permalink")

GitLab 软件包允许组织将 GitLab 用作各种常见软件包管理器的私有存储库. 用户能够构建和发布程序包，这些程序包可以很容易地作为下游项目中的依赖项使用.

软件包功能允许 GitLab 充当以下内容的存储库：

| 软件库 | Description | 在 GitLab 版本中可用 |
| --- | --- | --- |
| [PyPi Repository](../../user/packages/pypi_repository/index.html) | GitLab PyPi 存储库使 GitLab 中的每个项目都有自己的空间来存储[PyPi](https://s0pypi0org.icopy.site/)软件包. | 12.10+ |
| [Composer Repository](../../user/packages/composer_repository/index.html) | GitLab Composer 存储库使 GitLab 中的每个项目都有自己的空间来存储[Composer](https://s0getcomposer0org.icopy.site/)软件包. | 13.1+ |
| [NuGet Repository](../../user/packages/nuget_repository/index.html) | GitLab NuGet 存储库使 GitLab 中的每个项目都有自己的空间来存储[NuGet](https://www.nuget.org/)软件包. | 12.8+ |
| [Conan Repository](../../user/packages/conan_repository/index.html) | GitLab 柯南存储库使 GitLab 中的每个项目都有自己的空间来存储[柯南](https://conan.io/)软件包. | 12.4+ |
| [Maven Repository](../../user/packages/maven_repository/index.html) | GitLab Maven 存储库使 GitLab 中的每个项目都有自己的空间来存储[Maven](https://maven.apache.org/)软件包. | 11.3+ |
| [NPM Registry](../../user/packages/npm_registry/index.html) | GitLab NPM 注册表使 GitLab 中的每个项目都有自己的空间来存储[NPM](https://s0www0npmjs0com.icopy.site/)软件包. | 11.7+ |
| [Go Proxy](../../user/packages/go_proxy/index.html) | GitLab 的 Go 代理使 GitLab 中的每个项目都可以通过[Go 代理协议](https://proxy.golang.org/)获取. | 13.1+ |

您没有看到您的包裹管理系统受支持吗？ 请考虑为 GitLab 做贡献. 此[开发文档](../../development/packages.html)将指导您完成该过程.

## Enabling the Packages feature[](#enabling-the-packages-feature "Permalink")

**注意：**启用"软件包"功能后，默认情况下，存储库可用于所有新项目. 要为现有项目启用它，用户将必须在项目的设置中明确启用它.

要启用包功能：

**所有装置 GitLab**

1.  编辑`/etc/gitlab/gitlab.rb`并添加以下行：

    ```
    gitlab_rails['packages_enabled'] = true 
    ```

2.  保存文件并[重新配置 GitLab，](../restart_gitlab.html#omnibus-gitlab-reconfigure "如何重新配置​​Omnibus GitLab")以使更改生效.

**从源安装**

1.  安装完成后，您将必须在`config/gitlab.yml`中`config/gitlab.yml` `packages`部分. 设置为`true`以启用它：

    ```
    packages:
      enabled: true 
    ```

2.  [重新启动 GitLab，](../restart_gitlab.html#omnibus-gitlab-reconfigure "如何重新配置​​Omnibus GitLab")以使更改生效.

## Changing the storage path[](#changing-the-storage-path "Permalink")

默认情况下，程序包存储在本地，但是您可以更改默认的本地位置，甚至使用对象存储.

### Changing the local storage path[](#changing-the-local-storage-path "Permalink")

用于 Omnibus GitLab 安装的软件包存储在`/var/opt/gitlab/gitlab-rails/shared/packages/`而用于源安装的`shared/packages/`在`shared/packages/` （相对于 Git 主目录）. 更改本地存储路径：

**所有装置 GitLab**

1.  编辑`/etc/gitlab/gitlab.rb`并添加以下行：

    ```
    gitlab_rails['packages_storage_path'] = "/mnt/packages" 
    ```

2.  保存文件并[重新配置 GitLab，](../restart_gitlab.html#omnibus-gitlab-reconfigure)以使更改生效.

**从源安装**

1.  编辑`config/gitlab.yml`的`packages`部分：

    ```
    packages:
      enabled: true
      storage_path: shared/packages 
    ```

2.  保存文件并[重新启动 GitLab，](../restart_gitlab.html#installations-from-source)以使更改生效.

### Using object storage[](#using-object-storage "Permalink")

您可以使用对象存储来存储程序包，而不必依赖于本地存储.

[Read more about using object storage with GitLab](../object_storage.html).

**注意：**我们建议使用[统一对象存储设置](../object_storage.html#consolidated-object-storage-configuration) . 以下说明适用于原始配置格式.

**Omnibus GitLab installations**

1.  编辑`/etc/gitlab/gitlab.rb`并添加以下行（必要时取消注释）：

    ```
    gitlab_rails['packages_enabled'] = true
    gitlab_rails['packages_storage_path'] = "/var/opt/gitlab/gitlab-rails/shared/packages"
    gitlab_rails['packages_object_store_enabled'] = true
    gitlab_rails['packages_object_store_remote_directory'] = "packages" # The bucket name.
    gitlab_rails['packages_object_store_direct_upload'] = false         # Use Object Storage directly for uploads instead of background uploads if enabled (Default: false).
    gitlab_rails['packages_object_store_background_upload'] = true      # Temporary option to limit automatic upload (Default: true).
    gitlab_rails['packages_object_store_proxy_download'] = false        # Passthrough all downloads via GitLab instead of using Redirects to Object Storage.
    gitlab_rails['packages_object_store_connection'] = {
      ##
      ## If the provider is AWS S3, uncomment the following
      ##
      #'provider' => 'AWS',
      #'region' => 'eu-west-1',
      #'aws_access_key_id' => 'AWS_ACCESS_KEY_ID',
      #'aws_secret_access_key' => 'AWS_SECRET_ACCESS_KEY',
      ##
      ## If the provider is other than AWS (an S3-compatible one), uncomment the following
      ##
      #'host' => 's3.amazonaws.com',
      #'aws_signature_version' => 4             # For creation of signed URLs. Set to 2 if provider does not support v4.
      #'endpoint' => 'https://s3.amazonaws.com' # Useful for S3-compliant services such as DigitalOcean Spaces.
      #'path_style' => false                    # If true, use 'host/bucket_name/object' instead of 'bucket_name.host/object'.
    } 
    ```

2.  保存文件并[重新配置 GitLab，](../restart_gitlab.html#omnibus-gitlab-reconfigure)以使更改生效.

**从源安装**

1.  编辑`config/gitlab.yml`的`packages`部分（必要时取消注释）：

    ```
     packages:
        enabled: true
        ##
        ## The location where build packages are stored (default: shared/packages).
        ##
        #storage_path: shared/packages
        object_store:
          enabled: false
          remote_directory: packages # The bucket name.
          #direct_upload: false      # Use Object Storage directly for uploads instead of background uploads if enabled (Default: false).
          #background_upload: true   # Temporary option to limit automatic upload (Default: true).
          #proxy_download: false     # Passthrough all downloads via GitLab instead of using Redirects to Object Storage.
          connection:
            ##
            ## If the provider is AWS S3, uncomment the following
            ##
            #provider: AWS
            #region: us-east-1
            #aws_access_key_id: AWS_ACCESS_KEY_ID
            #aws_secret_access_key: AWS_SECRET_ACCESS_KEY
            ##
            ## If the provider is other than AWS (an S3-compatible one), uncomment the following
            ##
            #host: 's3.amazonaws.com'             # default: s3.amazonaws.com.
            #aws_signature_version: 4             # For creation of signed URLs. Set to 2 if provider does not support v4.
            #endpoint: 'https://s3.amazonaws.com' # Useful for S3-compliant services such as DigitalOcean Spaces.
            #path_style: false                    # If true, use 'host/bucket_name/object' instead of 'bucket_name.host/object'. 
    ```

2.  保存文件并[重新启动 GitLab，](../restart_gitlab.html#installations-from-source)以使更改生效.

### Migrating local packages to object storage[](#migrating-local-packages-to-object-storage "Permalink")

[配置对象存储后](#using-object-storage) ，您可以使用以下任务将现有程序包从本地存储迁移到远程存储. 该处理将在后台工作人员中完成， **无需停机** .

对于所有 GitLab；

```
sudo gitlab-rake "gitlab:packages:migrate" 
```

对于源安装：

```
RAILS_ENV=production sudo -u git -H bundle exec rake gitlab:packages:migrate 
```