William Hubbs posted on Sat, 31 Dec 2011 19:59:47 -0600 as excerpted: > a significant change is taking place with several upstreams that will > affect us in gentoo[. Boot-critical components such as Udev, kmod, > etc], are advocating a major change to the locations where binaries > and libraries are stored on linux systems. > > The goal is to deprecate /bin, /lib, /sbin and /usr/sbin. My > understanding is that they want to move software that is installed in > /bin, /sbin and /usr/sbin to /usr/bin. Also, they want to move > everything from /lib to /usr/lib.
> If we migrate everything off of the root fs to /usr, all of those > solutions become moot. On the other hand, if we don't migrate, > we run the risk of eventually having our default configuration > not supported by upstream. > > I see three options: > > 1) Start migrating packages along with upstream[. Have separate /usr > users] start using an initramfs [as previously discussed onlist]. > > 2) Combine the sbin and bin directories both on the root filesystem and > in /usr by moving things from /sbin to /bin and /usr/sbin to /usr/bin. > > 3) Try to maintain things the way they are as long as possible. > > Whether or not I like what is happening personally, I think we should > consider the first option, because I think it will get more and more > difficult for us to do anything else over time. And we will eventually > find ourselves not supported by upstreams. I'm for #1 (migrate along with upstream) as well. Gentoo has historically been both "light patch", with a policy of staying close to upstream if possible, and "customizer's choice", allowing users far more flexibility than most distros. Keeping both goals in mind, migrating with upstream is ultimately the only viable alternative for a whole host of reasons including both staying close to upstream and simple manpower resource issues. That said, we can continue to try to support a separate /usr as long as possible, while switching new installs to the new way and changing the handbook to document it, preferably as soon as possible. Further, as previously discussed, a near-static bare-minimal initramfs that can be configured and forgotten about for long periods over many kernel upgrades should make the switch as painless as possible at least for "simple" bare- partition installations. As for the switchover, I had already been thinking about it here and thus have a couple ideas I'd very much like to see implemented in portage/PM/ base.eclass that could definitely help, along with a USE flag. I'll call them "migrated-rootfs" and "migrateroot-strict" for purposes of discussion, here, and assume they're both portage features and that migrated-rootfs is also a USE flag FEATURES=migrated-rootfs would set a USE-default for migrated-root-to-usr so that it'd default to ON, and would indicate that a user is an "early adopter" of the new layout, preferring migration as soon as possible. Users could still set the USE flag as desired for specific packages, at least at first, tho at some point it'd probably first be made a profile default, and ultimately profile-masked either on or off. Additionally, FEATURES=migrated-root would expand the collision-protect feature to check for and warn on both same-package and cross-package collisions between related dirs, with all four bin/sbin root/usr dirs checked for name collisions, and both lib dirs (for single lib, additional pairs for multilib) checked as well. Optionally, if implementation is easy enough, have portage simply remove symlinks to identically named files that would otherwise set off the warning. This is a major reason for having it a feature and a USE flag both, since if this is implemented, portage would take preventive action quite apart from whether an ebuild had been updated to use the USE flag or not. FEATURES=migrateroot-strict would make those collision warnings fatal, much like FEATURES=multilib-strict does for its multilib checks. (As an amd64 user who had this feature on for years, until I switched to no- multilib, that's what the idea is based on.) The goal would be to allow early adopter users to set the less strict version and run a --empty-tree @world update, then grep the logs for the warnings it turned on. If none occurred and /usr is either already on the same filesystem or they have the appropriate early-boot measures in place, they could feel reasonably confident about setting up symlinks pointing to the /usr/bin and /usr/lib dirs as appropriate, and could then set FEATURES=migratedroot-strict to ensure it stays "clean", since after that any attempted merge that would collide would be fatal. Alternatively users could just set the strict version and see what breaks, instead of grepping the logs for the warnings. Since this would leverage the code already in place and tested for collision-protect and multilib-strict, cross-package checking should be fairly easy to implement, but same-package checking and/or actively stripping colliding symlinks may involve rather more new code. Zac? Other portage,/PM/PMS folks? -- Duncan - List replies preferred. No HTML msgs. "Every nonfree program has a lord, a master -- and if you use the program, he is your master." Richard Stallman