this post was submitted on 05 Aug 2023
45 points (92.5% liked)

Linux

48035 readers
737 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS
 

I'm doing a bunch of AI stuff that needs compiling to try various unrelated apps. I'm making a mess of config files and extras. I've been using distrobox and conda. How could I do this better? Chroot? Different user logins for extra home directories? Groups? Most of the packages need access to CUDA and localhost. I would like to keep them out of my main home directory.

you are viewing a single comment's thread
view the rest of the comments
[–] DryTomatoes 19 points 1 year ago* (last edited 1 year ago) (3 children)

I did Linux From Scratch recently and they have a brilliant solution. Here's the full text but it's a long read so I'll briefly explain it. https://www.linuxfromscratch.org/hints/downloads/files/more_control_and_pkg_man.txt

Basically you make a new user with the name of the package you want to install. Login to that user then compile and install the package.

Now when you search for files owned by the user with the same name as the package you will find every file that package installed.

You can document that somewhere or just use the find command when you are ready to remove all files related to the package.

I didn't actually do this for my own LFS build so I have no further experience on the matter. I think it will eventually lead to dependency hell when two packages want to install the same file.

I guess flatpaks are better about keeping libraries separate but I'm not sure if they leave random files all over your hard drive the way apt remove/apt purge does. (Getting really annoyed about all the crud left in my home dir)

[–] [email protected] 6 points 1 year ago (1 children)

That’s clever. It should work on any system, shouldn’t it?

[–] DryTomatoes 2 points 1 year ago (1 children)

Any POSIX compliant system as far as I know.

[–] [email protected] 3 points 1 year ago

Thanks. I’ll keep that in mind for again.

[–] j4k3 2 points 1 year ago (2 children)

Thanks for the read. This is what I was thinking about trying but hadn't quite fleshed out yet. It is right on the edge of where I'm at in my learning curve. Perfect timing, thanks.

Do you have any advice when the packages are mostly python based instead of makefiles?

[–] [email protected] 5 points 1 year ago

for python, a bunch of venvs should do it

[–] DryTomatoes 2 points 1 year ago (1 children)

This method should work with any command that's installing files on your disk but it's probably not worth the headache when virtual environments exist for python.

[–] j4k3 2 points 1 year ago (1 children)

Python, in these instances, is being used as the installer script. As far as I can tell it involves all of the same packaging and directory issues as what make is doing. Like, most of the packages have a Python startup script that takes a text file and installs everything from it. This usually includes a pip git+address or two. So far, just getting my feet wet to try out AI has been enough for me to overlook what all is happening behind the curtain. The machine is behind an external whitelist firewall all by itself. I am just starting to get to the point where I want to dial everything in so I know exactly what is happening.

I've noticed a few oddball times during installations pip said something like "package unavailable; reverting to base system." This was while it is inside conda, which itself is inside a distrobox container. I'm not sure what "base system" it might be referring to here or if this is something normal. I am probing for any potential gotchas revolving around python and containers. I imagine it is still just a matter of reading a lot of code in the installation path.

[–] DryTomatoes 1 points 1 year ago* (last edited 1 year ago)

I hope someone who has more info comes along. It might be time for you to make a new post though since we're getting to the heart of the problem now.

Also it will be a lot easier for people to diagnose if you are specific about which programs you are failing to install.

I've only experimented with Python in docker and it gave me a lot of headaches.

That's why I prefer to pip install things inside venvs because I can just tar them myself and have decent portability.

But since your installing files across the system I'm not sure what the best solution is.