From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id 838D81381FB for ; Thu, 27 Dec 2012 20:18:27 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id C3DF3E063F; Thu, 27 Dec 2012 20:17:58 +0000 (UTC) Received: from mail-ea0-f179.google.com (mail-ea0-f179.google.com [209.85.215.179]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id E6A3221C093 for ; Thu, 27 Dec 2012 20:16:15 +0000 (UTC) Received: by mail-ea0-f179.google.com with SMTP id i12so3965881eaa.38 for ; Thu, 27 Dec 2012 12:16:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=MKAU4pcJor7O5lYCiDiB8owUa+j9WepybVdXLic8zfo=; b=FJXQZkA2Uh4dK7cTtJXXF3+ubu40a1eljQq9tPXmOcU8lfpmJd+WdWFg05f+olIIjL p5NkYB/I2P9+PX6v06lDVswmX6cO9j5CkQThBQ7cKY7JdtsDm9CE3HOexJYbtP+rO1V9 4WA4ROlYxmAQ7esgGI11Ln4zTrERYBs0BojNxAQt+jf4jx6FkNR3HgaF79636nqFt5t9 G/nklmw5OebTwMjGbi0sezDJuoQN9MUpwZgsAJCDuxeX57e9Co3dJ4SDOXSpfoT+t1f6 d/cIu8PKjVrJm5jyI0cj23ysa4MvHpVHhLKDGgRztDrWw9tYgvE1OWl5KkzxvK5EKfIY AJmA== Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-user@lists.gentoo.org Reply-to: gentoo-user@lists.gentoo.org MIME-Version: 1.0 Received: by 10.14.0.133 with SMTP id 5mr79252207eeb.29.1356639374345; Thu, 27 Dec 2012 12:16:14 -0800 (PST) Received: by 10.223.14.193 with HTTP; Thu, 27 Dec 2012 12:16:14 -0800 (PST) In-Reply-To: References: <87txrd6pb3.fsf@ist.utl.pt> <20121223182037.1553813f@khamul.example.com> <87bodk7lb6.fsf@ist.utl.pt> <20121224085528.56f535ec@khamul.example.com> <50D85167.9060309@gmail.com> <20121224204817.335033c6@khamul.example.com> <50D8B467.4080100@gmail.com> <20121224230413.GL26547@server> <20121224182907.2bf6d3d6@fuchsia.remarqs.net> <20121225020301.GP26547@server> <50D911A6.6070500@gmail.com> <50DB612F.1030603@gmail.com> <394214.69462.bm@smtp149.mail.ukl.yahoo.com> Date: Fri, 28 Dec 2012 04:16:14 +0800 Message-ID: Subject: Re: [Bulk] Re: [gentoo-user] Re: Anyone switched to eudev yet? From: Mark David Dumlao To: gentoo-user@lists.gentoo.org Content-Type: text/plain; charset=ISO-8859-1 X-Archives-Salt: 92d20354-113a-48cb-9b19-629a58fca550 X-Archives-Hash: f4f896d8fbab8ecb40d2d0d017cc00a3 On Fri, Dec 28, 2012 at 2:40 AM, Michael Mol wrote: >> or the fact that some udev programs tend to >> be located in /usr, > > > That's either a bug with those programs, or a need for architectural > improvements within udev. Both plausible answers. > The most obvious architectural improvement being: simply place udev where all its dependencies are and all those bugs turn to nothing. Which is what the udev guys did. And the part which seems to elude everyone is: it isn't even a limitation of the program. It can still be installed to /. Heck we could probably make a USE=root-prefix flag for udev that installs it to / instead of /usr. > >> >> or even just a solid detailed specification on the >> precise criteria for inclusion into /. > > > For anyone arguing that / and /usr should be separate, the answer to this is > "that ought to be common sense." > > Since I'm not someone who knows all there is to know about the software and > interactions thereof, the most I can say is: > > * / ought to contain all binaries, libraries and static data necessary for > booting beyond the point where / is mounted, and any machine-specific > binaries, libraries and static data. > * /usr ought to contain all binaries, libraries and static data not > necessary for its own mount. > I'm sure you mean well, as did most of the architects of the past, but the reality is, this simplistic take on the problem misses out on some fundamental issues. Yes, you mention later that the spec just doesn't specify what happens in such and such case, and try to trivialize it into saying people think that specs should "be able to do their thinking for them". But unfortunately, specifying what happens is exactly what specs are for! However... >> >> Even the FHS is mum on all the >> extra crap we randomly decide between / and /usr to land in. > > > So fix it. FHS was a document written to say "we have a standard" that > happened to map almost cleanly to all the implementations of the day. Kinda > like how SQL mapped "almost cleanly" to the existing RDBMSs that existed > when it was introduced. Such is how standards documents are born. > Don't forget that FHS is heavily an after-the-fact descriptive document of what is happening in practice, with heavy "rationale" sections describing what's going on in the wild. Before you can fix FHS, you first have to fix the practice, then FHS can get amended to reflect what's going on. And the "we have a standard" part is effectively not true anymore, on the matter of the / and /usr split. That is - what the specification says should happen is not happening, on a massive scale, because it turns out that it's not that trivial to determine which binaries go in / and which go in /usr. Now that doesn't translate to epic disasters of biblical proportion, fire and brimstone, rivers and seas boiling, dogs and cats living together, mass hysteria - because it's just a collection of hard to pin down "essential" boot programs - but it does translate to an unsustainable practice in distro development / package management. http://www.pathname.com/fhs/pub/fhs-2.3.html#THEROOTFILESYSTEM """ Purpose: The contents of the root filesystem must be adequate to boot, restore, recover, and/or repair the system. To boot a system, enough must be present on the root partition to mount other filesystems. This includes utilities, configuration, boot loader information, and other essential start-up data. /usr, /opt, and /var are designed such that they may be located on other partitions or filesystems. To enable recovery and/or repair of a system, those utilities needed by an experienced maintainer to diagnose and reconstruct a damaged system must be present on the root filesystem. To restore a system, those utilities needed to restore from system backups (on floppy, tape, etc.) must be present on the root filesystem. """ * some teasers: [1] udev rules themselves being a case in point. I mean, do the requisite binaries belong in /? For example, there's a virtualbox udev rule in /usr that doesn't mount other filesystems or stop udev from starting. However, given the right race conditions, udev will fail to start the requisite script because /usr isn't mounted. [2] fuse-based filesystems allow an administrator the crazy possibility of, for example, demanding that /home be an ssh connection. Should the ssh client belong in /? ftp? substitute any arbitrary client program. [3] a fuse-based filesystem depends on a local network service being started. For example, someone writes a crazy fuse mysql browser that also is coincidentally mounted at boot time. Should the mysqld service belong in /? ldap? substitute any arbitrary server program. [4] /root (which is why it's separated from /home) contains docs and custom utilities used by root user for recovery. Unfortunately, there's a lot of perl scripts there specifically for doing filesystem checks / reports. Should perl be in in /? substitute any scripting language. The point is not whether _you_ can come up with an answer for _your_ own case. A _standard_ speaks for everyone that conforms to it. If it doesn't, or it comes up with conflicting use cases as above, the spec is broken. The fact that edge cases are appearing (and would all disappear if / and /usr were merged) is a hint that something funny is going on. -- This email is: [ ] actionable [ ] fyi [x] social Response needed: [ ] yes [x] up to you [ ] no Time-sensitive: [ ] immediate [ ] soon [x] none