Debian ベースの Linux ディストリビューションを使用して、ランダムパッケージのローカルの適切なリポジトリをすばやく作成するには?

Debian ベースの Linux ディストリビューションを使用して、ランダムパッケージのローカルの適切なリポジトリをすばやく作成するには?

場合によっては、ローカルパッケージを手動でインストールする必要がありますdpkg -i <packagename>。時にはパッケージの機能を活用する方が便利ですので、apt質問は次のとおりです。

Xubuntu 13.04/UbuntuなどのDebianベースのLinuxディストリビューションを使用して、ランダムパッケージのローカルリポジトリをすばやく作成するには?

答え1

これは試している場合と区別する必要があります。フルパッケージツリーのコピー公式リポジトリからソース優先順位の微調整。ランダムパッケージは、ダミーパッケージ、すなわちテスト目的でローカルにコンパイルまたは断片的な方法でコピーされるパッケージを指す。これは簡単な設定に基づいています。古い文書

まず、パッケージをホストするディレクトリを作成します。

mkdir <packagedir>

次に、.debパッケージファイルをそこに移動します。作成したディレクトリの上のディレクトリからこのコマンドを実行します(権限がそれを許可していることを確認してください)。

dpkg-scanpackages packagedir | gzip > packagedir/Packages.gz

.list/etc/apt/sources.list.d/次に、次の内容で拡張子を持つファイルを作成します。

deb [trusted=yes] file:///path_to_dir_above_packagedir packagedir/

そして、適切なデータベースを更新します。

apt-get update

この時点で、他のパッケージと同様に、ローカルリポジトリからパッケージをインストールできますapt-get install <packagename>。ローカルリポジトリに新しいパッケージが追加されたら、そのパッケージをdpkg-scanpackages更新するために再定義されたコマンドを実行する必要があります。package.gzファイルを更新する必要があり、apt新しいパッケージを使用できるようにするには、まず更新する必要があります。これがあなたに役立つことを願っていますテスト目的。

答え2

しかし、同様の答えがすでに存在しています。そしてAUにも同様の答えがいくつかありますapt-ftparchiveまた、代わりに使用を提案するためにこの回答を投稿しています。dpkg-scanpackages

なぜapt-ftparchiveダメなのdpkg-scanpackages

  • dpkg-scanpackagesこのコマンドは、dpkg-dev配布用のインストールイメージに付属していないパッケージで提供されています。dpkg-devこのコマンドを使用するには、まずパッケージをインストールする必要がありますdpkg-scanpackages。ローカルストレージを設定する目的は、通常、インターネットに接続されていないコンピュータでオフラインでパッケージを管理することです。しかし、 apt-ftparchiveコマンドは、apt-utilsディストリビューションの共通インストールイメージとともに提供されます。したがって、追加のパッケージをインストールする必要はありません。

  • パッケージ管理のためにdpkgの代わりにaptを使用する予定ですが、パッケージをスキャンするためにaptを使用するのはどうですか? :)


APTローカルストレージを設定するには?

ステップ1:debsを配置するディレクトリを作成します。

$ mkdir ~/apt-local-repository

ステップ2:ストレージリストの上部にローカルディレクトリを追加します。/etc/apt/sources.list

$ head -n 1 /etc/apt/sources.list
deb [trusted=yes] file:/home/pandya/apt-local-repository/ ./
  • 設定しない場合は、パッケージのインストール時にパラメータを設定する[trusted=yes]必要があります。--allow-unauthenticatedapt

  • この行はリポジトリリストの一番上に追加され、最も高い優先順位が与えられます。に追加すると、/etc/apt/sources.list.d/aptは(定義どおり)オンラインリポジトリからインストールを試み、/etc/apt/sources.listローカルリポジトリに低い優先順位を与えます。

ステップ3:借金を返済する~/apt-local-repository

ステップ4: インデックスパッケージリストの使用aptftparchive

$ cd ~/apt-local-repository/; apt-ftparchive packages . > Packages

ステップ5:更新適切なインデックス/データベースを使用するsudo apt update

完璧。これで、.dllを使用してdebパッケージをインストールできますsudo apt install <packagename>。ローカルデータベースを変更するたびに、手順3〜5を繰り返します。


便利なヒント:

  • apt-cache policy <packagename>APTがローカルのdebパッケージを認識し、最高の優先順位を与えることを確認するために実行できます。

  • sudo apt-get --print-uris install <packagename>すべての依存関係が満たされていること、または追加のパッケージをダウンロードする必要があることを確認するために実行できます。また、i)ftp://はローカルリポジトリのパッケージを表し、/またはii)http://はインターネットからダウンロードする必要があるパッケージまたは欠落している依存関係を示すURLもリストします。

次のツールを見ることもできます。エル指すリポジトリ中サイズアナグ私が作った。

答え3

debootstrapのようなツールに必要な構造全体でリポジトリを作成したい場合は、私が見つけた最も簡単な方法は次のとおりです。

  1. ストレージディレクトリを作成します。

    # mkdir -p /opt/debian/conf
    
  2. 次の内容でファイルを作成します/opt/debian/conf/distributions(使用しているディストリビューションに合わせて調整)。

    Label: Local APT repository
    Codename: jessie
    Architectures: amd64
    Components: main
    Description: Local APT repository for debootstrap
    
  3. 次のコマンドを使用してパッケージをインポートしますreprepro

    # reprepro -b /opt/debian includedeb jessie /path/to/package.db
    
  4. たとえば、シェル for ループを使用して複数のパッケージをインポートします。 APTキャッシュのすべて:

    # cd /var/cache/apt/archives
    # for DEB in *.deb
    do
        reprepro -b /opt/debian includedeb jessie "$DEB"
    done
    

これにより、署名されていないアーカイブが作成されます。--no-check-gpgオプション付きのdebootstrapで使用できます。

関連情報