5 releases

0.2.3 Mar 2, 2024
0.2.2 Nov 19, 2023
0.2.1 Nov 14, 2023
0.2.0 Nov 11, 2023
0.1.0 Jan 16, 2023

#55 in Command-line interface

Download history 4/week @ 2024-02-11 140/week @ 2024-02-25 37/week @ 2024-03-03 70/week @ 2024-03-10 2/week @ 2024-03-17 34/week @ 2024-03-31

109 downloads per month

MIT/Apache

180KB
3.5K SLoC

GitHub Workflow Status Crates.io Crates.io msrv

mirro-rs

A mirrorlist manager for Arch Linux systems
View usage examples »

Report Bug · Request Feature

app

mirro-rs provides a TUI to help you better visualise managing your mirrorlist.

Features

  • Sorting
    • Completion - The number of mirror checks (as a percentage) that have successfully connected and disconnected from the given URL. If this is below 100%, the mirror may be unreliable.
    • Score - It is currently calculated as (hours delay + average duration + standard deviation) / completion percentage. Lower is better.
    • Standard deviation - The standard deviation of the connect and retrieval time. A high standard deviation can indicate an unstable or overloaded mirror.
    • Delay - The mean value of last check − last sync for each check of this mirror URL. Due to the timing of mirror checks, any value under one hour should be viewed as ideal.
    • Rate - sort by download speed
  • Filtering
    • Age
    • Country
    • ipv4, ipv6, isos
    • Protocol - http, https, ftp or rsync
    • Completion Percentage

Getting Started

Installation

Install from the Arch Linux official repository:

pacman -S mirro-rs

mirro-rs is also available in the AUR. If you're using paru:

paru -S mirro-rs-git

Note By default, this enables configuration through toml files. You should edit the PKGBUILD if you prefer another configuration format (or to disable configuration files altogether).

Manual Compilation

  • cargo

    You need to have cargo installed to build the application. The easiest way to set this up is installing rustup.

    pacman -S rustup
    

    Install a rust toolchain:

    rustup install stable
    
  • git

    Clone the repository:

    git clone https://github.com/rtkay123/mirro-rs
    

    You may then build the release target:

cargo build --release

Usage

Pass the -h or --help flag to mirro-rs to view configuration parameters. To preview http or https mirrors that were successfully synchronised in the last 24 hours and use /home/user/mirrorlist as an export location for the best (at max) 50:

mirro-rs --export 50 --protocols https --protocols http --age 24 --outfile "/home/user/mirrorlist"

To do the same but restrict the sources to be from France and the UK:

mirro-rs --export 50 --protocols https --protocols http --age 24 --outfile "/home/user/mirrorlist" -c France -c "United Kingdom"

Configuration

For convenience, mirro-rs optionally supports reading a configuration [default: $XDG_CONFIG_HOME/mirro-rs/mirro-rs.toml] for general preferences. If none is available, [default: $XDG_CONFIG_HOME/mirro-rs.toml] will be used. If both are available, the former takes priority.

For toml support:

cargo build --release --features toml

For json support:

cargo build --release --features json

Likewise, for yaml support:

cargo build --release --features yaml

Note If you enable all configuration file features, if the configuration directory contains more than one valid file format, the order of priority goes from toml -> json -> yaml.

Sample configuration files are provided in the examples folder.

A minimal mirro-rs.toml config file could look like:

cache-ttl = 24
timeout = 10

Note Changing the configuration file at runtime will overwrite the parameters that were set as CLI arguments

License

Licensed under either of

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~25–42MB
~514K SLoC