== Griping Preamble ==
Manjaro is an ancient European word meaning "Arch Linux won't support ARM". Nobody in their right mind should use Arch Linux, but for ARM devices it's sometimes the least-worst choice.
== Installing packages and updating the system ==
The package manager, inherited from Arch Linux, is insane. Here are some common commands:
```
lang=bash, name=updates
# Update the system
pacman -Syu
pacman --sync --refresh --sysupgrade
# Like, //really// update the system
pacman -Syyuu
# Manjaro-specific command for updating repo lists, which seem to 404 almost all the time
pacman-mirrors --fasttrack && sudo pacman -Syu
# Or just try and ignore the insanity of pacman and use pkcon...
pacman --sync community/packagekit
pkcon refresh
```
```
lang=bash, name=installing individual packages
# Okay but surely there's an obvious install command... lol nope that's the -S / --sync option actually
pacman -S packagename
pacman --sync packagename
```
```
lang=bash, name=Search for a package . . . it's bad folks
# search package names in the repos
pacman -Ss someregex
pacman --sync --search someregex
# search for files because if the package name doesn't match the binary name you're hooped above
pacman -F filename
pacman --files filename
# search local packages I guess>
pacman -D whatever
pacman --database whatever
```
Ideally you should only have to worry about all the above before you do the part above where you install `pkcon` or follow my conclusion below and install `pamac`.
=== AUR ===
[[ https://aur.archlinux.org/ | AUR, or Arch User Repository ]] is kinda like [[ https://launchpad.net/ubuntu/+ppas | Ubuntu's PPAs ]] or [[ https://docs.sailfishos.org/Services/Development/Open_Build_Service/ | SailfishOS's OBS ]], except it's for individual packages and everything continues to get messier from there.
For some reason the Arch world thinks it's fine that the official way to install something from AUR is [[ https://wiki.archlinux.org/title/Arch_User_Repository#Installing_and_upgrading_packages | to `git clone` after finding the package through the website I guess]] (which sounds insane for Linux, a place traditionally where CLI lovers frolick, but considering that Arch users are also expected to routinely read the news on the website this is perhaps of a piece---and more on that later).
Perhaps one reason people are okay with that is that [[ https://wiki.archlinux.org/title/AUR_helpers | there are multiple frontends that take care of this stuff ]], though the official documentation insists none are supported and you must understand the manual process to troubleshoot. Here's my evaluation of them.
* [[ https://wiki.manjaro.org/index.php/Pamac | pamac ]] is Manjaro's frontend, comes in GUI and CLI flavors, the CLI package is just `pamac-cli` in "extra" on Manjaro, and the syntax is fairly sane, `pamac search packagename` and `pamac install packagename` and so forth.
* [[ https://github.com/Morganamilo/paru | paru ]] is written in Rust and just basically wraps `pacman` but knows about AUR as well. Notably,
** `paru` run without arguments is an alias for `paru -Syu`
** `paru` run with a single target will search or outright install, ex.
** `--news` reads the latest Arch news according to `paru --help` but `paru --news` complains "error: no operation specified (use -h for help)" so I guess it has to be used with some other argument for some reason, or "Print arch news" refers maybe instead to just some sort of per-package news that's the equivalent of a changelog or something? Fuck if I know. [[ https://www.reddit.com/r/archlinux/comments/lft5ey/comment/gmolar9/?utm_source=reddit&utm_medium=web2x&context=3 | Some random Reddit comment ]] quotes "Print new news from the Arch Linux homepage. News is considered new if it is newer than the build date of all native packages. Pass this twice to show all available news." Testing an update using `paru -Syuww` didn't print shit all though, and the current help just says "Print arch news" so I am once again asking the Arch world to get its shit together.
* [[ https://github.com/Jguer/yay | yay ]] is like Paru, and is written in Go. Seeing as it still just wraps and largely uses the same insane syntax and options as `pacman` it still sucks too and other than having a nicer name there's nothing to recommend it over Paru.
* [[ https://aur.archlinux.org/packages/trizen | trizen ]] is apparently something that exists. It doesn't seem to have any webpage and is also just a dumb wrapper for Arch's needlessly frustrating package manager.
* [[ https://github.com/kitsunyan/pakku | pakku ]] is . . . another wrapper using the same options and syntax. Jesus, people.
* [[ https://github.com/AladW/aurutils | aurutils ]] is some scripts for using local repos built from AUR packages I think? Sounds potentially interesting if you get deep into such things but personally I think Arch packaging is a Lovecraftian horror so no thanks.
* [[ https://aur.archlinux.org/packages/pacaur | pacaur ]] was the old AUR pacman wrapper people used to use that's since been abandoned
* [[ https://archlinux.fr/yaourt-en | yaourt]] is the one I tended to hear about a lot a few years ago but it is also apparently dead.
So I guess my advice is just to use `pamac` if you can, and if "real" Arch doesn't have it or you just want the real Arch experience then I guess `paru`.
== External Documentation ==
* https://wiki.manjaro.org/index.php/Pacman-mirrors
* https://wiki.archlinux.org/title/Arch_User_Repository