On Mon, Sep 30, 2013 at 2:24 PM, pk <pete...@coolmail.se> wrote:
> On 2013-09-30 04:05, Mark David Dumlao wrote:
>> are the same. Distro packagers, however, have to decide for 100% of the 
>> cases.
>> So they're going to end up making weird decisions that are easy for you to
>> second-guess but are actually tough.
>
> That's only true for binary distros.

That is not true. Even in source-based distros like gentoo, distro packagers
decide where the files go. So far, it's only in a completely from scratch *nix
environment where the end user gets to decide where files go.

And "where do the files go" is pretty much what made this problem be apparent.
Many packages with udev rules depend on programs, resources, libraries in /usr.
It is _not_ trivial to fix those packages. If _you_ think it is, I recommend you
replace the entire gentoo bugzilla community because you are clearly a
rockstar bugfixer.

>
>> If you want to solve the "hard problem", you want to create a tool that
>> will automate / and /usr migrations. Portage has to be aware of the tool
>
> What's wrong with using autotools? I really don't see why you need it to
> be dynamic. In Gentoo you install stuff once for every version (or if
> you change use flag). Why invent stuff/complicate matters when you don't
> need to?
>

You do not really understand the scope of the problem.

The problem is that "boot critical" is subjective to the system. A program that
is "boot critical" for one system may not be "boot critical" for another. But
where software gets installed is generally "hard coded" into packages
(defaulting to /usr). That is the status quo.

Because of this, the package manager simply does not have enough
information on whether a package is boot critical or not. It is not part of
the ebuild. It is not part of the emerge switches. Not only that, whether a
package is boot critical or not could change at any time. nfs-utils are only
boot critical if you use nfs. ssh is only boot critical if you use sshfs.
Perl is only boot critical if you have a startup script that counts the number
of virgins you've sacrificed to the goat god. Making a filesystem boot-critical
is something that the package manager does not and cannot track. Autotools
also cannot track it as it happens outside of compile time.

If you want the / and /usr separation nonsense solved, you should write a
program that can "mark" a binary as boot-critical. It will then copy the binary
and all of its libraries to /, and copy and rebuild any dependencies into / as
well. It must be a full copy, otherwise the promise that /usr can be shared
will be violated. Everytime that package is rebuilt, it must be built and copied
into _both_ / and /usr. Your program should also be able to unmark a binary
as boot critical and thus delete any copies in /

Your program should be understood by portage, or at least run as a portage
hook. Copy paste that to all package managers as well.

What's more, any program depending on a boot critical program must be
rewritten so that it looks for the program in the correct path. For backwards
compatibility, a "boot critical" program should generate\ symlinks in the
/ filesystem's /usr tree (the normally empty directory shadowed by the /usr
filesystem), so that if the /usr filesystem is not available any programs
depending on that program would still work.

That program is writable in theory. It's VERY tedious to write it, much less
test that it works.
-- 
This email is:    [ ] actionable   [x] fyi        [ ] social
Response needed:  [ ] yes          [x] up to you  [ ] no
Time-sensitive:   [ ] immediate    [ ] soon       [x] none

Reply via email to