Why does CLR Linux have to use /bin or /usr/bin/

For the past 20 years the mentioned directories have been shared between the Linux distribution and application developers. One or two distributions have in excess of 10k applications that install into /bin.

To convert these to bundles or flatpacks, can mean recompiles, as some apps have hard-coded the mentioned directories. Even with automated tools, much manpower will be required to do the work.

If CLR Linux used a truly private /bin, the public /bin can be left to all those applications that need /bin, /usr/bin, etc. In other words, CLRLinux vacates those directories, and abandons responsibility for the contents that are installed therein. --no need to mount ro, for those dirs.
Was this option ever studied and if so, what was the conclusion?

I think the /usr/bin vs. /bin discussion has been going on much longer than 20 years :wink:

I’m not sure what you are suggesting. We don’t ro mount specific folders in the file system. Are you suggesting that distributions use a sort of overlay system where the OS is accessible only in a read-only fashion to non-distribution software?

Historically, /usr/local has become the place for locally installed software outside package management. /opt being an alternative to that. With /usr/bin and /bin being almost entirely synonym, there isn’t much value in re-purposing either of those for other purposes as those purposes have a widely agreed upon location already.

We already have to fix Makefiles that hardcode /usr/bin because building requires that the software honors DESTDIR. We do that already in many packages.

I’ll just supplement @ahkok’s reply with these links:

https://docs.01.org/clearlinux/latest/guides/clear/stateless.html
clr-man-pages/stateless.7.rst at 908bb5258e7107b57eb862cc0a932b8db82cd632 · clearlinux/clr-man-pages · GitHub

Hi Ahkok,

I brought up a discussion point and I would like to respond with some clarification. I am aware of the /bin and /usr/bin merge using the softlink.

Here is my concern. When I review the downloads for Debian’s “apt-get install”, Redhat’s “dnf install” or Arch’s “pacman -S” and Suse’s “zypper in” (I run 3 other distros along side Clear Linux, I noted that these distros install applications directly to /bin.

It got me thinking that there are thousands of installation files which get installed directly to /bin. Would you want to spend a few years doing conversions and testing of changes to redirect these programs to install to /usr/local/bin? I have some issues with using that /usr/local/bin due to the way I do my own software installations – I put my own software directly to /usr/local/bin. If I needed to do a reinstallation, of Clear Linux, do I wipe that directory clean? That would also wipeout my own installed programs.

Now I will have to rethink about where to install my own software. One thought I had was to create a /local/bin (no /usr as prefix) and maintain /local/bin or alternately a /home/bin and have one or the other added into the PATH statement. Essentially, I would treat /local/bin or /home/bin as a partition to be preserved, should a major re installation be required.

There is also the concern about libraries, config files and scripts. I only mentioned the executables, without mentioning the libraries. Should there be a /usr/local/lib? What about config files?

My posting was to consider migration to a bundle/container based Linux distribution.

Regards

Leslie (just completed 60 years in IT).

Clear Linux uses and installs OS-provided content in /usr. It does not put anything under /usr/local or /opt, unless you as a user do. So yes, you should be able to isolate your custom software under /usr/local.

Yes, /usr/local/lib is the appropriate path. /usr/local/etc or /etc/local or just /etc for local software configuration files. This aligns with the Linux Filesystem Hierarchy Standard
https://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch04s09.html

1 Like

I think there’s a confusion about Clear’s standpoint on any of this. We are not trying to get people to adopt a “new” way of organizing software and data on the file system. We are trying to enforce better separation between the OS software and user software… I hope that is easy to understand, because those are different things.

Once you get that point, it’s a simple step to understand that Clear Linux OS does not want to prevent you from installing software in /local/bin or /usr/local/lib or /opt/google. In fact, you are welcome to do so and Clear Linux OS should not (and does not) present any barriers in doing so.

Another point is that a re-installation of the OS usually means formatting the file systems, which means that if you did not have /usr/local on a separate mount point, you are indeed erasing that data. Same for /home of course. This is entirely normal and par for the course for all distros.

1 Like

Technically, for future *.rpms or Debian or Arch equivalents, I could see new or updated installation files following the guidelines you presented.

All my executables are stored in /use/local/bin, using the system libs from /use/lib…

I tried to mount three disks to /use/local by creating a /etc/fstab and appropriate mountpoints. Clear Linux boot crashed with not being able to handle my 3 mounts. I could mount them manually. Using my fstab entries, I did succeed in mounting them to root. My /share, /scratch and /backup do not appear to conflict with Clear Linux. Is root (/) off limits? It works for me in that my drives are mounted at boot.

Thank you for your good patience and helpful responses.

I am using CLR Linux to recompile all my C applications. I appreciate having 15% reduction in ultimate program sizes and having equal or better program performance.

Not at all. Remember, /mnt is a UNIX standard, and meant for that - you can mount in non-standard folder names as well as much as you want.

You’d have to show your /etc/fstab to figure out the problem, I use the same method for e.g. samba mounts and this works without issues, so there is most likely an error in the formatting of the file.

Mounting to root was ok. Mounting to /use/local fails during boot, but works if I manually issue the mount command. I am presuming that /user is not available when Linux tries to mount drives to /use/local.

Another mount option I use is noauto,user or ,noauto,owner Clear Linux demands the root password. It should not be asking for any password.

Without seeing the exact fstab lines, I have no idea what you are doing. I’m also very confused by /use and /user folder naming - I would think that using a folder name that is that close to a default folder name doesn’t help here - I personally prefer mounting things in obvious places like /media/externaldrive or /net/remotehost/folder to avoid that confusion. The user option seems to work for me on my system.

Let us first discuss the default options

UUID=xxxxx /mountpoint ext4 defaults 0 0

We can have rw, ro, noatime,etc. As mount option. Additionally, we can have noauto,user or noauto,owner

I use the noauto,user to keep a backup partition, protected from access. With ClearLinux, when as a.non root privileged user, I issue the mount /mountpoint, CL wrongly asks.for the sudo password…

I keep a.spare Internal disk as a backup. It is the one I mount to run backups and keep unmounted otherwise.

What exactly is shown on the console here? Please copy+paste or make a screenshot.

CL, on boot, recognized that I did not want to mount the partition, and skipped the mount (respected the “noauto” part). Any time after one is logged in and is in a terminal, one is supposed to be allowed to issue

mount /the mount point without having CL ask for sudo or root password.

I have described the issue.

You’re not required to provide any information you don’t want to provide. However, if you refuse, I may not be able to help you, simply because I cannot determine the exact nature of your problem without knowing all the facts. Your choice, and I understand if you do not want to provide the requested info.

2 Likes