--- title: "Debian (apt) フィードのホスト" order: 4 hidden: true ---

## ProGet で Debian フィードをホストする方法

Debian は、無料で利用できるLinuxOSのディストリビューション（種類）のひとつです。

Debian のソフトウェアは、パッケージ管理コマンド「APT」で、インストール、アップデート、アンインストールできます。

ProGet v5.2 以降では、ProGet サーバに Debian フィードをホストして、Debian のパッケージをインストール、アップデート、アンインストールできます。

## フィードを設定する前にすること

### 1. ProGet 内に署名鍵を作成する

Debian のフィードからパッケージを入手するには、ProGet 内に署名鍵が作成されていることが前提条件となります。

フィードが作成されたら、[Manage Feed (フィードの管理)] ページにアクセスし、[Properties (プロパティ)] パネルで [manage keys (キーの管理)] を選択してください。詳細を入力し [Generate Key (キーの作成)] をクリックします。

1つのみ作成する場合には、簡単に「proget」や「default」などを入力してもけっこうです。

少し待つとキーが完成し、そのフィンガープリントが [Manage Keys (キーの管理)] のウィンドウに表示されます。

### クライアントの設定

ProGet から Debian パッケージをインストールするには、各クライアントで次の手順を実行してください。

### 1.署名鍵を追加する

キーを apt に追加するには、次のコマンドを実行します。

    wget -O "deb.gpg" http://{proget-server}/debian-feeds/{feed-name}.pub && sudo apt-key add "{feed-name}.gpg"
    echo "deb http://{proget-server}/ {feed-name} {component-name}" | sudo tee /etc/apt/sources.list.d/{proget-deb}.listt

ProGet でまだ署名鍵を作成しておらず、公開鍵束（公開鍵をまとめて入れておくところ）にも追加していない場合には、次のようなメッセージが表示されることがあります。

「N: Updating from such a repository can't be done securely, and is therefore disabled by default.（N：このリポジトリからはアップデートが安全に実行できないため、デフォルトではアップデートが無効になっています。）」

### 2.aptをアップデートする

ProGet のフィードから実際にパッケージのインストールを始めるには、次のようにパッケージキャッシュをアップデートします。

    sudo apt update

## 共通タスク

### パッケージのインストール

Debian パッケージは apt-get を使用してインストールします。ProGet をホストとしてパッケージをインストールするには、次のコマンドを使用します。

    sudo apt install "{package-name}"

### パッケージの作成

Debian パッケージの作成方法については、Debian管理者ハンドブック、「第 15 章 Debian パッケージの作成」を参照してください。

### パッケージの公開

apt はパッケージのアップロードについてはサポートしていません。そこで ProGet は Debian パッケージを公開するために、いくつかの方法を提案しています。

#### ProGet web アプリからのアップロードする方法

ProGet の「フィード」ページから、「Add Package (パッケージの追加)」と「Upload Debian Package (Debian パッケージのアップロード)」を選択して、 dpkg-deb コマンドによって作成された.debファイルをアップロードします。

#### HTTP経由で公開

HTTP 経由で Debian パッケージをプッシュするには、パッケージファイルをコンテンツとしてPUTまたはPOSTリクエストをかけます：

    curl http://{proget-server}/debian-packages/upload/{feed-name}/{component-name}/{package-name}.deb --user <user>:<password> --upload-file {my-package}.deb

例：

cURL:

    curl http://{proget-server}/debian-packages/upload/{feed-name}/{component-name}/{package-name}.deb --user <user>:<password> --upload-file {my-package}.deb

wget:

    wget http://{proget-server}/debian-packages/upload/{feed-name}/{component-name}/{package-name}.deb --http-user <user> --http-password <password> --method POST --body-file {my-package}.deb

PowerShell:

    Invoke-WebRequest http://{proget-server}/debian-packages/upload/{feed-name}/{component-name}/{package-name}.deb -Credential [System.Net.NetworkCredential]::new('<user>', '<password>') -Method PUT -InFile {my-package}.deb

## 技術的な制限

- Debianフィードのコネクタはサポートされていません。
- BouncyCastle ライブラリで Armored output で無効性を示すエラーが発生する問題点があるため、 InRelease のエンドポイント（つまり、クリア署名されたインデックス）には現在対応していません。需要が見込まれる場合には、将来メンテナンスリリースすることを検討いたします。

### ソースパッケージ

ProGetは現在Debianソースパッケージをサポートしておらず、ソースパッケージをアップロードしようとすると（拡張子が* .debではない場合などには）失敗します。