The power of scripting frequently lies in using other programs.
You know this quite a bit already...
Usually ISOs
We've been dealing with general, but
Very common and useful these days
Especially with Raspberry Pis
(We'll come back later, but Docker, and LXC can do these in "Containers"
- Text editors
- Games
- Web Servers
- anything, really.
When the USERS were also the ADMINS/DEVELOPERS
(Windows/Mac users, I'm guessing it felt like
"Buy the physical disc in a store"
or
"Download and hope for the best, as it litters your drive"
and then just jumped to APP STORES?
(this is a completely made up example)
E.g. you install Libreoffice Calc (like Excel)
and also
A TI-graphing calculator app
Which both use a "lib-math.."
And now you delete one of them.
Or they use different versions.
How do you deal with this?
Nice right? Curated, rated, clean set of apps
That get rid of themselves when you remove them
..theoretically
We saw app stores, and were like
Oh, you mean like "package managers using repositories"
wait...y'all gotta PAY for the apps lol
Windows: e.g. .ini files, or dropdown menus with "preferences"
Linux: Dotfiles, which can litter your home drive
KDE, Gnome, Xfce and others use different "tools" to draw the windows..
..and sometimes they clobber each other and get all weird.
(the precursor to app stores)
Try to track and manage libraries et al
This is Ubuntu, Mint, Pop, MX LINUX
apt/ apt-get
(aptitude, which is a gui version)
Also, the less preferred "dpkg", used to install "debs"
Fedora, Red Hat
RPM
Arch, Manjaro
pacman
Like "Tasksel"
or a Direct Download Shell script
that's actually an installer..speaking of
Use at your own risk (but never say never)
Theoretically very dangerous
Practically? In Linux? Probably not so much.
Especially if:
So yes, maybe
curl http:XXX | bash
isn't so evil.
Git, like Linux, is exactly what you get when a genius does his own thing;
It's great, people use it, and other parties can build on top and centralize it.
(also, it might be a *tad* depressing when you realize that there are 1000x programmers)
Presently still a great resource.
Reasonably safe place to download and run code from "raw"
See also, Gitlab and other competitors.
(there is a LOT more to say about git.
we spend an entire class period on it in 5367)
Linux is beginning to adopt the bifurcation
for better or for worse
of END USERS v. ADMIN/DEVELOPER
The really easy stuff
"Software Centers"
- Snap
- Flatpak
- AppImage
Generally, the benefit here is (supposed to be)
"software is always being worked on"
More or less, their own sandboxed "systems"
"Snap" requires "Ubuntu approval,"
Which is why people like it less.
Winning, I hope.
Things are weirdly named in it; but it's what the Steam Deck uses.
Lol, forget "libraries" etc.
Just put LITERALLY EVERYTHING IN ONE FILE!
A lot of the times, the above will work.
But, you're tinkering, so you may need to dig deeper.
If you're using cutting edge, you may need to know about the specific languages
Tends to not be too bad; you mostly just have to have your Java up to date
and run the Jar file
(disclaimer, the vast majority of my real life knowledge here is Minecraft)
Can be messy, of course.
There is node/npm
For such an otherwise clean language;
installing packages with it can be very confusing:
Mostly owing to two things:
Resolving conflicting libraries and versions can be done
in a number of ways, all decent, but all different.
Enter Docker.
Amazingly good idea that mostly works.
Put things in "Containers."
Not as heavy as entire VMs
But walled off from everything.
END USERS usually don't need "special configs"
or "opening things to the internet"
Very cool thing about docker is PORTABILITY.
Their metaphor is "everything in shipping containers"
Also, it's own ecosystem. Frequently you can be like "install directly"
or "use a docker container"
The latter usually makes complicated above stuff into
"docker run hello-world"
(with some more flags to point to folders and ports for the net.