The official command-line interface for the makedeb Package Repository

Related tags

Command-line mpr-cli
Overview

mpr-cli

This is the repository for the MPR CLI, the official command-line interface for the makedeb Package Repository.

Latest build status

Installation

Users have a few options for installing the MPR CLI:

From the Prebuilt-MPR

This is the recommended way to install the MPR CLI. It avoids the need to compile any software, allows for automatic upgrades via APT, and gets you set up in just a couple of minutes.

First, set up the Prebuilt-MPR on your system, then just run the following to install the MPR CLI:

sudo apt install mpr-cli

From the MPR

You can also install the MPR CLI directly from the MPR if you'd prefer that.

To install from source, run the following:

git clone 'https://mpr.makedeb.org/mpr-cli'
cd mpr-cli/
makedeb -si

The MPR CLI needs the latest version of the Rust compiler toolchain in order to build. It may work with older releases, but they're not tested against and aren't guaranteed to work. If you're system's repositories don't contain the latest release, the Rust toolchain can be installed from the MPR or the Prebuilt-MPR.

Contributing

If there's something you want added/fixed in the MPR CLI, feel free to open a pull request. There aren't many guidelines on what you should do quite yet, so just submit your changes and we can figure out what to do from there!

Comments
  • Unable to install from MPR

    Unable to install from MPR

    I was unable to install mist from the MPR manually with makedeb. Here is the output:

    error: failed to run custom build command for `rust-apt v0.3.0`
    
    Caused by:
      process didn't exit successfully: `/home/emma/mist/src/mist-0.8.0/target/release/build/rust-apt-0f28b79758bb7da8/build-script-build` (exit status: 1)
      --- stdout
      cargo:CXXBRIDGE_PREFIX=rust-apt
      cargo:CXXBRIDGE_DIR0=/home/emma/mist/src/mist-0.8.0/target/release/build/rust-apt-545f23bdf7bea3d0/out/cxxbridge/include
      cargo:CXXBRIDGE_DIR1=/home/emma/mist/src/mist-0.8.0/target/release/build/rust-apt-545f23bdf7bea3d0/out/cxxbridge/crate
      TARGET = Some("x86_64-unknown-linux-gnu")
      OPT_LEVEL = Some("3")
      HOST = Some("x86_64-unknown-linux-gnu")
      CXX_x86_64-unknown-linux-gnu = None
      CXX_x86_64_unknown_linux_gnu = None
      HOST_CXX = None
      CXX = None
      CXXFLAGS_x86_64-unknown-linux-gnu = None
      CXXFLAGS_x86_64_unknown_linux_gnu = None
      HOST_CXXFLAGS = None
      CXXFLAGS = Some("-march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions         -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security         -fstack-clash-protection -fcf-protection -Wp,-D_GLIBCXX_ASSERTIONS")
      CRATE_CC_NO_DEFAULTS = None
      DEBUG = Some("false")
      CARGO_CFG_TARGET_FEATURE = Some("fxsr,sse,sse2")
      CXX_x86_64-unknown-linux-gnu = None
      CXX_x86_64_unknown_linux_gnu = None
      HOST_CXX = None
      CXX = None
      CXXFLAGS_x86_64-unknown-linux-gnu = None
      CXXFLAGS_x86_64_unknown_linux_gnu = None
      HOST_CXXFLAGS = None
      CXXFLAGS = Some("-march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions         -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security         -fstack-clash-protection -fcf-protection -Wp,-D_GLIBCXX_ASSERTIONS")
      CRATE_CC_NO_DEFAULTS = None
      CARGO_CFG_TARGET_FEATURE = Some("fxsr,sse,sse2")
      running: "c++" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-m64" "-march=x86-64" "-mtune=generic" "-O2" "-pipe" "-fno-plt" "-fexceptions" "-Wp,-D_FORTIFY_SOURCE=2" "-Wformat" "-Werror=format-security" "-fstack-clash-protection" "-fcf-protection" "-Wp,-D_GLIBCXX_ASSERTIONS" "-I" "/home/emma/mist/src/mist-0.8.0/target/release/build/rust-apt-545f23bdf7bea3d0/out/cxxbridge/include" "-I" "/home/emma/mist/src/mist-0.8.0/target/release/build/rust-apt-545f23bdf7bea3d0/out/cxxbridge/crate" "-std=c++14" "-o" "/home/emma/mist/src/mist-0.8.0/target/release/build/rust-apt-545f23bdf7bea3d0/out/cxxbridge/sources/rust-apt/src/raw.rs.o" "-c" "/home/emma/mist/src/mist-0.8.0/target/release/build/rust-apt-545f23bdf7bea3d0/out/cxxbridge/sources/rust-apt/src/raw.rs.cc"
      cargo:warning=In file included from /home/emma/mist/src/mist-0.8.0/target/release/build/rust-apt-545f23bdf7bea3d0/out/cxxbridge/sources/rust-apt/src/raw.rs.cc:1:
      cargo:warning=/home/emma/mist/src/mist-0.8.0/target/release/build/rust-apt-545f23bdf7bea3d0/out/cxxbridge/crate/rust-apt/apt-pkg-c/apt-pkg.h:3:10: fatal error: apt-pkg/cachefile.h: No such file or directory
      cargo:warning=    3 | #include <apt-pkg/cachefile.h>
      cargo:warning=      |          ^~~~~~~~~~~~~~~~~~~~~
      cargo:warning=compilation terminated.
      exit status: 1
      running: "c++" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-m64" "-march=x86-64" "-mtune=generic" "-O2" "-pipe" "-fno-plt" "-fexceptions" "-Wp,-D_FORTIFY_SOURCE=2" "-Wformat" "-Werror=format-security" "-fstack-clash-protection" "-fcf-protection" "-Wp,-D_GLIBCXX_ASSERTIONS" "-I" "/home/emma/mist/src/mist-0.8.0/target/release/build/rust-apt-545f23bdf7bea3d0/out/cxxbridge/include" "-I" "/home/emma/mist/src/mist-0.8.0/target/release/build/rust-apt-545f23bdf7bea3d0/out/cxxbridge/crate" "-std=c++14" "-o" "/home/emma/mist/src/mist-0.8.0/target/release/build/rust-apt-545f23bdf7bea3d0/out/apt-pkg-c/apt-pkg.o" "-c" "apt-pkg-c/apt-pkg.cc"
      cargo:warning=apt-pkg-c/apt-pkg.cc:1:10: fatal error: apt-pkg/acquire-item.h: No such file or directory
      cargo:warning=    1 | #include <apt-pkg/acquire-item.h>
      cargo:warning=      |          ^~~~~~~~~~~~~~~~~~~~~~~~
      cargo:warning=compilation terminated.
      exit status: 1
    
      --- stderr
    
      CXX include path:
        /home/emma/mist/src/mist-0.8.0/target/release/build/rust-apt-545f23bdf7bea3d0/out/cxxbridge/include
        /home/emma/mist/src/mist-0.8.0/target/release/build/rust-apt-545f23bdf7bea3d0/out/cxxbridge/crate
    
    
      error occurred: Command "c++" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-m64" "-march=x86-64" "-mtune=generic" "-O2" "-pipe" "-fno-plt" "-fexceptions" "-Wp,-D_FORTIFY_SOURCE=2" "-Wformat" "-Werror=format-security" "-fstack-clash-protection" "-fcf-protection" "-Wp,-D_GLIBCXX_ASSERTIONS" "-I" "/home/emma/mist/src/mist-0.8.0/target/release/build/rust-apt-545f23bdf7bea3d0/out/cxxbridge/include" "-I" "/home/emma/mist/src/mist-0.8.0/target/release/build/rust-apt-545f23bdf7bea3d0/out/cxxbridge/crate" "-std=c++14" "-o" "/home/emma/mist/src/mist-0.8.0/target/release/build/rust-apt-545f23bdf7bea3d0/out/cxxbridge/sources/rust-apt/src/raw.rs.o" "-c" "/home/emma/mist/src/mist-0.8.0/target/release/build/rust-apt-545f23bdf7bea3d0/out/cxxbridge/sources/rust-apt/src/raw.rs.cc" with args "c++" did not execute successfully (status code exit status: 1).
    
    opened by emmatebibyte 8
  • #28: non-zero exit codes for 'list' and 'search' not found: initial commit

    #28: non-zero exit codes for 'list' and 'search' not found: initial commit

    Hey Hunter, saw you post on mist in /r/linux yesterday!

    As a fan of Arch/AUR(though using PopOS atm) i gave it a try and installed nodejs and npm from MPR - good stuff, i'd say!

    Then i checked out the mist repo - and bam, it's in rust!

    Well, i have some time on my hands and some rust experience, so why not contribute to a good project?!

    Here's the initial draft of #28.

    Given that there are a lot of hidden assumptions here(expected test structure? exitcode::USAGE for missing 'package base'? rest of subcommands?), i'd like to have some input from you on structure/tests/overall picture.

    Feel free to comment on PR, so it can be improved as you see fit.

    hacktoberfest-accepted 
    opened by tonky 7
  • Rename project

    Rename project

    The goal of this project is to eventually be a fully-fleshed MPR helper, with support for things like installing and updating packages (from both APT repos and the MPR). Likewise, I'd like to rename this project to something new, as doing something like sudo mpr install build-essential doesn't make much sense, considering that it's installing an APT package.

    If anyone has any project name ideas, feel free to leave them below.

    opened by hwittenborn 6
  • called `Option::unwrap()` on a `None` value', src/cache.rs:268:43

    called `Option::unwrap()` on a `None` value', src/cache.rs:268:43

    After a fresh install of mist, I am getting the following panic:

    ❯ mist search just
    thread 'main' panicked at 'called `Option::unwrap()` on a `None` value', src/cache.rs:268:43
    note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
    ❯
    
    opened by jrop 5
  • Convert to clap (4.x) derive

    Convert to clap (4.x) derive

    This PR takes advantage of more statically known type safety for CLI argument parsing, making use of clap's derive feature. I prefer this over so-called "stringly-typed" code, as less runtime checks have to be performed: i.e., there are notably less .unwrap()'s and if-guards for things that clap can check for automatically.

    opened by jrop 4
  • makedeb is not respecting options=('!strip') in PKGBUILD

    makedeb is not respecting options=('!strip') in PKGBUILD

    Exactly as the title says. Running on Ubuntu 22.04, and the strip module is still being called. Had to use extensions=() to prevent the module from loading, and then I ended up with a properly un-stripped binary.

    I was trying to make the https://mpr.makedeb.org/packages/xivlauncher package, for the record.

    opened by rankynbass 1
  • Update all dependencies

    Update all dependencies

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | clap | dependencies | patch | 3.2.14 -> 3.2.16 | | serde (source) | dependencies | patch | 1.0.140 -> 1.0.142 | | serde_json | dependencies | patch | 1.0.82 -> 1.0.83 |


    Release Notes

    clap-rs/clap

    v3.2.16

    Compare Source

    Fixes
    • Ensure required arguments appear in errors when they are also members of a group (#​4004)

    v3.2.15

    Compare Source

    Features
    • (derive) New default_values_t and default_values_os_t attributes
    serde-rs/serde

    v1.0.142

    Compare Source

    v1.0.141

    Compare Source

    serde-rs/json

    v1.0.83

    Compare Source


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


    • [ ] If you want to rebase/retry this PR, click this checkbox.

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 0
  • Update all dependencies

    Update all dependencies

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | clap | dependencies | patch | 3.2.8 -> 3.2.14 | | serde (source) | dependencies | patch | 1.0.138 -> 1.0.140 |


    Release Notes

    clap-rs/clap

    v3.2.14

    Compare Source

    Fixes
    • A multple_values positional followed by another positional now works with multiple flags

    v3.2.13

    Compare Source

    Documentation
    • Pulled in tutorials, cookbook, and derive reference into rustdoc

    v3.2.12

    Compare Source

    Fixes
    • Allow an arg to declare a conflict with a group

    v3.2.11

    Compare Source

    Features
    • Added Arg::get_all_short_aliaes and Arg::get_all_aliases

    v3.2.10

    Compare Source

    Fixes
    • Loosen lifetime on Command::mut_subcommand
    serde-rs/serde

    v1.0.140

    Compare Source

    v1.0.139

    Compare Source


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


    • [ ] If you want to rebase/retry this PR, click this checkbox.

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 0
  • Update all dependencies

    Update all dependencies

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | clap | dependencies | patch | 3.2.1 -> 3.2.8 | | reqwest | dependencies | patch | 0.11.10 -> 0.11.11 | | serde (source) | dependencies | patch | 1.0.137 -> 1.0.138 | | serde_json | dependencies | patch | 1.0.81 -> 1.0.82 |


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Renovate will not automatically rebase this PR, because other commits have been found.

    👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


    • [ ] If you want to rebase/retry this PR, click this checkbox. ⚠ Warning: custom changes will be lost.

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 0
  • Configure Renovate

    Configure Renovate

    Mend Renovate

    Welcome to Renovate! This is an onboarding PR to help you understand and configure settings before regular Pull Requests begin.

    🚦 To activate Renovate, merge this Pull Request. To disable Renovate, simply close this Pull Request unmerged.


    Detected Package Files

    • Cargo.toml (cargo)

    Configuration

    🔡 Renovate has detected a custom config for this PR. Feel free to ask for help if you have any doubts and would like it reviewed.

    Important: Now that this branch is edited, Renovate can't rebase it from the base branch any more. If you make changes to the base branch that could impact this onboarding PR, please merge them manually.

    What to Expect

    It looks like your repository dependencies are already up-to-date and no Pull Requests will be necessary right away.


    ❓ Got questions? Check out Renovate's Docs, particularly the Getting Started section. If you need any further assistance then you can also request help here.


    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 0
  • Be more precise on why `mist-bin` fails to package when on an unsupported distribution

    Be more precise on why `mist-bin` fails to package when on an unsupported distribution

    When running makedeb with the mist-bin package on an unsupported distribution, a curl error shows without stating that the user simply isn't on a supported distribution. An image by @​siduck:matrix.org on Matrix shows the issue:

    opened by hwittenborn 0
  • resolve impossible build scenario

    resolve impossible build scenario

    currently, attempting to follow the official documentation here results in the following:

    cobalt@ideapad-flex-5:~$ git clone 'https://mpr.makedeb.org/mist'
    cd mist/
    makedeb -si -H 'MPR-Package: yes'
    Cloning into 'mist'...
    remote: Enumerating objects: 61, done.
    remote: Counting objects: 100% (61/61), done.
    remote: Compressing objects: 100% (61/61), done.
    remote: Total 61 (delta 29), reused 0 (delta 0), pack-reused 0
    Receiving objects: 100% (61/61), 6.82 KiB | 6.82 MiB/s, done.
    Resolving deltas: 100% (29/29), done.
    [#] Making package: mist 0.10.0-1 (Sun 04 Dec 2022 08:54:44 PM EST)
    [#] Checking for missing dependencies...
    [#] Installing missing dependencies...
    [sudo] password for cobalt: 
    Reading package lists... Done
    Building dependency tree... Done
    Reading state information... Done
    Some packages could not be installed. This may mean that you have
    requested an impossible situation or if you are using the unstable
    distribution that some required packages have not yet been created
    or been moved out of Incoming.
    The following information may help to resolve the situation:
    
    The following packages have unmet dependencies:
     satisfy:command-line : Depends: rustup but it is not installable
    E: Unable to correct problems, you have held broken packages.
    [!] Failed to install missing dependencies.
    

    I've installed rustup following the script on their official site, but makedeb can't see this because it's not installed as an apt package.

    opened by cobalt2727 2
  • All MPR packages are asked to be installed via APT, even if they can't be

    All MPR packages are asked to be installed via APT, even if they can't be

    From Matrix:

    hiddeninthesand

    btw there's a bug where it'll offer the apt/mpr prompt on all packages, not just ones with versions in repos

    @hwittenborn

    It might be because Mist is registering those dummy debs and thinking those are from APT, I think that might be what's up

    opened by hwittenborn 0
  • dpkg-deb Version parse error

    dpkg-deb Version parse error

    On running mist update, I get the following-

    Err: Failed to process MPR package 'libx52'. The package won't be available to install from the MPR.
    dpkg-deb: error: parsing file 'libx52/DEBIAN/control' near line 2 package 'libx52':
     'Version' field value '0.2.3_4_gb45dc59-1': invalid character in version number
    Err: Failed to process MPR package 'bashtop-git'. The package won't be available to install from the MPR.
    dpkg-deb: error: parsing file 'bashtop-git/DEBIAN/control' near line 2 package 'bashtop-git':
     'Version' field value 'r313.4bf71e6-1': version number does not start with digit
    

    The error comes from https://github.com/makedeb/mist/blob/1cba9249bbba22435912de12d61866e6e84a7a7b/src/update.rs#L221-L224 I have modified the source code to also print the stderr of the failed command to get the full error messages printed above.

    message::error(&format!(
        "Failed to process MPR package '{}'. The package won't be available to install from the MPR.\n{}",
        pkg.pkgname.bold().green(),
        String::from_utf8_lossy(&cmd.stderr)
    ));
    

    System info: Kubuntu 22.10 dpkg-deb 1.21.9

    opened by iamkroot 2
  • Cannot run mist on ARM64

    Cannot run mist on ARM64

    Currently the prebuilt mpr doesn't support arm64 so I can't install from there, and I've had issues building it from source with makedeb, building from binary installs but won't run, giving the following error.

    -bash: /usr/bin/mist: cannot execute binary file: Exec format error

    opened by Cwavs 7
Releases(v0.10.0)
Owner
makedeb
Organization to manage makedeb and its related projects
makedeb
Yfin is the Official package manager for the Y-flat programming language

Yfin is the Official package manager for the Y-flat programming language. Yfin allows the user to install, upgrade, and uninstall packages. It also allows a user to initialize a package with the Y-flat package structure and files automatically generated. In future, Yfin will also allow users to publish packages.

Jake Roggenbuck 0 Mar 3, 2022
Official repository for v3's backend

RoChat This repository holds the official source code for RoChat's new backend. Previously, the old backend was written in PHP. The newer one, coming

null 1 Apr 24, 2022
this-week-in-neovim.org official webapp repository

This Week In Neovim This repository holds the source code of https://this-week-in-neovim.org. Architecture How does it run in production Automatic upd

Dimitri Sabadie 189 Jun 23, 2023
Gecko's trusty package manager and command-line utility.

Geckos have super-powers, ya'know? Grip is Gecko's trusty package manager and command-line utility. USAGE: grip [FLAGS] [file] [SUBCOMMAND] FLAGS

Gecko 2 Jan 3, 2022
A command line tool written in Rust and designed to be a modern build tool + package manager for C/C++ projects.

CCake CCake is a command line tool written in Rust and designed to be a modern build tool + package manager for C/C++ projects. Goals To be easily und

Boston Vanseghi 4 Oct 24, 2022
Small command-line tool to switch monitor inputs from command line

swmon Small command-line tool to switch monitor inputs from command line Installation git clone https://github.com/cr1901/swmon cargo install --path .

William D. Jones 5 Aug 20, 2022
A command line tool, manage your hundreds of repository, written with Rust

A command line tool, manage your hundreds of repository, written with Rust

Axetroy 4 Aug 16, 2022
a command-line tool that transforms a Git repository into a minimal format for ChatGPT queries

gprepo /dʒiːpiːˈɹi:pi:oʊ/ a command-line tool that transforms a Git repository into a minimal format for ChatGPT queries. Features Excludes LICENSE an

null 6 Apr 20, 2023
Low-level Rust library for implementing terminal command line interface, like in embedded systems.

Terminal CLI Need to build an interactive command prompt, with commands, properties and with full autocomplete? This is for you. Example, output only

HashMismatch 47 Nov 25, 2022
Crunch is a command-line interface (CLI) to claim staking rewards every X hours for Substrate-based chains

crunch · crunch is a command-line interface (CLI) to claim staking rewards every X hours for Substrate-based chains. Why use crunch To automate payout

null 39 Dec 8, 2022
Command line interface for Solana Metaplex programs.

Metaplex Command Line Interface This is a command line interface for creating and managing non-fungible tokens on the Solana blockchain through the Me

Caleb Everett 26 Jul 12, 2022
Railway CLI - This is the command line interface for Railway.

Railway CLI This is the command line interface for Railway. Use it to connect your code to Railways infrastructure without needing to worry about envi

Nebula 4 Mar 20, 2022
Command line interface as a function.

Command line interface as a function. fncmd fncmd is an opinionated command line parser frontend that wraps around clap. The functionality is mostly i

Yu Shimura 67 Dec 7, 2022
A silly program written in Rust to output nonsensical sentences in the command line interface.

A silly program written in Rust to output nonsensical sentences in the command line interface.

Rachael Ava 1 Dec 13, 2021
Scouty is a command-line interface (CLI) to keep an eye on substrate-based chains and hook things up

scouty is a command-line interface (CLI) to keep an eye on substrate-based chains and hook things up

TurboFlakes 15 Aug 6, 2022
A standalone Command Line Interface debugging tool for The Witcher 3 written in Rust

A standalone Command Line Interface debugging tool for The Witcher 3 written in Rust. This tool is intended for Witcher 3 modders who make mainly scri

Przemysław Cedro 5 Apr 20, 2022
A command line interface meant to bridge the gap between Rust and shell scripting

clawbang A command line interface meant to bridge the gap between Rust and shell scripting. Intended for use with HEREDOCs and shebangs: $ clawbang <<

Chris Dickinson 52 Mar 25, 2022
Gix is a command-line interface (CLI) to access git repositories

gix is a command-line interface (CLI) to access git repositories. It's written to optimize the user-experience, and perform as good or better than the

Sebastian Thiel 5.2k Jan 5, 2023
A command line interface for trash written in Rust (WIP)

trashctl A command line interface for trash Features Add file to trash List files Permanently delete a file Restore file Empty the trash Documentation

0xMRTT 2 Nov 11, 2022