如何在手動安裝的 wsl 上更新 kali?
我在 Windows 10 上使用 kali wsl(version 1),並在這裡使用這種方法將它安裝在非 C 驅動器上。
這是返回
uname -r
:4.4.0-19041-Microsoft
apt更新時出現此錯誤:
user@host:~$ sudo apt update [sudo] password for user: Get:1 <mirror_site> kali-rolling InRelease [30.5 kB] Err:1 <mirror_site> kali-rolling InRelease The following signatures were invalid: EXPKEYSIG ED444FF07D8D0BF6 Kali Linux Repository <devel@kali.org> Fetched 30.5 kB in 2s (12.5 kB/s) Reading package lists... Done Building dependency tree Reading state information... Done All packages are up to date. W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: <mirror_site> kali-rolling InRelease: The following signatures were invalid: EXPKEYSIG ED444FF07D8D0BF6 Kali Linux Repository <devel@kali.org> W: Failed to fetch http://http.kali.org/kali/dists/kali-rolling/InRelease The following signatures were invalid: EXPKEYSIG ED444FF07D8D0BF6 Kali Linux Repository <devel@kali.org> W: Some index files failed to download. They have been ignored, or old ones used instead.
然後我嘗試用 修復這個
gpg --keyserver hkp://keys.gnupg.net --recv-key 7D8D0BF6
,得到這個錯誤:E: gnupg, gnupg2 and gnupg1 do not seem to be installed, but one of them is required for this operation
所以,我嘗試從Debian Package
gnupg_2.2.27-2_all.deb
手動安裝。但是,出現了更多的依賴問題。user@host:~$ sudo dpkg -i gnupg_2.2.27-2_all.deb (Reading database ... 17159 files and directories currently installed.) Preparing to unpack gnupg_2.2.27-2_all.deb ... Unpacking gnupg (2.2.27-2) over (2.2.27-2) ... dpkg: dependency problems prevent configuration of gnupg: gnupg depends on dirmngr (<< 2.2.27-2.1~); however: Package dirmngr is not installed. gnupg depends on dirmngr (>= 2.2.27-2); however: Package dirmngr is not installed. gnupg depends on gnupg-l10n (= 2.2.27-2); however: Package gnupg-l10n is not installed. gnupg depends on gnupg-utils (<< 2.2.27-2.1~); however: Package gnupg-utils is not installed. gnupg depends on gnupg-utils (>= 2.2.27-2); however: Package gnupg-utils is not installed. gnupg depends on gpg (<< 2.2.27-2.1~); however: Package gpg is not installed. gnupg depends on gpg (>= 2.2.27-2); however: Package gpg is not installed. gnupg depends on gpg-agent (<< 2.2.27-2.1~); however: Package gpg-agent is not installed. gnupg depends on gpg-agent (>= 2.2.27-2); however: Package gpg-agent is not installed. gnupg depends on gpg-wks-client (<< 2.2.27-2.1~); however: Package gpg-wks-client is not installed. gnupg depends on gpg-wks-client (>= 2.2.27-2); however: Package gpg-wks-client is not installed. gnupg depends on gpg-wks-server (<< 2.2.27-2.1~); however: Package gpg-wks-server is not installed. gnupg depends on gpg-wks-server (>= 2.2.27-2); however: Package gpg-wks-server is not installed. gnupg depends on gpgsm (<< 2.2.27-2.1~); however: Package gpgsm is not installed. gnupg depends on gpgsm (>= 2.2.27-2); however: Package gpgsm is not installed. gnupg depends on gpgv (>= 2.2.27-2); however: Version of gpgv on system is 2.2.12-1. dpkg: error processing package gnupg (--install): dependency problems - leaving unconfigured Errors were encountered while processing: gnupg
我不知道接下來該做什麼。我真的需要手動下載和安裝所有這些依賴項嗎?我必須做什麼才能使 apt 工作?
這似乎是由於 Microsoft 文件中用於手動安裝發行版的過時連結造成的。連結到那裡的 Kali 包是 2019.2,我可以重現您在使用該(過時的)包時遇到的問題。當然有更高版本的 Kali WSL 包可用,因為從 Microsoft Store 安裝的版本是 2021.2。不幸的是,我不知道該軟體包的直接連結。我已將此作為問題送出到 MicrosoftDocs\WSL Github 上。
Kali 為 WSL 提供的發行版是一個非常小的發行版,並且不包括一些工具,例如 GPG,這些工具將在“正常”發行版中提供,這一事實進一步加劇了這個問題。因此,您通常遵循的更新密鑰的說明不適用於 WSL。
也許有一種方法可以在
gpg
沒有工作的情況下安裝其所有依賴項apt
,但在我看來這是不值得的。相反,讓我提出一種替代安裝方法,但需要了解您需要安裝在
C:
. 也就是說,在此過程中,您將需要在驅動器上臨時專用(或釋放)略低於 1GB 的空間。C:
我們可以在最後釋放它。請不要讓以下說明的長度嚇到您。我傾向於過於詳細,以確保您了解正在發生的事情,並嘗試使其盡可能防故障。我已經親自測試了下面的整個過程,但是如果您遇到任何麻煩,請告訴我。
- 首先,刪除現有的 Kali 安裝。我假設您那裡沒有任何關鍵文件,因為我猜您是最近安裝的。但如果這樣做,請將它們移出 WSL 實例。
然後,從 PowerShell 或 CMD:
wsl --unregister kali-linux
- 同時刪除您之前下載的(舊的、過時的)封包件。
- 接下來,轉到 Microsoft Store 並安裝 Kali。這將在受保護的目錄下安裝封包件
C:\Program Files\WindowsApps\
,這就是我們暫時需要該驅動器上的空間的原因。- 假設您正在執行 Windows 終端,請
Start-Process wt -Verb RunAs
在 PowerShell 中執行以獲取管理員提示。如果不是 Windows 終端,請以管理員身份執行 PowerShell。- 在 Admin PowerShell 中,執行
Get-ChildItem -Recurse 'C:\Program Files\WindowsApps\Kali*' | Where-Object {$_.Name -eq 'install.tar.gz' } | % { $_.DirectoryName } | Set-Clipboard
以獲取安裝 Kali 包的目錄。- 通過 確認它找到了正確的路徑
Get-Clipboard
。它應該返回類似C:\Program Files\WindowsApps\KaliLinux.54290C8133FEE_1.8.0.0_x64__ey8k8hqnwqnmg
. 這條路徑將來可能會改變(如果您稍後閱讀此答案),但這沒關係。- 退出 Admin Shell 並返回到您的“普通使用者”PowerShell:
mkdir D:\wsl\instances\kali-linux cd D:\wsl\instances\kali-linux Get-Clipboard # Confirm that the Kali package path is still on the clipboard Copy-Item "$(Get-Clipboard)\*"
這會將封包件複製到
D:
驅動器。當然,您可以根據需要設置安裝路徑。我個人使用一種wsl\instances\distro-name
格式,因為我保留了多個發行版和實例。如果您以後想要更多副本,我建議您使用它以防萬一。
- 您現在應該在目標目錄中有許多文件。就像是:
Name ---- AppxBlockMap.xml AppxManifest.xml AppxMetadata/ AppxSignature.p7x Assets/ install.tar.gz kali.exe resources.pri
從這裡,你應該回到熟悉的領域。只需執行
.\kali.exe
,稍等片刻,設置您的使用者名和密碼,WSL 就會啟動到 Kali。退出 Kali 並(返回 PowerShell)使用
Remove-Item Appx*, Assets, install.tar.gz, resources.pri
.對於 WSL1,您最終應該得到:
rootfs
儲存文件系統的目錄。重要提示:請勿出於任何原因從 Windows/PowerShell/CMD/記事本/任何其他 Windows 應用程序等訪問此內容。有龍。- 一個
temp
目錄fsserver
- 還有
kali.exe
我們複製過來的命令(但沒有刪除)。恕我直言,這並不是那麼有用,但您可能想要它。它可以用來啟動 Kali,但wsl
命令要好得多(功能更多,支持更好)。從 Microsoft Store 解除安裝 Kali 以回收
C:
驅動器上的空間。你的安裝應該是 Microsoft Store 中 Kali 提供的最新最好的版本。您可以使用 . 檢查 Kali 版本
cat /etc/os-release
。目前是2021.2。sudo apt update && sudo apt upgrade
現在應該可以正常工作了…