Требования к рабочей станции и операционной системе⚓︎
Требования к аппаратному обеспечению⚓︎
- Раздел на жёстком диске, рекомендуемый размер - более 20 Гб, так как для сборки пакетов необходимо много свободного места.
- Если оперативной памяти ПК мало (3 Гб и меньше), то рекомендуется создать раздел/файл подкачки. В крайнем случае используйте zram.
Требования к программному обеспечению⚓︎
Более ранние версии перечисленных программных пакетов могут работать, но корректность работы не проверялась.
- Bash-3.2 (
/bin/sh
- жесткая или символическая ссылка наbash
); - Binutils-2.25;
- Bison-2.7 (
/usr/bin/yacc
- символическая ссылка наbison
или на файл сценария, который его запускает); - Bzip2-1.0.4;
- Coreutils-6.9;
- Diffutils-2.8.1;
- Findutils-4.2.31;
- Gawk-4.0.1 (
/usr/bin/awk
- символическая ссылка наgawk
); - GCC-6.2 с компилятором C++, g++;
- Glibc-2.11;
- Grep-2.5.1a;
- Gzip-1.3.12;
- Linux Kernel-3.2;
- M4-1.4.10;
- Make-4.0;
- Patch-2.5.4;
- Perl-5.8.8;
- Python-3.4;
- Sed-4.1.5;
- Tar-1.22;
- Texinfo-4.7;
- Xz-5.0.0;
В зависимости от семейства ОС Linux, выполните следующий команды, чтобы обеспечить совместимость и установить необходимые пакеты:
Для Debian, Ubuntu:⚓︎
apt-get install build-essential bison gawk texinfo
ln -sf bash /bin/sh
Для ArchLinux⚓︎
pacman -S base-devel
Для Fedora, Redhat⚓︎
dnf install bison gawk texinfo make gcc-c++
Проверка соответствия программного обеспечения⚓︎
Чтобы узнать, что ваша хост-система полностью соответствует всем необходимым для дальнейшей работы требованиям, выполните следующий набор команд:
cat > version-check.sh << "EOF"
#!/bin/bash
# Simple script to list version numbers of critical development tools
export LC_ALL=C
bash --version | head -n1 | cut -d" " -f2-4
MYSH=$(readlink -f /bin/sh)
echo "/bin/sh -> $MYSH"
echo $MYSH | grep -q bash || echo "ERROR: /bin/sh does not point to bash"
unset MYSH
echo -n "Binutils: "; ld --version | head -n1 | cut -d" " -f3-
bison --version | head -n1
if [ -h /usr/bin/yacc ]; then
echo "/usr/bin/yacc -> `readlink -f /usr/bin/yacc`";
elif [ -x /usr/bin/yacc ]; then
echo yacc is `/usr/bin/yacc -V | head -n1`
else
echo "yacc not found"
fi
bzip2 --version 2>&1 < /dev/null | head -n1 | cut -d" " -f1,6-
echo -n "Coreutils: "; chown --version | head -n1 | cut -d")" -f2
diff --version | head -n1
find --version | head -n1
gawk --version | head -n1
if [ -h /usr/bin/awk ]; then
echo "/usr/bin/awk -> `readlink -f /usr/bin/awk`";
elif [ -x /usr/bin/awk ]; then
echo awk is `/usr/bin/awk --version | head -n1`
else
echo "awk not found"
fi
gcc --version | head -n1
g++ --version | head -n1
ldd --version | head -n1 | cut -d" " -f2- # glibc version
grep --version | head -n1
gzip --version | head -n1
cat /proc/version
m4 --version | head -n1
make --version | head -n1
patch --version | head -n1
echo Perl `perl -V:version`
python3 --version
sed --version | head -n1
tar --version | head -n1
makeinfo --version | head -n1 # texinfo version
xz --version | head -n1
echo 'int main(){}' > dummy.c && g++ -o dummy dummy.c
if [ -x dummy ]
then echo "g++ compilation OK";
else echo "g++ compilation failed"; fi
rm -f dummy.c dummy
EOF
bash version-check.sh
Предупреждение
Внимательно изучите результат выполнения. В нём не должно встречаться строк, содержащих ERROR
, command not found
, failed
.
Ошибочный результат:
bash, version 5.0.17(1)-release
/bin/sh -> /usr/bin/dash
ERROR: /bin/sh does not point to bash
Binutils: version-check.sh: line 12: ld: command not found
version-check.sh: line 13: bison: command not found
yacc not found
bzip2, Version 1.0.8, 13-Jul-2019.
Coreutils: 8.32
diff (GNU diffutils) 3.7
find (GNU findutils) 4.7.0
version-check.sh: line 27: gawk: command not found
/usr/bin/awk -> /usr/bin/mawk
version-check.sh: line 37: gcc: command not found
version-check.sh: line 38: g++: command not found
(Ubuntu GLIBC 2.32-0ubuntu3) 2.32
grep (GNU grep) 3.4
gzip 1.10
Linux version 5.8.0-25-generic (buildd@lcy01-amd64-022) (gcc (Ubuntu 10.2.0-13ubuntu1) 10.2.0, GNU ld (GNU Binutils for Ubuntu) 2.35.1) #26-Ubuntu SMP Thu Oct 15 10:30:38 UTC 2020
version-check.sh: line 43: m4: command not found
version-check.sh: line 44: make: command not found
GNU patch 2.7.6
Perl version='5.30.3';
Python 3.8.6
sed (GNU sed) 4.7
tar (GNU tar) 1.30
version-check.sh: line 50: makeinfo: command not found
xz (XZ Utils) 5.2.4
version-check.sh: line 53: g++: command not found
g++ compilation failed
Успешный результат:
bash, version 5.0.0(1)-release
/bin/sh -> /bin/bash
Binutils: (GNU Binutils) 2.32
bison (GNU Bison) 3.4.1
yacc is bison (GNU Bison) 3.4.1
bzip2, Version 1.0.8, 13-Jul-2019.
Coreutils: 8.31
diff (GNU diffutils) 3.7
find (GNU findutils) 4.6.0
GNU Awk 5.0.1, API: 2.0 (GNU MPFR 4.0.2, GNU MP 6.1.2)
/usr/bin/awk -> /usr/bin/gawk
gcc (GCC) 9.2.0
g++ (GCC) 9.2.0
(GNU libc) 2.30
grep (GNU grep) 3.3
gzip 1.10
m4 (GNU M4) 1.4.18
GNU Make 4.2.1
GNU patch 2.7.6
Perl version='5.30.0';
Python 3.7.4
sed (GNU sed) 4.7
tar (GNU tar) 1.32
texi2any (GNU texinfo) 6.6
xz (XZ Utils) 5.2.4
g++ compilation OK