Go to file
Wolf Vollprecht 6d25f1f80e update mamba banner 2021-02-02 10:06:04 +01:00
.github/workflows use setup-miniconda from conda-incubator 2020-11-17 10:39:33 +01:00
data fix issue with path containing whitespaces 2020-11-20 11:06:57 +01:00
docs update mamba banner 2021-02-02 10:06:04 +01:00
include/mamba call pthread_cancelstate and type at the right place' 2021-02-02 09:28:54 +01:00
mamba fix import order 2021-01-27 18:21:17 -05:00
src first extract into temporary dir, then move to final pkgs cache 2021-02-02 09:43:37 +01:00
test Merge pull request #597 from wolfv/explicit_specs_ii 2020-11-18 18:25:38 +01:00
.appveyor.yml Fix win (#63) 2019-12-11 15:20:04 +01:00
.clang-format Add cpp linter and fix warnings 2020-08-03 20:04:50 +01:00
.flake8 Add pre-commit configuration 2020-08-02 18:58:09 +01:00
.gitignore Ignore version.hpp 2020-10-29 10:44:20 +01:00
.isort.cfg Add pre-commit configuration 2020-08-02 18:58:09 +01:00
.pre-commit-config.yaml Add cpp linter and fix warnings 2020-08-03 20:04:50 +01:00
.readthedocs.yml CI: Fix lint issue 2020-10-19 11:25:08 +02:00
CHANGELOG release 0.7.10 2021-01-22 13:13:19 +01:00
CMakeLists.txt more uniform error handling in micromamba, and retry when solve fails / repodata corrupted 2021-01-13 18:24:53 +01:00
CONTRIBUTING.md Linting 2020-08-13 19:46:57 +02:00
LICENSE Add copyright headers 2020-07-10 11:08:44 +02:00
README.md Add a RTD badge 2021-01-05 15:50:16 +10:00
mambaConfig.cmake.in Makes mamba easy to find to other projects dependable on it 2020-08-13 19:25:23 +02:00
setup.py add some noarch testing 2020-11-10 11:27:19 +01:00

README.md

mamba header image

The Fast Cross-Platform Package Manager

part of mamba-org
Package Manager mamba Package Server quetz Package Builder boa

mamba

Build Status Join the Gitter Chat docs

Mamba is a reimplementation of the conda package manager in C++.

  • parallel downloading of repository data and package files using multi-threading
  • libsolv for much faster dependency solving, a state of the art library used in the RPM package manager of Red Hat, Fedora and OpenSUSE
  • core parts of mamba are implemented in C++ for maximum efficiency

At the same time, mamba utilize the same command line parser, package installation and deinstallation code and transaction verification routines as conda to stay as compatible as possible.

Mamba is part of a bigger ecosystem to make scientific packaging more sustainable. You can read our announcement blog post. The ecosystem also consists of quetz, an open source conda package server and boa, a fast conda package builder.

Installation

It's advised to install mamba from conda-forge. If you already have conda:

conda install mamba -c conda-forge

otherwise it's best to start with Miniconda. If you want to experiment with the latest software, you can also try micromamba (more below).

Installing conda packages with mamba

Now you are ready to install packages with

mamba install xtensor-r -c conda-forge

for example.

Additional features

Mamba comes with features on top of stock conda. To efficiently query repositories and query package dependencies you can use mamba repoquery.

Here are some examples:

mamba repoquery search xtensor will show you all available xtensor packages. You can also specify more constraints on this search query, for example mamba repoquery search "xtensor>=0.18"

mamba repoquery depends xtensor will show you a tree view of the dependencies of xtensor.

$ mamba repoquery depends xtensor

xtensor == 0.21.5
  ├─ libgcc-ng [>=7.3.0]
  │ ├─ _libgcc_mutex [0.1 conda_forge]
  │ └─ _openmp_mutex [>=4.5]
  │   ├─ _libgcc_mutex already visited
  │   └─ libgomp [>=7.3.0]
  │     └─ _libgcc_mutex already visited
  ├─ libstdcxx-ng [>=7.3.0]
  └─ xtl [>=0.6.9,<0.7]
    ├─ libgcc-ng already visited
    └─ libstdcxx-ng already visited

And you can ask for the inverse, which packages depend on some other package (e.g. ipython) using whoneeds.

$ mamba repoquery whoneeds ipython

 Name            Version Build          Channel
──────────────────────────────────────────────────
 ipykernel       5.2.1   py37h43977f1_0 installed
 ipywidgets      7.5.1   py_0           installed
 jupyter_console 6.1.0   py_1           installed

With the --tree (or -t) flag, you can get the same information in a tree.

micromamba

micromamba is a tiny version of the mamba package manager. It is a pure C++ package with a separate command line interface. It can be used to bootstrap environments (as an alternative to miniconda), but it's currently experimental. The benefit is that it's very tiny and does not come with a default version of Python.

micromamba works in the bash & zsh shell on Linux & OS X. It's completely statically linked, which allows you to drop it in some place and just execute it.

Note: it's advised to use micromamba in containers & CI only.

Download and unzip the executable (from the official conda-forge package):

wget -qO- https://micromamba.snakepit.net/api/micromamba/linux-64/latest | tar -xvj bin/micromamba

We can use ./micromamba shell init ... to initialize a shell (.bashrc) and a new root environment in ~/micromamba:

./bin/micromamba shell init -s bash -p ~/micromamba
source ~/.bashrc

Now you can activate the base environment and install new packages, or create other environments.

Note: currently the -c arguments have to come at the end of the command line.

micromamba activate
micromamba install python=3.6 jupyter -c conda-forge
# or
micromamba create -p /some/new/prefix xtensor -c conda-forge
micromamba activate /some/new/prefix

For more instructions (including OS X) check out https://gist.github.com/wolfv/fe1ea521979973ab1d016d95a589dcde

Development installation

Make sure to have the following requirements in your conda environment:

mamba install cmake compilers pybind11 libsolv libarchive libcurl nlohmann_json pip cpp-filesystem yaml-cpp -c conda-forge

If you build mamba in a different environment than base, you must also install conda in that environment:

mamba install conda -c conda-forge

For a local (dev) build, run pip install -e .. This will build and install mamba in the conda environment.

cmake based build

You will additionally need to install cmake and cli11 for micromamba:

mamba install -c conda-forge cli11 cmake

For the C++ tests, you need Google Tests installed (e.g. mamba install gtest). To build the program using CMake, the following line needs to be used:

cmake .. \
    -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX \
    -DPYTHON_EXECUTABLE=$CONDA_PREFIX/bin/python3 \
    -DPYTHON_LIBRARIES=$CONDA_PREFIX/lib/libpython3.7m.so \
    -DENABLE_TESTS=ON

Support us

For questions, you can also join us on the QuantStack Chat or on the conda channel (note that this project is not officially affiliated with conda or Anaconda Inc.).

License

We use a shared copyright model that enables all contributors to maintain the copyright on their contributions.

This software is licensed under the BSD-3-Clause license. See the LICENSE file for details.