Pacman wrapper for parallel and segmented downloads.
Arch Forum ID:
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/powerpill.json by default. Refer to the powerpill.json man page for details.
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.conf. 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.
The list of arguments to pass to the Aria2 binary. See Aria2's man page for details. By default Aria2 will also load
$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
The path to the Aria2 executable.
Options for configuring Pacman.
The path to the configuration file.
The path to the Pacman executable.
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.
Present a package selection dialogue when downloading package groups.
Use Reflector when retrieving databases. This may lead to mismatches between databases and their signatures if the retrieved mirrors are not synchronized.
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 --helpfor 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.
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.
If true, Rsync will only be used to download the databases and all package downloads will be handled by Aria2.
The path to the Rsync executable.
A list of Rsync-enabled Pacman mirrors. 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.
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
--verbose from the Rsync arguments list.
$ powerpill --help USAGE powerpill [powerpill options] [pacman args] OPTIONS Powerpill should accept the same arguments as Pacman in most cases, e.g. "powerpill -Syu". See "pacman --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=trueto the default Aria2 arguments in
-Sswhen no list or search arguments are given.