本当にどうでもいいメモなどをたまに書く程度。

OpenVZ VPS 上の Debian で APT 時に warning が大量に出る問題の対策

日付:

OpenVZ VPS 上の Debian で、apt-get install などの際に、下記のような warning が大量に出る問題の対策。

dpkg: warning: files list file for package 'libgcc1:i386' missing; assuming package has no files currently installed

激安 VPS は、その仮想化技術が OpenVZ であることが多い。多いというか、大半そうだ。
その OS テンプレートがアレで、上記 warning が大量に出ることがある。
私が利用したことのあるものでは、BuyVM、LowEndSpirit、MiniVPS.us なんかが該当する。

山のような warning で気分が悪いので、次のようなスクリプトを書いた (LES のシェルスクリプトを参考にした)。

#!/usr/bin/perl
use Cwd;

$package = shift;
die('usage: ' . $0 . ' package(s)') unless($package);

$pwd = getcwd();
chdir('/var/cache/apt/archives');
while($package)
{
	fix($package);
	$package = shift;
}
chdir($pwd);
exit;

sub fix
{
	my($package) = @_;
	system(sprintf('apt-get download %s', $package));
	system(sprintf("dpkg-deb -c  %s_*.deb | awk {'print \$6'} | cut -f2- -d. | sed 's|^/\$|/.|' | sed 's|/\$||' > /var/lib/dpkg/info/%s:i386.list", $package, $package));
	system(sprintf('rm %s_*.deb', $package));
}

(amd64 などの場合は、21行目の i386 を書き換える)

使い方は、warning のログからパッケージ名をコピペして引数に。

# ./fix.pl libc6 gcc-4.7-base (以下略)
comments powered by Disqus