hannah-eee/arch-wiki-docs huggingface dataset:
Pacserve

Pacserve
allows to easily share pacman packages between computers. This is very useful if you have a slow internet connection and multiple machines running Arch Linux.
Installation
Install
pacserve
AUR
.
Tip
The package is also available in the
xyne-x86_64
unofficial repository.
Finally
start/enable
pacserve.service
.
In case you use
iptables
, you will probably want to start
pacserve-ports.service
too. For other
firewalls
open TCP port
15678
and UDP port
15679
. The UDP port can be limited to multicast traffic only.
Configuration
The
pacserve.service
can configured by editing
PACSERVE_ARGS
in
/etc/pacserve/pacserve.service.conf
. Run
pacserve --help
to see the available options.
Avahi
To announce and discover Pacserve using
mDNS
add the option
--avahi
to
PACSERVE_ARGS
in
/etc/pacserve/pacserve.service.conf
.
Standalone usage
Instead of pacman, use the
pacsrv
wrapper to perform an update, install packages and so on. It will automatically download all packages from the LAN, if someone hosts them with pacserve there. Otherwise it will just download them from the internet mirrors, as usually. For example:
# pacsrv -Syu
# pacsrv -S openssh
Configure Pacman to use Pacserve
If you are always running the pacserve daemon and want pacman to use it without the wrapper, insert the following line (before any other
Include
lines) in
each
repository in
/etc/pacman.conf
.
Include = /etc/pacman.d/pacserve
Here is an example for the Xyne repository:
/etc/pacman.conf
...
[xyne-x86_64]
SigLevel = Required
Include  = /etc/pacman.d/pacserve
Server   = https://xyne.dev/repos/xyne
...
Alternatively (for official mirrors only), you may insert the
Include
line at the top of the Pacman mirrorlist file or let
pacman.conf-insert_pacserve
generate a
pacman.conf
file for you.
Troubleshooting
Problems if using external downloaders in pacman.conf
If you are using an external downloader such as
wget
,
pacsrv
may return errors when downloading. To work around these errors, simply quote the url and output formatting strings (
%u
resp.
%o
) using single quotes:
XferCommand = /usr/bin/wget --timeout=6 --passive-ftp -c -O '%o' '%u'
Machines do not see each other
Peers detection relies on version of
python3-threaded_servers
AUR
.
TCP multicast frames coming from a different version of the service are discarded.
In this case, running
journalctl -u pacserve
as root will warn about such unrecognized frames.
Upgrade this package first then restart the
pacserve.service
.
See also
pacserve thread on the Arch Linux forums
pacstrap

Related articles
Linux Containers
pacman
systemd-nspawn
From the
pacstrap(8)
:
pacstrap
is designed to create a new system installation from scratch.
pacstrap
is mainly used during the installation of the system, and comes pre-installed within the Arch
installation media
. It is also used to bootstrap
Linux containers
.
Installation
Install
the
arch-install-scripts
package.
Tips and tricks
Creating a clean chroot
This article or section is a candidate for merging with
DeveloperWiki:Building in a clean chroot#Classic way
.
Notes:
Same scope (Discuss in
Talk:Pacstrap
)
Currently,
devtools
only supports sudo. This can not be changed as
devtools
require the use of the complex functionality of sudo, which
opendoas
does not support. You can use
pacstrap
to create a chroot manually.
First, create the chroot directory:
# mkdir /var/chroot
Then, install the
base
system and
base-devel
(
meta package
containing tools which are used by the makepkg utility):
# pacstrap -K /var/chroot base base-devel
Note
The
-K
flag initialises a new pacman keyring, instead of using the hosts keyring, for people who are using unofficial mirrors within their chroot and want to import their keys from the host can omit this flag.
If you have not mounted a partition to
/var/chroot
, you must bind the directory on itself to make it a mountpoint, therefore ensuring compatibility with
arch-chroot
.
# mount --bind /var/chroot /var/chroot
Then you can enter the chroot, using
arch-chroot
:
# arch-chroot /var/chroot
You can not build arch pages as root,
makepkg
does not permit the use of the root, due to security concerns. Create a build user:
# useradd -m build
Note
The
-m
flag is needed to ensure that
useradd
creates the home directory of the build user with the correct permissions.
You can then become the build user using the following command:
# su -l build
Note
The
-l
flag is used to change into the home directory of the user you are becoming, this prevents you from accidentally trying to read/write to the root home directory.
You can now build any AUR package you wish by cloning them into the chroot, or use the chroot for testing and debugging of arch packages.
Panasonic CF-SV9

This article or section does not follow the
Laptop page guidelines
.
Reason:
Needs the last PCI/USB IDs in hardware table, an accessibility section and a proper function keys table to be added. (Discuss in
Talk:Panasonic CF-SV9
)
Hardware
PCI/USB ID
Working?
Touchpad
PS/2
Yes
GPU
8086:9b41
Yes
Webcam
5986:1164
Yes
Infrared Camera
Yes
Ethernet
8086:0d4f
Yes
Bluetooth
8087:0026
Yes
Card reader
1217:8520
Yes
Audio
8086:02c8
Yes
Wi-Fi
8086:02f0
Yes
Fingerprint reader
06cb:00c6
No
TPM
Yes
Light sensor
Yes
Firmware
System firmware, UEFI firmware, firmware for Thunderbolt controller and touchpad, and SSD firmware can be updated via
fwupd
.
Touchpad
Circular scrolling
The device has a relatively small round-shape touchpad, so the ability to configure circular scrolling is important for usability (since the touchpad area is too small for gestures). As of 06/27/2020, libinput
does not have
support for circular scrolling, which means you cannot get circular scrolling in Wayland. Under Xorg, with
xf86-input-synaptics
installed, circular scrolling works fine with the following configuration section
/etc/X11/xorg.conf.d/70-synaptics.conf
Section "InputClass"
        Identifier "touchpad catchall"
        Driver "synaptics"
        MatchIsTouchpad "on"
        MatchDevicePath "/dev/input/event*"
        Option "TapButton1" "1"
        Option "TapButton2" "3"
        Option "TapButton3" "2"
        Option "CircularScrolling" "on"
        Option "CircScrollTrigger" "0"
        Option "CircularPad" "on"
        Option "LeftEdge" "80"
        Option "RightEdge" "450"
        Option "TopEdge" "80"
        Option "BottomEdge" "450"
EndSection
Note: On the Panasonic Let's Note Model CF-SV7
If you found that you cannot move the cursor with the above, but can click you can try commenting out the LeftEdge, RightEdge, TopEdge and Bottom sections. It seems the touchpad on the SV7 differs slighty enough the defintions listed above make the entire circular touch pad a scroll wheel. I was able to scroll using the center of the pad.
After saving the file, restart Xorg.
Fix touchpad delays after system wake from sleep
Touchpad starts to behave badly and introduce pointer moving delays after system wake up from sleep. To address the issue,
i2c_hid
kernel module must be unloaded and loaded back again. The following script does the job:
/lib/systemd/system-sleep/fix-touchpad.sh
#!/bin/sh

if [ "$1" = 'post' ]; then
    echo "Reloading i2c_hid module to fix touchpad behavior"
    modprobe -r i2c_hid && modprobe i2c_hid
fi
Audio
Requires
Sound Open Firmware
to fully function.
Fingerprint reader
Synaptics FS7600
Function keys
Keys
F1
-
F6
&
F11
-
F12
work out of the box.
Keys
F7
-
F10
do not work and do not produce any key codes. According to
drivers/platform/x86/panasonic-laptop.c
, these buttons are supposed to perform the following functions:
{ KE_KEY, 7, { KEY_SLEEP } },
{ KE_KEY, 8, { KEY_PROG1 } }, /* Change CPU boost */
{ KE_KEY, 9, { KEY_BATTERY } },
{ KE_KEY, 10, { KEY_SUSPEND } },
Panasonic CF-SX3

This article or section does not follow the
Laptop page guidelines
.
Reason:
Missing a Firmware and Accessibility section. (Discuss in
Talk:Panasonic CF-SX3
)
Hardware
PCI/USB ID
Working?
Keyboard
PS/2
Yes
Touchpad
PS/2
Yes
Webcam
5986:0297
Untested
GPU
8086:0a16
Yes
Webcam
5986:0297
Yes
Ethernet
8086:155a
Yes
Bluetooth
8087:07dc
Yes
Audio
8086:02c8
Yes
Wi-Fi
8086:08b1
Yes
Audio
Requires
Sound Open Firmware
to fully function.
Backlight
Need manually configuring kernel parameter to functioning.
See
Backlight#Kernel command-line options
.
Burning DVD DL
When burning DVD DL, growisofs may encounter errors. Use cdrecord instead, see
Optical disc drive#BD-R DL 50GB errors on trying to burn second layer
:
$ cdrecord speed=2 dev=/dev/sr0 /path/to/iso
Function keys
Key
Visible?
Marked?
Effect
Fn+F1
Yes
Yes
XF86MonBrightnessDown
Fn+F2
Yes
Yes
XF86MonBrightnessUp
Fn+F3
Yes
Yes
XF86Display
Fn+F4
Yes
Yes
XF86AudioMute
Fn+F5
Yes
Yes
XF86AudioLowerVolume
Fn+F6
Yes
Yes
XF86AudioRaiseVolume
Fn+F7
Yes
Yes
XF86Sleep
Fn+F8
Yes
Yes
XF86Launch1
Fn+F9
Yes
Yes
XF86Battery
Fn+F10
Yes
Yes
XF86Suspend
Fn+F11
No
Yes
SysRq
Fn+F12
No
Yes
PrtSc
Fn+NumLk
Yes
Yes
ScrLk
Fn+Ins
Yes
Yes
Pause
Fn+Del
Yes
Yes
Break
Fn+Up
Yes
Yes
PgUp
Fn+Down
Yes
Yes
PgDn
Fn+Left
Yes
Yes
Home
Fn+Right
Yes
Yes
End
Fn+Bacspace
Yes
Yes
Ctrl+Alt+Del
See also
Panasonic CF-SV9
Panasonic CF-SZ5

Hardware
PCI/USB ID
Working?
Touchpad
PS/2
Partial
GPU
8086:1916
Yes
Webcam
5986:054c
Yes
Infrared Camera
Untested
Ethernet
8086:156f
Yes
Bluetooth
8087:0a2b
Yes
Card reader
1217:8520
Yes
Audio
8086:9d70
Yes
Wi-Fi
8086:24f3
Yes
Fingerprint reader
Untested
TPM
Yes
Light sensor
Untested
This article or section does not follow the
Laptop page guidelines
.
Reason:
Only missing a function keys section. (Discuss in
Talk:Panasonic CF-SZ5
)
Accessibility
Note
The BIOS menus defaults to Japanese, pressing
Enter
followed by
Up
then
Up
then
Enter
immediately after entering setup changes the language to English.
The BIOS setup and battery calibration utility have a standard text based UI, only the keyboard is required to interact with both programs. The menus should be easy to OCR. The
Esc
or
Del
key can be used to enter BIOS setup, and
F9
can be used to enter the built-in battery calibration utility.
To restore factory default settings, press
F9
in BIOS setup.
To save changes and reboot, press
F10
in BIOS setup.
Firmware
fwupd
detects the device, but fails to provide any firmware updates. Firmware updates for
BIOS
,
ME
and
EC
can be downloaded from Panasonic's official website.
Note
The firmware can only be flashed under windows, a
dual boot with Windows
can be used to update the firmware.
Battery
Battery can be swapped while the system is connected to external power and in sleep state without causing the system to lose power. ECO mode state (80% Charging restriction to preserve battery life) will persist across reboots and in Linux if toggled on in the
Panasonic PC Settings Utility
under Windows.
Touchpad
See
Panasonic CF-SV9#Touchpad
.
TPM
Warning
Do this at your own risk - if done improperly you may permanently "brick" your laptop. This procedure is only required if systemd integration is desired.
CF-SZ5 has a
SLB9660VQ1.2
TPM 1.2 onboard, which can be unofficially upgraded to support TPM 2.0 for better integrations with systemd. BIOS version V3xxL25 and later have built in TPM 2.0 support and is able to interact with the TPM upon upgrade. A firmware upgrade tool from Supermicro can be used to perform the upgrade.
A detailed blog post
provides instructions to perform an Infineon TPM upgrade.
See also
Panasonic CF-SV9
Papermerge

Papermerge
is an open source document management system for digital archives.
Installation
Install the
papermerge-core
AUR
package. Installation and updates of the package automatically run the database migrations.
Start
Start/enable
papermerge-gunicorn.service
and
papermerge-worker.service
Your papermerge instance should now be available at port 9001.
Configuration
For details on papermerge configuration, visit its official
documentation
. The main configuration file is located at
/etc/papermerge.conf.py
.
Note
The
papermerge-core
AUR
package creates a
papermerge
system user and provides a
papermerge-manage
command which should always be run as the
papermerge
user. See
below
for an example. The
papermerge-manage
command should be used wherever the official documentation refers to
manage.py
.
Do not forget to
restart
papermerge-gunicorn.service
and
papermerge-worker.service
after changing configurations.
Create admin user
After initial installation, you should create an admin user for your papermerge instance using the papermerge UNIX user:
[papermerge]$ papermerge-manage createsuperuser
Nginx
Install
Nginx
and use the following configuration as a starting point for the papermerge virtual host:
/etc/nginx/sites-available/papermerge.domain.tld
server {
    server_name papermerge.domain.tld;
    listen 80;
    listen [::]:80;

    location /static/ {
        alias /var/lib/papermerge/static/;
    }

    location /media/ {
        alias /var/lib/papermerge/media/;
    }

    location / {
        proxy_pass
http://127.0.0.1:9001
;
    }
}
Redis
It is
recommended
to use
Redis
as a message broker instead of the default filesystem-based approach.
Install
redis
AUR
and
python-redis
and
start/enable
redis.service
. In
/usr/lib/python3.9/site-packages/config/settings/base.py
replace
/usr/lib/python3.9/site-packages/config/settings/base.py
CELERY_BROKER_URL = "filesystem://"
CELERY_BROKER_TRANSPORT_OPTIONS = {
    'data_folder_in': PAPERMERGE_TASK_QUEUE_DIR,
    'data_folder_out': PAPERMERGE_TASK_QUEUE_DIR,
}
with
/usr/lib/python3.9/site-packages/config/settings/base.py
CELERY_BROKER_URL = "redis://"
CELERY_BROKER_TRANSPORT_OPTIONS = {}
CELERY_RESULT_BACKEND = "
redis://localhost/0
"
and
restart
papermerge-gunicorn.service
and
papermerge-worker.service
Paramano

Paramano
is a GPL-licensed GTK 3 application that lets you select your cores' governor or frequency from a tray icon and displays information about your battery graphically. Paramano is designed to be desktop-environment-independent so it depends only on GTK 3, a system tray and
sudo
.
Short history
The original version was abandoned at 0.2.x.dev1-3 (sometime during 2009) and eventually failed as
/proc/acpi/
became deprecated. The original project was forked and named trayfreq-archlinux with the aim of bringing trayfreq back into functionality.
It was later renamed to Paramano, initially a nonsense word which turned out to mean 'cuff' in Italian.
Features
Displays an icon that shows you the current CPU frequency as a proportion of the maximum
When the CPU icon is right-clicked, it provides a menu of available frequencies and governors to choose.
(Optional) Displays an icon that shows you the status of your battery (charging, discharging, charged) and its current charge
Hovering over the battery icon gives the estimated time until fully charged/discharged
Automatic switching of CPU governor based on AC adapter presence
Configuration can be reloaded on-the-fly by sending the
USR1
signal
Lightweight and desktop-environment-independent
Installation
Install
paramano
AUR
from the AUR.
Then optionally
edit
the configuration file.
If you want to have per-user configuration, then create a configuration file in your home directory:
$ cp /etc/paramano.conf ~/.paramano.conf
Without this, what you change in the next step will be system-wide — it is your choice.
Open the appropriate configuration file (
/etc/paramano.conf
or
~/.paramano.conf
) with your favourite editor.
Everything will be commented out; un-comment what you want to use.
Note that, if a default frequency is set, it will override the governor.
Troubleshooting and tips
A desktop file is installed into
/etc/xdg/autostart/
. It will automatically start once installed. If you do not want it to start automatically, open the start up manager that comes with your desktop environment and uncheck paramano.
If paramano does not seem to want to change the governor, it will be because it is detected that it is not running as root and has tried to use sudo to elevate its privileges. However, it requires that it has passwordless access to run
/usr/bin/paramano-set
. If you have sudo configured such that you type your password to authenticate, you will need to create the following drop-in file using the
visudo
command as root:
/etc/sudoers.d/90-user_shutdown
user
ALL = NOPASSWD: /usr/bin/paramano-set
See also
Paramano main page
Paramano releases
Original Trayfreq Website
Partclone

Related articles
Disk cloning
Partclone
, like the well-known
Partimage
, can be used to back up and restore a partition while considering only used blocks.
Installation
Install
the
partclone
package.
Using Partclone with an ext4-formatted partition
Without compression
To backup
without
compression:
# partclone.ext4 -c -s /dev/sda1 -o ~/image_sda1.pcl
To restore it:
# partclone.ext4 -r -s ~/image_sda1.pcl -o /dev/sda1
With compression
To backup
with
compression:
# partclone.ext4 -c -s /dev/sda1 | lz4 -z > ~/image_sda1.pcl.lz4
Tip
For maximum compression use
lz4 -z -12
, or experiment with other
compression tools
.
To restore it:
# lz4 -d -c ~/image_sda1.pcl.lz4 | partclone.ext4 -r -o /dev/sda1
PeerGuardian Linux

PeerGuardian Linux
(
pgl
) is a privacy oriented firewall application.  It blocks connections to and from hosts specified in huge block lists (thousands or millions of IP ranges).
pgl
is based on the Linux kernel
netfilter
framework and
iptables
.
A more native, efficient solution to achieve the same end is to use the
ipset
kernel module in conjunction with the pg2ipset tool and the ipset-update script.
Installation
There are two possible packages to
install
:
pgl-cli
AUR
includes only the daemon and CLI tools, while
pgl
AUR
comes complete with a GUI (written using Qt).
Configuration
/etc/pgl/blocklists.list
contains a list of URL for retrieving the various block lists.
/etc/pgl/pglcmd.conf
, empty by default, overrides the default settings present in
/usr/lib/pgl/pglcmd.defaults
.
/etc/pgl/allow.p2p
lists custom IP ranges that will not be filtered.
The default lists in
/etc/pgl/blocklists.list
block many potentially legitimate IP address.  Users are encouraged to exercise best judgment and the information available at
I-Blocklist
.
It is recommended to disable the filtering of HTTP connections by adding the following to
/etc/pgl/pglcmd.conf
:
/etc/pgl/pglcmd.conf
WHITE_TCP_OUT="http https"
Conversely, one could white list all the ports except the ones used by the program to be blocked. The following example only use the block lists to stop incoming traffic on ports 53 (DNS) and 80 (HTTP):
/etc/pgl/pglcmd.conf
WHITE_TCP_IN="0:79 81:65535"
WHITE_UDP_IN="0:52 54:65535"
Server
systemd
initialization of the system means that it is quite possible for a server to be briefly unprotected, prior to
pgl
launch. To ensure adequate protection,
extend the unit
httpd.service
with the following:
/etc/systemd/system/httpd.service.d/override.conf
[Unit]
Wants=pgl.service
After=pgl.service
LAN
By default,
pgl
blocks traffic on the local IPv4 addresses. To disable this behavior, edit
/etc/pgl/pglcmd.conf
to add an exception using the
WHITE_IP_*
setting:
/etc/pgl/pglcmd.conf
WHITE_IP_OUT="192.168.0.0/24"
/etc/pgl/pglcmd.conf
WHITE_IP_IN="192.168.0.0/24"
For further information, please refer to the
# Whitelist IPs #
section of
/usr/lib/pgl/pglcmd.defaults
.
Starting up
Once comfortable with the configuration of both the daemon and lists, start the
pgl
service
. To make sure that
pgl
works as intended, issue this command:
# pglcmd test
To start
pgl
automatically at boot, enable the
pgl
service.
Running pgl from within a container
Users running pgl within a
Linux Container
may need to
edit
the included
lxc@.service
to add the loading of key modules needed by pgl.
/etc/systemd/system/lxc@.service
[Unit]
Description=%i LXC
After=network.target

[Service]
Type=forking
ExecStartPre=/usr/bin/modprobe -a xt_NFQUEUE xt_mark xt_iprange
ExecStart=/usr/bin/lxc-start -d -n %i
ExecStop=/usr/bin/lxc-stop -n %i
Delegate=true

[Install]
WantedBy=multi-user.target
PeerTube

From
Wikipedia:PeerTube
:
PeerTube is a free and open-source, decentralized, federated video platform powered by ActivityPub and WebTorrent, that uses peer-to-peer technology to reduce load on individual servers when viewing videos.
Installation
Install
the
peertube
AUR
package.
Configuration
Follow the configuration steps of the
production guide
:
Create a database and user with a password in
PostgreSQL
, following the instructions on the GitHub link.
Edit the first section of the
/etc/peertube/production.yaml
. Make sure you change the database password to match the one you set earlier.
Start/enable
the
Redis
service.
If you want to edit the settings through the web UI, you must change the ownership of the configuration folder:
# chown -R peertube:peertube /etc/peertube
(Optional) Configure and start a reverse proxy. PeerTube has official support for
nginx
, and the configuration file can be found at
/usr/share/webapps/peertube/support/nginx/peertube
Make sure you
change the file paths
to the ones used by this package.
(Optional) If you are having trouble with getting the package to work, fix possible permissions problems:
# chown -R peertube:peertube /var/lib/peertube/
Finally,
start
the
peertube
service and point your browser to the URL from the configuration file (
http://localhost:9000
by default without a reverse proxy).
Note
Once an address has been set in the configuration file, e.g.
peertube.example.com
, users can only login from that address, and not from other locations, such as
localhost:9000
.
phpLDAPadmin

phpLDAPadmin
is an web-based
LDAP
adminstration interface.
Pre-Installation
See
LAMP
for a guide to setting up Apache, MySQL, and PHP.
Installation
Install
the
phpldapadmin
package.
Configuration
Apache
This article or section is out of date.
Reason:
phpldapadmin-2 uses systemd service (Discuss in
Talk:PhpLDAPadmin
)
Create the Apache configuration file:
/etc/httpd/conf/extra/phpldapadmin.conf
Alias /phpldapadmin "/usr/share/webapps/phpldapadmin"
<Directory "/usr/share/webapps/phpldapadmin">
    DirectoryIndex index.php
    AllowOverride All
    Options FollowSymlinks
    Require all granted
</Directory>
And include it in
/etc/httpd/conf/httpd.conf
:
# phpLDAPadmin configuration
Include conf/extra/phpldapadmin.conf
By default, everyone can see the phpLDAPadmin page, to change this, edit
/etc/httpd/conf/extra/phpldapadmin.conf
to your liking. For example, if you only want to be able to access it from the same machine, replace
Require all granted
by
Require local
.
PHP
You need to enable the
ldap
and
gettext
extensions in PHP by editing
/etc/php/php.ini
and uncommenting the following lines:
extension=ldap
extension=gettext
You need to make sure that PHP can access
/usr/share/webapps
and
/etc/webapps
. Add them to
open_basedir
in
/etc/php/php.ini
:
open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/etc/webapps
phpLDAPadmin configuration
This article or section is out of date.
Reason:
phpldapadmin-2 now uses .env file, see
wiki
(Discuss in
Talk:PhpLDAPadmin
)
phpLDAPadmin's configuration file is located at
/etc/webapps/phpldapadmin/config.php
. If you have a local LDAP server, it should be usable without making any modifications.
If your LDAP server is not on the localhost, uncomment and edit the following line:
$servers->setValue('server','host','127.0.0.1');
Although not strictly necessary you can name your server by editing the following line:
$servers->setValue('server','name','My LDAP server');
Accessing your phpLDAPadmin installation
Your phpLDAPadmin installation is now complete. Before start using it you need to restart Apache.
You can access your phpLDAPadmin installation by going to
http://localhost/phpldapadmin/
PHP package guidelines

Arch package guidelines
32-bit
–
CLR
–
CMake
–
Cross
–
DKMS
–
Eclipse
–
Electron
–
Font
–
Free Pascal
–
GNOME
–
Go
–
Haskell
–
Java
–
KDE
–
Kernel modules
–
Lisp
–
Meson
–
MinGW
–
Node.js
–
Nonfree
–
OCaml
–
Perl
–
PHP
–
Python
–
R
–
Ruby
–
Rust
-
Security
–
Shell
–
VCS
–
Web
–
Wine
This document covers the creation of
PKGBUILDs
for PHP libraries. The target audience of this document is intended to be packagers of PHP libraries. For PHP Web applications, see
Web application package guidelines
Package names
For modules the package name should begin with
php-
and the rest of the name should be constructed from the library name by converting it to lowercase and separate words with hyphens. For example the package name corresponding to
File iterator
will be
php-file-iterator
.
Package file placement
PHP packages should install files into
/usr/share/php/
. This path should be in the
php.ini
include_path
or
open_basedir
directive in order to be able to include libraries files in PHP web applications.
Architecture
In most cases, the
arch
array should contain
any
because most PHP packages are architecture independent.
Pianobar

Related articles
List of Applications/Multimedia
Pianobar
is a free/open-source, console-based client for the personalized online radio
Pandora
(only available in the USA).
Features
play and manage (create, add more music, delete, rename, ...) stations
rate songs and explain why they have been selected
upcoming songs/song history
customize keybindings and text output
remote control and eventcmd interface (send tracks to last.fm, for example)
proxy support for listeners outside the USA
Tip
Since Pianobar is a command line interface based program it can be placed in a different virtual terminal than your desktop and be left to run.
Installation
Install
the
pianobar
package.
Configuration
First, you need to create a configuration file for Pianobar. This should be located at
$XDG_CONFIG_HOME/pianobar/config
or
~/.config/pianobar/config
$ man pianobar
CONFIGURATION
       The  configuration file consists of simple key = value lines, each ter‐
       minated with a newline (\n) character. Note that keys  and  values  are
       both  case  sensitive, and there must be exactly one space on each side
       of the equals sign.

       act_* keys control pianobar's key-bindings.  Every  one-byte  character
       except for \x00 and the special value disabled are allowed here.
Here is an example configuration file. See
pianobar(1)
for more configuration options.
~/.config/pianobar/config
audio_quality = {high, medium, low}
autostart_station = stationid

password = plaintext_password
user = your@user.name
Troubleshooting
Sound Quality Issues
If you are experiencing sound/quality issues when running pianobar, and you are currently using
ALSA
as your sound driver, the following fixes may be useful.
Warning
The provided fixes may affect other applications that use audio as the default driver is being changed.
Install
alsa-oss
. See the
ALSA
page for more information.
Change the default libao driver from
alsa
to
oss
:
/etc/libao.conf
default_driver=oss
Now run pianobar:
$ aoss pianobar
Alternatively, you can use
PulseAudio
:
/etc/libao.conf
default_driver=pulse
Note
Be sure to remove the
dev=default
option of the ALSA driver or adjust it to specify a specific Pulse sink name or number.
Network Error
If you are receiving the
Network error: Peer certificate cannot be authenticated with given CA certificates
, try
adding
the following line:
~/.config/pianobar/config
ca_bundle = /etc/ca-certificates/extracted/tls-ca-bundle.pem
See also
Project's homepage
Project's GitHub
https://wiki.k2patel.in/pianobar
pkgfile

Related articles
pacman
pkgfile
is a tool for searching files from packages in the
official repositories
.
Tip
pacman
has
a similar functionality built in
.
Installation
Install
the
pkgfile
package.
The
pkgfile
database can then be synced with:
# pkgfile -u
Usage
To search for a package that owns the file
makepkg
:
$ pkgfile makepkg
core/pacman
To list all files provided by
archlinux-keyring
:
$ pkgfile -l archlinux-keyring
core/archlinux-keyring usr/
core/archlinux-keyring usr/share/
core/archlinux-keyring usr/share/pacman/
core/archlinux-keyring usr/share/pacman/keyrings/
core/archlinux-keyring usr/share/pacman/keyrings/archlinux-revoked
core/archlinux-keyring usr/share/pacman/keyrings/archlinux-trusted
core/archlinux-keyring usr/share/pacman/keyrings/archlinux.gpg
Latter is comparable to
pacman -Ql
(see
pacman#Querying package databases
), except it applies to remote packages.
Command not found
See
Bash#Command not found
,
Zsh#pkgfile "command not found" handler
and
Fish#The "command not found" hook
.
Automatic updates
pkgfile
ships with a
systemd
service and
timer
for automatically synchronizing the pkgfile database. To activate automatic updates
enable
pkgfile-update.timer
.
By default, pkgfile will be updated daily. To change this schedule,
edit the unit file
.
pkgstats

pkgstats sends a list of all installed packages, the architecture and the mirror you are using to the
archlinux.de
project. This information is anonymous and cannot be used to identify the user, but it will help Arch developers prioritize their efforts (
source code
). See also the project's
Privacy policy
.
Installation
Install
the
pkgstats
package.
Usage
pkgstats
is set up to automatically run every week using a
systemd timer
. Once installed, it will be activated after the next reboot.
If you do not want to wait for a reboot cycle, you can manually
start
pkgstats.timer
.
pkgstats
can also be run manually: see
pkgstats -h
for usage information.
Results and reference
Statistics and documentation are available at
https://pkgstats.archlinux.de/
and comparisons can be found at
https://pkgstats.archlinux.de/fun
.
There is a public JSON API to query statistics:
API documentation
.
Plank

Plank
is a lightweight and minimal dock. Plank will not work if you are using Wayland.
Installation
Install
plank
or
plank-git
AUR
for the development version.
Running Plank
$ plank
On
Wayland
, it may fail with the following error:
[CRITICAL] [AbstractMain:255] Only X11 environments are supported.
In this case, it needs the following
environment variable
to be set
[1]
:
XDG_SESSION_TYPE=x11
Tip
This is also needed when you are not using a display manager to start X, e.g. xinit
Adding new dock icons
Application icon: drag and drop a shortcut to the dock, or right click a running application's icon and select "Keep in dock".
Folder or file icon: drag and drop it to the dock.
Docklets: use their tab in the
Preferences
dialog.
Tip
Plank stores icons as
.dockitem
launchers in
$XDG_CONFIG_HOME/plank/
.
Configuration
Preferences can be opened by holding
Ctrl
and right-clicking on the dock. Select
Preferences
in the context menu that opens.
Although the preferences of each dock is stored in the
dconf
database and not in plain text, sometimes it makes sense to get and store that information anyway and then feed it back at some point.
Eg. backing up the settings or migrating the settings, etc.
Therefore one may want to save all the docks:
$ dconf dump /net/launchpad/plank/docks/ > /path/where/to/save/plank/docks.ini
And then one may want to reload the saved settings:
$ cat /path/where/saved/plank/docks.ini | dconf load /net/launchpad/plank/docks/
Setting themes
The theme can be changed by selecting a choice in the drop-down menu of
Preferences > Appearance > Theme
. Themes are stored globally under
/usr/share/plank/themes/
or locally under
~/.local/share/plank/themes/
.
These custom themes can be installed to give your plank dock an eyecandy touch. Search for
"plank-theme"
on
AUR
, for example
plank-theme-arc
AUR
is an Arc theme for Plank.
Multiple Docks
It is possible to run multiple plank docks at once.
Directories for each dock are stored under
~/.config/plank/
. Under these directories, there is a directory named 'launchers'. Going further, under this directory, docklets are stored. When the
plank
command is run, it either defaults to the dock1 directory or creates it if it is non-existent. If you were to run:
$ plank -n newdock
A new directory named 'newdock' would be created under
~/.config/plank
and docklets stored under
~/.config/plank/newdock/launchers/
is displayed on the dock, unless a directory under that name has already been created. This makes it possible to have multiple docks each with their own settings and preferences by specifying the name under the
-n
flag.
For example:
$ plank -n primdock 
$ plank -n secondock
Applications Docklet
Plank's Applications Docklet looks for the file 'applications.menu' by default, and if that doesn't exist it will just say "No applications available". Some desktop managers, like cinnamon-desktop do not create this file, but it is very easy to fix.
$ ln -s ~/.config/menus/cinnamon-applications.menu ~/.config/menus/applications.menu
Luckily the xml format is identical, the only difference is the name. Once you have created the symlink your Applications Docklet should work as expected!
PowerShell

Related articles
.NET
PowerShell
is a cross-platform task automation framework and scripting language developed by Microsoft. Designed for system administrators and power users, it facilitates the automation of administrative tasks through a
command-line shell
and a scripting language, enabling efficient management of Microsoft Windows and other operating systems.
Installation
Install
powershell
AUR
or
powershell-bin
AUR
.
PowerShell Core can also be installed via the
.NET SDK
, if this is already configured. Alternatively, PowerShell can also be installed with the
Snap
package manager. It's packaged as powershell in
Snapcraft
.
After installation, PowerShell can be started with
pwsh
command. It's highly recommended to fetch the PowerShell help files from Internet. It can be done with
Update-Help
cmdlet.
Telemetry
By default PowerShell collects telemetry. It can be disabled by setting the following
environment variable
POWERSHELL_TELEMETRY_OPTOUT=1
PowerShell remoting over SSH
PowerShell has a built-in remote management system via the
PSSession
cmdlets. This system can run over
SSH
. In order to configure a Linux SSH host for this, the
OpenSSH
server configuration file
sshd_config
needs the following line:
/etc/ssh/sshd_config
Subsystem powershell /usr/bin/pwsh -sshs
It is then possible to use the
New-PSSession
,
Enter-PSSession
and
Invoke-Command
cmdlets
to control the host. This can also be done from Linux to Windows or vice versa. For an usage example, see the
Microsoft documentation
.
See also
Pleau, Rob.
"Powershell + Arch Linux = AWESOME!"
. Retrieved 2026-01-10.
Diaz, Kevin.
"Powershell Remote Management From Linux"
. Retrieved 2024-02-13.
"PowerShell remoting over SSH"
. Retrieved 2025-03-09.
Getting Started with PowerShell 3.0 series - Microsoft Learn
. Retrieved 2025-07-23.
PrBoom

PrBoom
is a cross-platform version of the classic 3D first person shooter
Doom
from id Software. Originally written for Microsoft Windows, PrBoom has since been ported to Linux and many other platforms. It offers a number of enhancements over the original game, including OpenGL rendering and high video resolutions, while attempting to remain true to the original Doom in terms of play. You will need the original Doom data, unless you install the FreeDoom package (see below).
Installation
Install the
prboom
AUR
package.
Usage
To use prboom, the original data files are required. An
IWAD
- short for Internal WAD - is the main resource file for a Doom-engine game, containing all the game's original sounds, levels, and graphics. With an IWad file with default settings (unless you already have
~/.prboom/prboom.cfg
edited):
# prboom -iwad /path/to/file
To change window resolution (you must disable fullscreen in options in-game):
# prboom -width 800 -height 600 -iwad /path/to/file
A full list of settings can be found in
prboom(6)
.
Server
To start a server:
# prboom-game-server
By default it listens on port
5030
, so to join the game:
# prboom -net localhost:5030 -iwad /path/to/file
Music
If music is not working, then follow these steps. Install
timidity++
and
freepats-general-midi
, then add:
/etc/timidity++/timidity.cfg
dir /usr/share/timidity/freepats
source /etc/timidity++/freepats/freepats.cfg
Please note that freepats is an incomplete soundfont; therefore it will not play every instrument used by Doom and Doom 2. You should consider installing an alternative
SoundFont
.
See also
Wikipedia:PrBoom
Preload

Preloading is the action of putting and keeping target files into the RAM. The benefit is that preloaded applications start more quickly because reading from the RAM is always quicker than from the hard drive. However, part of your RAM will be dedicated to this task, but no more than if you kept the application open. Therefore preloading is best used with large and often-used applications like Firefox and LibreOffice.
Go-preload
gopreload
is a small daemon created in the
Gentoo forum
.
Installation
Install
gopreload-git
AUR
. To use it, first run this command in a terminal for each program you want to preload at boot:
# gopreload-prepare
program
For regular users, take ownership of
/usr/share/gopreload/enabled
and
/usr/share/gopreload/disabled
:
# chown
username
:users /usr/share/gopreload/enabled /usr/share/gopreload/disabled
and then gopreload each program you want to preload:
$ gopreload-prepare
program
Then, as instructed, press
Enter
when the program is fully loaded. This will add a list of files needed by the program in
/usr/share/gopreload/enabled
. To load all lists at boot,
enable
the systemd service file
gopreload.service
.
To disable the loading of a program, remove the appropriate list in
/usr/share/gopreload/enabled
or move it to
/usr/share/gopreload/disabled
.
It is advised to run
gopreload-prepare
after system upgrades to refresh the file lists.
For the task, the following batch tool come handy:
# gopreload-batch-refresh.sh
Just let it run without using the system.
Configuration
The configuration file is located in
/etc/gopreload.conf
Preload
preload
is a program written by Behdad Esfahbod which runs as a
daemon
and records statistics about usage of programs using Markov chains; files of more frequently-used programs are, during a computer's spare time, loaded into memory. This results in faster startup times as less data needs to be fetched from disk.
Installation
Install
the
preload
AUR
package. You may now
start
the systemd service
preload
, and/or
enable
it in order to start at boot.
Configuration
The configuration file is located in
/etc/preload.conf
, it contains default settings that should be suitable for regular users. The
cycle
option lets you configure how often to ping the preload system to update its model of which applications and libraries to cache.
See also
wikipedia:Preload_(software)
Improve boot performance
Prey

Prey
is a multi-OS anti-theft, data security, and management platform that helps you track your computer when it is stolen.
Installation
Install
the
prey-node-client
AUR
package.
Configuration
Note
Create an account on
Prey's website
if you have not done so already.
Tip
You can configure Prey using either the
CLI configuration
or the
GUI configuration
.
The installer has automatically
started/enabled
prey-agent.service
to activate Prey at boot. You can check the
unit status
if in doubt.
CLI configuration
Configure your device with your Prey account:
# prey-tracker config account setup
Follow on-screen instructions.
To activate your configuration, run
prey-tracker config activate
as user
prey
:
[prey]$ prey-tracker config activate
Plugins
To enable/disable plugins, you must run
# prey-tracker config plugins
Read on-screen instructions to list the available plugins and enable/disable them.
GUI configuration
You can use the GUI to configure prey:
# prey-tracker config gui
Troubleshooting
To troubleshoot, run
$ prey-tracker config check
ProjectM

ProjectM
is an open source music visualizer based on the Milkdrop plugin for Windows/Winamp.  It now has a Qt GUI that can visualize your audio output through either JACK or PulseAudio, in addition to a
libvisual
AUR
component.  This article currently focuses on the PulseAudio standalone GUI.
Installation
Install
projectm-pulseaudio
.
Run
Once everything is installed just do the following from the command line:
$ projectM-pulseaudio
Controls (these are listed in the menu under "hotkeys":
m - brings up a menu
f - toggles fullscreen on/off
l - "locks" to a particular preset
y - toggles shuffle mode
n - next preset
p - previous preset
r - selects random preset
F1 - Help menu
F2 - Toggles song title on/off (does not work in libvisual or pulseaudio as far as I can tell)
F3 - Toggle preset name on/off
F4 - Toggle rendering info on/off
F5 - Shows fps
Troubleshooting
The first
PulseAudio
sound output device is used from the list shown by the command
$ pacmd list-sources
If this is not the device you want to use, the easiest thing to do is to press
m
to bring up the menu, then
Settings > Pulse Audio Settings
.  Uncheck the checkbox at the bottom which says "Try first available playback monitor," then select the correct device. Most likely it is one which ends in ".monitor" (if you want the visualizer to visualize what's being output/played).
Some information on usage and configuration can be found in the
ProjectM FAQ
Otherwise a good place to ask question are the projectM
help forums on Sourceforge
.
PRoot

Related articles
Firejail
Bubblewrap
AppArmor
PRoot
is program that implements functionality similar to GNU/Linux's
chroot
,
mount --bind
, and binfmt_misc in user-space, allowing an unprivileged user to execute programs with an alternative root directory, much like a chroot "jail". This is useful in cases where a chroot is not possible due to a lack of root privileges.
Installation
PRoot can be installed from the
proot
AUR
package.
pacstrap
can be used to initialize the directory with an Arch environment before running
proot
.
Usage
After installation, PRoot does not require root privileges. As with chroot, PRoot must be given a directory to act as the new root directory for the program to be run. If a program is not specified, PRoot will launch
/bin/sh
by default. Virtual filesystems do not need to be manually mounted, as PRoot handles this automatically.
$ proot -r ~/mychroot/
At this point a shell will start, with
/
corresponding to the
~/chroot/
directory on the host system.
Paths may be explicitly bound using the
-b
option:
$ proot -b /bin/bash:/bin/sh
This makes the host's /bin/bash available at the guest's /bin/sh
PRoot internally utilizes the qemu user-mode emulator to allow programs to be run inside the PRoot even when they are compiled for an architecture other than the host system's.
Security
This article or section needs expansion.
Reason:
Compare security of chroot and PRoot: Are /proc, /sys, and /dev accessible inside a PRoot? Is privilege escalation possible? (Discuss in
Talk:PRoot
)
Like chroot, PRoot provides only filesystem level isolation. Programs inside the PRoot "jail" share the same kernel, hardware, process space, and networking subsystem. chroot and PRoot are not designed to be substitutes for real
virtualization
applications, such as hypervisors and paravirtualizers.
Pufferpanel

Related articles
Minecraft
From
Pufferpanel
:
PufferPanel is an open source game server management panel designed to be easy to use and easy to install. PufferPanel supports Minecraft, Spigot, Sponge, Source Dedicated Servers, BungeeCord, PocketMine, Forge, and much more.
Note
Although the panel itself is open source, Minecraft server software are EULA licensed, open source modifications such as Forge or Spigot still rely on the EULA licensed binary distributed by Mojang.
Installation
Install
the
pufferpanel-bin
AUR
package.
In order to be able to login to the web interface, and configure the installation you will need to create a user:
# pufferpanel user add
This will bring up a command line interactive prompt.
Note
Ensure to enter
Y
to the admin question, otherwise the user will not be able to configure the instance within
#Configuration
After creating the admin user, you can
Start/enable
pufferpanel.service
.
Configuration
Pufferpanel
configuration can be found under
/etc/pufferpanel
. Within this directory you will find a
config.json
file which contains all the configuration for the instance. Email templates can be found within
/etc/pufferpanel/email
, this allows for the configuration of the notification emails sent to users.
You can configure the panel through the web interface, by logging in as the administrator account which you created during
#Installation
and going to the
Settings
.
Reverse proxy
By default,
pufferpanel
does not support TLS encryption, it relies on other web servers to reverse proxy to provide TLS support.
Note
Upstream strongly recommends you to use TLS encryption (https) to prevent accounts credentials being leaked, pufferpanel should never be open to the internet unless reverse proxied.
Regardless of the chosen HTTP server, ensure to
Start/enable
the service, otherwise
pufferpanel
will not be accessible over HTTPS.
Nginx
Ensure you have
installed nginx
, then follow the upstream guide
[1]
.
Apache
Ensure you have
installed Apache
, then follow the upstream guide
[2]
.
Caddy
Ensure you have
installed Caddy
, then follow the upstream guide
[3]
.
Database
By default,
pufferpanel
uses a
sqlite3
database, located at
/var/lib/pufferpanel/database.db
.
Other, external databases, are also supported for scalability and redundancy, along with the ability to change the path of the embedded
sqlite3
database.
MySQL/MariaDB
Ensure you have
installed MariaDB
and
configured MariaDB
, then follow the configuration provided by upstream
[4]
.
PostgreSQL
Ensure you have
installed PostgreSQL
, followed
initial configuration
and
created a user and database
, then follow the configuration provided by upstream
[5]
.
Microsoft SQL Server
Follow the configuration provided by upstream
[6]
.
Note
Microsoft SQL Server is proprietary unlike the other alternative databases provided above.
Not supported by Arch Linux officially, must be installed using
mssql-server
AUR
AUR package.
There is no ArchWiki page for the configuration of Microsoft SQL Server, thus you must follow the
Microsoft Documentation
.
See also
Official documentation
Puppet server

Related articles
Puppet
Installation
To install puppet server first add the upstream GPG key:
$ gpg --fetch-keys
https://yum.puppetlabs.com/RPM-GPG-KEY-puppet-20250406
Then install the
puppetserver
AUR
package. Afterwards,
enable
and
start
the
puppetserver
service.
Configuration
The Puppet Server's configuration files are stored in
/etc/puppetlabs/puppetserver/
:
.
|-- conf.d
|   |-- auth.conf
|   |-- global.conf
|   |-- puppetserver.conf
|   |-- web-routes.conf
|   `-- webserver.conf
|-- logback.xml
|-- request-logging.xml
`-- services.d
    `-- ca.cfg
in conf.d there are:
auth.conf which allows you to configure what puppet nodes (clients) are allowed to request from the server.
global.conf by default just contains the path to the logging configuration file.
puppetserver.conf is the main configuration file for the server, it allows you to set the JRuby load path, JRuby gem home path, the puppet master-conf-dir, master-code-dir, master-var-dir, master-run-dir, master-log-dir and most importantly the max-active-instances. It also has a section for adjusting the http-client allowed protocols which enable you to enable or disable the various SSL cipher suites and protocols.
web-routes.conf allows you to configure the puppet server's web-routes.
webserver.conf allows you to set the listen address, port, authentication type and log file path for the puppet server web interface.
Additionally, there is the
/etc/default/puppetserver
configuration file that allows you to tweak the Java Virtual Machine's startup settings, set the user and group the server runs as, the path to the puppet server's files and the configuration path.
Tuning the server for lower memory usage
By default the puppet server allocates 2 gigabytes of RAM for itself, this can be adjusted in
/etc/default/puppetserver
by editing the JAVA_ARGS.
By default it is:
-Xms2g -Xmx2g -XX:MaxPermSize=256m
But if you are using a server that does not have sufficient RAM spare you can set it to as little as 512 megabytes. Keep in mind though that this will only cater for a small amount of managed servers and you will also need to change the maximum active instances of puppet to 1 in
/etc/puppetlabs/puppetserver/puppetserver.conf
which limits the number of server's that the server is able to communicate with at once.
Installing support for hiera eyaml
If you wish to use Hiera eyaml on the puppet server you should install the gems for it on the puppet server using the following command:
puppetserver gem install hiera-eyaml
and then restart puppet server.
Accessing the puppet server web interface
The web interface by default listens on https port 8140 on all interfaces. This can be changed by editing the ssl-host and ssl-port configuration options in
/etc/puppetlabs/puppetserver/conf.d/webserver.conf
.