--- tags: Content --- FAQ === <!--Write Frequently Asked Questions here--> ## What is conda? conda is an open-source, cross-platform binary package manager that can be used to create many completely separate development environments with vastly different package installations. The conda organization manages the tools and repositories that are used to create and update the conda package manager. --- *Start Alternative:* **`conda` is an open-source, cross-platform environment and binary package manager. Conda is also an *ecosystem* for package and runtime environment management. Finally, conda is a community of people that support and use the conda ecosystem.** ### The `conda` Package and Environment Manager The conda Ecosystem all started with the `conda` package and environment manager program. The `conda` program is open-source, and supports binary packages across Windows, macOS, Linux and z/OS. `conda` also helps users create completely separate development environments with vastly different package installations. The `conda` program is just one of many tools in the conda ecosystem. ### Conda Ecosystem The *conda ecosystem* includes tools, repositories, and other resources that are used to create, update, manage, and distribute *conda-compatible* packages. The ecosystem includes the *conda community* and the *conda Organization*, which govens overall direction and helps manage shared resources like this website. ### How do we know which meaning of conda we are talking about? When refering to the conda ecosystem, community, or organization we will try to always use just a plain text "conda" (or "Conda" if at the start of a sentence). When refering to `conda` the computer program we will try to always show it in a `monospaced font`. Still, sometimes it will be hard to tell. **:TODO: link to CEP here?** *End Alternative:* --- ## What needs does the conda ecosystem address? ### Package management Conda provides a cross-platform, lanugage-agnostic system for installing and managing binary sofware packages. Most operating systems and programming language communities have package management systems. For example, Linux has the [Apt](https://www.debian.org/doc/manuals/debian-reference/ch02.en.html) and [DNF(Yum)](https://en.wikipedia.org/wiki/DNF_(software)) managers, Python has [PIP](https://pypi.org/project/pip/), and R has [CRAN](https://cran.r-project.org/). Each of these systems provides a choherent way to install software on that operating system, or written in that language. Package management is hard. When you install something like the [SciPy library](https://scipy.org/) or the [GCC compiler](https://gcc.gnu.org/), you are not just installing those things, you are also potentially installing hundreds of other packages, possibly written in many programming languages, that support those packages. Package managers have to track what has previously been installed, what needs to newly installed, and what if anything needs to be upgraded. The conda ecosystem supports package installation on all major operating systems and across any programming language, allowing it to unify package management under one environment. ### Environment management The conda ecosystem also addresses an issue that most other package managers don't. When you a package manager like PIP, Yum, or Apt to install a software package, you are installing it for the entire computer. This is fine if everything you do requires the same version of every package. However, you often need different and incompatible versions of software for different tasks. You can manually work around this but it's tedious. The most common way to address this is to use an *environment manager* that allows you to install software into multiple parallel environments. In the Python ecosystem [`venv`](https://docs.python.org/3/library/venv.html) provides this capability. Conda integrates package and environment management. With conda the tools you use to install software are the same as ones you use for environment management. Conda also enables you create and manage environments with components written in multiple languages. ## What is a conda package? A conda package is a compressed tarball file (.tar.bz2) or .conda file that contains: - system-level libraries. - Python or other modules. - executable programs and other components. - metadata under the info/ directory. - a collection of files that are installed directly into an install prefix. Conda keeps track of the dependencies between packages and platforms. The conda package format is identical across platforms and operating systems. Only files, including symbolic links, are part of a conda package. Directories are not included. Directories are created and removed as needed, but you cannot create an empty directory from the tar archive directly. A conda package is ... [STEAL FROM HERE](https://docs.conda.io/projects/conda/en/latest/user-guide/concepts/packages.html) ## What is a conda environment? A conda environment is a directory that contains a specific collection of conda packages that you have installed. A conda environment is ... [STEAL FROM HERE](https://docs.conda.io/projects/conda/en/latest/user-guide/concepts/environments.html) ## Why is conda slow to install my packages? ## What is the conda base environment?