如何在 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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MATLAB图卷积神经网络GCN处理分子数据集节点分类研究

全文链接:https://tecdat.cn/?p38570 本文主要探讨了如何利用图卷积网络(GCN)对图中的节点进行分类。介绍了相关的数据处理、模型构建、训练及测试等环节,通过对分子数据集的操作实践,展示了完整的节点分类流程&#…

简易CPU设计入门:本系统所写入的指令

项目代码下载 请大家首先准备好本项目所用的源代码。如果已经下载了,那就不用重复下载了。如果还没有下载,那么,请大家点击下方链接,来了解下载本项目的CPU源代码的方法。 下载本项目代码 准备好了项目源代码以后,我…

rabbitMq举例

新来个技术总监,把 RabbitMQ 讲的那叫一个透彻,佩服! 生产者 代码举例 public String sendMsg(final String exchangeName,final String routingKey,final String msg) {} /*** 发送消息* param exchangeName exchangeName* param routin…

对话小系统(智能图书助手)

对话小系统(智能图书助手) 文章说明核心代码效果展示源码下载 文章说明 现在GPT的功能十分强大,是否可以利用开源的接口来实现自己的智能小助手呢,我想到可以提供一些能力接口,然后对问询内容进行意图识别,…

数智读书笔记系列006 协同进化:人类与机器融合的未来

书名:协同进化:人类与机器融合的未来 作者:[美]爱德华阿什福德李 译者:李杨 出版时间:2022-06-01 ISBN:9787521741476 中信出版集团制作发行 爱德华・阿什福德・李(Edward Ashford Lee)是一位在计算机科学与工程领域颇具影响力的学者&am…

C# 探险之旅:第二十七节 - 类型class(属性) —— 给你的类穿上“属性”的外衣

嘿,探险家们!欢迎再次踏上我们的C#奇幻之旅。今天,我们要聊聊一个超级有趣的话题——类的“属性”。想象一下,如果我们要给类穿上一件酷炫的外衣,那属性就是这件外衣上的各种口袋和装饰,让类变得既实用又拉…

数据保护策略:如何保障重要信息的安全

一、什么是数据安全? 数据安全是保护数字信息免遭盗窃、未经授权的访问和恶意修改的过程。这是一个持续的过程,负责监督信息的收集、存储和传输。 机密性:保护数据免遭未授权方访问。 完整性:保护数据免遭未经授权的修改、损坏…

Mvc、Springmvc框架

一.Mvc: 1.概念: MVC它是一种设计理念。把程序按照指定的结构来划分: Model模型 、View视图 、Controller控制层; 结构图: 二.Springmvc: 1.概念: springmvc框架它是spring框架的一个分支。它是按照mvc架构思想设计…

【CSS in Depth 2 精译_078】12.6 调整字间距,提升可读性 + 12.7 本章小结

当前内容所在位置(可进入专栏查看其他译好的章节内容) 第四部分 视觉增强技术 ✔️【第 12 章 CSS 排版与间距】 ✔️ 12.1 间距设置 12.1.1 使用 em 还是 px12.1.2 对行高的深入思考12.1.3 行内元素的间距设置 12.2 Web 字体12.3 谷歌字体12.4 font-fac…

Python高性能web框架-FastApi教程:(2)路径操作装饰器方法

路径操作装饰器方法 1. fastapi支持的各种请求方式 app.get() app.post() app.put() app.patch() app.delete() app.options() app.head() app.trace()2. 定义不同请求方式的路由 # 定义GET请求的路由 app.get(/get) def get_test():return {method: get方法} app.get(/get)…

PostgreSQL 入门

下载与安装 部分国产数据库采用PostgreSQL作为基础进行研发,因此先尝试了解一下原始数据库情况。 PostgreSQL 简称 PG 官网:https://www.postgresql.org/ PostgreSQL “世界上最先进的开源关系型数据库” 这是官网上的口号。 PostgreSQL: The World…

Java-26 深入浅出 Spring - 实现简易Ioc-02 无IoC与AOP场景下实现业务

点一下关注吧!!!非常感谢!!持续更新!!! 大数据篇正在更新!https://blog.csdn.net/w776341482/category_12713819.html 目前已经更新到了: MyBatis&#xff…

工作流审批功能全解析:提升流程效率的关键要素

1. 引言 在当今数字化时代,企业与组织的运营效率在很大程度上依赖于高效、精准的工作流审批系统。随着业务日益复杂且多样化,审批流程变得愈加细致和灵活。一个完善的工作流审批系统不仅能确保任务在组织内部有序流转、协调各方资源,还能实现…

API接口示例:电商商品评论数据

当然,以下是一个简化的电商商品评论数据API接口的示例。请注意,这只是一个示例,实际的API接口可能会更加复杂,并且会包含更多的验证、错误处理和安全措施。 API接口示例:电商商品评论数据 基础信息 API名称&#xf…

HCIA-Access V2.5_2_2_2网络通信基础_IP编址与路由

网络层数据封装 首先IP地址封装在网络层,它用于标识一台网络设备,其中IP地址分为两个部分,网络地址和主机地址,通过我们采用点分十进制的形式进行表示。 IP地址分类 对IP地址而言,它细分为五类,A,B,C,D,E,…

Microsemi Libero使用技巧11——CoreUARTAPB RX管脚分配时不显示

调用串口IP核CoreUARTAPB,并例化到顶层设计,发现UART_RX管脚在进行管脚分配时没有显示出来,最后发现是CoreAPB3总线IP核配置不对导致,改为如下配置后正常。

SEGGER | 基于STM32F405 + Keil - RTT组件01 - 移植SEGGER RTT

导言 RTT(Real Time Transfer)是一种用于嵌入式中与用户进行交互的技术,它结合了SWO和半主机的优点,具有极高的性能。 使用RTT可以从MCU非常快速输出调试信息和数据,且不影响MCU实时性。这个功能可以用于很多支持J-Link的设备和MCU&#xff0…

SpringBoot集成JWT和Redis实现鉴权登录功能

目前市面上有许多鉴权框架,鉴权原理大同小异,本文简单介绍下利用JWT和Redis实现鉴权功能,算是抛砖引玉吧。 主要原理就是“令牌主动失效机制”,主要包括以下4个步骤: (1)利用拦截器LoginInterceptor实现所有接口登录拦…

29.在Vue 3中使用OpenLayers读取WKB数据并显示图形

在Web开发中,地理信息系统(GIS)应用越来越重要,尤其是在地图展示和空间数据分析的场景中。OpenLayers作为一个强大的开源JavaScript库,为开发者提供了丰富的地图展示和空间数据处理能力。在本篇文章中,我将…

【bWAPP】 HTML Injection (HTML注入)

我们都是在一条铺满荆棘的新路上摸索着前行,碰个鼻青眼肿几乎不可避免,而问题在于,我们能不能在这条路上跌倒之后,爬起来继续走下去。 HTML Injection - Reflected (GET) get方式的html代码注入 漏洞url:http://ran…