在 @INC 中找不到 File/Slurp.pm

sol*_*uvr 0 linux xen perl uefi

我正在尝试在 Ubuntu 20.04.2 LTS 上编译uefi 应用程序,但编译因错误而终止。

\n
./mkkeys.sh                    \nEnter a Common Name to embed in the keys: keys\ncc -I/home/jr/Downloads/xen-uefi/efitools/include/ -I/usr/include/efi -I/usr/include/efi/x86_64 -I/usr/include/efi/protocol -O2  -fpic -Wall -fshort-wchar -fno-strict-aliasing -fno-merge-constants -fno-stack-protector -ffreestanding -fno-stack-check -DGNU_EFI_USE_MS_ABI -DEFI_FUNCTION_WRAPPER -mno-red-zone -DCONFIG_x86_64 -c cert-to-efi-sig-list.c -o cert-to-efi-sig-list.o\ncert-to-efi-sig-list.c:9: warning: "__STDC_VERSION__" redefined\n    9 | #define __STDC_VERSION__ 199901L\n      | \n<built-in>: note: this is the location of the previous definition\nmake -C lib lib.a\nmake[1]: Entering directory \'/home/jr/Downloads/xen-uefi/efitools/lib\'\ncc -I/home/jr/Downloads/xen-uefi/efitools/include/ -I/usr/include/efi -I/usr/include/efi/x86_64 -I/usr/include/efi/protocol -O2  -fpic -Wall -fshort-wchar -fno-strict-aliasing -fno-merge-constants -fno-stack-protector -ffreestanding -fno-stack-check -DGNU_EFI_USE_MS_ABI -DEFI_FUNCTION_WRAPPER -mno-red-zone -DCONFIG_x86_64 -c simple_file.c -o simple_file.o\ncc -I/home/jr/Downloads/xen-uefi/efitools/include/ -I/usr/include/efi -I/usr/include/efi/x86_64 -I/usr/include/efi/protocol -O2  -fpic -Wall -fshort-wchar -fno-strict-aliasing -fno-merge-constants -fno-stack-protector -ffreestanding -fno-stack-check -DGNU_EFI_USE_MS_ABI -DEFI_FUNCTION_WRAPPER -mno-red-zone -DCONFIG_x86_64 -c pecoff.c -o pecoff.o\ncc -I/home/jr/Downloads/xen-uefi/efitools/include/ -I/usr/include/efi -I/usr/include/efi/x86_64 -I/usr/include/efi/protocol -O2  -fpic -Wall -fshort-wchar -fno-strict-aliasing -fno-merge-constants -fno-stack-protector -ffreestanding -fno-stack-check -DGNU_EFI_USE_MS_ABI -DEFI_FUNCTION_WRAPPER -mno-red-zone -DCONFIG_x86_64 -c guid.c -o guid.o\ncc -I/home/jr/Downloads/xen-uefi/efitools/include/ -I/usr/include/efi -I/usr/include/efi/x86_64 -I/usr/include/efi/protocol -O2  -fpic -Wall -fshort-wchar -fno-strict-aliasing -fno-merge-constants -fno-stack-protector -ffreestanding -fno-stack-check -DGNU_EFI_USE_MS_ABI -DEFI_FUNCTION_WRAPPER -mno-red-zone -DCONFIG_x86_64 -c sha256.c -o sha256.o\ncc -I/home/jr/Downloads/xen-uefi/efitools/include/ -I/usr/include/efi -I/usr/include/efi/x86_64 -I/usr/include/efi/protocol -O2  -fpic -Wall -fshort-wchar -fno-strict-aliasing -fno-merge-constants -fno-stack-protector -ffreestanding -fno-stack-check -DGNU_EFI_USE_MS_ABI -DEFI_FUNCTION_WRAPPER -mno-red-zone -DCONFIG_x86_64 -c console.c -o console.o\ncc -I/home/jr/Downloads/xen-uefi/efitools/include/ -I/usr/include/efi -I/usr/include/efi/x86_64 -I/usr/include/efi/protocol -O2  -fpic -Wall -fshort-wchar -fno-strict-aliasing -fno-merge-constants -fno-stack-protector -ffreestanding -fno-stack-check -DGNU_EFI_USE_MS_ABI -DEFI_FUNCTION_WRAPPER -mno-red-zone -DCONFIG_x86_64 -c execute.c -o execute.o\ncc -I/home/jr/Downloads/xen-uefi/efitools/include/ -I/usr/include/efi -I/usr/include/efi/x86_64 -I/usr/include/efi/protocol -O2  -fpic -Wall -fshort-wchar -fno-strict-aliasing -fno-merge-constants -fno-stack-protector -ffreestanding -fno-stack-check -DGNU_EFI_USE_MS_ABI -DEFI_FUNCTION_WRAPPER -mno-red-zone -DCONFIG_x86_64 -c configtable.c -o configtable.o\ncc -I/home/jr/Downloads/xen-uefi/efitools/include/ -I/usr/include/efi -I/usr/include/efi/x86_64 -I/usr/include/efi/protocol -O2  -fpic -Wall -fshort-wchar -fno-strict-aliasing -fno-merge-constants -fno-stack-protector -ffreestanding -fno-stack-check -DGNU_EFI_USE_MS_ABI -DEFI_FUNCTION_WRAPPER -mno-red-zone -DCONFIG_x86_64 -c shell.c -o shell.o\ncc -I/home/jr/Downloads/xen-uefi/efitools/include/ -I/usr/include/efi -I/usr/include/efi/x86_64 -I/usr/include/efi/protocol -O2  -fpic -Wall -fshort-wchar -fno-strict-aliasing -fno-merge-constants -fno-stack-protector -ffreestanding -fno-stack-check -DGNU_EFI_USE_MS_ABI -DEFI_FUNCTION_WRAPPER -mno-red-zone -DCONFIG_x86_64 -c security_policy.c -o security_policy.o\ncc -I/home/jr/Downloads/xen-uefi/efitools/include/ -I/usr/include/efi -I/usr/include/efi/x86_64 -I/usr/include/efi/protocol -O2  -fpic -Wall -fshort-wchar -fno-strict-aliasing -fno-merge-constants -fno-stack-protector -ffreestanding -fno-stack-check -DGNU_EFI_USE_MS_ABI -DEFI_FUNCTION_WRAPPER -mno-red-zone -DCONFIG_x86_64 -c shim_protocol.c -o shim_protocol.o\ncc -I/home/jr/Downloads/xen-uefi/efitools/include/ -I/usr/include/efi -I/usr/include/efi/x86_64 -I/usr/include/efi/protocol -O2  -fpic -Wall -fshort-wchar -fno-strict-aliasing -fno-merge-constants -fno-stack-protector -ffreestanding -fno-stack-check -DGNU_EFI_USE_MS_ABI -DEFI_FUNCTION_WRAPPER -mno-red-zone -DCONFIG_x86_64 -c pkcs7verify.c -o pkcs7verify.o\ncc -I/home/jr/Downloads/xen-uefi/efitools/include/ -I/usr/include/efi -I/usr/include/efi/x86_64 -I/usr/include/efi/protocol -O2  -fpic -Wall -fshort-wchar -fno-strict-aliasing -fno-merge-constants -fno-stack-protector -ffreestanding -fno-stack-check -DGNU_EFI_USE_MS_ABI -DEFI_FUNCTION_WRAPPER -mno-red-zone -DCONFIG_x86_64 -c kernel_efivars.c -o kernel_efivars.o\nkernel_efivars.c:19: warning: "__STDC_VERSION__" redefined\n   19 | #define __STDC_VERSION__ 199901L\n      | \n<built-in>: note: this is the location of the previous definition\nkernel_efivars.c: In function \xe2\x80\x98kernel_variable_init\xe2\x80\x99:\nkernel_efivars.c:61:2: warning: ignoring return value of \xe2\x80\x98read\xe2\x80\x99, declared with attribute warn_unused_result [-Wunused-result]\n   61 |  read(fd, buf, st.st_size);\n      |  ^~~~~~~~~~~~~~~~~~~~~~~~~\nkernel_efivars.c: In function \xe2\x80\x98get_variable\xe2\x80\x99:\nkernel_efivars.c:107:2: warning: ignoring return value of \xe2\x80\x98read\xe2\x80\x99, declared with attribute warn_unused_result [-Wunused-result]\n  107 |  read(fd, &attr, sizeof(attr));\n      |  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nkernel_efivars.c:113:3: warning: ignoring return value of \xe2\x80\x98read\xe2\x80\x99, declared with attribute warn_unused_result [-Wunused-result]\n  113 |   read(fd, buf, st.st_size - sizeof(attr));\n      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nar rcv lib.a simple_file.o pecoff.o guid.o sha256.o console.o execute.o configtable.o shell.o security_policy.o shim_protocol.o pkcs7verify.o kernel_efivars.o\na - simple_file.o\na - pecoff.o\na - guid.o\na - sha256.o\na - console.o\na - execute.o\na - configtable.o\na - shell.o\na - security_policy.o\na - shim_protocol.o\na - pkcs7verify.o\na - kernel_efivars.o\nmake[1]: Leaving directory \'/home/jr/Downloads/xen-uefi/efitools/lib\'\ncc  -o cert-to-efi-sig-list cert-to-efi-sig-list.o -lcrypto lib/lib.a\ncc -I/home/jr/Downloads/xen-uefi/efitools/include/ -I/usr/include/efi -I/usr/include/efi/x86_64 -I/usr/include/efi/protocol -O2  -fpic -Wall -fshort-wchar -fno-strict-aliasing -fno-merge-constants -fno-stack-protector -ffreestanding -fno-stack-check -DGNU_EFI_USE_MS_ABI -DEFI_FUNCTION_WRAPPER -mno-red-zone -DCONFIG_x86_64 -c sign-efi-sig-list.c -o sign-efi-sig-list.o\nsign-efi-sig-list.c:7: warning: "__STDC_VERSION__" redefined\n    7 | #define __STDC_VERSION__ 199901L\n      | \n<built-in>: note: this is the location of the previous definition\nsign-efi-sig-list.c: In function \xe2\x80\x98main\xe2\x80\x99:\nsign-efi-sig-list.c:163:3: warning: implicit declaration of function \xe2\x80\x98strptime\xe2\x80\x99; did you mean \xe2\x80\x98strftime\xe2\x80\x99? [-Wimplicit-function-declaration]\n  163 |   strptime(timestampstr, "%Y-%m-%d %H:%M:%S", &tms);\n      |   ^~~~~~~~\n      |   strftime\nsign-efi-sig-list.c:221:2: warning: ignoring return value of \xe2\x80\x98read\xe2\x80\x99, declared with attribute warn_unused_result [-Wunused-result]\n  221 |  read(fdefifile, ptr, st.st_size);\n      |  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nsign-efi-sig-list.c:244:3: warning: ignoring return value of \xe2\x80\x98read\xe2\x80\x99, declared with attribute warn_unused_result [-Wunused-result]\n  244 |   read(infile, sigbuf, sigsize);\n      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nsign-efi-sig-list.c:316:2: warning: ignoring return value of \xe2\x80\x98write\xe2\x80\x99, declared with attribute warn_unused_result [-Wunused-result]\n  316 |  write(fdoutfile, out, outlen);\n      |  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nsign-efi-sig-list.c:319:3: warning: ignoring return value of \xe2\x80\x98write\xe2\x80\x99, declared with attribute warn_unused_result [-Wunused-result]\n  319 |   write(fdoutfile, ptr, st.st_size);\n      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nmake -C lib lib.a\nmake[1]: Entering directory \'/home/jr/Downloads/xen-uefi/efitools/lib\'\nmake[1]: \'lib.a\' is up to date.\nmake[1]: Leaving directory \'/home/jr/Downloads/xen-uefi/efitools/lib\'\ncc  -o sign-efi-sig-list sign-efi-sig-list.o -lcrypto lib/lib.a\nGenerating a RSA private key\n..........................................+++++\n.......................................................................................................+++++\nwriting new private key to \'PK.key\'\n-----\nGenerating a RSA private key\n....................................+++++\n....................................................................................................+++++\nwriting new private key to \'KEK.key\'\n-----\nGenerating a RSA private key\n..................+++++\n...........................................................+++++\nwriting new private key to \'DB.key\'\n-----\nGenerating a RSA private key\n.............+++++\n..................................................+++++\nwriting new private key to \'SHIM.key\'\n-----\nTimestamp is 2021-9-23 15:55:51\nAuthentication Payload size 861\nSignature of size 1182\nSignature at: 40\nTimestamp is 2021-9-23 15:55:51\nAuthentication Payload size 865\nSignature of size 1182\nSignature at: 40\nTimestamp is 2021-9-23 15:55:51\nAuthentication Payload size 861\nSignature of size 1185\nSignature at: 40\nTimestamp is 2021-9-23 15:55:52\nAuthentication Payload size 40\nSignature of size 1182\nSignature at: 40\nmake -C lib lib.a\nmake[1]: Entering directory \'/home/jr/Downloads/xen-uefi/efitools/lib\'\nmake[1]: \'lib.a\' is up to date.\nmake[1]: Leaving directory \'/home/jr/Downloads/xen-uefi/efitools/lib\'\n./xxdi.pl PK.auth > PK.h\nCan\'t locate File/Slurp.pm in @INC (you may need to install the File::Slurp module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.30.0 /usr/local/share/perl/5.30.0 /usr/lib/x86_64-linux-gnu/perl5/5.30 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.30 /usr/share/perl/5.30 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base) at ./xxdi.pl line 17.\nBEGIN failed--compilation aborted at ./xxdi.pl line 17.\nmake: *** [Make.rules:69: PK.h] Error 2\n\n
Run Code Online (Sandbox Code Playgroud)\n

我究竟做错了什么?我需要安装perl吗?终端中的 which perl 返回 perl 的安装目录。这是否意味着 perl 不是问题所在?我不知道要提供什么其他细节,但如果有人能指出我正确的方向,我将非常感激。

\n

Dav*_*oss 5

Perl 附带了大量扩展其功能的标准库。但是CPAN还提供了数千个其他扩展库。

File::Slurp是一个 CPAN 模块。它不是标准 Perl 发行版的一部分,因此您需要单独安装它。

幸运的是,Ubuntu 打包了大量的 CPAN 模块,并从其标准存储库中提供它们。因此,要安装它,您只需运行:

$ sudo apt-get install libfile-slurp-perl
Run Code Online (Sandbox Code Playgroud)