Jump to content

# Pacserve

2 languages

- 日本語
- Português

From ArchWiki

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 pacserveAUR.

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_serversAUR. 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

Categories:

- Internet applications
- Package management