Home Anaconda Distribution Create Rust Virtual Environments Using Conda In Linux
How To Create Rust Virtual Environments Using Conda In Linux

Create Rust Virtual Environments Using Conda In Linux

By sk
852 Views

As you may already know, Anaconda distribution ships with a command line package and virtual environment manager called Conda. Even though it is mainly developed for Python, it is actually language-agnostic and not tied to any specific programming language. Using Conda, we can install many programming languages in multiple different environments. We already have shown you how to create NodeJS environment using Conda. Today, we will see how to create Rust virtual environments using Conda in Linux.

What is Rust?

Rust or rust-lang is a cross-platform, fast, modern, and open source systems programming language. It is bundled with many features such as zero-cost abstractions, move semantics, guaranteed memory safety, threads without data races, trait-based generics, pattern matching, type inference, minimal runtime, and efficient C bindings etc. Popular software tech companies and organizations like Canonical, Dropbox, and Mozilla etc., are actively involved in Rust development.

Create Rust Virtual Environments Using Conda In Linux

The Rust toolchain installer named rustup is the officially recommended script to install Rust in Linux. However, it is not the only way. We can use Conda package manger to install and manage Rust programming language as well.

To create a new Rust environment using conda and install necessary software for that environment, run:

$ conda create -c conda-forge -n rustenv rust

The above command will create a new virtual environment named "rustenv" and install all necessary packages for that environment from conda-forge channel.

Sample output:

Collecting package metadata (current_repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: /home/sk/anaconda3/envs/rustenv

  added / updated specs:
    - rust


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    _libgcc_mutex-0.1          |      conda_forge           3 KB  conda-forge
    _openmp_mutex-4.5          |            1_gnu          22 KB  conda-forge
    binutils_impl_linux-64-2.35.1|       h193b22a_2         9.3 MB  conda-forge
    gcc_impl_linux-64-9.3.0    |      h70c0ae5_18        43.1 MB  conda-forge
    kernel-headers_linux-64-2.6.32|      h77966d4_13         707 KB  conda-forge
    libgcc-devel_linux-64-9.3.0|      h7864c58_18         4.0 MB  conda-forge
    rust-1.50.0                |       h3bf0571_0       169.4 MB  conda-forge
    rust-std-x86_64-unknown-linux-gnu-1.50.0|       hc1431ca_0        37.8 MB  conda-forge
    sysroot_linux-64-2.12      |      h77966d4_13        30.2 MB  conda-forge
    ------------------------------------------------------------
                                           Total:       294.6 MB

The following NEW packages will be INSTALLED:

  _libgcc_mutex      conda-forge/linux-64::_libgcc_mutex-0.1-conda_forge
  _openmp_mutex      conda-forge/linux-64::_openmp_mutex-4.5-1_gnu
  binutils_impl_lin~ conda-forge/linux-64::binutils_impl_linux-64-2.35.1-h193b22a_2
  gcc_impl_linux-64  conda-forge/linux-64::gcc_impl_linux-64-9.3.0-h70c0ae5_18
  kernel-headers_li~ conda-forge/noarch::kernel-headers_linux-64-2.6.32-h77966d4_13
  ld_impl_linux-64   conda-forge/linux-64::ld_impl_linux-64-2.35.1-hea4e1c9_2
  libgcc-devel_linu~ conda-forge/linux-64::libgcc-devel_linux-64-9.3.0-h7864c58_18
  libgcc-ng          conda-forge/linux-64::libgcc-ng-9.3.0-h2828fa1_18
  libgomp            conda-forge/linux-64::libgomp-9.3.0-h2828fa1_18
  libstdcxx-ng       conda-forge/linux-64::libstdcxx-ng-9.3.0-h6de172a_18
  rust               conda-forge/linux-64::rust-1.50.0-h3bf0571_0
  rust-std-x86_64-u~ conda-forge/noarch::rust-std-x86_64-unknown-linux-gnu-1.50.0-hc1431ca_0
  sysroot_linux-64   conda-forge/noarch::sysroot_linux-64-2.12-h77966d4_13

Proceed ([y]/n)? y

Downloading and Extracting Packages
libgcc-devel_linux-6 | 4.0 MB    | ############################## | 100% 
rust-1.50.0          | 169.4 MB  | ############################## | 100% 
rust-std-x86_64-unkn | 37.8 MB   | ############################################################################################# | 100% 
gcc_impl_linux-64-9. | 43.1 MB   | ############################################################################################# | 100% 
_openmp_mutex-4.5    | 22 KB     | ############################################################################################# | 100% 
binutils_impl_linux- | 9.3 MB    | ############################################################################################# | 100% 
_libgcc_mutex-0.1    | 3 KB      | ############################################################################################# | 100% 
kernel-headers_linux | 707 KB    | ############################################################################################# | 100% 
sysroot_linux-64-2.1 | 30.2 MB   | ############################################################################################# | 100% 
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate rustenv
#
# To deactivate an active environment, use
#
#     $ conda deactivate
Create Rust virtual environments using Conda
Create Rust virtual environments using Conda

Please note that you can also install Rust packages from the official defaults channel. However, Conda-forge channel provides most up-to-date packages than the defaults channel.

After creating the Rust environments, make sure it exists by listing the available environments:

$ conda info --envs

Sample output:

# conda environments:
#
base                  *  /home/sk/anaconda3
rustenv                  /home/sk/anaconda3/envs/rustenv

Yes, a new Rust environment named rustenv is created! Let us activate this environment using command:

$ conda activate rustenv

Verify the installed Rust version:

$ rustc --version
rustc 1.50.0 (cb75ad5db 2021-02-10)

Check the Cargo package manager version:

$ cargo --version
cargo 1.50.0 (f04e7fab7 2021-02-04)
Check rustc and cargo version in Linux
Check rustc and cargo version in Linux

Everything seems OK. Start using this environment to run, debug and test your Rust programs.

Add Cargo to your $PATH

If you have installed Rust with rustup, everything is automated. The rustup installer script downloads and installs the official compiler for the Rust programming language, and its package manager named Cargo, and it adds the cargorustcrustup and other commands to Cargo's bin directory, located at ~/.cargo/bin. And finally, it adds the Cargo's bin directory to your PATH environment variable by modifying the profile file located at ~/.profile.

But in this case, you have to add the Cargo's bin directory to your $PATH by yourself. To do so, edit the profile file located at ~/.bashrc or ~/.profile or whatever you use:

$ nano ~/.bashrc

Add the following line at the end:

export PATH=/home/sk/.cargo/bin:$PATH
Add the Cargo's bin directory to your profile file
Add the Cargo's bin directory to your profile file

Press CTRL+O followed by CTRL+X to save the file and exit.

Run the following command for the changes to take effect immediately:

$ source ~/.bashrc

Replace ~/.bashrc with your actual profile file.

Deactivate Rust virtual environment

Once you are done, deactivate the Rust virtual environment using command:

$ conda deactivate

Delete Rust virtual environment

Make sure you've deactivated the environment:

$ conda deactivate

Then, delete the rust environment with command:

$ conda env remove -n rustenv

If you don't know the exact name of the environment, simply list all available environments using conda info --envs command which will give you the details of all environments and then delete the correct environment.

Related read:

You May Also Like

Leave a Comment

* By using this form you agree with the storage and handling of your data by this website.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More