[pacman-dev] multiple extraction from package

Aaron Griffin aaronmgriffin at gmail.com
Fri Jul 13 15:12:17 EDT 2007


On 7/11/07, Xavier <shiningxc at gmail.com> wrote:
> On Wed, Jul 11, 2007 at 09:53:49PM +0100, Andrew Fyfe wrote:
> >
> > But back to the point, I think we need a temporary directory
> > (mkdtemp(/tmp/XXXXXXX)) where we put install and changelog before we
> > commit a package to the database. Looking at this from the point of view
> > of a normal db I would never enter the install file before I've actual
> > created a valid entry for the package (the desc file).
> >
>
> Initially, I wanted to try avoiding extracting stuff to /tmp/ , influenced by
> the following comment in package.c :
> 544   /* TODO there is no reason to make temp files to read
> 545    * from a libarchive archive, it can be done by reading
> 546    * directly from the archive
> 547    * See: archive_read_data_into_buffer
> 548    * requires changes 'parse_descfile' as well
> 549    * */
>
> But since these files are used again later, I think I would prefer what you
> just said, keeping files like install and changelog somewhere in /tmp/ , and
> then moving them only when the entry is created. I agree totally :)

The comment above is not taking into account that it's done multiple
times.  I think extracting to a temp dir might be subtly problematic,
but may open up more opportunities for us later.

For instance, if we extract to /tmp/foo/ first, we get the benefit of
not having to run entirely through the archive twice to check tarball
integrity.  In addition, it allows us to stay slightly more
transactional in the sense that we can extract to /tmp, do all the
fs-to-fs comparisons and then simply dump the temp extraction to the
root dir.

Actually, this could (hah) clean up some of the directory-symlink issues too.

Just some food for thought.




More information about the pacman-dev mailing list