Linux From Scratch - Version 12.4

이전
개요

다음
LFS 빌드 단계별 진행 내용

2.2. 호스트 시스템 준비 사항

2.2.1. 하드웨어

LFS는 최소 4개의 코어가 있는 CPU와 최소 8GB의 메모리가 있는 시스템에서 진행하는 것을 권장합니다. 이런 요구사항이 충족되지 않는 구형 시스템에서도 여전히 잘 작동하지만, 만드는 시간은 책에 기재된 것보다 확실하게 길어집니다.

2.2.2. 소프트웨어

호스트 시스템에는 아래 목록에 있는 소프트웨어들이 기재된 최소한의 버전을 충족한 상태로 설치되어 있어야 합니다. 이 목록에 있는 소프트웨어들은 대부분의 최신 리눅스 배포판에서는 문제가 없습니다. 하지만 많은 배포판들이 소프트웨어 헤더를 별도의 패키지로 <package-name>-devel>이나 <package-name>-dev 이름 붙여서 배포합니다. 사용하려는 배포판이 이런 패키지를 제공하는 경우 반드시 설치하세요.

목록에 있는 것보다 낮은 버전의 패키지는 작동은 하겠지만, 아직 검증되지는 않았습니다.

위에서 언급한 심볼 링크는 이 책에 포함된 지침을 사용하여 LFS 시스템을 구축하는 데 필요합니다. 다른 소프트웨어(예: dash, mawk 등)를 가리키는 심볼릭 링크는 작동할 수 있지만 LFS 개발팀에서 테스트했거나 지원하지 않으며, 안내와 맞지 않거나 일부 패키지에 추가적인 패치가 필요할 수 있습니다. 목록에 있는 소프트웨어 패키지의 이전 버전은 작동할 수 있지만 테스트되지 않았습니다.

호스트 시스템에 적절한 버전이 모두 설치되어 있는며, 필요한 프로그램을 컴파일할 수 있는지 확인하려면 다음 명령을 실행하세요.

cat > version-check.sh << "EOF"
#!/bin/bash
# A script to list version numbers of critical development tools

# If you have tools installed in other directories, adjust PATH here AND
# in ~lfs/.bashrc (section 4.4) as well.

LC_ALL=C 
PATH=/usr/bin:/bin

bail() { echo "FATAL: $1"; exit 1; }
grep --version > /dev/null 2> /dev/null || bail "grep does not work"
sed '' /dev/null || bail "sed does not work"
sort   /dev/null || bail "sort does not work"

ver_check()
{
   if ! type -p $2 &>/dev/null
   then 
     echo "ERROR: Cannot find $2 ($1)"; return 1; 
   fi
   v=$($2 --version 2>&1 | grep -E -o '[0-9]+\.[0-9\.]+[a-z]*' | head -n1)
   if printf '%s\n' $3 $v | sort --version-sort --check &>/dev/null
   then 
     printf "OK:    %-9s %-6s >= $3\n" "$1" "$v"; return 0;
   else 
     printf "ERROR: %-9s is TOO OLD ($3 or later required)\n" "$1"; 
     return 1; 
   fi
}

ver_kernel()
{
   kver=$(uname -r | grep -E -o '^[0-9\.]+')
   if printf '%s\n' $1 $kver | sort --version-sort --check &>/dev/null
   then 
     printf "OK:    Linux Kernel $kver >= $1\n"; return 0;
   else 
     printf "ERROR: Linux Kernel ($kver) is TOO OLD ($1 or later required)\n" "$kver"; 
     return 1; 
   fi
}

# Coreutils first because --version-sort needs Coreutils >= 7.0
ver_check Coreutils      sort     8.1 || bail "Coreutils too old, stop"
ver_check Bash           bash     3.2
ver_check Binutils       ld       2.13.1
ver_check Bison          bison    2.7
ver_check Diffutils      diff     2.8.1
ver_check Findutils      find     4.2.31
ver_check Gawk           gawk     4.0.1
ver_check GCC            gcc      5.2
ver_check "GCC (C++)"    g++      5.2
ver_check Grep           grep     2.5.1a
ver_check Gzip           gzip     1.3.12
ver_check M4             m4       1.4.10
ver_check Make           make     4.0
ver_check Patch          patch    2.5.4
ver_check Perl           perl     5.8.8
ver_check Python         python3  3.4
ver_check Sed            sed      4.1.5
ver_check Tar            tar      1.22
ver_check Texinfo        texi2any 5.0
ver_check Xz             xz       5.0.0
ver_kernel 4.19

if mount | grep -q 'devpts on /dev/pts' && [ -e /dev/ptmx ]
then echo "OK:    Linux Kernel supports UNIX 98 PTY";
else echo "ERROR: Linux Kernel does NOT support UNIX 98 PTY"; fi

alias_check() {
   if $1 --version 2>&1 | grep -qi $2
   then printf "OK:    %-4s is $2\n" "$1";
   else printf "ERROR: %-4s is NOT $2\n" "$1"; fi
}
echo "Aliases:"
alias_check awk GNU
alias_check yacc Bison
alias_check sh Bash

echo "Compiler check:"
if printf "int main(){}" | g++ -x c++ -
then echo "OK:    g++ works";
else echo "ERROR: g++ does NOT work"; fi
rm -f a.out

if [ "$(nproc)" = "" ]; then
   echo "ERROR: nproc is not available or it produces empty output"
else
   echo "OK: nproc reports $(nproc) logical cores are available"
fi
EOF

bash version-check.sh


이전
개요

다음
LFS 빌드 단계별 진행 내용