forked from josch/mmdebstrap
don't overwrite existing files in setup
This commit is contained in:
parent
1b0f7f1138
commit
0383efc554
1 changed files with 23 additions and 15 deletions
22
mmdebstrap
22
mmdebstrap
|
@ -1663,7 +1663,7 @@ sub run_setup() {
|
|||
# from inside the chroot.
|
||||
# The config filename is chosen such that any settings in it will be
|
||||
# overridden by what the user specified with --aptopt.
|
||||
{
|
||||
if (!-e "$options->{root}/etc/apt/apt.conf.d/00mmdebstrap") {
|
||||
open my $fh, '>', "$options->{root}/etc/apt/apt.conf.d/00mmdebstrap"
|
||||
or error "cannot open /etc/apt/apt.conf.d/00mmdebstrap: $!";
|
||||
print $fh "Apt::Install-Recommends false;\n";
|
||||
|
@ -1672,7 +1672,7 @@ sub run_setup() {
|
|||
}
|
||||
|
||||
# apt-get update requires this
|
||||
{
|
||||
if (!-e "$options->{root}/var/lib/dpkg/status") {
|
||||
open my $fh, '>', "$options->{root}/var/lib/dpkg/status"
|
||||
or error "failed to open(): $!";
|
||||
close $fh;
|
||||
|
@ -1684,9 +1684,11 @@ sub run_setup() {
|
|||
# architecture outside the chroot.
|
||||
chomp(my $hostarch = `dpkg --print-architecture`);
|
||||
if (
|
||||
(!-e "$options->{root}/var/lib/dpkg/arch")
|
||||
and (
|
||||
scalar @{ $options->{foreignarchs} } > 0
|
||||
or ( $options->{mode} eq 'chrootless'
|
||||
and $hostarch ne $options->{nativearch})
|
||||
and $hostarch ne $options->{nativearch}))
|
||||
) {
|
||||
open my $fh, '>', "$options->{root}/var/lib/dpkg/arch"
|
||||
or error "cannot open /var/lib/dpkg/arch: $!";
|
||||
|
@ -1697,7 +1699,8 @@ sub run_setup() {
|
|||
close $fh;
|
||||
}
|
||||
|
||||
if (scalar @{ $options->{aptopts} } > 0) {
|
||||
if (scalar @{ $options->{aptopts} } > 0
|
||||
and (!-e "$options->{root}/etc/apt/apt.conf.d/99mmdebstrap")) {
|
||||
open my $fh, '>', "$options->{root}/etc/apt/apt.conf.d/99mmdebstrap"
|
||||
or error "cannot open /etc/apt/apt.conf.d/99mmdebstrap: $!";
|
||||
foreach my $opt (@{ $options->{aptopts} }) {
|
||||
|
@ -1723,7 +1726,8 @@ sub run_setup() {
|
|||
}
|
||||
}
|
||||
|
||||
if (scalar @{ $options->{dpkgopts} } > 0) {
|
||||
if (scalar @{ $options->{dpkgopts} } > 0
|
||||
and (!-e "$options->{root}/etc/dpkg/dpkg.cfg.d/99mmdebstrap")) {
|
||||
# FIXME: in chrootless mode, dpkg will only read the configuration
|
||||
# from the host -- see #808203
|
||||
if ($options->{mode} eq 'chrootless') {
|
||||
|
@ -1753,7 +1757,7 @@ sub run_setup() {
|
|||
}
|
||||
}
|
||||
|
||||
{
|
||||
if (!-e "$options->{root}/etc/fstab") {
|
||||
open my $fh, '>', "$options->{root}/etc/fstab"
|
||||
or error "cannot open fstab: $!";
|
||||
print $fh "# UNCONFIGURED FSTAB FOR BASE SYSTEM\n";
|
||||
|
@ -1793,9 +1797,11 @@ sub run_setup() {
|
|||
$fname .= 'main.sources';
|
||||
}
|
||||
}
|
||||
if (!-e $fname) {
|
||||
open my $fh, '>', "$fname" or error "cannot open $fname: $!";
|
||||
print $fh $firstentry->{content};
|
||||
close $fh;
|
||||
}
|
||||
# everything else goes into /etc/apt/sources.list.d/
|
||||
for (my $i = 1 ; $i < scalar @{ $options->{sourceslists} } ; $i++) {
|
||||
my $entry = $options->{sourceslists}->[$i];
|
||||
|
@ -1822,15 +1828,17 @@ sub run_setup() {
|
|||
error "invalid type: $entry->{type}";
|
||||
}
|
||||
}
|
||||
if (!-e $fname) {
|
||||
open my $fh, '>', "$fname" or error "cannot open $fname: $!";
|
||||
print $fh $entry->{content};
|
||||
close $fh;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# allow network access from within
|
||||
foreach my $file ("/etc/resolv.conf", "/etc/hostname") {
|
||||
if (-e $file) {
|
||||
if (-e $file && !-e "$options->{root}/$file") {
|
||||
# this will create a new file with 644 permissions and copy
|
||||
# contents only even if $file was a symlink
|
||||
copy($file, "$options->{root}/$file")
|
||||
|
|
Loading…
Reference in a new issue