簡體   English   中英

“進行安裝”錯誤。 make (e=2) 系統找不到指定的文件

[英]"make install" error. make (e=2) The system can not find the file specified

我已經找了幾個小時了,仍然找不到解決方案,感到非常沮喪。

我已經用巧克力和 docker 安裝了 make 工具,我正在嘗試構建 linuxkit 工具https://github.com/linuxkit/linuxkit然后使用它為 Docker 構建 linux VM 映像

來自自述文件: “LinuxKit 使用 linuxkit 工具來構建、推送和運行 VM 映像。

簡單構建說明:使用 make 構建。 這將在 bin/ 中構建工具。”

我運行make install但一次又一次,無論我做什么,它總是失敗

PS C:\Users\Tim\Desktop\linuxkit-master\linuxkit-master> make install
cp -R bin/* /usr/local/bin
process_begin: CreateProcess(NULL, cp -R bin/* /usr/local/bin, ...) failed.
make (e=2): The system cannot find the file specified.
make: *** [Makefile:78: install] Error 2

在 Makefile:77,78:

install:
    cp -R bin/* $(PREFIX)/bin

我嘗試更改 makefile,因為 Windows 上沒有 usr/local/bin 這樣的路徑,但無論我將其更改為什么,構建都不會成功。

我什至嘗試在 wsl 上運行它:

root@DESKTOP-GF982I3:/mnt/c/users# cd /mnt/c/Users/Tim/Desktop/linuxkit-master/linuxkit-master
root@DESKTOP-GF982I3:/mnt/c/Users/Tim/Desktop/linuxkit-master/linuxkit-master# make install
cp -R bin/* /usr/local/bin
cp: cannot stat 'bin/*': No such file or directory
make: *** [Makefile:78: install] Error 1
root@DESKTOP-GF982I3:/mnt/c/Users/Tim/Desktop/linuxkit-master/linuxkit-master#

但錯誤再次出現在第 78 行。

請幫忙。

編輯:

我在 linux 上也遇到了錯誤

安裝 docker 引擎並運行守護進程:

tim@tim-vm:~/Desktop/linuxkit/linuxkit-1.0.1$ sudo make
make -C ./src/cmd/linuxkit
make[1]: Entering directory '/home/tim/Desktop/linuxkit/linuxkit-1.0.1/src/cmd/linuxkit'
fatal: not a git repository (or any of the parent directories): .git
tar cf - -C . . | docker run --rm --net=none --log-driver=none -i -e GOARCH= linuxkit/go-compile:7b1f5a37d2a93cd4a9aa2a87db264d8145944006 --package github.com/linuxkit/linuxkit/src/cmd/linuxkit --ldflags "-X github.com/linuxkit/linuxkit/src/cmd/linuxkit/version.GitCommit= -X github.com/linuxkit/linuxkit/src/cmd/linuxkit/version.Version="v0.8+"" -o linuxkit > tmp_linuxkit_bin.tar
gofmt...
vendor/github.com/Code-Hex/vz/v3/internal/objc/finalizer_118.go:8:18: expected '(', found '['
vendor/github.com/moby/buildkit/frontend/attest/sbom.go:75:13: expected '(', found '['
vendor/github.com/moby/buildkit/frontend/frontend.go:15:28: expected ';', found '['
vendor/github.com/moby/buildkit/frontend/gateway/client/client.go:17:28: expected ';', found '['
vendor/github.com/moby/buildkit/solver/result/result.go:16:15: expected ']', found any
vendor/github.com/moby/buildkit/solver/result/result.go:26:2: expected declaration, found 'if'
vendor/github.com/moby/buildkit/solver/result/result.go:68:3: expected declaration, found 'return'
vendor/github.com/moby/buildkit/solver/result/result.go:91:2: expected declaration, found 'if'
govet...
golint...
./cache/write.go:357:1: exported method Provider.ImageInCache should have comment or be unexported
sh: exported: unknown operand
make[1]: *** [Makefile:40: tmp_linuxkit_bin.tar] Error 2
make[1]: *** Deleting file 'tmp_linuxkit_bin.tar'
make[1]: Leaving directory '/home/tim/Desktop/linuxkit/linuxkit-1.0.1/src/cmd/linuxkit'
make: *** [Makefile:61: linuxkit] Error 2

在 windows 上調整 makefile 文件時,我遇到了類似的問題。

如您所見,該腳本創建了一個 .tar 文件,但立即將其刪除。

我將重申主要目標是在 Windows 上運行 linux Docker 容器,正如我讀到的那樣,LinuxKit 將構建 specific.iso 圖像以與 Hyper-V 一起使用,這將提供更高的效率,例如更快的啟動和更少的 CPU 和與常規 Hyper-V 計算機相比,開銷為 memory。

但是由於我在使用 linuxkit 時遇到問題,我將不得不求助於使用常規的 Hyper-V 機器。

您感到沮喪,因為您正試圖在 Windows 系統上使用一個為在 GNU/Linux 上工作而創建的項目。 那根本行不通。 Windows 和 Linux 在幾乎所有可以想象的方面都完全不同,一個項目需要付出巨大的努力才能同時處理這兩個問題。 大多數項目沒有時間、精力或興趣去做那件事。

這個錯誤:

process_begin: CreateProcess(NULL, cp -R bin/* /usr/local/bin, ...) failed.

是因為您試圖在 Windows 上運行 Linux 程序cp 。而該程序在 Windows 上不存在。

然后你切換到 WSL。 我對 WSL 了解不多,但你正在朝着正確的方向前進:WSL 提供了一個類似 Linux 的環境,你可以在其中運行(某些)Linux 風格的程序。

這個錯誤:

cp: cannot stat 'bin/*': No such file or directory

現在正在運行 Linux cp ,但它說它正在嘗試復制bin目錄中的文件,但沒有這樣的文件。 我無法准確解釋原因,但只是想清楚一點:Makefile 中的install目標通常會安裝您已經構建的文件。 在上面的示例文本中,您沒有運行實際構建任何東西的make命令(通常只是沒有目標的make )。

所以,也許您無法運行make install因為沒有要安裝的東西,因為您還沒有構建代碼。

在我看來,用於構建 Linux 發行版的 linuxkit(僅從名稱和描述來看,我對此一無所知)之類的項目幾乎肯定不會在 Windows 上運行。甚至可能在 WSL 中也無法運行。 您應該檢查項目以了解他們的要求。

您可能需要 go 回到這里的繪圖板:要么獲得一個單獨的系統並在其上安裝 GNU/Linux,要么創建一個真正的虛擬機(不僅僅是 WSL)並在那里運行它,或者找到另一個旨在運行的工具在 Windows 上。

您在 Linux 遇到的第二個錯誤是因為構建中使用的 go-compiler 容器鏡像是舊的,顯然不再與實際代碼兼容。 linuxkit/go-compile:7b1f5a37d2a93cd4a9aa2a87db264d8145944006 容器使用 go 1.16.3。 您可以更新 Makefile 以使用較新的版本,只需從此處獲取合適的版本: https://hub.docker.com/r/linuxkit/go-compile/tags——至少在撰寫本文時,linuxkit /go-compile:c97703655e8510b7257ffc57f25e40337b0f0813(提供 go 1.19.4)似乎運行良好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM