
Ubuntu日本語フォーラム

ログインしていません。
universeのパッケージで普通のDebianの環境では問題が起きていなくて、ubuntuの環境で問題が起きていて、調べてみると元のapt-show-versions 0.15自体のバグのようなのですが、こういう場合はどこに報告すべきでしょうか?
現象としては ubuntu では %releasenames が
%releasenames = {
'archive.ubuntulinux.jp_ubuntu_dists_jaunty' => {
'Suite' => 'jaunty',
'Name' => 'jaunty',
'Codename' => 'jaunty'
},
'jp.archive.ubuntu.com_ubuntu_dists_jaunty-security' => {
'Suite' => 'jaunty-security',
'Name' => 'jaunty-security',
'Codename' => 'jaunty'
},
'archive.ubuntulinux.jp_ubuntu-ja_jaunty-non-free' => {
'Suite' => 'jaunty-non-free',
'Name' => 'jaunty-non-free',
'Codename' => 'jaunty-non-free'
},
'jp.archive.ubuntu.com_ubuntu_dists_jaunty' => {
'Suite' => 'jaunty',
'Name' => 'jaunty',
'Codename' => 'jaunty'
},
'dl.google.com_linux_deb_dists_stable' => {
'Suite' => 'stable',
'Name' => 'stable',
'Codename' => 'stable'
},
'jp.archive.ubuntu.com_ubuntu_dists_jaunty-updates' => {
'Suite' => 'jaunty-updates',
'Name' => 'jaunty-updates',
'Codename' => 'jaunty'
},
'archive.canonical.com_ubuntu_dists_jaunty' => {
'Suite' => 'jaunty',
'Name' => 'jaunty',
'Codename' => 'jaunty'
}
};
となっていて、sub determine_pkgfile_release の
foreach (keys %releasenames) {
return $_ if ($_ eq substr($pkgfile, 0, length($_)));
}
のところで $pkgfile が jp.archive.ubuntu.com_ubuntu_dists_jaunty-updates_main_binary-i386_Packages のときに 'jp.archive.ubuntu.com_ubuntu_dists_jaunty-updates' だけではなく 'jp.archive.ubuntu.com_ubuntu_dists_jaunty' でも eq になってしまう。
'jp.archive.ubuntu.com_ubuntu_dists_jaunty' が先に判定されているようで、jaunty-updates の方でも jaunty が返ってしまって、apt-show-versions のその後の動作もおかしくなって、今だと
% apt-show-versions gvfs
gvfs 1.2.2-0ubuntu1 installed: No available version in archive
%
のように間違った結果になります。
正しい結果は
gvfs/jaunty-updates upgradeable from 1.2.2-0ubuntu1 to 1.2.2-0ubuntu2
のはずです。
手元では
foreach (sort {length($b)<=>length($a)} keys %releasenames) {
return $_ if ($_ eq substr($pkgfile, 0, length($_)));
}
のように変更して試してみました。
他にprefixが重ならない他のapt-lineに変更することでも回避できそうです。
オフライン