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


20

状況によっては、を使用してローカルパッケージを手動でインストールする必要がありますdpkg -i <packagename>aptそのパッケージの機能を活用することがさらに役立つ場合があるので、質問は次のとおりです。

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


ちょっとだけ。いつもの事は従うことであるdpkg -i <packagename>apt-get -f install必要なパッケージにプルします。また、Debianの適切なリポジトリを作成する通常のことは、repreproです。
ファヒームミタ

私はreprepro有用見つけた
ジル「SO-停止されて悪」

コメントしてくださってありがとうございます。@Faheem Mitha:ローカルパッケージをインストールした後にaptwith --fix-brokenを実行する必要がある理由を簡単に説明してくださいdpkg -i。dpkgはそれを処理しませんか?aptを初めて実行するときに必要になる場合があることを読みました。@ FM&Gilles:repreproについて。(dir struct、3つのファイルの内容、または実行時のparamsがわからない)動作させることができれば便利だと思われます。もう一度やり直して、質問全体を更新または投稿します。

1
@illuminÉ:dpkg依存関係を解決しませんが、解決aptします。dpkg依存関係が壊れていることを警告しますが、レベルは低いため、修正を試みません。dpkg -i *.deb続くapt-get -f install標準的な手順です。aptローカルパッケージのインストールのケースを処理するウィッシュリストのバグがあり、パッチもありますが、まだ実装されていません。参照してください。apt-getはあまりにもローカルのパッケージファイル、インストールすることができ、インストール、もともと1999年に提出されたが
Faheem Mitha

@illuminÉこの機能への関心を表明しても害はありません。(丁寧に)関心を表明する人が多ければ多いほど、それが実装される可能性が高いと思います。また、バグレポートに記載されているように、gdebiが代替であることに注意してください。それが実装されていない理由の一部だと思います。aptのこのようなコア機能の部分を持つことは、この機能を別のパッケージの一部として持つよりも優れているでしょう。
ファヒームミタ

回答:


29

これは、公式リポジトリから完全なパッケージツリー複製し、ソースの優先度微調整しようとしている状況とは区別する必要があります。ランダムパッケージとは、仮想パッケージ、ローカルでコンパイルされたパッケージ、またはテスト目的で断片的にコピーされたパッケージを意味します。以下は、現在廃止されたドキュメントに基づいた簡単なセットアップです。

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

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データベースを更新します。

apt-get update

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


6
新しいapt 1.1では、URI とmanページを参照する必要[trusted=yes]debありますが、署名がないために失敗します。file:///sources.list(5)apt-get update
vinc17

2

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

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

    # mkdir -p /opt/debian
    
  2. confサブディレクトリを作成します。

    # mkdir /opt/debian/conf
    
  3. 次のような内容の/ opt / debian / conf / distributionsファイルを作成します(使用しているディストリビューションに応じて調整します):

    Label: Local APT repository
    Codename: jessie
    Architectures: amd64
    Components: main
    Description: Local APT repository for debootstrap
    
  4. repreproでパッケージをインポートします。

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

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

これにより、未署名のアーカイブが作成されます。--no-check-gpgオプションを指定したdebootstrapで使用できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.