this post was submitted on 01 Jan 2024
150 points (82.9% liked)

Linux

48072 readers
1 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 6 years ago
MODERATORS
 

https://mullvad.net/en/help/install-mullvad-app-linux

Trying to install VPN and these are the instructions Mullvad is giving me. This is ridiculous. There must be a more simple way. I know how to follow the instructions but I have no idea what I'm doing here. Can't I just download a file and install it? I'm on Ubuntu.

you are viewing a single comment's thread
view the rest of the comments
[–] Nibodhika@lemmy.world 35 points 2 years ago (1 children)

This is one of the hardest walls for people to jump over mentally, from scavenging the internet for binaries to using a package manager.

I think ideally one should understand what they're doing, I think that if you did you would realise it's not hard, just different from what you're used to. Usually you install things using the graphical package manager, of which there are a lot, since I don't know which one you are using nor have I used any of them in a long while, I'll use the terminal as an example (same reason the site uses terminal commands), but all of this is almost assuredly possible via GUI.

To install things you usually do sudo apt install , this is a huge advantage on Linux, it works similar to your phone in that everything gets updated together but also it installs dependencies separately, which means that instead of having 10 copies of the same library for 10 programs that use it (like on Windows) you get a single one, which is part of the reason binaries are smaller on Linux.

The problem with this approach is that some programs are NOT listed there, the only programs there are the ones the maintainers of your distro (Ubuntu in this case) can review and approve. So you can have a lot of different solutions for this:

The first and most obvious for Windows users is to download the .deb from the website and just run that like you would a binary on windows, i.e. double-clicking it, or from the terminal you can run sudo dpkg -i . This works, but you lose the advantages of a package installed via your package manager, i.e. you would get the same experience as on windows, so it's not ideal.

The second way is the one they're describing, essentially you're adding a new repository to the package manager, that the people who wrote the program are maintaining (instead of Ubuntu guys), this is a two step process, sudo curl -fsSLo /usr/share/keyrings/mullvad-keyring.asc https://repository.mullvad.net/deb/mullvad-keyring.asc that command is downloading the file https://repository.mullvad.net/deb/mullvad-keyring.asc and putting it in /usr/share/keyrings/mullvad-keyring.asc, this is needed because repositories are not trusted by default, that would be a security nightmare, you can do this via GUI if your problem is with the terminal , just download the file and copy it to that location, it's just harder to explain than giving you a command. Then it's adding the repository to the repository list, the command is echo "deb [signed-by=/usr/share/keyrings/mullvad-keyring.asc arch=$( dpkg --print-architecture )] https://repository.mullvad.net/deb/stable $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/mullvad.list that command has a lot to unwrap, in essence it's editing the file /etc/apt/sources.list.d/mullvad.list and writing a line like deb [signed-by=/usr/share/keyrings/mullvad-keyring.asc arch=amd64] https://repository.mullvad.net/deb/stable focal main" there, but because the guy who wrote this doesn't know your architecture (e.g. amd64) nor your version (e.g. focal) he wrote a command that gets that information from your system, you can instead write the file yourself if you know those. Then install via package manager as normal.

There's a third way which is more recent which is install via snap/flatpak which is similar to install via package manager, except you don't add new repos.

There's a fourth way which is manually, usually when you compile stuff you install them manually.

I know it's a lot to take in, but I'm of the opinion that if you understand what's happening it makes things easier.

[–] HuntressHimbo@lemm.ee 3 points 2 years ago* (last edited 2 years ago)

Just as an addendum to your answer. In the command writing to mullvad.list the | sudo tee /etc/apt/sources.list.d/mullvad.list is using two helpful linux utilities to modify the command. The first is the | which is called a pipe and connects the text output of one program to the text input of another. The pipe is connecting the output of echo which simply prints a string, in this case composed of the outputs of several other commands to the program tee. Tee which is given admin privileges by the sudo takes an input stream and splits it between two files. In this case those are mullvad.list and since no other was provided stdout the output pipeline of the terminal running the command.

EDIT:

In the interest of further completeness. Another utility used in those commands is the command substitution operator of sh. So when the terminal is interpretting text $(some command) gets substituted out for the text output by the command in the parentheses. It is another common way of connecting commands on the shell to allow for more flexible and powerful commands.