ローカルで2つのリポジトリを取得しました。 1つはSqueezeのコピーで、もう1つはカスタムのもので、repreproによって管理されます。 2つの間で重複するパッケージのリストを生成する既製のツールはありますか?
愚かな私、私はこれをはるかに速く簡単にするスクリプトに座ってきました:
#!/usr/bin/python3
import os
import gzip
import apt_pkg
repo1 = "~/.repo_local/dists/cache/main/binary-i386/Packages.gz"
repo1 = os.path.expanduser(repo1)
repo1 = apt_pkg.TagFile(gzip.open(repo1, "rb"))
repo1 = dict([(pkg["Package"], pkg["Version"]) for pkg in repo1])
repo2 = "~/.repo_bin/dists/squeeze/main/binary-i386/Packages.gz"
repo2 = os.path.expanduser(repo2)
repo2 = apt_pkg.TagFile(gzip.open(repo2, "rb"))
repo2 = dict([(pkg["Package"], pkg["Version"]) for pkg in repo2])
apt_pkg.init_system()
found = False
for pkg in repo1:
if pkg in repo2:
vc = apt_pkg.version_compare(repo1[pkg], repo2[pkg])
if vc == 0:
print("{:<30}{:<30}({})".format(repo1[pkg], repo2[pkg], pkg))
found = True
if found:
print("=" * 90)
print("{:<30}{:<30}({})".format("custom", "official", "package name"))
else:
print("nothing matching search criteria found")
fdupes を使用すると、md5sumを使用してファイルを比較し、重複を削除できます。しかし、Debianリポジトリについては十分に知らないので、おそらくいくつかのパッケージレジストリからもそれらのファイルを削除する必要があります(各リポジトリにはpackages.gzなどのファイルがあると思います)。
だからあなたは何をすべきか: