因為在 Windows 裡安裝了 docker, 所以在 command mode 輸入 wsl 可以進入 linux, 但實際上這是 docker 使用的 linux, 沒有 apt 指令, 所以輸入 apt 指令, 會顯示錯誤訊息:
YAO-NB:/mnt/host/c/Users/max32# apt
-sh: apt: not found
確認您是否進入了 WSL Linux 環境
請在您當前的命令列視窗中輸入以下命令:
wsl
- 如果成功: 它會將您帶入您預設的 Linux 發行版。
- 如果失敗: 請嘗試直接從 Windows 的開始選單啟動您的 WSL 發行版(例如點擊 Ubuntu 圖示)。
檢查您的發行版和 Shell
進入 WSL 後,執行以下命令:
- 檢查發行版名稱:Bash
cat /etc/os-release- 如果您看到
NAME="Ubuntu"或NAME="Debian GNU/Linux",那麼您應該可以使用apt。
- 如果您看到
- 確認
apt是否存在:Bashwhich apt- 如果輸出
/usr/bin/apt(或類似路徑), 則表示apt存在,問題是路徑 (Path) 設定不正確。 - 如果輸出找不到, 則您使用的發行版可能不是基於 Debian 的,請回到上面的 可能性 2 判斷。
- 如果輸出
如果是 docker 話,
YAO-NB:/mnt/host/c/Users/max32# cat /etc/os-release
PRETTY_NAME="Docker Desktop"
這個資訊非常關鍵!
您目前所在的環境並不是您通常安裝應用程式的標準 Linux 發行版(例如 Ubuntu 或 Debian),而是 Docker Desktop 在 WSL 2 中運行的內部虛擬機或環境。
輸出顯示:
PRETTY_NAME="Docker Desktop"
這個 Docker Desktop 專用的 WSL 虛擬機是用來執行 Docker 服務 (Docker Engine) 的,它是一個高度精簡、為單一目的(運行 Docker)而設計的 Linux 環境。
🚨 結論:這個環境沒有 apt
由於這個 Docker 專用的環境是極度精簡的,它通常不包含像 apt、yum 或 dnf 這樣的標準套件管理工具,因為它的設計目的不是讓使用者在裡面安裝軟體,而是專門用來運行 Docker 引擎。
💡 您真正想做的事情是什麼?
您想要使用 apt 安裝軟體,這表示您可能想做以下其中一件事:
- 在您的主要 WSL Linux 環境中安裝開發工具(例如 Git, Python, Zsh)。
- 在 Docker 容器內部安裝東西(例如在
Dockerfile中)。
🛠️ 解決方案:如何回到您的主 WSL 環境
您需要退出當前的 Docker Desktop 內部環境,然後進入您安裝的 Ubuntu 或 Debian 發行版。
啟動您的標準 WSL 發行版
從 Windows 的 PowerShell 或 CMD 終端機中,輸入您發行版的名稱來啟動它。
A. 如果您安裝了 Ubuntu (最常見):
ubuntu
或
wsl -d Ubuntu
B. 如果您安裝了其他發行版(例如 Debian):
debian
或
wsl -d Debian
驗證並使用 apt
進入您正確的 Linux 環境後,您的提示符號會變成類似 max32@YAO-NB:~$ 的形式。
此時您就可以正常使用 apt 了:
sudo apt update
sudo apt install <您想安裝的套件>
快速確認:
您可以在新的 Shell 中再次執行 cat /etc/os-release,這次應該會看到類似以下輸出:
NAME="Ubuntu"
VERSION="22.04.3 LTS (Jammy Jellyfish)"
...
要如何知道安裝幾個 linux?
執行指令:
wsl --list --verbose
我的環境已經成功安裝了 ubuntu,
PS C:\Users\max32> wsl --list --verbose
NAME STATE VERSION
* docker-desktop Stopped 2
根據您的輸出:
NAME STATE VERSION
* docker-desktop Running 2
Ubuntu Running 2
這表示您的系統現在已經同時安裝了並且 正在運行 兩個 WSL 發行版:
docker-desktop(Docker 專用環境)Ubuntu(您現在可以安裝軟體的標準 Linux 環境)
🚀 WSL 環境切換的方法
在 PowerShell 或 CMD 中,您可以使用 wsl -d 命令來切換並啟動特定的發行版。
1. 進入 Ubuntu 環境 (使用 apt)
要使用 apt 安裝軟體,您需要進入 Ubuntu 發行版。
- 在您的 PowerShell 提示符號 (
PS C:\Users\max32>) 後面輸入:wsl -d Ubuntu-d(或--distribution) 參數告訴wsl啟動特定的發行版名稱。
- 預期結果:
- 提示符號會切換到 Ubuntu 的 Shell 格式 (例如
max32@Your-PC:~$)。 - 現在您可以正常使用
apt了!
sudo apt update sudo apt install git # 範例:安裝 Git - 提示符號會切換到 Ubuntu 的 Shell 格式 (例如
2. 進入 docker-desktop 環境 (通常不需要)
如果您想切換回 Docker 的內部環境,則使用:
wsl -d docker-desktop
3. 設定預設啟動的發行版 (可選)
如果您希望每次只輸入 wsl 命令時,預設就進入 Ubuntu 而不是 docker-desktop,您可以設定 Ubuntu 為預設發行版:
- 在 PowerShell 中輸入:
wsl --set-default Ubuntu - 預期結果:
- 下次您在 PowerShell 中直接輸入
wsl時,它就會直接啟動Ubuntu。
- 下次您在 PowerShell 中直接輸入
切換到 Ubuntu 的命令是:
wsl -d Ubuntu