[pacman-dev] multiple extraction from package
Andrew Fyfe
andrew at neptune-one.net
Fri Jul 13 15:47:02 EDT 2007
Aaron Griffin wrote:
> 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.
>
> _______________________________________________
> pacman-dev mailing list
> pacman-dev at archlinux.org
> http://archlinux.org/mailman/listinfo/pacman-dev
My original idea for the temp dir was to only use it for the meta data
files. But thinking about it extracting the whole package to a tmp dir
means we wouldn't need to extend .FILELIST (pacman could generate a more
detailed filelist at install time). If I remember correctly this is how
dpkg installs a package, it 1st extracts the package to a temp dir,
checks conflicts, then copies the new files into place.
I've started writing do a detailed list/description of how pacman should
install a package, I'll try and get it finished this weekend and post it
here.
Andrew
More information about the pacman-dev
mailing list