Gentoo Archives: gentoo-user

From: Mark David Dumlao <madumlao@×××××.com>
To: gentoo-user@l.g.o
Subject: Re: [gentoo-user] systemd installation location
Date: Mon, 30 Sep 2013 17:47:23
Message-Id: CAG2nJkNGH5aW-s1-ZqQiW98f2KkgKP=rtOA0ZJdTgyWDpmkQMg@mail.gmail.com
In Reply to: Re: [gentoo-user] systemd installation location by pk
1 On Mon, Sep 30, 2013 at 2:24 PM, pk <peterk2@××××××××.se> wrote:
2 > On 2013-09-30 04:05, Mark David Dumlao wrote:
3 >> are the same. Distro packagers, however, have to decide for 100% of the cases.
4 >> So they're going to end up making weird decisions that are easy for you to
5 >> second-guess but are actually tough.
6 >
7 > That's only true for binary distros.
8
9 That is not true. Even in source-based distros like gentoo, distro packagers
10 decide where the files go. So far, it's only in a completely from scratch *nix
11 environment where the end user gets to decide where files go.
12
13 And "where do the files go" is pretty much what made this problem be apparent.
14 Many packages with udev rules depend on programs, resources, libraries in /usr.
15 It is _not_ trivial to fix those packages. If _you_ think it is, I recommend you
16 replace the entire gentoo bugzilla community because you are clearly a
17 rockstar bugfixer.
18
19 >
20 >> If you want to solve the "hard problem", you want to create a tool that
21 >> will automate / and /usr migrations. Portage has to be aware of the tool
22 >
23 > What's wrong with using autotools? I really don't see why you need it to
24 > be dynamic. In Gentoo you install stuff once for every version (or if
25 > you change use flag). Why invent stuff/complicate matters when you don't
26 > need to?
27 >
28
29 You do not really understand the scope of the problem.
30
31 The problem is that "boot critical" is subjective to the system. A program that
32 is "boot critical" for one system may not be "boot critical" for another. But
33 where software gets installed is generally "hard coded" into packages
34 (defaulting to /usr). That is the status quo.
35
36 Because of this, the package manager simply does not have enough
37 information on whether a package is boot critical or not. It is not part of
38 the ebuild. It is not part of the emerge switches. Not only that, whether a
39 package is boot critical or not could change at any time. nfs-utils are only
40 boot critical if you use nfs. ssh is only boot critical if you use sshfs.
41 Perl is only boot critical if you have a startup script that counts the number
42 of virgins you've sacrificed to the goat god. Making a filesystem boot-critical
43 is something that the package manager does not and cannot track. Autotools
44 also cannot track it as it happens outside of compile time.
45
46 If you want the / and /usr separation nonsense solved, you should write a
47 program that can "mark" a binary as boot-critical. It will then copy the binary
48 and all of its libraries to /, and copy and rebuild any dependencies into / as
49 well. It must be a full copy, otherwise the promise that /usr can be shared
50 will be violated. Everytime that package is rebuilt, it must be built and copied
51 into _both_ / and /usr. Your program should also be able to unmark a binary
52 as boot critical and thus delete any copies in /
53
54 Your program should be understood by portage, or at least run as a portage
55 hook. Copy paste that to all package managers as well.
56
57 What's more, any program depending on a boot critical program must be
58 rewritten so that it looks for the program in the correct path. For backwards
59 compatibility, a "boot critical" program should generate\ symlinks in the
60 / filesystem's /usr tree (the normally empty directory shadowed by the /usr
61 filesystem), so that if the /usr filesystem is not available any programs
62 depending on that program would still work.
63
64 That program is writable in theory. It's VERY tedious to write it, much less
65 test that it works.
66 --
67 This email is: [ ] actionable [x] fyi [ ] social
68 Response needed: [ ] yes [x] up to you [ ] no
69 Time-sensitive: [ ] immediate [ ] soon [x] none