make install reports missing directories
Teddy Hogeborn
teddy at recompile.se
Mon Sep 9 03:40:59 CEST 2024
Erich Eckner <mandos at eckner.net> writes:
> On Mon, 27 Nov 2023, Teddy Hogeborn wrote:
>
> > Erich Eckner <mandos at eckner.net> writes:
> >
> > > I'm trying to package mandos for arch linux. I successfully ran
> > > `make`, but the `make install-server` afterwards complains about a
> > > lot of missing directories. I fixed it by replaying all `install`s
> > > by `install -D` in the Makefile - but now the compression of man
> > > pages fails with a similar issue: usr/share/man/man8/ does not
> > > exist. I had a look at the Makefile and I fail to see the target,
> > > that would create these directories. Does `debuild` really do this
> > > much magic and create all those directories? Or am I missing some
> > > preliminary step?
> >
> > I think that those directories always exist on the systems we use.
> > What do other Arch packages do for similar man page files? Do they
> > all create those directories? Do they all use the same permissions
> > and ownership when creating them, and if they don't, won't an Arch
> > system have inconsistent permissions and ownership depending on
> > which packages they installed in what order?
>
> Arch installs into an empty "pkgdir". This is then wrapped in a tar
> and the package manager extracts the tar into the real root file
> system. Thus, all parent directories need to be created and the
> default is to create them for the root user - which is also, what
> `install -D` does.
I see.
> I only packaged very few things for debian, but I thought to remember,
> that debuild worked similar: It runs `make install DESTDIR=$somedir`
> for installation with an empty $somedir. But maybe, my memories are
> wrong about this. You _do_ build debian packages with debuild, right?
Yes.
> > > If I made a patch for the Makefile to include directory creation,
> > > would this be considered for inclusion?
> >
> > Certainly. But I wonder about always using -D; if a directory does
> > not exist, is it really the correct directory to use? Which
> > directories, except /usr/share/man/man8, did not exist?
>
> My assumption always was, that whatever destination the Makefile
> decides, is the right one. I.e. if one wants a different destination,
> one should use environments variables to change prefixes and
> alike. See for example mdadm's makefile, that prominently uses
> `install -D` everywhere:
>
> https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/tree/Makefile#n278
>
> regarding the missing dirs: I added `-D` to all `install`s and then I
> "only" needed to create $(MANDIR)/man8 and $(MANDIR)/man5.
I have changed the Makefile to create directories as required. I did
not end up using -D everywhere, though. But the effect should be the
same.
> (And I needed to make /sbin configurable, because arch uses /bin for
> all executables and symlinks /sbin to /bin.) I'll try to wrap my hack
> into a nice patch and send it your way :-)
Please do.
/Teddy Hogeborn
--
The Mandos Project
https://www.recompile.se/mandos
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 861 bytes
Desc: not available
URL: <http://mail.recompile.se/pipermail/mandos-dev/attachments/20240909/fdfada38/attachment.sig>
More information about the Mandos-Dev
mailing list