mkaz.blog

Switch from Ubuntu to Manjaro

I switched from Ubuntu to Manjaro for my primary Linux system, a Dell XPS laptop. I'll cover briefly why, but the change is not nearly that big because I still use GNOME desktop which is more or less the same for both. I also use a Windows 10 desktop 😲 for games and other things that might require a beefy video card.

Why switch to Manjaro

I've been a user of Ubuntu for many years. It is a wonderful desktop platform. I've used Linux for around 20 years, I appreciate the simplicity of Ubuntu. I futzed enough with drivers and conflicts years ago, now I just want my system to be stable and work. If you want stable, Ubuntu LTS is it. Hardware vendors, such as Dell and System76, adopt Ubuntu for its stability. The LTS versions are supported for five years, even longer if you pay.

So why did I switch?

I've run into minor problems with Ubuntu, annoyances with snap packaging, that I find run slower especially to launch. The LTS is great for stability but the versions get outdated and I end up installing numerous PPAs to get the latest, two examples are git and OBS.

There is a new crop of basic command-line tools rewritten in Rust and modernized, on Ubuntu most of these are not available in the base repository, on Manjaro almost all of them are. These include:

  • starship - fancy prompt done easy
  • exa - an ls replacement
  • bat - a cat replacement
  • fd - a find replacement

All this is relatively minor annoyances, but they add up. I finally switched over again when the Nautilus file manager consistently took 5-10 seconds to launch, requiring a restart to fix, to only slow down again after awhile.

I didn't want to go full Arch, so settled on Manjaro. Manjaro is to Arch, as Ubuntu is to Debian.

The majority of differences between Ubuntu and Manjaro is in the packaging system, since it's still just Linux, and using the same desktop environment not a big deal. If you are happy with Ubuntu, it's probably not worth switching, but if looking for something new give Manjaro a shot.

Desktop Environment

Manjaro has a different default theme and icons for GNOME, that make it a nice experience, but might be just a change of pace that I like. Manjaro also includes a few extras, default installs Tweaks, fonts, and a few other niceties mostly through the gnome-extensions system borrowing from pop and arc.

You can see what it installs using: gnome-extensions list

> gnome-extensions list
appindicatorsupport@rgcjonas.gmail.com
apps-menu@gnome-shell-extensions.gcampax.github.com
arcmenu@arcmenu.com
auto-move-windows@gnome-shell-extensions.gcampax.github.com
dash-to-dock@micxgx.gmail.com
dash-to-panel@jderose9.github.com
ding@rastersoft.com
drive-menu@gnome-shell-extensions.gcampax.github.com
gamemode@christian.kellner.me
gsconnect@andyholmes.github.io
horizontal-workspaces@gnome-shell-extensions.gcampax.github.com
launch-new-instance@gnome-shell-extensions.gcampax.github.com
material-shell@papyelgringo
native-window-placement@gnome-shell-extensions.gcampax.github.com
nightthemeswitcher@romainvigier.fr
pamac-updates@manjaro.org
places-menu@gnome-shell-extensions.gcampax.github.com
pop-shell@system76.com
screenshot-window-sizer@gnome-shell-extensions.gcampax.github.com
unite@hardpixel.eu
user-theme@gnome-shell-extensions.gcampax.github.com
window-list@gnome-shell-extensions.gcampax.github.com
windowsNavigator@gnome-shell-extensions.gcampax.github.com
workspace-indicator@gnome-shell-extensions.gcampax.github.com

Package Management

The biggest difference between the two operating systems is the package management. Manjaro uses the Arch tool pacman that pulls from a set of frequently updated repositories.

Using pacman

System Upgrade: pacman -Syu

Search: pacman -Ss query

Install package: pacman -S pkgname

Flags:

Use --needed to prevent pacman from reinstalling an already installed package.

Use --noconfirm to bypass the confirmation message.

Remove package: pacman -R pkgname

Show installed packages: pacman -Q

Pacman Mirrors

If you noticed package operations are slow, you may want to check what mirror you are using. You can see the mirror list at: /etc/pacman.d/mirrorlist

To set the mirrors, I used the following the command which will ping each mirror in the United State and add them sorted to the list based on response time. Also, configured to use https protocol and stable branch.

sudo pacman-mirrors --api --protocols https --set-branch stable --country United_States

If you don't live in the United States, you can get a list of countries with available mirrors using:

pacman-mirrors --country-list

If you don't want to pick the country, the script can randomly pick 10 mirrors from the list and save them sorted based on response times:

sudo pacman-mirrors --api --protocols https --set-branch stable --fasttrack 10

After updating the mirror list, run pacman -Syyu to force a refresh sync for the package database.

Package Differences

The Manjaro package equivalent to Ubuntu's build-essential meta package is the base-devel package group. This installs the common gcc, make, sed, awk, and similar tools, see the base-devel package group for details.

pacman -Syu --needed base-devel

Arch User Repository (AUR)

AUR is a vast repository of user created packages, it can be though of as all the Ubuntu PPA's rolled into one repository. There are various tools to work with the AUR.

I use yay - yet another yogurt. It is a popular one and written in Go so it must be good. You can install using pacman -S yay

See yay --help for full usage, but the commands mirror pacman.

Use caution when installing anything from AUR, see the wiki for details.

System Configuration

Here are a few miscellaneous items I've run into which are minor differences between Manjaro and Ubuntu.

Crontab on Manjaro

Manjaro does not have the cron service running by default. It is installed, and you can add a crontab entry, but it will not run without the service. You can enable and start cron using:

systemctl enable cronie
systemctl start cronie

For more info about coron, see my guide for using crontab.

Printer Setup on Manjaro

I use a Brother HL-3170CDW series wireless printer. Brother does distribute a driver for Linux, but in an .rpm or .deb format.

I won't send you down the rabbit holes I ventured in, the solution ended up being to simply to use the AUR driver.

yay -S brother-hl3170cdw

If you use a Brother printer, use yay -Ss brother to search for other available printer drivers in the AUR, or search for your manufacturer or model.

Additionally, the auto-registration of the network printer name did not get setup properly. I read a few things about dynamic and multicast dns (mdns) but the simplest solution was adding an entry to my hosts file using the IP address for the printer. For me I added the following to /etc/hosts, your network settings and printer name will likely be different:

192.168.86.228    BRW54137934776

Setting up WordPress on Manjaro

Here's what I did to setup WordPress, or more specifically a LAMP stack on Manjaro.

Install Apache2

pacman -Syu --needed apache

Install PHP

pacman -Syu --needed php php-gd php-imagick php-intl php-apache

To support PHP in Apache, edit /etc/httpd/conf/httpd.conf

  1. Comment out the mpm_event module and enable mpm_prefork
  2. Add the following config
LoadModule php_module modules/libphp.so
AddHandler php-script php
Include conf/extra/php_module.conf

Install Mariadb (MySQL)

pacman -Syu --needed mariadb

You need to create the initial empty database

sudo mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql

WordPress

Installing WordPress on Manjaro is the same as you would on Ubuntu; simply download and extract, though I typically use the command-line utility. You'll need to create the database and create wp-config.php

The the first time accessing the WordPress site I did get the following PHP error

PHP Fatal error:  Uncaught Error: Call to undefined function mysql_connect()

This required enabling the mysql extension in PHP, edit /etc/php/php.ini and uncomment the line:

extension=mysqli

Set Apache and MySQL to start using systemd

sudo systemctl enable httpd
sudo systemctl enable mysql

TLDR;

I switched from Ubuntu to Manjaro, overall not a big change, but it's nice.

Ubuntu, don't worry you'll still be in my life on my servers and WSL.