Ubuntu22快速配置Rust开发环境:从rustc安装到nushell实战
1. 为什么选择在Ubuntu 22上搞Rust如果你刚拿到一台装了Ubuntu 22的电脑或者准备在服务器上折腾点新东西想试试最近几年特别火的Rust语言那你来对地方了。我这些年用Rust做过不少项目从嵌入式的小玩意儿到后端服务一个很深的体会就是环境配得顺写代码的心情就好一半。Rust以其卓越的内存安全性和高性能吸引着越来越多的开发者但第一步“安装”如果卡半天热情可能就被浇灭了一半。Ubuntu 22是个非常棒的起点。它长期支持软件源稳定社区资源丰富对于Rust这种需要稳定编译工具链的语言来说是绝佳的“培养皿”。不过直接从官方源安装rustc或者按照Rust官网的脚本走在国内的网络环境下下载速度可能慢得让你怀疑人生动不动就超时尤其是安装rustup和更新工具链的时候。所以这篇文章的目的非常直接带你用最快、最稳的方式在Ubuntu 22上配好一个完整的Rust开发环境并且通过安装一个酷炫的Shell——nushell来验证环境是否真正可用。整个过程我会把我在国内网络环境下踩过的坑、总结的加速技巧都揉进去保证你跟着做一遍就能成功不用再对着命令行里缓慢爬行的进度条干着急。2. 准备工作系统更新与基础依赖在开始安装Rust之前我们先花几分钟把地基打牢。这一步看似简单但能避免很多后续的奇怪错误。2.1 更新系统软件包列表打开你的终端输入的第一条命令应该是sudo apt update这条命令会刷新Ubuntu的软件包索引确保你知道有哪些软件的最新版本可用。我习惯在安装任何新东西之前都先跑一下这个相当于去超市购物前先看看最新的商品目录。2.2 安装编译Rust及其生态所需的工具Rust编译器本身以及它庞大的包生态系统Cargo在安装和后续编译第三方库时需要一些基础的开发工具。我们一次性装好sudo apt install -y build-essential curl filebuild-essential这是一个元软件包包含了gcc,g,make等一整套编译工具。没有它你连最简单的C代码都编译不了而Rust的某些底层依赖或本地库在编译时可能会调用它们。curl我们待会儿要用它来下载Rust的安装脚本。file一些系统工具会用到它为了保险起见我们一并安装。执行完这条命令基础环境就准备好了。整个过程通常很快取决于你的网络速度。3. 核心步骤安装Rust工具链与配置镜像加速这是最关键的一步我们要安装Rust的核心——rustup。rustup是Rust的工具链管理器你可以把它想象成Python里的pyenv或者Node.js的nvm。通过它你可以安装、管理和切换不同版本稳定版、测试版、 nightly版的Rust。3.1 使用官方脚本安装rustupRust官方提供了一个非常方便的安装脚本。我们直接使用curl来下载并执行它。这里我强烈建议你不要直接复制网上某些省略了参数的命令因为那可能会修改你的系统PATH带来一些意想不到的影响。我们用下面这个更可控的命令curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --default-toolchain stable -y --no-modify-path --profile default我来拆解一下这个命令让你明白每个参数的作用以后你也能自己调整curl --proto https --tlsv1.2 -sSf: 这是用安全的方式HTTPS TLS 1.2安静地-sSf下载脚本。sh -s --: 将下载的脚本内容通过管道传递给shShell执行。--default-toolchain stable: 指定默认安装稳定版工具链。这是最推荐新手和用于生产环境的版本。-y: 自动回答“yes”跳过所有交互式确认提示实现一键安装。--no-modify-path:这个参数非常重要它告诉安装程序不要自动修改你的Shell配置文件如.bashrc或.zshrc中的PATH环境变量。我们选择手动管理这样更清晰也避免污染配置文件。--profile default: 安装“默认”配置文件包含的工具包括rustc编译器、cargo包管理器、rustfmt代码格式化工具等核心组件。如果你需要最小化安装可以用--profile minimal。命令运行后脚本会自动下载rustup并安装stable工具链。由于我们还没有配置镜像这一步的下载速度可能取决于你到Rust官方服务器的网络状况。如果速度很慢或者中断了别担心我们下一步就来解决这个问题。安装成功后脚本最后会输出类似这样的提示Rust is installed now. Great! To get started you may need to restart your current shell. Or you can run the following in your shell to set up the PATH manually: source $HOME/.cargo/env它告诉我们Rust已经装好了但当前Shell会话还找不到它。我们需要手动“激活”一下环境。3.2 手动配置环境变量因为我们用了--no-modify-path所以需要自己把Rust的二进制目录加到PATH里。按照提示我们执行source ~/.cargo/env这条命令只对当前这个终端窗口生效。为了让以后每次打开终端都能用我们需要把配置写入Shell的启动文件。对于默认的Bash我们编辑~/.bashrc我更推荐这个而不是.bash_profile因为.bashrc在每次打开交互式Shell时都会加载echo source ~/.cargo/env ~/.bashrc现在关掉终端再重新打开或者运行source ~/.bashrc你的Rust基础环境就应该可用了。可以验证一下rustc --version cargo --version如果能看到版本号输出恭喜你Rust编译器rustc和包管理器cargo已经成功安装3.3 为rustup配置国内镜像加速关键现在来解决速度问题。rustup在检查更新、安装新工具链时需要连接它的更新服务器。我们将它指向国内的镜像源速度会有质的飞跃。我们继续在~/.bashrc文件末尾添加以下两行echo export RUSTUP_UPDATE_ROOThttps://mirrors.tuna.tsinghua.edu.cn/rustup/rustup ~/.bashrc echo export RUSTUP_DIST_SERVERhttps://mirrors.tuna.tsinghua.edu.cn/rustup ~/.bashrcRUSTUP_UPDATE_ROOT: 指定rustup自身的更新源。RUSTUP_DIST_SERVER: 指定Rust工具链如stable-x86_64-unknown-linux-gnu的下载源。这里我使用的是清华大学TUNA镜像站它非常稳定可靠。添加完成后同样执行source ~/.bashrc让配置生效。3.4 为Cargo配置国内crates.io镜像光rustup快了还不够。我们用Rust开发时绝大部分第三方库在Rust里叫crate都是从crates.io这个中央仓库下载的。默认源在国内访问也很慢。我们需要给Cargo也换上一个“中国速度”。Cargo的配置放在~/.cargo/config文件里。我们直接创建并写入这个文件cat EOF ~/.cargo/config [source.crates-io] replace-with tuna [source.tuna] registry https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index EOF这个配置的意思是当需要从crates-io默认源下载时用名为tuna的源替代。而tuna源指向了清华大学提供的crates.io索引镜像。注意这里用的是crates.io-index的git仓库镜像。Cargo实际上是通过git来拉取库的索引信息的所以这个镜像本质上是一个git仓库的镜像加速效果非常明显。配置完成后你可以尝试用cargo search搜索一个库试试速度或者进行下一步的实战。4. 实战检验使用Cargo安装nushell环境配好了是骡子是马得拉出来遛遛。我们通过安装一个稍微有点复杂的Rust项目——nushell来全面检验我们的环境是否工作正常。4.1 什么是nushellnushell简称nu是一个用Rust写的现代Shell。它和传统的Bash、Zsh思路不同它把一切数据都当成结构化的表格来处理。比如你运行ls命令它返回的不是一堆文本而是一个包含文件名、大小、修改日期等列的表。你可以像操作Excel一样用管道|去筛选、排序、计算这些数据非常强大和直观。用我们刚刚配好的Rust环境来安装它再合适不过了。4.2 执行安装命令安装过程非常简单只需要一条命令cargo install nu这条命令告诉Cargo“去crates.io实际上已经指向我们的清华镜像找到名叫nu的包下载它的源代码然后用本地的Rust编译器把它编译成可执行文件最后安装到~/.cargo/bin目录下。”当你按下回车后你会看到Cargo开始疯狂输出解析依赖Cargo会先计算nushell以及它的所有依赖库。下载crate开始从我们配置的镜像源并行下载所有需要的库。这时候你就能感受到镜像的威力了下载速度通常能达到几MB/s甚至更高。编译依赖下载完成后Cargo会逐个编译这些依赖库。Rust的编译以“稳”著称但也是CPU和内存消耗大户。这个过程可能会持续几分钟你的风扇可能会响起来这是正常的。编译主程序最后编译nushell本身。安装将编译好的nu可执行文件复制到~/.cargo/bin。整个过程是全自动的。如果一切顺利最后你会看到Installed package nu x.x.x的成功提示。4.3 验证安装与初体验安装完成后直接运行nu你应该会进入一个全新的Shell提示符可能长这样/home/你的用户名。恭喜你你已经成功运行了由你本地环境编译出来的nushell你可以试试它的一些特色命令输入ls看看是不是返回了一个漂亮的表格。试试ps | where cpu 5看看能不能筛选出CPU占用超过5%的进程。输入exit可以退回到你原来的Bash。为了让nushell成为你的默认Shell可选你可以使用chsh命令但更简单的方式是在你的~/.bashrc末尾加一行exec nu这样每次登录Bash后会自动启动nu。不过作为新手我建议你先保留Bash在需要时手动启动nu来体验。5. 环境优化与日常使用技巧基础环境搭好了也能干活了但想用得顺手还得做一些优化。这里分享几个我每天都会用到的技巧。5.1 使用Cargo国内镜像的补充说明我们之前配置的镜像对于绝大多数情况都够用了。但有时候项目可能会依赖某个GitHub上的库在Cargo.toml里通过git字段指定或者某个本地路径的库。对于git源如果速度慢你可能需要为Git本身配置代理但这超出了本文范围。我们的镜像主要解决了crates.io这个主仓库的速度问题这已经覆盖了90%以上的场景。你可以随时查看当前的Cargo配置cat ~/.cargo/config5.2 善用Cargo命令提高效率Cargo不仅仅是安装工具它是Rust项目的全能管家。cargo new my_project: 创建一个新的Rust二进制项目自带src/main.rs和Cargo.toml文件结构非常规范。cargo new --lib my_lib: 创建一个新的Rust库项目。cargo build: 编译当前项目。cargo build --release是进行发布编译优化等级最高编译速度慢但运行时快。cargo run: 编译并运行当前项目如果是二进制项目。cargo check: 快速检查代码能否通过编译但不生成最终的可执行文件。这个命令速度极快是写代码时实时反馈的好帮手。cargo clippy: 运行Rust的代码“ lint ”工具它能给出大量的改进建议帮助你写出更地道、更安全的Rust代码。建议经常使用。cargo fmt: 使用rustfmt格式化你的代码统一团队编码风格。我们在安装时已经包含了这个组件。5.3 管理多个Rust工具链rustup的强大之处在于管理多个版本。比如你想体验一下最新的、包含实验性功能的 nightly 版本但又不想影响稳定的工作环境可以这样做rustup install nightly安装后你可以在当前目录临时使用nightly工具链cargo nightly build。或者为特定项目目录设置默认工具链rustup override set nightly。随时可以用rustup default stable切换回全局稳定版。查看已安装的工具链rustup show。5.4 遇到编译错误怎么办Rust编译器rustc以错误信息详细、友好而闻名。初次接触时你可能会被大量的编译错误吓到尤其是涉及生命周期和所有权的时候。别慌这是学习Rust的必经之路。仔细阅读错误信息rustc的错误信息不仅告诉你哪里错了很多时候还会直接给出修改建议甚至告诉你“或许你想用的是……”。把这些建议读三遍。善用搜索引擎把错误信息的关键部分复制到搜索引擎比如error[E0382]: borrow of moved value你几乎总能找到Stack Overflow或Rust用户论坛上的详细解答。理解核心概念很多错误源于对“所有权”、“借用”、“生命周期”理解不深。回头去啃《Rust程序设计语言》The Rust Programming Language 俗称“Rust圣经”的相关章节往往能从根本上解决问题。6. 进阶配置打造舒适的开发体验一个高效的开发环境离不开好用的工具。除了rustc和cargo再给你推荐两个“神器”。6.1 安装rust-analyzer强烈推荐rust-analyzer是当前Rust语言服务器LSP的事实标准为VS Code、Neovim、Sublime Text等几乎所有主流编辑器提供代码补全、跳转定义、类型提示、内联错误显示等智能功能。它比早期的RLS更快、更准确。安装它非常简单因为它本身就是一个可以用Cargo安装的Rust程序cargo install rust-analyzer --locked注意这里的--locked参数它告诉Cargo使用项目锁文件Cargo.lock中指定的精确依赖版本这能确保安装的版本是最稳定、兼容性最好的。安装完成后rust-analyzer的可执行文件也会出现在~/.cargo/bin下。你只需要在你使用的编辑器中配置LSP客户端指向这个路径即可。有了rust-analyzer写Rust代码就像有了一个随时在线的专家指导效率提升不是一点半点。6.2 探索Cargo的扩展命令cargo-editCargo本身功能强大但社区还开发了许多扩展命令来增强它。我最离不开的是cargo-edit它包含了cargo add,cargo rm,cargo upgrade等子命令让你可以直接在命令行里管理Cargo.toml中的依赖而不用手动去编辑文件。安装命令cargo install cargo-edit安装后你可以cargo add serde自动在[dependencies]下添加最新版的serde库。cargo add serde --features derive添加库并启用其特定功能。cargo rm serde从依赖中移除该库。cargo upgrade升级所有依赖到最新版本谨慎使用。这些工具组合起来就构成了一个强大、快速且舒适的Rust开发环境。从最开始的系统准备到核心工具链的安装与加速再到实战验证和效率工具加持我们一步步搭建了一个对国内开发者非常友好的Rust工作站。接下来你就可以安心地开始你的Rust之旅了无论是去学习《Rust圣经》还是直接开始用cargo new开启你的第一个项目。记住环境是基础真正的乐趣在于用Rust去构建那些既安全又高效的程序。如果在后续学习中遇到环境相关的新问题不妨回头看看这些配置或许就能找到答案。

相关新闻

Telepresence实战:快速搭建k8s本地开发调试环境

Telepresence实战:快速搭建k8s本地开发调试环境

1. 为什么你需要Telepresence?一个开发者的真实痛点 如果你和我一样,每天都在和Kubernetes(我们亲切地叫它k8s)打交道,那你一定对下面这个场景深恶痛绝:你负责开发一个微服务,我们叫它“订单服务…

2026/7/6 1:38:36 阅读更多 →
通义千问1.5-1.8B-Chat-GPTQ-Int4 Python爬虫实战:应对反爬策略的智能解析方案

通义千问1.5-1.8B-Chat-GPTQ-Int4 Python爬虫实战:应对反爬策略的智能解析方案

通义千问1.5-1.8B-Chat-GPTQ-Int4 Python爬虫实战:应对反爬策略的智能解析方案 你是不是也遇到过这种情况?写好的爬虫脚本,昨天还能跑得好好的,今天突然就报错,抓不到数据了。刷新一下网页,发现页面结构变…

2026/5/17 11:27:36 阅读更多 →
基于YOLO26深度学习的无人机红外视角海上搜救人员检测与语音提示系统【python源码+Pyqt5界面+数据集+训练代码】

基于YOLO26深度学习的无人机红外视角海上搜救人员检测与语音提示系统【python源码+Pyqt5界面+数据集+训练代码】

《博主简介》 小伙伴们好,我是阿旭。 专注于计算机视觉领域,包括目标检测、图像分类、图像分割和目标跟踪等项目开发,提供模型对比实验、答疑辅导等。 《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1…

2026/7/3 16:30:15 阅读更多 →

最新新闻

Windows Alt 特殊字符输入完全指南:从 Ñ 到 ∞,一篇搞定所有符号

Windows Alt 特殊字符输入完全指南:从 Ñ 到 ∞,一篇搞定所有符号

摘要:你是不是经常遇到这种情况——想输入西班牙语中的 ,却不知道键盘上怎么打?写数学论文时找不到 ≠ 和 ∞?做财务报表时 € 和 £ 总是靠复制粘贴?本文将为你彻底讲透 Windows 系统下 Alt 代码的输入原理、完整…

2026/7/7 1:27:53 阅读更多 →
HarmonyOS 小游戏《对战五子棋》开发第9篇 - GomokuEngine核心引擎设计(四):悔棋功能与历史记录管理

HarmonyOS 小游戏《对战五子棋》开发第9篇 - GomokuEngine核心引擎设计(四):悔棋功能与历史记录管理

悔棋是棋类游戏的标配——history数组的力量截图如下:undo方法完整解析 undo(): boolean {// 1. 检查是否有棋可悔if (this.history.length 0) {return false;}// 2. 弹出最后一步const lastMove this.history.pop()!;this.board[lastMove.row][lastMove.col] EM…

2026/7/7 1:25:52 阅读更多 →
鸿蒙新特性深度解析:从内核到生态的全方位升级

鸿蒙新特性深度解析:从内核到生态的全方位升级

1. 引言 2024年以来,华为鸿蒙(HarmonyOS)操作系统进入全新阶段,HarmonyOS NEXT(鸿蒙星河版)更是实现了从底层内核到上层框架的全面自研。本文将带您深入解读鸿蒙的最新核心特性,涵盖ArkUI增强、…

2026/7/7 1:25:52 阅读更多 →
10m/s超高速电梯:西奥XO-NEWIII如何树立行业速度标杆

10m/s超高速电梯:西奥XO-NEWIII如何树立行业速度标杆

一、超高速电梯的技术难点 电梯速度的提升,并非简单地换装更大功率的电机。当电梯运行速度从常规的1.75m/s提升到10m/s,一系列技术难题会呈几何级数放大。 超高速电梯的核心技术难点10m/s意味着电梯每秒运行10米,相当于时速36公里。在这种速度…

2026/7/7 1:23:52 阅读更多 →
嵌入式(C语言基础)

嵌入式(C语言基础)

1.内存分为四个区域:栈区,堆区,数据区,代码区栈区:由编译器自动分配,存放局部变量堆区:程序员手动分配,手动存放数据区:存放全局变量,静态变量代码区:只读,存放程序指令2.作用域和生命周期作用域…

2026/7/7 1:21:52 阅读更多 →
抖音直播数据采集利器:5分钟掌握全量实时数据获取技巧

抖音直播数据采集利器:5分钟掌握全量实时数据获取技巧

抖音直播数据采集利器:5分钟掌握全量实时数据获取技巧 【免费下载链接】DouyinLiveWebFetcher 抖音直播间网页版的弹幕数据抓取(2025最新版本) 项目地址: https://gitcode.com/gh_mirrors/do/DouyinLiveWebFetcher 还在为无法获取抖音…

2026/7/7 1:21:51 阅读更多 →

日新闻

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

图片浏览是移动应用中最高频的场景之一。从社交应用的照片流到电商平台的商品图集,从旅游应用的景点相册到摄影作品展示——用户对图片浏览的体验要求不断提高:流畅的切换动画、直观的缩略图导航、便捷的收藏操作、自动播放模式。HarmonyOS NEXT ArkUI 虽…

2026/7/7 0:05:16 阅读更多 →
24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V稳压芯片完整选型指南 PW8600 PW75XX PW2815 PW2312B LDODC/DC全方案 一、24V稳压方案概述 24V直流电源在工业自动化、门禁系统、电梯控制、汽车电子、LED驱动、监控设备等场景中应用极广,是最常见的中压直流母线电压。要将24V母线稳定降压至下游MCU、传感器…

2026/7/7 0:05:16 阅读更多 →
RAG+知识图谱混合检索与Graph RAG核心对比

RAG+知识图谱混合检索与Graph RAG核心对比

做企业RAG落地的团队,往往容易卡在一容易踩坑的选型难题: 当需求单纯靠向量RAG搞不定、单纯靠知识图谱也搞不定,必须同时依赖「文本语义理解 实体关系推理」时,到底是做「向量图谱混合检索」就够了,还是必须上「Grap…

2026/7/7 0:07:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻