我正在关注《Linux from Scratch》一书的 8.0 版,并且我到达了第 (5.7.Glibc-2.25) 部分。尝试配置时glibc
出现此错误:
这些关键程序丢失或太旧:gawk
当我gawk
在终端中写入时,我得到以下结果:
Command 'gawk' is available in '/usr/local/bin/gawk'
The command could not be located because '/usr/local/bin' is not included in the PATH environment variable.
gawk: command not found
在本书前面的第 31 页第 4.5 节中,它说:
现在创建 .bashrc 文件:
cat > ~/.bashrc << "EOF"
set +h
umask 022
LFS=/mnt/lfs
LC_ALL=POSIX
LFS_TGT=$(uname -m)-lfs-linux-gnu
PATH=/tools/bin:/bin:/usr/bin
export LFS LC_ALL LFS_TGT PATH
EOF
我做到了。
更新:
运行 version-check.sh 脚本书中2.2节正如用户 lfs 给出的:
bash, version 4.3.46(1)-release
/bin/sh -> /bin/bash
Binutils: (GNU Binutils for Ubuntu) 2.27
version-check: line 10: bison: command not found
/usr/bin/yacc -> /usr/bin/bison
bzip2, Version 1.0.6, 6-Sept-2010.
Coreutils: 8.25
diff (GNU diffutils) 3.3
find (GNU findutils) 4.7.0-git
version-check: line 22: gawk: command not found
/usr/bin/awk -> /usr/bin/gawk
gcc (Ubuntu 6.2.0-5ubuntu12) 6.2.0 20161005
g++ (Ubuntu 6.2.0-5ubuntu12) 6.2.0 20161005
(Ubuntu GLIBC 2.24-3ubuntu1) 2.24
grep (GNU grep) 2.25
gzip 1.6
Linux version 4.8.0-41-generic (buildd@lgw01-18) (gcc version 6.2.0 20161005 (Ubuntu 6.2.0-5ubuntu12) ) #44-Ubuntu SMP Fri Mar 3 15:27:17 UTC 2017
m4 (GNU M4) 1.4.17
GNU Make 4.1
GNU patch 2.7.5
Perl version='5.22.2';
sed (GNU sed) 4.2.2
tar (GNU tar) 1.29
version-check: line 42: makeinfo: command not found
xz (XZ Utils) 5.1.0alpha
g++ compilation OK
但以 root 用户身份运行相同的脚本会给出:
bash, version 4.3.46(1)-release
/bin/sh -> /bin/bash
Binutils: (GNU Binutils for Ubuntu) 2.27
bison (GNU Bison) 2.3
/usr/bin/yacc -> /usr/bin/bison
bzip2, Version 1.0.6, 6-Sept-2010.
Coreutils: 8.25
diff (GNU diffutils) 3.3
find (GNU findutils) 4.7.0-git
GNU Awk 4.0.1
/usr/bin/awk -> /usr/bin/gawk
gcc (Ubuntu 6.2.0-5ubuntu12) 6.2.0 20161005
g++ (Ubuntu 6.2.0-5ubuntu12) 6.2.0 20161005
(Ubuntu GLIBC 2.24-3ubuntu1) 2.24
grep (GNU grep) 2.25
gzip 1.6
Linux version 4.8.0-41-generic (buildd@lgw01-18) (gcc version 6.2.0 20161005 (Ubuntu 6.2.0-5ubuntu12) ) #44-Ubuntu SMP Fri Mar 3 15:27:17 UTC 2017
m4 (GNU M4) 1.4.17
GNU Make 4.1
GNU patch 2.7.5
Perl version='5.22.2';
sed (GNU sed) 4.2.2
tar (GNU tar) 1.29
texi2any (GNU texinfo) 6.3
xz (XZ Utils) 5.1.0alpha
g++ compilation OK
在我看来那是因为/usr/local/bin
没有包含在PATH环境变量中,但是书上没有说添加它。
英语不是我的母语。
答案1
这是构建工具链的第一步,因此您的环境高度依赖于您的主机操作系统。
在章节中2.2 主机系统要求有两个脚本:
version-check.sh
- 打印对 lfs 重要的所有软件包的版本library-check.sh
- 检查 gmp、mpfr 和 mpc 库
您是否运行了两者并根据书中提供的版本检查了结果?
因为你得到的错误是:
这些关键程序丢失或太旧:gawk
就这么简单 - 您的主机操作系统太旧了gawk
。
编辑:感谢更新。所以gawk
你的主机操作系统上的版本是可以的。但问题仍然是您的主机操作系统 - 由于某些奇怪的原因,普通(lfs)用户无法访问某些软件包,因此您的主机操作系统不满足系统要求。 lfs 方面没有什么需要修复的。您必须修复主机操作系统,也许重新安装这些软件包?