[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: dpkg behavior when following symlinks



Hi!

On Wed, 2019-11-20 at 22:59:04 +0000, Alejandro Del Castillo wrote:
> I am the current maintainer of opkg, dpkg's little brother used mainly 
> for embedded systems.

Ah, thanks for getting in touch! :)

> Opkg uses dpkg control file syntax, and follows 
> debian policy (for the most part). Recently, a bug [1] was opened 
> against opkg regarding symlinks. Basically, debian policy states that 
> symlinks should be followed, when installing files. But, empirically, I 
> don't see that:
> 
> (bb) adelcast@delcastillo2 ~/dpkg $ tree a_1.0
> a_1.0
> ├── DEBIAN
> │   └── control
> ├── myfile
> └── tmp
>      ├── lib
>      └── lib64 -> lib/
> 
> 4 directories, 2 files
> (bb) adelcast@delcastillo2 ~/dpkg $ tree b_1.0
> b_1.0
> ├── DEBIAN
> │   └── control
> ├── myfile2
> └── tmp
>      └── lib64
>          └── otherfile
> 
> (bb) adelcast@delcastillo2 ~/dpkg $ sudo dpkg -i a_1.0.deb
> Selecting previously unselected package a.
> (Reading database ... 620831 files and directories currently installed.)
> Preparing to unpack a_1.0.deb ...
> Unpacking a (1.0) ...
> Setting up a (1.0) ...
> (bb) adelcast@delcastillo2 ~/dpkg $ sudo dpkg -i b_1.0.deb
> Selecting previously unselected package b.
> (Reading database ... 620834 files and directories currently installed.)
> Preparing to unpack b_1.0.deb ...
> Unpacking b (1.0) ...
> dpkg: error processing archive b_1.0.deb (--install):
>   trying to overwrite '/tmp/lib64', which is also in package a 1.0
> Errors were encountered while processing:
>   b_1.0.deb
> 
> Can someone clarify why dpkg is behaving this way? Or am I 
> misinterpreting Debian standards?

This is supposed to work, as exemplified by the following functional
test case:

  https://git.dpkg.org/cgit/dpkg/dpkg-tests.git/tree/t-symlink-dir

Are you sure the contents of these packages are what's expected?
«dpkg-deb -c» would be more telling instead of tree on the unpacked
directory. Or perhaps the pathname on disk was neither a directory
nor a symlink?

Otherwise I guess placing the exact test packages somewhere might
help, or you could check with «dpkg --debug=111».

Thanks,
Guillem


Reply to: