Re: tempfile <-> IO::Handle::new_tmpfile?
"Marcelo E. Magallon" <mmagallo@efis.ucr.ac.cr> writes:
> can I use IO::Handle::new_tmpfile in an Perl script that's run on
> postinst?
>
> The package has to Predepend on perl, right? I'll use this
> tempfile to modify a conffile (it *has* to be modified, it's not an
> option)... what's the proper way of moving the file back into place?
> I think:
>
> system "cat $tempfile > $conffile";
I really dislike Perl scripts that use system() when Perl is quite
capable of doing it. Wouldn't File::Copy do it?
In any case, IO::File::new_tmpfile() unlinks the temporary file, so
you'd have to do File::Copy::copy($filehandle, $conffile) anyway.
You only have to worry about security problems with temporary files if
you use /tmp anyway, so I'd recommend something like:
umask(0755);
open(NEW, "> /etc/conffile.new")
or die "pkg.postinst: open conffile.new: $!\n";
# Write stuff to NEW.
close(NEW)
or die "pkg.postinst: close conffile.new: $!\n";
rename("/etc/conffile.new", "/etc/conffile")
or die "pkg.postinst: rename /etc/conffile.new /etc/conffile: $!\n";
Make sure the postrm removes the changes when someone downgrades, if
necessary.
--
Carey Evans http://home.clear.net.nz/pages/c.evans/
"As a concept, virtual reality seems to appeal
to people who spend a lot of time indoors." - Gregory Benford
--
To UNSUBSCRIBE, email to debian-mentors-request@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
Reply to: