Re: apt-get source symlinks if repository is local ('file:/)?
Thanks for the responses!
I understand the reasoning now and it does make sense. I'm probably just
running into these issues as a corner case because I'm hosting every
part of my repository chain on the same box during initial development
and setup and so I'm running into odd things (like rebuilding sources on
a "production" machine). And it's not like this cause a big issue
really...the "problem" was found and resolved the same afternoon I first
set it up. Can't really complain too much about that.
I guess in an ideal world I would have different names for these
protocols. Say the current functionality of `copy` would be `file` (or
actually I guess `copy-file` maybe?) and the current functionality of
`file` would be something like `symlink` juts to make it clear.
I think changing the default is probably crazy, but honestly I think
adding an option might even be a little too much. Too many options can
be tiresome as well and the functionality is there after all.
Regardless thanks so much for developing/maintaining
apt/reprepro/everything else. Even considering this minor hiccup,
setting up and using this as a hosting/deployment tool is really great.
Thanks for all the great work!
On 08/12/2015 09:18 AM, Guillem Jover wrote:
On Wed, 2015-08-12 at 09:32:01 +0200, David Kalnischkies wrote:
[…] I wonder through if it isn't
a bug in dpkg(-source) to follow the symlink to the orig-tarball and
place the debian-tarball alongside it instead of placing the
debian-tarball alongside the symlink to the orig-tarball.
(Or did I misunderstand you?)
It's not really placing the files alongside, it just pipes the
tarballs into the filenames, which means that the symlinks are
followed. But see below…
----- Forwarded message from Thomas Nyberg <firstname.lastname@example.org> -----
Date: Tue, 11 Aug 2015 17:30:29 -0700
From: Thomas Nyberg <email@example.com>
Subject: apt-get source symlinks if repository is local ('file:/)?
drwxr-xr-x 5 xxx xxx 4096 Aug 11 17:16 package-0.1
lrwxrwxrwx 1 xxx xxx 81 Aug 11 17:16 package_0.1-1.debian.tar.gz ->
lrwxrwxrwx 1 xxx xxx 71 Aug 11 17:16 package_0.1-1.dsc ->
lrwxrwxrwx 1 xxx xxx 77 Aug 11 17:16 package_0.1.orig.tar.gz ->
dpkg-source -b package-0.1
dpkg-source: info: using options from
dpkg-source: info: using source format `3.0 (quilt)'
dpkg-source: info: building package using existing
dpkg-source: info: building package in
dpkg-source: error: cannot write package_0.1-1.debian.tar.gz:
dpkg-source: error: gzip --no-name --rsyncable -9 gave error exit status 13
I.e. it's erroring out because it's trying to modify the file which is
symlinked to a file that my user doesn't own. Of course the solution is to
just copy the files over by hand an run again, but had I not had the repo
owned by anothe user, I could have accidentally modified it myself.
Is there a hidden option I'm missing that's turned this on? Can I turn it off?
It seems like very odd functionality and seems a bit unsafe.
There's no option to turn this behavior off. Adding an option to do
so, might be fine, but I don't think changing the default would be
ok, because it seems to me that if you are using a symlink farm and
request to regenerate the source, I'd take that to mean the user might
prefer to update the sources at their original location. Otherwise why
would you regenerate the source for the same exact version? :)