如何在 Ubuntu 22.04 上安装和使用 Rust 编程语言环境

简介

Rust 是一门由 Mozilla 开发的系统编程语言,专注于性能、可靠性和内存安全。它在没有垃圾收集的情况下实现了内存安全,这使其成为构建对性能要求苛刻的应用程序(如操作系统、游戏引擎和嵌入式系统)的理想选择。

接下来,我将一步一步教大家如何进行安装和部署!!

准备工作

服务器准备

必要前提:

  • 一个充满求知欲的大脑。
  • 一台 Linux 服务器(推荐腾讯云、阿里云或雨云等)。

我将以 雨云 为例,带大家创建一台自己的云服务器,以便学习本篇文章的内容。

注册链接: https://rainyun.ivwv.site

创建雨云服务器

以下步骤仅供参考,请根据实际需求选择配置。

  • 点击 云产品云服务器立即购买
  • 选择距离你较近的区域,以保证低延迟。

https://img-blog.csdnimg.cn/img_convert/4c16271f125adea69da6ed9e7b2a4226.png

  • 按照自己需求选择配置,选择Ubuntu 22.04 版本,按照自己需求是否预装Docker。
  • 最后按照提示进行购买。
  • 购买后等待机器部署完毕,点击刚刚创建好的服务器,进入管理面板,找到远程连接相关信息。

https://img-blog.csdnimg.cn/img_convert/414570cd3da48d4cc4bf51489992000b.png

  • 我们使用 PowerShell 进行 SSH 远程连接到服务器,Win+R 打开运行窗口,输入 powershell 后点击确定。

https://img-blog.csdnimg.cn/img_convert/c8afbeb764459a37a8451dd2ed8eeff1.png

  • 输入 ssh root@你的服务器IP 例如 ssh root@154.9.227.239 回车后,首次需要输入 yes,再次回车后即可登录服务器。

https://img-blog.csdnimg.cn/img_convert/ea5814f1d1068ca9fa2bb94631cfbdf1.png

  • 到此为止,我们的云服务器就远程连接上了。

通过 APT 安装 Rust

默认的 Ubuntu 存储库提供了 Rust 编译器软件包。在撰写本文时,Ubuntu 存储库提供 Rust 编译器 v1.61。如果你只有一个 Rust 应用程序项目,并且不需要复杂的项目环境,那么通过 APT 安装 Rust 是一个不错的选择。

首先,运行以下 apt 命令来更新和刷新你的 Ubuntu 存储库。

sudo apt update

存储库更新后,运行以下 apt 命令在你的系统上安装 Rust。

sudo apt install rustc

出现提示时,输入 y 确认并按 ENTER 继续。

image.png

安装 Rust 后,运行以下命令来查找 Rust 二进制文件并验证系统上安装的当前 Rust 版本。

which rustc
rustc -Vv

你将收到类似于此屏幕截图的输出 - Rust 二进制文件位于 /usr/bin/rustc,并且系统上安装的当前 Rust 版本是 v1.61.0

image.png

安装 Rust 后,你将学习如何使用 Rust 创建第一个“Hello World”程序。

使用你的文本编辑器创建一个新文件 hello-world.rs。对于桌面用户,你可以使用诸如 vscodium 或 sublime-text 之类的代码编辑器。对于 CLI 用户,你可以使用 vim 或 nano。

sudo nano hello-world.rs

将以下代码添加到文件中。

fn main() {println!("Hello World, welcome to Rust.");
}

保存文件并在完成后退出编辑器。

接下来,使用以下 rustc 命令编译 rust 文件 hello-world.rs。这将在你当前的工作目录中生成一个可执行文件 hello-world

rustc hello-world.rs

代码编译完成后,执行终端的二进制文件 hello-world

./hello-world

你应该收到诸如 **Hello World, welcome to Rust.** 的输出。这确认 hello-world 应用程序已成功编译和执行。

image.png

现在,如果你想从你的机器上删除 Rust,你可以通过以下 apt 命令删除它。

sudo apt remove rustc
sudo apt autoremove -y

image.png

通过 rustup 安装 Rust

如果你想成为 Rust 开发人员,你必须了解 rustup 工具。这是你的 Rust 开发环境的工具链多路复用器。在功能上,rustup 类似于 Ruby 的 rbenv、Node.js 的 nvm 或 Python 的 Pyenv。

使用 rustup,你可以在你的系统上拥有一个隔离的 Rust 开发环境。你可以安装多个 Rust 版本,根据你的项目安装多个版本的开发工具,这些工具可以是用于多个操作系统的交叉编译器。

在此步骤中,你将在你的系统上安装 Rust 和 rustup。你将使用非 root 用户执行此操作,因此安装只会影响你的用户,而不会影响整个系统。

因此,在开始之前,请通过以下命令登录到你的用户。此示例使用名为 alice 的非 root 用户。

su - alice

现在,运行以下 apt 命令在你的 Ubuntu 系统上安装软件包依赖项。

sudo apt install curl build-essential gcc make

出现提示时,输入 y 并按 ENTER 继续。

https://www.notion.so

安装依赖项后,运行以下命令在当前用户环境中安装 rustup 和 Rust。此命令将下载 rustup 安装程序并在你的系统上执行它。

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

在第一个输出中,你应该看到诸如 **Welcome to Rust!** 的欢迎消息,并告知安装脚本将为 Rust 安装 Rust 和 Cargo 包管理器。此外,rustup 将安装在 /home/username/.rustup 目录中。

img

接下来,你将被要求在你的系统上设置 Rust 安装。这包括默认的 Rust 工具链(Stable、Beta 或 Nightly 版本)和安装 profile(包括 minimal、default 或 complete)。

对于初学者,你可以保留默认安装。输入 1 并按 ENTER 确认。然后,rustup、Rust 和 Cargo 的安装将开始。

image.png

安装完成后,你将收到诸如 Rust is installed now. Great! 的输出。此外,你将收到一条指令,要求重新加载当前 shell 以应用 PATH 环境变量的新更改。你也可以从当前会话手动重新加载它。

image.png

以下命令将新的 rustup 环境变量加载到当前会话。

source "$HOME/.cargo/env"

之后,运行以下命令来验证当前环境中安装的 Rust 版本,并验证 Rust 的二进制路径。

rustc -Vv
which rustc

你应该收到类似于此的输出 - 你已通过 rustup 安装了 Rust v1.66,并且 Rust 编译器的二进制文件位于 /home/username/.cargo/bin/rustc

此外,Rust 1.66 仅适用于你当前的用户,而不是整个系统

image.png

接下来,通过以下命令找到 Cargo 包管理器和 rustup 软件的二进制文件。

which cargo
which rustup

你应该看到 cargo 和 rustup 二进制文件都位于 '/home/username/.cargo/bin' 目录中。

最后,通过以下命令验证 Cargo 包管理器版本和 rustup 版本。

cargo --version
rustup --version

你将收到类似于此屏幕截图的输出 - Cargo 包管理器 v1.66 和 rustup 1.25 已安装在你的系统上。

image.png

这样,你现在已经安装了 Rust,其中包括 Rust 开发工具,例如 Cargo 包管理器、rustc、Clippy、rustfmt 和 rust-docs。在下一步中,你将学习如何通过 rustup 命令行管理你的 Rust 安装。

使用 rustup 管理 Rust 环境

rustup 是一个工具链多路复用器,允许你在你的环境中安装 Rust 编程语言,其中包括 Rust 开发工具,例如 Cargo 包管理器、rustc 等。你可以通过 rustup 安装多个版本的 Rust 编程语言和开发工具。这样,你可以使用不同版本的 Rust 编程语言轻松管理多个项目。

在这些步骤中,你将学习如何通过 rustup 命令管理你的 Rust 环境。你将安装多个 Rust 和开发工具版本,设置和切换到不同的 profile,并通过 rustup 更新你的 Rust 环境。

设置 rustup 命令自动补全

在开始之前,你将为 rustup 命令设置命令自动补全。启用自动补全后,你可以运行 rustup 命令,然后按 TAB 键以获取可用参数的列表。你现在将生成 rustup 自动补全脚本,将生成的脚本加载到你的 shell 中,然后验证自动补全。

通过以下 mkdir 命令创建一个新目录 ~/.local/share/bash-completion/completions/

mkdir -p ~/.local/share/bash-completion/completions/

运行以下命令以将 rustup 命令自动补全生成到 ~/.local/share/bash-completion/completions/rustup

rustup completions bash > ~/.local/share/bash-completion/completions/rustup

通过以下命令将自动补全加载到当前会话。

source ~/.local/share/bash-completion/completions/rustup

最后,键入命令 rustup 并按 TAB 键以获取 rustup 命令的自动补全。

rustup TAB

你现在将收到 rustup 命令的可用选项列表,如以下屏幕截图所示。

image.png

安装多个 Rust 版本和开发工具

在 rustup 环境中,有多个版本的工具链,包括 stable、beta 和 nightly。工具链是一组 Rust 编程语言和开发工具的软件包。因此,当你通过 rustup 安装多个版本的工具链时,这意味着你还安装了多个版本的 Rust 编程语言和多个版本的 Rust 开发工具。

在你的环境中安装多个工具链,使你可以使用不同版本的 Rust 编程语言管理多个项目。

首先,运行以下 rustup 命令以验证系统上的工具链或 rust 版本列表。你应该收到一个输出,表明 Rust stable 版本已安装在你的系统上。

rustup toolchain list

接下来,运行以下命令以安装另一个版本的 Rust/工具链。在此示例中,你将安装 Rust 的 Nightly 版本。

rustup toolchain install nightly

你现在将收到如下屏幕截图所示的输出 - 安装 Rust nightly 版本,包括 default rustup profile 上可用的 cargo 包管理器等开发工具。

image.png

安装新的 nightly 版本工具链后,运行以下命令以显示系统上已安装的工具链列表。

rustup toolchain list

你应该收到如下输出 - 你的系统上安装了两个版本的工具链,默认的 stable 版本和新安装的 nightly 版本。

image.png

接下来,运行以下命令将默认工具链切换到 nightly 版本。这意味着你还将开发工具切换到新的 nightly 版本。

rustup default nightly

然后,通过以下命令验证 Rust 版本。你应该获得已安装的 Nightly 版本的 Rust v1.6x,并且它已配置为当前环境中的默认 Rust。

rustc -Vv

image.png

此外,你还可以通过 rustup 命令手动运行特定版本的 Rust。运行以下命令以通过 rustup 命令运行特定的 Rust nightly 版本。

rustup run nightly rustc -Vv

你应该收到 Rust nightly 版本 1.68。这意味着你已通过 rustup 命令执行了特定版本的 Rust。你还可以执行其他组件,例如 Cargo 包管理器。

image.png

现在你已经了解了 rustup 中的工具链,接下来你将探索你环境中的 rustup profile。

设置 rustup 中的 Profile

你将学习的 rustup 中的另一个概念是“profile”,它是你的 Rust 环境的组件组。rustup 中有三个不同的 profile,列表如下:

  • minimal - 仅包括少数组件,例如 rustc 编译器、cargo 包管理器和 rust-std。
  • default - 此 profile 包括 minimal profile 中的组件,但也添加了一些其他工具,例如 rust-docs、rustfmt 和 Clippy。这是你通过 rustup 安装 Rust 时的默认 profile。
  • complete - 此 profile 包括通过 rustup 安装的所有 Rust 组件。除非你知道自己在做什么,否则你不应该使用此 profile。你始终可以通过 rustup 命令手动添加组件。

在本节中,你将学习如何通过 rustup 命令切换到不同的 profile。

运行以下命令以检查应用于你当前环境的 profile。你应该看到已启用 profile default

rustup show profile

接下来,运行以下命令以切换到 profile minimal。然后,再次验证你当前的 profile。

rustup set profile minimal
rustup show profile

你应该收到如下输出 - 当前 profile 已更改为 minimal

image.png

最后,你现在可以通过以下命令将更改恢复为 default profile。

rustup set profile default

通过 rustup 更新 Rust

使用 rustup 作为管理 Rust 环境的主要工具的巨大优势在于,你可以轻松地将你的 Rust 编程语言和开发工具的每个组件更新到最新版本。

要更新你的 rust 安装,请运行以下 rustup 命令。这将更新你的 Rust 环境中所有可用的工具链,包括工具链上的开发工具组件,例如 Cargo 包管理器和 rustc 编译器以及 Clippy。

rustup update

你现在应该收到如下输出 - rustup 命令会将当前安装的工具链版本同步到 Rust 官方网站上可用的最新版本。每当有新更新可用时,都会应用该更新。

image.png

使用 Cargo 创建和管理 Rust 项目

现在你已经学习了如何使用 rustup 管理你的 Rust 开发环境。在此步骤中,你将学习如何使用 Cargo 包管理器来创建 Rust 项目、测试、编译和运行你的 Rust 应用程序。

通过以下 cargo new 命令创建一个新项目 hello-world。这将在你当前的工作目录中创建一个新的项目目录 hello-world

cargo new hello-world

更改工作目录 hello-world 并通过以下 tree 命令检查其中的文件列表。你应该看到文件 Cargo.toml,它是 Cargo 包管理器的主要配置,以及用于存储你的 Rust 源代码的目录 src

cd hello-world/
tree .

image.png

使用你的文本编辑器打开文件 src/main.rs

nano src/main.rs

将默认源代码更改为以下行。

fn main() {println!("Hello World, Rust with rustup and cargo.");
}

保存文件并在完成后退出编辑器。

接下来,运行以下命令以构建和编译 hello-world 项目。此命令将自动将你的 hello-world 项目编译到新目录 target

cargo build

image.png

现在运行以下 cargo test 命令以验证你的 Rust 项目。

cargo test

你应该收到如下输出 - 如果测试成功,你应该收到诸如 test result: ok 的消息。

image.png

最后,运行以下命令以执行 hello-world 项目。

cargo run

你应该收到如下输出 - hello-world 项目已成功执行。

image.png

卸载 Rust 和 rustup

rustup 安装只会影响你当前的用户开发环境,而不会影响整个系统。这将使你的系统保持清洁,并且卸载过程更简单。你可以通过删除 rustup 安装目录 /home/username/.rustup 和 Rust 工具链目录 /home/username.cargo 来卸载 rustup 以及所有工具链和开发工具。

运行以下命令以从你当前的开发环境中卸载 Rust 和 rustup。

rm -rf ~/.cargo ~/.rustup

接下来,删除你通过以下命令生成的命令自动补全。

rm -f ~/.local/share/bash-completion/completions/rustup

这样,你现在已经从你的系统中卸载并删除了 Rust 和 rustup。

相关链接
雨云 - 新一代云服务提供商: https://rainyun.ivwv.site
我的博客:https://blog.ivwv.site

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/64514.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MybatisPlus-配置加密

配置加密 目前配置文件中的很多参数都是明文,如果开发人员发生流动,很容易导致敏感信息的泄露。所以MybatisPlus支持配置文件的加密和解密功能。 我们以数据库的用户名和密码为例。 生成秘钥 首先,我们利用AES工具生成一个随机秘钥&#…

记录:virt-manager配置Ubuntu arm虚拟机

virt-manager(Virtual Machine Manager)是一个图形用户界面应用程序,通过libvirt管理虚拟机(即作为libvirt的图形前端) 因为要在Linux arm环境做测试,记录下virt-manager配置arm虚拟机的过程 先在VMWare中…

ChatGPT客户端安装教程(附下载链接)

用惯了各类AI的我们发现每天打开网页还挺不习惯和麻烦,突然发现客户端上架了,懂摸鱼的人都知道这里面的道行有多深,话不多说,开整! 以下是ChatGPT客户端的详细安装教程,适用于Windows和Mac系统&#xff1a…

Element@2.15.14-tree checkStrictly 状态实现父项联动子项,实现节点自定义编辑、新增、删除功能

背景:现在有一个新需求,需要借助树结构来实现词库的分类管理,树的节点是不同的分类,不同的分类可以有自己的词库,所以父子节点是互不影响的;同样为了选择的方便性,提出了新需求,选择…

概率论得学习和整理27:关于离散的数组 随机变量数组的均值,方差的求法3种公式,思考和细节。

目录 1 例子1:最典型的,最简单的数组的均值,方差的求法 2 例子1的问题:例子1只是1个特例,而不是普遍情况。 2.1 例子1各种默认假设,导致了求均值和方差的特殊性,特别简单。 2.2 我觉得 加权…

【HarmonyOS NEXT】Web 组件的基础用法以及 H5 侧与原生侧的双向数据通讯

关键词:鸿蒙、ArkTs、Web组件、通讯、数据 官方文档Web组件用法介绍:文档中心 Web 组件加载沙箱中页面可参考我的另一篇文章:【HarmonyOS NEXT】 如何将rawfile中文件复制到沙箱中_鸿蒙rawfile 复制到沙箱-CSDN博客 目录 如何在鸿蒙应用中加…

ASP.NET Core - 依赖注入 自动批量注入

依赖注入配置变形 随着业务的增长,我们项目工作中的类型、服务越来越多,而每一个服务的依赖注入关系都需要在入口文件通过Service.Add{}方法去进行注册,这将是非常麻烦的,入口文件需要频繁改动,而且代码组织管理也会变…

Spring Boot 3.X:Unable to connect to Redis错误记录

一.背景 最近在搭建一个新项目,本着有新用新的原则,项目选择到了jdk17SpringBoot3.4。但是在测试Redis连接的时候却遇到了以下问题: redis连不上了。于是我先去检查了配置文件的连接信息,发现没问题;再去检查配置类&am…

FFmpeg第一话:FFmpeg 简介与环境搭建

FFmpeg 探索之旅 一、FFmpeg 简介与环境搭建 二、FFmpeg 解码详解 第一话:FFmpeg 简介与环境搭建 FFmpeg 探索之旅一、前言二、FFmpeg 是什么?三、简单介绍其历史背景四、为什么用 C学习 FFmpeg?(一)高性能优势&#…

(vue)el-table在表头添加筛选功能

(vue)el-table在表头添加筛选功能 筛选前&#xff1a; 选择条件&#xff1a; 筛选后&#xff1a; 返回数据格式: 代码: <el-tableref"filterTable":data"projectData.list"height"540":header-cell-style"{border-bottom: 1px soli…

流程引擎Activiti性能优化方案

流程引擎Activiti性能优化方案 Activiti工作流引擎架构概述 Activiti工作流引擎架构大致分为6层。从上到下依次为工作流引擎层、部署层、业务接口层、命令拦截层、命令层和行为层。 基于关系型数据库层面优化 MySQL建表语句优化 Activiti在MySQL中创建默认字符集为utf8&…

Vue3源码笔记阅读1——Ref响应式原理

本专栏主要用于记录自己的阅读源码的过程,希望能够加深自己学习印象,也欢迎读者可以帮忙完善。接下来每一篇都会从定义、运用两个层面来进行解析 定义 运用 例子:模板中访问ref(1) <template><div>{{str}}</div> </template> <script> impo…

神经网络基础-神经网络搭建和参数计算

文章目录 1.构建神经网络2. 神经网络的优缺点 1.构建神经网络 在 pytorch 中定义深度神经网络其实就是层堆叠的过程&#xff0c;继承自nn.Module&#xff0c;实现两个方法&#xff1a; __init__方法中定义网络中的层结构&#xff0c;主要是全连接层&#xff0c;并进行初始化。…

Dcoker Redis哨兵模式集群介绍与搭建 故障转移 分布式 Java客户端连接

介绍 Redis 哨兵模式&#xff08;Sentinel&#xff09;是 Redis 集群的高可用解决方案&#xff0c;它主要用于监控 Redis 主从复制架构中的主节点和从节点的状态&#xff0c;并提供故障转移和通知功能。通过 Redis 哨兵模式&#xff0c;可以保证 Redis 服务的高可用性和自动故…

机器学习之交叉熵

交叉熵&#xff08;Cross-Entropy&#xff09;是机器学习中用于衡量预测分布与真实分布之间差异的一种损失函数&#xff0c;特别是在分类任务中非常常见。它源于信息论&#xff0c;反映了两个概率分布之间的距离。 交叉熵的数学定义 对于分类任务&#xff0c;假设我们有&#…

Scala的泛型界限

泛型界限 上限 泛型的上限&#xff0c;下限。对类型的更加具体的约束&#xff01; 如果给某个泛型设置了上界&#xff1a;这里的类型必须是上界 如果给某个泛型设置了下界&#xff1a;这里的类型必须是下界

vscode中同时运行两个python文件(不用安装插件)

如何在vscode中同时运行两个python文件呢&#xff1f;今天在工作中遇到了这个问题。 查了网上的方法是安装coder runner插件&#xff0c;后来发现自身就有这个功能。所以记录一下,方便后续查找: 这是我的第一个文件&#xff0c;点击右上角的运行旁边的小箭头&#xff0c;有一…

python rabbitmq实现简单/持久/广播/组播/topic/rpc消息异步发送可配置Django

windows首先安装rabbitmq 点击参考安装 1、环境介绍 Python 3.10.16 其他通过pip安装的版本(Django、pika、celery这几个必须要有最好版本一致) amqp 5.3.1 asgiref 3.8.1 async-timeout 5.0.1 billiard 4.2.1 celery 5.4.0 …

Numpy基本介绍

目录 1、Numpy的优势 1.1、ndarray介绍 1.2、ndarray与Python原生list运算效率对比 1.3、ndarray的优势 1.3.1、内存块风格 1.3.2、ndarray支持并行化运算(向量化运算) 1.3.3、效率远高于纯Python代码 2、N维数组-ndarray 2.1、ndarray的属性 2.2、ndarray的形状 2…

XXE练习

pikachu-XXE靶场 1.POC:攻击测试 <?xml version"1.0"?> <!DOCTYPE foo [ <!ENTITY xxe "a">]> <foo>&xxe;</foo> 2.EXP:查看文件 <?xml version"1.0"?> <!DOCTYPE foo [ <!ENTITY xxe SY…