Right now overlays requires elevated privilèges, but ideally it shouldn’t. Rewriting the Linux kernel to implement per user namespaces like plan9 does would allow unprivileged actions from any user (just like if any user was sitting in a container, overlayed from the base system).
I know we’re not there, and that’s not the direction development is going, but this thread is about dreams, right ? 😉
About the XDG specs, they serve a totally different purpose so they’re out of the discussion IMO. I’m not advocating against env variables. Just $PATH
which is a workaround as I see it, but your mileage may vary.
As for your “issue” with steam, of course this is the best way to solve it. Because of today’s OS limitation. My point is that with a better designed namespacing implementation, there would be more elegant solutions to solve it (and would get rid of the need to use LD_LIBRARY_PATH
too, or literally any env variable)
By mounting the binary over, I mean something like a bind mount. But in your case of a wrapper script, it doesn’t apply indeed. Though in this case I would simply name the script steam-launcher
and call it a day 🙂
Having multiple executables with the same name and relying on $PATH
and absolute paths feels hackish to me, but that’s only a matter of preference at this point.
I’m not saying we should get rid of $PATH
right now. My point is that it was created to solve a problem we don’t have anymore (not enough disk capacity), but we still keep it out of habit.
As a reminder, the discussion is about what should be rewritten from scratch in linux. And IMO, we should get rid of $PATH
as there are better options.
You missed my point. The reason $PATH exists in the first place is because binaries were too large to fit on a single disk, so they were scattered around multiple partitions (/bin
, /sbin
, /usr/bin
, etc…). Now, all your binaries can easily fit on a single partition (weirdly enough, /usr/bin
was chosen as the “best candidate” for it), but we still have all the other locations, symlinked there. It just makes no sense.
As for the override mechanism you mention, there are much better tools nowadays to do that (overlayfs for example).
This is what plan9 does for example. There is no need for $PATH
because all binaries are in /bin
anyways. And to override a binary, you simply “mount” it over the existing one in place.
$PATH
shouldn’t even be a thing, as today disk space is cheap so there is no need to scatter binaries all over the place.
Historically, /usr
was created so that you could mount a new disk here and have more binaries installed on your system when the disk with /bin
was full.
And there are just so many other stuff like that which doesn’t make sense anymore (/var/tmp
comes to mind, /opt
, /home
which was supposed to be /usr
but name was already taken, etc …).
For style points at the office.
Or xantfarm for the other times of the year !
There are online service that can do it for you. Check “IPv6” in the glossary.
Can you edit your message to add a spoiler tag ?
It’s up and running ! The error you get is probably related to the fact you’re trying to trace it over ipv4.
Thanks for taking on the challenge ! This whole thing is meaningless if there’s no one scratching their head at it !
Thanks for your message on the guestbook ! I hope you have some fun, good luck !!
One could argue that people who say PHP is fine only suffer Stockholm syndrome !
For it to always work, you should put it in /bin
. Every other solution may fail in some corner case.
Don’t do this though.
The correct way to install a command is to package it for your distro, and put it in a place that’s suitable for its usage.
$ man up
man: No entry for up in the manual.
Another idea ?
% pm -i | wc -l
55
That’s how many software I packaged myself. They are installed to /usr/local
using an alternative package manager because I couldn’t be bothered with making an appropriate .deb.
And as to explain how this alternate workflow is less complex, here’s how I go about installing a program:
% git clone git://git.z3bra.org/human ~/code/human
Cloning into '/home/z3bra/code/human'...
remote: Enumerating objects: 53, done.
remote: Counting objects: 100% (53/53), done.
remote: Compressing objects: 100% (53/53), done.
remote: Total 53 (delta 28), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (53/53), 9.35 KiB | 195.00 KiB/s, done.
Resolving deltas: 100% (28/28), done.
% cd $_
% pack
CC human.c
LD human
install -D -m 0755 human /tmp/tmp.rfnbLyIQOz/usr/local/bin/human
install -D -m 0644 human.1 /tmp/tmp.rfnbLyIQOz/usr/local/man/man1/human.1
> /tmp/human@0.3.tbz
installed human (0.3)
% pm -i human
usr/
usr/local/
usr/local/bin/
usr/local/bin/human
usr/local/man/
usr/local/man/man1/
usr/local/man/man1/human.1
Talking for myself and not OP: What’s complex about apt and yum is the package format per se. The cli is very straightforward and “just works”, but whenever you want something that’s not packaged and need to package it yourself, you gotta fasten your seatbelt and prepare for the complex task of creating an RPM or a DEB package.
I know there are tools to help with that, but I’ve created packages for many distros (Debian, CentOS, Alpine, Arch, Void and Crux), and rpm/deb are just way more complex to create than the alternatives.
But I have more vertical space too ;)
I’m on the boring side…
PS1="% "
I like it though, it gives me more room for commands !
The real answer here.