5

ローカルの .deb ファイルとリモート リポジトリを見て、依存関係などを推測できるようにして、独自のリポジトリと部分的なミラーを構築できるようにしたいと考えています (おそらく の構成ファイルを作成することによってreprepro)。

課題は、これを支援する多くのコマンドライン ツール (apt-rdepends など) が、ターゲット システムで実行されていることを前提としており、ローカルの apt キャッシュを利用していることです。私が現在実行しているものからのUbuntuおよびDebianディストリビューションなので、これをもう少し距離を置いて行いたいと思います.

機能はあるが文書化が不十分な python-apt パッケージを使用すると、ローカル ファイル システムの .deb ファイルを調べて、依存関係を引き出すことができます。リポジトリから Packages.gz ファイルを解析する同様のツールがあるかどうか疑問に思っていますか? (それほどトリッキーではありませんが、車輪の再発明はしたくありません!)

全体的な目標は、2 つのリポジトリを作成して維持することです。1 つは独自のパッケージを含み、Ubuntu ディストリビューションの部分的なミラーには、いくつかの既知の必要なパッケージと、それらまたは私たち自身のパッケージが依存するすべてのものがあります。

4

2 に答える 2

0

あなたはrepomanをチェックしたいと思うかもしれません.少なくともそこからいくつかのアイデアを借りることができます.

たとえば、 https://github.com/synack/repoman#get-detailed-information-about-a-package-1のような deb パッケージ情報を取得するには

[
{
    "SHA1": "cae8b9a4a821237a24b5757566efdc95391090d4",
    "Maintainer": "Jeremy Grosser <synack@digg.com>",
    "Description": "server-side, HTML-embedded scripting language (meta-package) This package is a meta-package that, when installed, guarantees that you have at least one of the four server-side versions of the PHP5 interpreter installed.  Removing this package won't remove PHP5 from your system, however it may remove other packages that depend on this one. . PHP5 is an HTML-embedded scripting language. Much of its syntax is borrowed from C, Java and Perl with a couple of unique PHP-specific features thrown in. The goal of the language is to allow web developers to write dynamically generated pages quickly. . Homepage: http://www.php.net/",
    "Package": "php5",
    "Section": "web",
    "MD5sum": "0efa615337f0ba59d8369e4469884730",
    "Installed-Size": "20",
    "Filename": "pool/main/p/php5/php5_5.2.9-digg8_all.deb",
    "Priority": "normal",
    "Depends": "libapache2-mod-php5 (>= 5.2.9-digg8) | php5-cgi (>= 5.2.9-digg8), php5-common (>= 5.2.9-digg8)",
    "Version": "5.2.9-digg8",
    "Architecture": "all",
    "SHA256": "26844b968f6b51c1a02fd59c21455bf6ba47e46e47e53c6676af0ee4c2dd799b",
    "Size": "1024"
}

]

コードhttps://github.com/synack/repoman/blob/master/repoman/repository.py#L187

于 2014-03-31T23:37:00.143 に答える
0

非常に効果的な方法は、関連するすべてのディストリビューションに対してローカル apt キャッシュを作成することです。パッケージのツールchdistdevscripts使用すると、ルート権限を使用する必要なく、これらのキャッシュを多数作成できます。次に、使い慣れたツール (apt-rdepends など) を使用して、それらのキャッシュを .xml にラップすることでクエリを実行できますchdist。依存関係を解決できる場所へのrootdirキーワード引数を使用して、ローカル キャッシュで python-apt を指定することもできます。apt.cache.Cache

于 2014-01-08T06:26:15.237 に答える