Solved When was /usr/home/* replaced by /home/* for user directories?

I've just installed 14.2 and my post-install script is complaining that /usr/home doesn't exists. When did /usr/home stop being the default for user directories?
 
Just a little rant here, but I hated that move.

IMHO it would be way better to move to /usr/local/home.

At the same time, finish creating a way to have all the files in /etc static with a similar file in /usr/local/etc for user configuration. Similar to /usr/local/pkg/.

This way we would only need to backup /usr/local, and it would make FreeBSD more modular, just mount your /usr/local and you have your whole system up and running.
 
I have my home-Directory directly under root.

I think this is also very modular. I have my /home-Folder on a separate pool, so if I want to make a fresh FreeBSD install, the /home-Directory is save here.

I wouldn't combine /etc and /usr/local/etc. In my view the separation is
  • /etc is for System-Settings
  • /usr/local/etc is for Ports and packages
And for me it is not complicated to save both folders.

My Workstation-Backup includes only the following folders.
  • /boot
  • /etc
  • /root
  • /usr/local/etc/
  • /var
And /home of course. :)
 
IMHO it would be way better to move to /usr/local/home.
Nothing prevents you from setting it up that way. You can move your home directory to /usr/local/home/ and make /home/ a symlink that points to it.

I wouldn't like it, personally. I like my /usr/local/ to contain only software and related files, and my data to reside in its own subdirectory of root. /home/user/ feels cleaner and is more convenient to type than /usr/local/home/user/ or /usr/home/user/.
 
Just a little rant here, but I hated that move.

IMHO it would be way better to move to /usr/local/home.

At the same time, finish creating a way to have all the files in /etc static with a similar file in /usr/local/etc for user configuration. Similar to /usr/local/pkg/.

This way we would only need to backup /usr/local, and it would make FreeBSD more modular, just mount your /usr/local and you have your whole system up and running.
I always prefer /home, even while FreeBSD defaulted /usr/home, and created symlink from /usr/home pointing to /home.
For me, /home is always a dedicated partition (UFS) or dataset (ZFS). Just a mount point.

In my humble opinion, this is far more better than placing user home directories under /usr/local/home in backup perspective, as /usr/local is the place for system-wide additional programs and default data for them, while /home is for data (sometimes programs) specific with each users.

I don't intend to force you anything, but imagine when you need to replace currently running computer to new one. As time goes by, system-wide programs installed via ports/pkgs would vary, and so as base OS versions.
Backups for old computer possibly does not fit for environments required for new one. But what about user data? Yes, some may need updating (~/.config/* and so on), but pure data should be simply restorable from backup of /home. This is why I strongly want /home to be dedicated partition/dataset.

By the way, in oldest Unix, home directories of each users seems to be placed directly under /usr. This would be because /usr was originally defined for the purpose, but once Unix becomes larger and cannot hold every system-wide things needed in root partition (could be single physical drive available at the era), programs not essential to boot were moved into /usr, so for example /usr/bin, /usr/sbin,... are defined and home directories of each users were moved into newly defined /home.
Later on, increases of non-standard programs required /usr/local to be defined. But I don't know any multi-user OS defaulting user home directories under /usr/local/home, and cannot find examples in Wikipedia.
 
man hier now contains the following entries. Notice particularly what /usr/ is to contain:

/usr/ contains the majority of user utilities and applications

/home/ home directories for users; the typical home for an
interactive user beastie would be /home/beastie/
 
Besides BEs, this is why I like ZFS. Create a dataset to hold user home directories, muck around with mountpoint properties and you can move it where ever you want (dataset is user/home but mountpoint is /home)

The "needed" mount point handled by a symlink creates a static mapping that base utilities use; things like adduser and such, otherwise you need to tell each utility "where is user home".
And yes, once can (should?) create a separate partition and UFS filesystem for user home, but you wind up with the same thing: a symlink "/home" that points to the real datastore.
Old foggy memory I think that "/home" was actually a symlink to somewhere else for a long time.
 
Old foggy memory I think that "/home" was actually a symlink to somewhere else for a long time.
It would be the symlink to /usr/home, by default, if I recall correctly.
(Not sure the symlink was created by default or not.)

If I recall correctly, the first time I've installed FreeBSD (would've been 2.1.6), user home directories were under /home.
And at some point (I cannot recall) the default was moved to /usr/home, and at the moment, symlink /home pointing to /usr/home was created by default, but as I disliked it, I deleted symlink /home, create mountpoint /home and configure a partition (ZFS was not implemented yet on FreeBSD at the moment) to be mounted there, delete physical /usr/home and created symlink /usr/home to point to /home.

Not 100% sure, possibly at some point, symlink /home pointing to /usr/home stopped to be created by default (I could be wrong here).

And now, it was back to /home by default.
 
Just a little rant here, but I hated that move. […]
The problem really isn’t where put your home folders at, but that exeter’s post‑installation script does not take account of varying locations, say​
Bash:
getent passwd root | cut -d':' -f6 # for pre‑existing users
home=$(pw useradd '.' -N | cut -d':' -f9); home=${home%/.} # for new users
or the fact that some users’ home folders (deliberately) don’t exist as in the case of nobody.​
 
man hier now contains the following entries. Notice particularly what /usr/ is to contain:
In fact you can easily go back in time on man pages online, and for FreeBSD 1.0 the entry for /usr/ as "contains the majority of user utilities and applications" doesn't seem to have changed at all since! But nothing at all about home directories, and man hier generally doesn't seem to have considered them in scope to document.

The first appearance of even the concept of a home directory in FreeBSD's man hier was FreeBSD 2.2.1 where we see /root is "root's HOME directory". And as far as I can tell, no other instances of a "home" directory are documented until FreeBSD 13.2 noted that /nonexistent/ is "a non-existent directory; by convention, it serves as a home directory for special user accounts that need no home directory; see also /var/empty", then FreeBSD 13.3 noting that /home/ is for "user HOME directories. This is a symlink to /usr/home/". By that time the change of location in 14.0 had already happened so presumably when the man pages were being rewritten to reflect that change, it was finally thought fit to document the then current behaviour.

For (mostly historical) comparison: the OpenBSD and NetBSD man hier have only /home/ and don't seem to have ever mentioned a /usr/home. In 1979's Version 7 where, according to the Berkeley docs, man hier was first introduced, "/usr/" is described as a "general-pupose directory, usually a mounted file system" - and of course, no mention of "home". That's the same description of /usr/ used in BSD4.2. And in the final BSD4.4-Lite2 we have /usr/ listed as "contains the majority of the system utilities and files", /home/ as "mount point for the automounter; see amd(8)" /amd/ as "home directories mount point; see amd(8)" and /root/ as "home directory for the super-user".

See:
 
By the way, in oldest Unix, home directories of each users seems to be placed directly under /usr. This would be because /usr was originally defined for the purpose, but once Unix becomes larger and cannot hold every system-wide things needed in root partition (could be single physical drive available at the era), programs not essential to boot were moved into /usr, so for example /usr/bin, /usr/sbin,... are defined and home directories of each users were moved into newly defined /home.
Later on, increases of non-standard programs required /usr/local to be defined. But I don't know any multi-user OS defaulting user home directories under /usr/local/home, and cannot find examples in Wikipedia.
You can see this for yourself in a classic 1982 Bell Labs film (I'm sure you've all watched it) at 13:30 where Brian Kernighan's home directory is at /usr/bwk
View: https://youtu.be/tc4ROCJYbm0?si=mRNrcsDDpEwQXd05&t=810


Here's Dennis Ritchie's explanation from https://www.bell-labs.com/usr/dmr/www/notes.html
In particular, in our own version of the system, there is a directory "/usr" which contains all user's directories, and which is stored on a relatively large, but slow moving head disk, while the othe files are on the fast but small fixed-head disk.
And when Bell Labs started work on Plan 9, that just used /usr instead of /home too. Apparently 386BSD did too - interesting previous discussion here https://forums.freebsd.org/threads/question-about-usr.89402/#post-613901
 
Not 100% sure, possibly at some point, symlink /home pointing to /usr/home stopped to be created by default (I could be wrong here).
I don't know if the symlink was dropped at some point and later reintroduced, or always staid there, but systems installed as 13.x-RELEASE had it by default.
 
I don't know if the symlink was dropped at some point and later reintroduced, or always staid there, but systems installed as 13.x-RELEASE had it by default.
Thanks! So it souldn't be dropped at any time, regardless the direction.

The last time I used the installer as installer (means, not only for invoking LiveCD mode to recover anything) was the time before switching from sysinstall to (current) bsdinstall happened, thus, didn't precisely checked how bsdinstall does for it.
 
Back
Top