Description: | Pacman wrapper for faster downloads. |
Latest Version: | 2021.11 |
Source Code: | src/ |
Architecture: |
|
Dependencies: |
|
Build Dependencies: |
|
Optional Dependencies: |
|
Arch Repositories: |
|
AUR Page: | powerpill |
Arch Forum Thread: | 153818 |
Tags: |
Powerpill is a Pacman wrapper that uses parallel and segmented downloading through Aria2 and Reflector to try to speed up downloads for Pacman.
Powerpill can also use Rsync for official mirrors that support it. This can be efficient for users who already use full bandwidth when downloading from a single mirror.
Pacserve is also supported via the configuration file and will be used before downloading from external mirrors.
The powerpill configuration file is located at
/etc/pacboy/config-powerpill.json
by default. Refer to the
powerpill.json man page for details.
The official Pacman repos do not provide database signature files. To
avoid download errors, set the SigLevel
setting of each
offical repo to PackageRequired
, e.g.
[core]
SigLevel = PackageRequired
Powerpill goes back to the beginning of my time with Arch Linux. The original version was a very simple Perl script that I posted on the forum shortly after signing up. Over time it acquired features and became a full Pacman wrapper, eventually duplicating a lot of ALPM’s functionality and spawning a collection of Perl libraries that I used in several applications. It was the monolithic hackjob of a programming noob using Perl. The codebase was an ugly mess but it worked.
It was, however, not to be. When Pacman finally switched to locally tarred databases the Perl libraries were abandoned. Like an aging movie star in Hollywood who’s already had too much plastic surgery, it was time to accept that the days of glory were past and gracefully bow out.
Reflector was salvaged from that tangled abyss of Perl, but Powerpill was left to be forgotten in its depths, intricately tied to its very core. The idea of Powerpill nevertheless lived on and as if by a haunting compulsion I gradually laid the groundwork for a spiritual successor. First came pacman2aria2, which was then refined into pm2ml. The latter included some simple wrapper scripts but they never caught on.
Building on pm2ml I eventually wrote a script named Parisync to test the efficiency of using Rsync for Pacman downloads. It worked and I wrote wrapper scripts for it that I happily used for several months. Again, it never caught on.
And so we arrive here. The current implementation of Powerpill builds directly on Parisync. Powerpill is reborn as a full yet superficial Pacman wrapper.
Wacka wacka, bitches!
powerpill.json - Powerpill configuration file
The Powerpill configuration file is a plain JSON file. By default it
is located at /etc/powerpill/powerpill.json
. The main
object is a dictionary that holds multiple dictionaries. The latter are
considered sections of the configuration file and contain options
related to different parts of Powerpill.
Note that all fields, including section names, are in lower case in the file. Upper case may appear in the man page during automatic conversion of the markdown file. For example, the first section is “aria2”, not “ARIA2”.
Options for configuring Aria2.
$HOME/.aria2/aria2.conf
. When run with sudo, this will
refer to root’s home directory. To disable this, use the
--no-conf
option. To use a powerpill-specific Aria2
configuration file, use the --conf-path
option, for example
--conf-path=/etc/powerpill/aria2.conf
.
The path to the Aria2 executable.
Default: /usr/bin/aria2c
Options for configuring Pacman.
The path to the Pacman executable.
Default: /usr/bin/pacman
Options for enabling Pacserve support. When enabled, Powerpill will preferentially download files from the Pacserve server to save bandwidth.
The URI of the Pacserve server. If null
then Pacserve
support is disabled. If set, this should only contain the protocol, the
host and the port, e.g.
"server" : "http://localhost:15678"
Options that control Powerpill behavior.
Options for configuring Reflector support. Reflector can retrieve the current list of mirrors from the Arch Linux server’s web API and use them for parallel downloads.
reflector --help
for details. The default configuration
file includes an entry named “args.unused” as a starting point. Change
this to “args” to enable the default arguments.
Options for configuring Rsync.
The list of arguments to pass to Rsync. In general, the only options
that should be passed are those that affect console output during the
operation, but not the operation itself. E.g. --no-motd
,
’–verbose`.
Sometimes Rsync will attempt to redownload a file if the modification time of the server file is newer than the local file. To prevent this the “–checksum” option may be used, but not all Rsync servers allow this option due to the additional overhead of computing the checksum.
The path to the Rsync executable.
Default: /usr/bin/rsync
A list of Rsync-enabled Pacman mirrors, double-quoted and separated
with commas. You can find them with reflector -p rsync
.
Each entry should include the full server URL starting with
rsync://
and ending with $repo/os/$arch
. Leave
this list empty or remove it from the file to disable Rsync support.
Syntax example:
“servers”: [ “rsync://example.com/archlinux/
By default Powerpill will display output from Aria2 and Rsync during
the download. To disable Aria2 output, add the --quiet
option to the Aria2 arguments list. To disable output from Rsync, remove
--progress
and --verbose
from the Rsync
arguments list.
$ powerpill --help
USAGE
powerpill [powerpill options] [pacman args]
OPTIONS
Powerpill should accept the same arguments as Pacman, e.g.
powerpill -Syu
See "pacman --help" for further help.
The following additional arguments are supported:
--powerpill-config <path>
The path to a Powerpill configuration file.
Default: /etc/powerpill/powerpill.json
--powerpill-clean
Clean up leftover .aria2 files from an unrecoverable download. Use this
option to resolve aria2c length mismatch errors.
--remote-time=true
to the default Aria2 arguments
in powerpill.json
.-Sl
and -Ss
when no list
or search arguments are given.powerpill/reflect databases
to
powerpill.json