public inbox for gentoo-user@lists.gentoo.org
 help / color / mirror / Atom feed
From: Mark David Dumlao <madumlao@gmail.com>
To: gentoo-user@lists.gentoo.org
Subject: Re: [gentoo-user] systemd installation location
Date: Tue, 1 Oct 2013 01:47:13 +0800	[thread overview]
Message-ID: <CAG2nJkNGH5aW-s1-ZqQiW98f2KkgKP=rtOA0ZJdTgyWDpmkQMg@mail.gmail.com> (raw)
In-Reply-To: <5249191C.6040306@coolmail.se>

On Mon, Sep 30, 2013 at 2:24 PM, pk <peterk2@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


      parent reply	other threads:[~2013-09-30 17:47 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-09-29 19:52 [gentoo-user] systemd installation location William Hubbs
2013-09-30  0:54 ` Daniel Campbell
2013-09-30  1:17   ` Mark David Dumlao
2013-09-30  1:22     ` Daniel Campbell
2013-09-30  1:51       ` Mark David Dumlao
2013-09-30  2:01         ` Daniel Campbell
2013-09-30  2:25           ` Mark David Dumlao
2013-09-30  2:31             ` Daniel Campbell
2013-09-30  4:13               ` Pandu Poluan
2013-09-30  5:08                 ` Mark David Dumlao
2013-09-30  1:40   ` Mark David Dumlao
2013-09-30  1:50     ` Daniel Campbell
2013-09-30  2:05       ` Mark David Dumlao
2013-09-30  2:15         ` Daniel Campbell
2013-09-30  2:42           ` Mark David Dumlao
2013-09-30  8:07             ` Neil Bothwick
2013-09-30  6:24         ` pk
2013-09-30  6:45           ` Alan McKinnon
2013-09-30 22:14             ` pk
2013-09-30 22:43               ` Neil Bothwick
2013-10-01  6:16               ` Alan McKinnon
2013-10-01 19:59                 ` pk
2013-09-30 16:06           ` [gentoo-user] " Martin Vaeth
2013-09-30 17:47           ` Mark David Dumlao [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAG2nJkNGH5aW-s1-ZqQiW98f2KkgKP=rtOA0ZJdTgyWDpmkQMg@mail.gmail.com' \
    --to=madumlao@gmail.com \
    --cc=gentoo-user@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox