목차

Linux From Scratch - Version 12.1-systemd
Chapter 8. Instqlling Basic System Software
이전 위로 / 처음으로 다음
Meson-1.3.2 Check-0.15.2

8.57. Coreutils-9.4

Coreutils 패키지에는 모든 운영 체제에 필요한 기본 유틸리티 프로그램이 포함되어 있습니다.


8.57.1. Coreutils 설치

POSIX에서는 멀티바이트 로캘에서도 Coreutils의 프로그램이 문자 경계를 올바르게 인식해야 합니다. 다음 패치는 이 규정 미준수 및 기타 국제화 관련 버그를 수정합니다.

patch -Np1 -i ../coreutils-9.4-i18n-1.patch

참고
이 패치에서 많은 버그가 발견되었습니다. Coreutils 유지 관리자에게 새로운 버그를 보고할 때는 먼저 이 패치 없이도 재현 가능한 버그인지 확인해 주세요.

split 유틸리티의 보안 취약점을 수정합니다.

sed -e '/n_out += n_hold/,+4 s|.*bufsize.*|//&|' \
    -i src/split.c

Coreutils 패키지를 컴파일할 준비를 합니다.

autoreconf -fiv
FORCE_UNSAFE_CONFIGURE=1 ./configure \
            --prefix=/usr            \
            --enable-no-install-program=kill,uptime

configure 옵션의 의미

패키지를 컴파일합니다.

make

테스트 스위트를 실행하지 않는 경우 “패키지 설치”로 건너뛰세요.

이제 테스트 스위트를 실행할 준비가 되었습니다. 먼저 root 사용자로 테스트를 실행합니다.

make NON_ROOT_USERNAME=tester check-root

나머지 테스트는 tester 사용자로 실행하겠습니다. 특정 테스트에서는 사용자가 둘 이상의 그룹의 구성원이어야 합니다. 이러한 테스트가 건너뛰지 않도록 임시 그룹을 추가하고 사용자 tester를 임시 그룹의 일부로 만드세요.

groupadd -g 102 dummy -U tester

root가 아닌 사용자도 테스트를 컴파일하고 실행할 수 있도록 일부 권한을 수정합니다.

chown -R tester .

테스트를 진행합니다.1)

su tester -c "PATH=$PATH make RUN_EXPENSIVE_TESTS=yes check"

임시 그룹을 삭제합니다.

groupdel dummy

패키지를 설치합니다.

make install

FHS에 부합하는 위치로 프로그램을 이동합니다.

mv -v /usr/bin/chroot /usr/sbin
mv -v /usr/share/man/man1/chroot.1 /usr/share/man/man8/chroot.8
sed -i 's/"1"/"8"/' /usr/share/man/man8/chroot.8


8.57.2. Coreutils 패키지 구성

간략한 설명

—-

사소한 정정
2024년 5월 24일 기준
Coreutils 테스트 스위트에서 test-getlogin 및 test/tty/tty.sh라는 이름의 두 가지 테스트가 실패하는 것으로 알려져 있지만 책에는 언급되어 있지 않습니다. 테스트 스위트를 실행할 때 표준 입력을 리디렉션하여 이러한 오류를 억제할 수 있습니다.

1)
아래의 구문을 익혀두면 sudo가 설치되기 전까지 유용하게 사용 가능합니다.