Rust:如何在 Windows 的 Linux 子系統(WSL)下安裝

一、安裝步驟

在Windows Subsystem for Linux (WSL)下安裝Rust,可以按照以下步驟進行:

  1. 打開WSL終端
    首先,確保你的WSL已經安裝并正常運行。你可以在Windows搜索欄中輸入“WSL”并選擇你安裝的Linux發行版(如Ubuntu)來打開它。

  2. 更新包管理器
    在開始安裝之前,建議更新你的包管理器。如果你使用的是基于Debian的發行版(如Ubuntu),可以運行以下命令來更新apt

    sudo apt update && sudo apt upgrade -y
    

    這將確保所有現有的軟件包都是最新的,同時更新包管理器的索引。

  3. 安裝Rust和Cargo
    Rust語言和其包管理工具Cargo可以通過Rust的安裝腳本來安裝。在WSL終端中運行以下命令:

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

    這個命令會下載一個腳本并執行,該腳本將自動安裝Rust編譯器和Cargo。

  4. 配置環境變量
    安裝完成后,你需要將Cargo的安裝目錄添加到你的PATH環境變量中。通常,安裝腳本會提示你如何操作。如果你使用的是bash,可以添加如下命令到你的~/.bashrc~/.bash_profile文件中:

    source $HOME/.cargo/env
    

    然后重新加載配置文件或重新打開終端,以確保環境變量生效。

  5. 驗證安裝
    安裝完成后,你可以通過運行以下命令來驗證Cargo是否正確安裝:

    cargo --version
    

    如果安裝成功,你應該會看到Cargo的版本號輸出。

  6. 使用Rust
    現在你已經成功在WSL下安裝了Rust,可以開始編寫和運行Rust程序了。

請注意,這些步驟可能因你使用的Linux發行版和WSL的版本而略有不同。如果遇到任何問題,建議查閱Rust的官方文檔或尋求社區的幫助。

二、curl --proto ‘=https’ --tlsv1.2 -sSf https://sh.rustup.rs | sh 這個命令停留很久也沒反應

如果你執行 curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh 命令后很長時間沒有反應,這可能是由于多種原因造成的。以下是一些建議的解決步驟:

  1. 檢查網絡連接
    確保你的網絡連接是穩定的,并且WSL可以訪問外部網絡。你可以嘗試在WSL終端中ping一個常見的網站,比如 ping google.com,來檢查網絡連通性。

  2. 代理或VPN
    如果你在使用代理服務器或VPN,請確保它們配置正確,并且允許WSL通過它們進行連接。有時候,代理或VPN的設置可能會阻止或減慢腳本的下載速度。

  3. 嘗試手動下載
    如果通過curl直接運行腳本沒有反應,你可以嘗試手動下載rustup安裝腳本。在瀏覽器中訪問 https://sh.rustup.rs ,然后將頁面上的腳本內容保存為一個文件(比如 rustup-init.sh),之后在WSL中運行這個腳本:

    chmod +x rustup-init.sh
    ./rustup-init.sh
    
  4. 查看curl的進度
    如果可能的話,你可以嘗試去掉-sSf參數來查看curl的下載進度,這樣可以幫助你確定是否真的有數據在傳輸。命令如下:

    curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -o rustup-init.sh
    chmod +x rustup-init.sh
    ./rustup-init.sh
    
  5. 檢查防火墻和安全軟件
    確保你的防火墻或安全軟件沒有阻止curl或WSL的網絡訪問。

  6. 更新WSL和Linux發行版
    有時候,WSL或其Linux發行版可能存在bug或兼容性問題。確保你的WSL和Linux發行版都是最新版本。

  7. 查看日志和錯誤信息
    如果上述方法都不行,嘗試查看curl或WSL的日志,看是否有任何錯誤信息可以幫助你診斷問題。

如果嘗試了上述所有方法仍然無法解決問題,你可能需要更深入地調查網絡設置,或者尋求社區或專業人士的幫助。在論壇、Stack Overflow或Rust社區中提問時,請提供盡可能多的信息,以便他人能夠幫助你解決問題。

三、Warning: Failed to create the file rustup-init.sh: Permission denied

當你遇到 “Warning: Failed to create the file rustup-init.sh: Permission denied” 錯誤時,這通常意味著當前用戶沒有足夠的權限來在指定的目錄下創建文件。為了解決這個問題,你可以嘗試以下幾個步驟:

  1. 檢查當前目錄的權限
    確認你當前所在的目錄是否允許你創建文件。你可以使用 ls -ld . 命令來查看當前目錄的權限。

  2. 更改目錄
    如果你沒有在當前目錄的寫入權限,嘗試切換到一個你有寫入權限的目錄,比如你的家目錄(~$HOME),然后再執行下載命令。

  3. 使用sudo(不推薦)
    雖然使用 sudo 可以提供必要的權限來創建文件,但是在這種情況下并不推薦,因為 rustup-init.sh 腳本將在你的用戶環境下運行,并不需要超級用戶權限。

  4. 修改文件夾權限
    如果你確實需要在當前目錄下創建文件,而且你有足夠的權限去修改文件夾的權限,你可以使用 chmod 命令來更改文件夾的權限。但是,請謹慎操作,因為這可能會影響其他用戶和應用程序對該文件夾的訪問。

建議的解決方法是切換到你的家目錄或其他你有寫入權限的目錄,然后再次嘗試下載 rustup-init.sh 腳本。例如:

cd ~
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs -o rustup-init.sh
chmod +x rustup-init.sh
./rustup-init.sh

這將確保你有足夠的權限來創建和執行腳本文件。記得在執行腳本之前先給它執行權限(chmod +x rustup-init.sh)。

四、查看自己的權限

ls -ld
dr-xr-xr-x 1 xuyeping xuyeping 512 May 20 19:58 .

從給出的目錄權限 dr-xr-xr-x 可以看出,當前用戶(在這個例子中是 xuyeping)只有讀取(r)和執行(x)權限,而沒有寫入(w)權限。這就是為什么你無法在當前目錄下創建 rustup-init.sh 文件的原因。

為了解決這個問題,你需要改變目錄的權限或者更改到一個有寫入權限的目錄。由于更改目錄權限可能會影響系統的安全性和穩定性,因此建議的做法是切換到用戶有寫入權限的目錄,比如用戶的家目錄。

請按照以下步驟操作:

  1. 切換到家目錄:
cd ~

或者

cd $HOME
  1. 在家目錄中下載 rustup-init.sh
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs -o rustup-init.sh
  1. 賦予腳本執行權限:
chmod +x rustup-init.sh
  1. 運行安裝腳本:
./rustup-init.sh

這樣你就應該能夠在不遇到權限問題的情況下安裝 Rust 了。如果你需要在家目錄以外的其他地方創建文件,并且有足夠的理由要這么做,你可能需要聯系系統管理員來調整文件夾的權限。但請注意,隨意更改系統文件夾的權限可能會導致安全問題或系統不穩定。

五、安裝過程詳細內容

~$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
info: downloading installerWelcome to Rust!This will download and install the official compiler for the Rust
programming language, and its package manager, Cargo.Rustup metadata and toolchains will be installed into the Rustup
home directory, located at:/home/xuyeping/.rustupThis can be modified with the RUSTUP_HOME environment variable.The Cargo home directory is located at:/home/xuyeping/.cargoThis can be modified with the CARGO_HOME environment variable.The cargo, rustc, rustup and other commands will be added to
Cargo's bin directory, located at:/home/xuyeping/.cargo/binThis path will then be added to your PATH environment variable by
modifying the profile files located at:/home/xuyeping/.profile/home/xuyeping/.bashrcYou can uninstall at any time with rustup self uninstall and
these changes will be reverted.Current installation options:default host triple: x86_64-unknown-linux-gnudefault toolchain: stable (default)profile: defaultmodify PATH variable: yes1) Proceed with standard installation (default - just press enter)
2) Customize installation
3) Cancel installation
>info: profile set to 'default'
info: default host triple is x86_64-unknown-linux-gnu
info: syncing channel updates for 'stable-x86_64-unknown-linux-gnu'
730.9 KiB / 730.9 KiB (100 %) 127.4 KiB/s in  2s ETA:  0s
info: latest update on 2024-05-02, rust version 1.78.0 (9b00956e5 2024-04-29)
info: downloading component 'cargo'8.0 MiB /   8.0 MiB (100 %)   4.2 MiB/s in  2s ETA:  0s
info: downloading component 'clippy'
info: downloading component 'rust-docs'15.1 MiB /  15.1 MiB (100 %)   4.4 MiB/s in  4s ETA:  0s
info: downloading component 'rust-std'24.3 MiB /  24.3 MiB (100 %)   4.2 MiB/s in  6s ETA:  0s
info: downloading component 'rustc'63.7 MiB /  63.7 MiB (100 %)   4.1 MiB/s in 18s ETA:  0s
info: downloading component 'rustfmt'
info: installing component 'cargo'
info: installing component 'clippy'
info: installing component 'rust-docs'15.1 MiB /  15.1 MiB (100 %)  11.5 MiB/s in  1s ETA:  0s
info: installing component 'rust-std'24.3 MiB /  24.3 MiB (100 %)  18.3 MiB/s in  1s ETA:  0s
info: installing component 'rustc'63.7 MiB /  63.7 MiB (100 %)  19.8 MiB/s in  3s ETA:  0s
info: installing component 'rustfmt'
info: default toolchain set to 'stable-x86_64-unknown-linux-gnu'stable-x86_64-unknown-linux-gnu installed - rustc 1.78.0 (9b00956e5 2024-04-29)Rust is installed now. Great!To get started you may need to restart your current shell.
This would reload your PATH environment variable to include
Cargo's bin directory ($HOME/.cargo/bin).To configure your current shell, you need to source
the corresponding env file under $HOME/.cargo.This is usually done by running one of the following (note the leading DOT):
. "$HOME/.cargo/env"            # For sh/bash/zsh/ash/dash/pdksh
source "$HOME/.cargo/env.fish"  # For fish

英文提示翻譯如下:

看起來你已經成功地開始安裝Rust和Cargo了!安裝程序已經給出了它將要做的事情的詳細說明,包括安裝位置和一些環境變量的修改。這里是安裝過程中所提供信息的中文解釋:

歡迎來到Rust世界!

安裝程序將下載并安裝Rust編程語言的官方編譯器及其包管理器Cargo。

Rustup的元數據和工具鏈將被安裝到Rustup的主目錄中,該目錄位于:

/home/xuyeping/.rustup

你可以通過設置RUSTUP_HOME環境變量來修改這個目錄位置。

Cargo的主目錄位于:

/home/xuyeping/.cargo

這個目錄也可以通過設置CARGO_HOME環境變量來修改。

cargo, rustc, rustup等命令將被添加到Cargo的bin目錄中,該目錄位于:

/home/xuyeping/.cargo/bin

安裝程序將通過修改以下配置文件來將這個路徑添加到你的PATH環境變量中:

/home/xuyeping/.profile
/home/xuyeping/.bashrc

這樣做的目的是讓你能夠在任何位置直接通過命令行運行Rust相關的命令。

你可以隨時卸載:如果你在未來任何時候想要卸載Rust和Cargo,只需運行rustup self uninstall命令,安裝程序所做的所有更改都將被撤銷。

現在,你應該已經準備好開始使用Rust進行編程了!如果你想要驗證安裝是否成功,可以打開一個新的終端窗口,并嘗試運行rustc --versioncargo --version命令來查看Rust編譯器和Cargo的版本信息。

很好,你已經成功安裝了Rust!現在,為了讓Rust和Cargo的命令在任何地方都能被識別和執行,你需要將這些命令的路徑添加到你的環境變量PATH中。安裝過程中已經提到了這一點,并為你準備了一個環境腳本文件,在$HOME/.cargo目錄下。

根據你的shell類型,你需要運行相應的命令來使這個環境腳本生效。以下是具體的步驟:

  1. 對于sh/bash/zsh/ash/dash/pdksh用戶
    打開你的終端,并執行以下命令:

    . "$HOME/.cargo/env"
    

    注意命令前面的點(.)是必需的,它表示在當前shell中執行腳本,而不是啟動一個新的shell來執行。

  2. 對于fish用戶
    如果你使用的是fish shell,你需要執行以下命令:

    source "$HOME/.cargo/env.fish"
    

    source命令在fish中與在其他shell中的行為略有不同,但效果是相同的,即在當前shell環境中執行腳本。

執行完上述命令后,你的PATH環境變量就會被更新,以包含Cargo的bin目錄($HOME/.cargo/bin),這樣你就可以在任何位置直接運行rustc, cargo等命令了。

如果你想要這些變更在每次打開新的終端窗口時都自動生效,你可以將上述命令添加到你的shell配置文件中(如.bashrc, .zshrc, config.fish等),具體取決于你使用的shell類型。

最后,為了驗證安裝和配置是否正確,你可以嘗試在新的終端窗口中運行rustc --versioncargo --version,看看是否能正確顯示出Rust編譯器和Cargo的版本信息。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/14171.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/14171.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/14171.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

leetcode-順時針旋轉矩陣-111

題目要求 思路 1.假設現在有一個矩陣 123 456 789 2.我們可以根據19這個對角線將數據進行交換&#xff0c;得到矩陣 147 258 369 3.然后將矩陣每一行的數據再翻轉&#xff0c;得到矩陣 741 852 963 代碼實現 class Solution { public:vector<vector<int> > rot…

Django自定義模板標簽與過濾器

title: Django自定義模板標簽與過濾器 date: 2024/5/17 18:00:02 updated: 2024/5/17 18:00:02 categories: 后端開發 tags: Django模版自定義標簽過濾器開發模板語法Python后端前端集成Web組件 Django模板系統基礎 1. Django模板語言概述 Django模板語言&#xff08;DTL&…

【譯】MySQL復制入門: 探索不同類型的MySQL復制解決方案

原文地址&#xff1a;An Introduction to MySQL Replication: Exploring Different Types of MySQL Replication Solutions 在這篇博文中&#xff0c;我將深入介紹 MySQL 復制&#xff0c;回答它是什么、如何工作、它的優勢和挑戰&#xff0c;并回顧作為 MySQL 環境&#xff0…

【Qt】深入探索Qt主窗口與菜單欄:構建高效用戶界面的實踐指南

文章目錄 前言1. 什么是Main Window?2. 詳細了解一下其中的 菜單欄&#xff1a;2.1. 創建菜單欄2.2. 添加快捷鍵2.3. 添加子菜單2.4. 添加分割線2.5. 添加圖標 3. 內存泄漏問題&#xff1a;總結 前言 在現代軟件開發中&#xff0c;用戶界面的設計對于提升用戶體驗至關重要。Q…

【雅特力AT32】串口UART、USART配置和使用方法,數組的阻塞發送函數編寫,串口接收中斷、回環、重定向

【雅特力AT32】串口UART、USART配置和使用方法&#xff0c;數組的阻塞發送函數編寫&#xff0c;串口接收中斷、回環、重定向 文章目錄 串口配置阻塞發送函數接收中斷和串口回環串口重定向附錄&#xff1a;Cortex-M架構的SysTick系統定時器精準延時和MCU位帶操作SysTick系統定時…

了解CentOS及其基礎

什么是CentOS&#xff1f; CentOS&#xff08;Community ENTerprise Operating System&#xff09;是一個社區支持的操作系統&#xff0c;基于Red Hat Enterprise Linux&#xff08;RHEL&#xff09;的源代碼。它是免費且開源的&#xff0c;廣泛用于服務器環境。 為什么選擇C…

深入理解HTTP:工作原理、特性及應用

HTTP&#xff0c;全稱Hypertext Transfer Protocol&#xff0c;即超文本傳輸協議&#xff0c;是互聯網上應用最為廣泛的一種網絡協議。它定義了客戶端和服務器之間如何交換信息&#xff0c;以及如何傳輸超文本和其他內容。HTTP協議的出現極大地推動了互聯網的普及和發展&#x…

ARM|DSP+FPGA+NVIDIA AI攝像頭定制

信邁擁有高性能的攝像頭全棧能力&#xff1a;掌握車載模組光學設計能力&#xff0c;具有多名經驗豐富光學設計專家&#xff1b;具備豐富的車載攝像模組硬件設計經驗&#xff1b;掌握目前市面上大部分車載平臺的ISP圖像畫質服務能力&#xff0c;能自主開發圖像ISP和增強算法&…

第十二章 網絡編程

第十二章 網絡編程 網絡協議概述 通信協議&#xff1a; 協議即規則&#xff0c;就好比汽車上路要遵守交通規則一樣&#xff0c;為了使全世界不同類型的計算機都可以連接起來&#xff0c;所以制定了一套全球通用的通信協議——Internet協議。有了Internet協議&#xff0c;任何…

【mysql】【docker】mysql8-互為主從

&#x1f338;&#x1f338; Linux/docker-compose/mysql8 互為主從 優雅部署 &#x1f338;&#x1f338; 記錄下兩臺Linux的mysql需要熱備份&#xff0c;互為主從&#xff0c;后期加上keepalived實現高可用切換 參考博客&#xff1a;答 案 &#x1f338; 一、準備文件 這里…

圖形學初識--直線插值算法

文章目錄 為什么需要插值算法&#xff1f;插值算法是什么&#xff1f;有哪些常見的插值算法呢&#xff1f;1. 線性插值&#xff08;Linear Interpolation&#xff09;2. 多項式插值&#xff08;Polynomial Interpolation&#xff09;3. 樣條插值&#xff08;Spline Interpolati…

Blazor 下支持 Azure AD 的多套登錄方案

比如上圖配置了兩套不同的登錄方案&#xff0c;各有自己的 TenantId 和 ClientId &#xff0c;要同時支持他們的登錄&#xff08;其實在同一套 TenantId 和 ClientId 里面配置多個登錄賬戶不就好了&#xff0c;但是......那套登錄的管理是在客戶自己的Azure AD賬戶管理下的&…

SpringBoot3 解決NoResourceFoundException: No static resource favicon.ico.異常

SpringBoot3 解決NoResourceFoundException: No static resource favicon.ico.異常 spring boot3項目中瀏覽器中訪問報錯找不到favicon.ico&#xff0c;雖然不影響使用&#xff0c;用api工具也可以忽略這個異常&#xff0c;但是防止瀏覽器訪問時出現異常干擾日志&#xff0c;所…

oracle數據庫解析過高分析

解析非常高&#xff0c;通過時間模型可以看到解析占比非常高 解析大致可以分為硬解析&#xff08; hard parse&#xff09;、軟解析&#xff08; soft parse&#xff09;和軟軟解析&#xff08; soft soft parse&#xff09;。如&#xff0c;執行一條 SQL 的時候&#xff0c;如…

星型模型和雪花模型的區別

星型模型和雪花模型都是數據倉庫設計中常用的維度建模方法&#xff0c;它們之間的主要區別在于數據組織結構、數據冗余度、查詢效率、可擴展性和正規化程度等方面&#xff1a; 星型模型 結構特點&#xff1a;星型模型中&#xff0c;一個中心的事實表連接多個維度表&#xff0…

在電腦中,Apple Mobile Device Support程序是什么?

Apple Mobile Device Support 是一項關鍵的后臺服務&#xff0c;它為 Windows 用戶提供了與蘋果 iOS 設備&#xff08;包括 iPhone、iPad 和 iPod&#xff09;順暢互動的能力。這項服務的核心功能是為iTunes軟件提供必要的支持&#xff0c;使得用戶能夠將他們的移動設備與電腦連…

Google Find My Device:科技守護,安心無憂

在數字化的時代&#xff0c;我們的生活與各種智能設備緊密相連。而 Google Find My Device 便是一款為我們提供安心保障的實用工具。 一、Find My Decice Netword的定義 谷歌的Find My Device Netword旨在通過利用Android設備的眾包網絡的力量&#xff0c;幫助用戶安全的定位所…

HTML5 歷史、地理位置處理、全屏處理

目錄 歷史HistoryAPI地理位置處理GeolocationAPI全屏處理FullscreenAPIHistoryAPI window.history 對象 window.history 是瀏覽器提供的一個內置對象,它提供了對瀏覽器歷史記錄的訪問和操作能力。通過這個對象,開發者可以實現無刷新頁面跳轉、添加新的瀏覽歷史條目等,從而提…

STM32F4_HAL控制GPIO輸出——跑馬燈實驗

1、GPIO工作模式 1.1 端口輸入數據寄存器&#xff08;IDR&#xff09; 1.2 端口輸出數據寄存器&#xff08;ODR&#xff09; 1.3 端口置位/復位寄存器&#xff08;BSRR&#xff09; 為什么有了 ODR 寄存器&#xff0c;還要這個 BSRR 寄存器呢&#xff1f;我們先看看 BSRR 的寄…

23種設計模式(持續輸出中)

一.設計模式的作用 設計模式是軟件從業人員長期總結出來用于解決特定問題的通用性框架&#xff0c;它提高了代碼的可維護性、可擴展性、可讀性以及復用性。 二.設計模式 1.工廠模式 工廠模式提供了創建對象的接口&#xff0c;而無需制定創建對象的具體類&#xff0c;工廠類…