severity 595017 important quit On Wed, 1 Sep 2010 02:47:07 +1000 [email protected] wrote:
> I tried that already; it doesn't work because it's looking for the > keyring inside the target now, rather than looking in /etc/apt/. > > I'll make a transcript to confirm this tomorrow. Please try the attached patch. -- Neil Williams ============= http://www.data-freedom.org/ http://www.linux.codehelp.co.uk/ http://e-mail.is-not-s.ms/
Index: multistrap
===================================================================
--- multistrap (revision 7506)
+++ multistrap (working copy)
@@ -151,6 +151,8 @@
system ("mkdir -p ${dir}${dpkgdir}") if (not -d "${dir}${dpkgdir}");
system ("mkdir -p ${dir}etc/apt/sources.list.d/")
if (not -d "${dir}etc/apt/sources.list.d/");
+system ("mkdir -p ${dir}etc/apt/trusted.gpg.d/")
+ if (not -d "${dir}etc/apt/trusted.gpg.d/");
system ("mkdir -p ${dir}etc/apt/preferences.d/")
if (not -d "${dir}etc/apt/preferences.d/");
system ("mkdir -p ${dir}usr/share/info/")
@@ -256,8 +258,6 @@
foreach my $pkg (values %keyrings) {
next if (not defined $pkg);
next if ("" eq "$pkg");
- my $status = `LC_ALL=C dpkg -s $pkg`;
- next if $status =~ /Status: install ok installed/;
$k .= "$pkg ";
}
if (defined $k) {
@@ -267,13 +267,36 @@
if (($e =~ /\nUSER=root\n/)) {
$str = "sudo" if (-f "/usr/bin/sudo");
}
- printf (_g("I: Installing %s\n"), $k);
- system ("$str apt-get install $k");
+ printf (_g("I: Downloading %s\n"), $k);
+ system ("$str apt-get -d --reinstall install $k");
}
}
+foreach my $keyring_pkg (values %keyrings) {
+ my @files=();
+ my $file = `find /var/cache/apt/archives/ -name "$keyring_pkg*"`;
+ chomp ($file);
+ my $xdir = `mktemp -d -t keyring.XXXXXX`;
+ chomp ($xdir);
+ system ("dpkg -X $file $xdir >/dev/null");
+ if (-d "${xdir}/usr/share/keyrings") {
+ opendir (DIR, "${xdir}/usr/share/keyrings");
+ @files=grep(!m:\.\.?$:,readdir DIR);
+ closedir (DIR);
+ }
+ foreach my $gpg (@files) {
+ next if ($gpg =~ /removed/);
+ system ("gpg --no-default-keyring ".
+ "--homedir=${dir}/etc/apt/trusted.gpg.d/ ".
+ "--keyring=multistrap.gpg ".
+ " --import ${xdir}/usr/share/keyrings/${gpg} 2>/dev/null");
+ }
+ system ("rm -rf ${xdir}");
+}
$config_str = '';
$config_str .= " -o Apt::Architecture=$arch";
+$config_str .= " -o Dir::Etc::TrustedParts=${dir}${etcdir}trusted.gpg.d";
+$config_str .= " -o Dir::Etc::Trusted=${dir}${etcdir}trusted.gpg";
$config_str .= " -o Apt::Get::AllowUnauthenticated=true"
if (defined $noauth);
$config_str .= " -o Apt::Get::Download-Only=true";
@@ -933,11 +956,11 @@
print "packages:\tPackages: ".join (", ", sort @long)."\n";
print "suites: \tSuites: ".join (", ", sort values %suites)."\n";
print "components\tComponents: ".join (", ", sort values %components)."\n";
- my $msg="omitdebsrc\t"._g("Omit deb-src from sources.list for sections:");
+ my $srcmsg="omitdebsrc\t"._g("Omit deb-src from sources.list for sections:");
foreach my $omit (sort keys %omitdebsrc) {
- $msg .= $omitdebsrc{$omit} if (defined $omitdebsrc{$omit});
+ $srcmsg .= $omitdebsrc{$omit} if (defined $omitdebsrc{$omit});
}
- print "$msg\n";
+ print "$srcmsg\n";
if (defined $explicit_suite) {
printf("explicitsuite:\t"._g("Explicit suite selection: Yes\n"));
} else {
pgpJmDMP2MGUe.pgp
Description: PGP signature

