Jump to content

Terminal cheat sheet

From postmarketOS Wiki
Revision as of 06:50, 26 July 2021 by Ollieparanoid (talk | contribs) (throw in a couple of sudos, use neovim as example, add install-makedepends)

Here's a small reference for working with postmarketOS/Alpine Linux.

Package management

The package manager in postmarketOS is called apk, the Alpine Package Keeper. The list of packages can be found at pkgs.alpinelinux.org and pkgs.postmarketos.org.

Installing a package

$ sudo apk add neovim

Uninstalling a package

$ sudo apk del neovim

Upgrading the system. The -a option allows downgrading packages to what's available in the repository. This is sometimes needed when packages are moved from a git version to a stable release.

$ sudo apk upgrade -a

Listing installed package versions (add | grep package-name to filter for a specific package):

$ apk info -vv

Installing build dependencies:

$ sudo apk add build-base install-makedepends
$ install-makedepends neovim

The repositories are stored in /etc/apk/repositories as one repository url per line. There's also /etc/apk/world which is a list of packages that are explicitly installed. It's possible to add/remove packages from this list and then running apk fix to apply those changes. The Alpine Linux wiki has a page comparing apk to other popular distros, with many helpful examples.

Service management

The service manager in postmarketOS is OpenRC. The basic service management is done with the familiar service command.

$ service networkmanager status
$ sudo service networkmanager start
$ sudo service networkmanager stop
$ sudo service networkmanager restart

To enable or disable services on boot you use the rc-update command.

List the services that are added to a runlevel
$ rc-update
             bootmisc | boot                                   
              chronyd |      default                           
                 dbus |      default                           
                devfs |                                 sysinit
                dmesg |                                 sysinit
                  gdm |      default                           
              haveged |      default                           
             hostname | boot                                   
              hwclock | boot                                   
            killprocs |                        shutdown        


Start NetworkManager on boot (in the default runlevel)
$ sudo rc-update add networkmanager default

Stop NetworkManager starting on boot
$ sudo rc-update del networkmanager default

Log files

By default postmarketOS uses the busybox logging daemon for the syslog and it's configured to log to memory only. The logread command is used to read the in-memory log. Writing standard output and standard error of a system service to the filesystem can be achieved by setting output_log and error_log to file paths in its service script, as described in the manual page openrc-run.

Man pages

Man pages are not installed by default and are seperate from the normal packages. The docs package is a metapackage that will pull in all the documentation for the software you have installed. You can also install only the documentation you need by not installing the docs package but installing the specific documentation subpackage. For example for vim documentation you can install vim-doc

the mandoc package is the man page reader itself
the man-apropos adds the apropos manpage search tool
the man-pages package will add the pages for core software like chmod but also linux headers
the docs package is a metapackage that pulls in the -doc package for everything you install
$ sudo apk add mandoc mandoc-apropos man-pages docs
$ man nvim

Changing your shell

Since the pmos installations are based on busybox the default shell is ash, which is comparible to sh. There are multiple shells packaged in Alpine if you want something better:

pick your favorite shell
$ sudo apk add bash zsh fish dash yash oksh elvish

set your login shell
$ chsh -s /bin/zsh

some config distributions are packaged
$ sudo apk add grml-zsh-config oh-my-zsh