차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
linuxfromscratch:12.1:127-coreutils-9.4 [2024/05/27 12:25] – 바깥 편집 127.0.0.1linuxfromscratch:12.1:127-coreutils-9.4 [2024/06/18 01:57] (현재) – [8.57.2. Coreutils 패키지 구성] baecy
줄 7: 줄 7:
 ------  ------ 
  
-====== 8.57. Coreutils-9.4 ======+===== 8.57. Coreutils-9.4 ===== 
 Coreutils 패키지에는 모든 운영 체제에 필요한 기본 유틸리티 프로그램이 포함되어 있습니다. Coreutils 패키지에는 모든 운영 체제에 필요한 기본 유틸리티 프로그램이 포함되어 있습니다.
  
-**대략적인 빌드 시간:** 1.0 SBU \\ +  * **빌드 시간:** 1.0 SBU  
-**필요한 디스크 공간:** 175 MB+  **디스크 공간:** 175 MB
  
 ------ ------
  
-===== 8.57.1. Coreutils 설치 =====+==== 8.57.1. Coreutils 설치 ==== 
 POSIX에서는 멀티바이트 로캘에서도 Coreutils의 프로그램이 문자 경계를 올바르게 인식해야 합니다. 다음 패치는 이 규정 미준수 및 기타 국제화 관련 버그를 수정합니다. POSIX에서는 멀티바이트 로캘에서도 Coreutils의 프로그램이 문자 경계를 올바르게 인식해야 합니다. 다음 패치는 이 규정 미준수 및 기타 국제화 관련 버그를 수정합니다.
-<code lang=bash>+ 
 +<code bash>
 patch -Np1 -i ../coreutils-9.4-i18n-1.patch patch -Np1 -i ../coreutils-9.4-i18n-1.patch
 </code> </code>
 +
 <WRAP info center round 90%> <WRAP info center round 90%>
 **참고** \\ 이 패치에서 많은 버그가 발견되었습니다. Coreutils 유지 관리자에게 새로운 버그를 보고할 때는 먼저 이 패치 없이도 재현 가능한 버그인지 확인해 주세요. **참고** \\ 이 패치에서 많은 버그가 발견되었습니다. Coreutils 유지 관리자에게 새로운 버그를 보고할 때는 먼저 이 패치 없이도 재현 가능한 버그인지 확인해 주세요.
 </WRAP> </WRAP>
-split 유틸리티의 보안 취약점을 수정합니다. + 
-<code lang=bash>+**split** 유틸리티의 보안 취약점을 수정합니다. 
 + 
 +<code bash>
 sed -e '/n_out += n_hold/,+4 s|.*bufsize.*|//&|' \ sed -e '/n_out += n_hold/,+4 s|.*bufsize.*|//&|' \
     -i src/split.c     -i src/split.c
 </code> </code>
 +
 Coreutils 패키지를 컴파일할 준비를 합니다. Coreutils 패키지를 컴파일할 준비를 합니다.
-<code lang=bash>+ 
 +<code bash>
 autoreconf -fiv autoreconf -fiv
 FORCE_UNSAFE_CONFIGURE=1 ./configure \ FORCE_UNSAFE_CONFIGURE=1 ./configure \
줄 35: 줄 43:
             --enable-no-install-program=kill,uptime             --enable-no-install-program=kill,uptime
 </code> </code>
-==== 설정 옵션의 의미 ====+ 
 +=== configure 옵션의 의미 === 
   * **autoreconf** \\ 국제화 패치로 빌드 시스템이 수정되었으므로 구성 파일을 다시 생성해야 합니다.   * **autoreconf** \\ 국제화 패치로 빌드 시스템이 수정되었으므로 구성 파일을 다시 생성해야 합니다.
   * **force_unsafe_configure=1** \\ 루트 사용자가 패키지를 빌드할 수 있습니다.   * **force_unsafe_configure=1** \\ 루트 사용자가 패키지를 빌드할 수 있습니다.
줄 41: 줄 51:
  
 패키지를 컴파일합니다. 패키지를 컴파일합니다.
-<code lang=bash>+ 
 +<code bash>
 make make
 </code> </code>
 +
 테스트 스위트를 실행하지 않는 경우 "패키지 설치"로 건너뛰세요. 테스트 스위트를 실행하지 않는 경우 "패키지 설치"로 건너뛰세요.
  
 이제 테스트 스위트를 실행할 준비가 되었습니다. 먼저 //root// 사용자로 테스트를 실행합니다. 이제 테스트 스위트를 실행할 준비가 되었습니다. 먼저 //root// 사용자로 테스트를 실행합니다.
-<code lang=bash>+ 
 +<code bash>
 make NON_ROOT_USERNAME=tester check-root make NON_ROOT_USERNAME=tester check-root
 </code> </code>
 +
 나머지 테스트는 //tester// 사용자로 실행하겠습니다. 특정 테스트에서는 사용자가 둘 이상의 그룹의 구성원이어야 합니다. 이러한 테스트가 건너뛰지 않도록 임시 그룹을 추가하고 사용자 //tester//를 임시 그룹의 일부로 만드세요. 나머지 테스트는 //tester// 사용자로 실행하겠습니다. 특정 테스트에서는 사용자가 둘 이상의 그룹의 구성원이어야 합니다. 이러한 테스트가 건너뛰지 않도록 임시 그룹을 추가하고 사용자 //tester//를 임시 그룹의 일부로 만드세요.
-<code lang=bash>+ 
 +<code bash>
 groupadd -g 102 dummy -U tester groupadd -g 102 dummy -U tester
 </code> </code>
-//root가 아닌 사용자//도 테스트를 컴파일하고 실행할 수 있도록 일부 권한을 수정합니다. + 
-<code lang=bash>+//root//가 아닌 사용자도 테스트를 컴파일하고 실행할 수 있도록 일부 권한을 수정합니다. 
 + 
 +<code bash>
 chown -R tester . chown -R tester .
 </code> </code>
 +
 테스트를 진행합니다.((아래의 구문을 익혀두면 ''sudo''가 설치되기 전까지 유용하게 사용 가능합니다.)) 테스트를 진행합니다.((아래의 구문을 익혀두면 ''sudo''가 설치되기 전까지 유용하게 사용 가능합니다.))
-<code lang=bash>+ 
 +<code bash>
 su tester -c "PATH=$PATH make RUN_EXPENSIVE_TESTS=yes check" su tester -c "PATH=$PATH make RUN_EXPENSIVE_TESTS=yes check"
 </code> </code>
 +
 임시 그룹을 삭제합니다. 임시 그룹을 삭제합니다.
-<code lang=bash> + 
-gruopdel dummy+<code bash> 
 +groupdel dummy
 </code> </code>
 +
 패키지를 설치합니다. 패키지를 설치합니다.
-<code lang=bash>+ 
 +<code bash>
 make install make install
 </code> </code>
 +
 FHS에 부합하는 위치로 프로그램을 이동합니다. FHS에 부합하는 위치로 프로그램을 이동합니다.
-<code lang=bash>+ 
 +<code bash>
 mv -v /usr/bin/chroot /usr/sbin mv -v /usr/bin/chroot /usr/sbin
 mv -v /usr/share/man/man1/chroot.1 /usr/share/man/man8/chroot.8 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 sed -i 's/"1"/"8"/' /usr/share/man/man8/chroot.8
 </code> </code>
-===== 8.57.2 Coreutils 내용 ===== 
  
-  * **설치된 프로그램:** \\ [, b2sum, base32, base64, basename, basenc, cat, chcon, chgrp, chmod, chown, chroot, cksum, comm, cp, csplit, cut, date, dd, df, dir, dircolors, dirname, du, echo, env, expand, expr, factor, false, fmt, fold, groups, head, hostid, id, install, join, link, ln, logname, ls, md5sum, mkdir, mkfifo, mknod, mktemp, mv, nice, nl, nohup, nproc, numfmt, od, paste, pathchk, pinky, pr, printenv, printf, ptx, pwd, readlink, realpath, rm, rmdir, runcon, seq, sha1sum, sha224sum, sha256sum, sha384sum, sha512sum, shred, shuf, sleep, sort, split, stat, stdbuf, stty, sum, sync, tac, tail, tee, test, timeout, touch, tr, true, truncate, tsort, tty, uname, unexpand, uniq, unlink, users, vdir, wc, who, whoami, and yes+----
  
 +==== 8.57.2. Coreutils 패키지 구성 ====
 +
 +  * **설치된 프로그램:** \\ [, b2sum, base32, base64, basename, basenc, cat, chcon, chgrp, chmod, chown, chroot, cksum, comm, cp, csplit, cut, date, dd, df, dir, dircolors, dirname, du, echo, env, expand, expr, factor, false, fmt, fold, groups, head, hostid, id, install, join, link, ln, logname, ls, md5sum, mkdir, mkfifo, mknod, mktemp, mv, nice, nl, nohup, nproc, numfmt, od, paste, pathchk, pinky, pr, printenv, printf, ptx, pwd, readlink, realpath, rm, rmdir, runcon, seq, sha1sum, sha224sum, sha256sum, sha384sum, sha512sum, shred, shuf, sleep, sort, split, stat, stdbuf, stty, sum, sync, tac, tail, tee, test, timeout, touch, tr, true, truncate, tsort, tty, uname, unexpand, uniq, unlink, users, vdir, wc, who, whoami, and yes
   * **설치된 라이브러리:** \\ libstdbuf.so (in /usr/libexec/coreutils)   * **설치된 라이브러리:** \\ libstdbuf.so (in /usr/libexec/coreutils)
 +  * **설치된 디렉토리:** \\ /usr/libexec/coreutils
  
-  * **설치한 디렉토리:** \\ ''/usr/libexec/coreutils'' \\+=== 간략한 설명 ===
  
-==== 간략한 설명 ==== 
   * **[** \\ 실제 명령인 /usr/bin/[; **test** 명령의 동의어입니다.   * **[** \\ 실제 명령인 /usr/bin/[; **test** 명령의 동의어입니다.
   * **base32** \\ base32 사양(RFC 4648)에 따라 데이터를 인코딩 및 디코딩합니다.   * **base32** \\ base32 사양(RFC 4648)에 따라 데이터를 인코딩 및 디코딩합니다.
줄 96: 줄 123:
   * **chmod** \\ 각 파일의 권한을 지정된 모드로 변경합니다. 모드는 변경할 내용을 기호로 표현하거나 새 권한을 나타내는 8진수일 수 있습니다.   * **chmod** \\ 각 파일의 권한을 지정된 모드로 변경합니다. 모드는 변경할 내용을 기호로 표현하거나 새 권한을 나타내는 8진수일 수 있습니다.
   * **chown** \\ 파일 및 디렉터리의 사용자 및 그룹 소유권을 변경합니다.   * **chown** \\ 파일 및 디렉터리의 사용자 및 그룹 소유권을 변경합니다.
-  * **chroot** \\ 지정한 디렉터리를 "/" 디렉터리로 명령을 실행합니다.+  * **chroot** \\ 지정한 디렉터리를 "/" 디렉터리로 변경합니다.
   * **cksum** \\ 순환 중복 검사(CRC) 체크섬과 지정한 각 파일의 바이트 수를 출력합니다.   * **cksum** \\ 순환 중복 검사(CRC) 체크섬과 지정한 각 파일의 바이트 수를 출력합니다.
   * **comm** \\ 정렬된 두 파일을 비교하여 고유한 줄과 공통된 줄을 세 개의 열에 출력합니다.   * **comm** \\ 정렬된 두 파일을 비교하여 고유한 줄과 공통된 줄을 세 개의 열에 출력합니다.
줄 106: 줄 133:
   * **df** \\ 마운트된 모든 파일 시스템 또는 선택한 파일이 있는 파일 시스템에서만 사용 가능한 (그리고 사용된) 디스크 공간의 양을 보고합니다.   * **df** \\ 마운트된 모든 파일 시스템 또는 선택한 파일이 있는 파일 시스템에서만 사용 가능한 (그리고 사용된) 디스크 공간의 양을 보고합니다.
   * **dir** \\ 지정된 각 디렉터리의 내용을 나열합니다 (ls 명령과 동일).   * **dir** \\ 지정된 각 디렉터리의 내용을 나열합니다 (ls 명령과 동일).
-  * **dircolors** \\ ls에서 사용하는 색 구성표를 변경하기 위해 LS_COLOR 환경 변수를 설정하는 명령을 출력합니다.+  * **dircolors** \\ **ls**에서 사용하는 색 구성표를 변경하기 위해 ''LS_COLOR'' 환경 변수를 설정하는 명령을 출력합니다.
   * **dirname** \\ 주어진 이름의 디렉터리 부분을 추출합니다.   * **dirname** \\ 주어진 이름의 디렉터리 부분을 추출합니다.
   * **du** \\ 현재 디렉토리, 지정된 각 디렉토리(모든 하위 디렉토리 포함) 또는 지정된 각 파일에서 사용하는 디스크 공간의 양을 보고합니다.   * **du** \\ 현재 디렉토리, 지정된 각 디렉토리(모든 하위 디렉토리 포함) 또는 지정된 각 파일에서 사용하는 디스크 공간의 양을 보고합니다.
줄 141: 줄 168:
   * **paste** \\ 지정된 파일을 병합하여 순차적으로 해당되는 줄을 나란히 탭 문자로 구분하여 병합합니다.   * **paste** \\ 지정된 파일을 병합하여 순차적으로 해당되는 줄을 나란히 탭 문자로 구분하여 병합합니다.
   * **pathchk** \\ 파일 이름이 유효한지 또는 이식 가능한지 확인합니다.   * **pathchk** \\ 파일 이름이 유효한지 또는 이식 가능한지 확인합니다.
-  * **pinky** \\ 가벼운 ''finger'' 클라이언트로, 주어진 사용자에 대한 몇 가지 정보를 보고합니다.+  * **pinky** \\ 가벼운 **finger** 클라이언트로, 주어진 사용자에 대한 몇 가지 정보를 보고합니다.
   * **pr** \\ 인쇄할 파일을 페이지 매김하고 열을 매깁니다.   * **pr** \\ 인쇄할 파일을 페이지 매김하고 열을 매깁니다.
   * **printenv** \\ 환경 변수을 출력합니다   * **printenv** \\ 환경 변수을 출력합니다
줄 184: 줄 211:
   * **unlink** \\ 지정된 파일을 제거합니다.   * **unlink** \\ 지정된 파일을 제거합니다.
   * **users** \\ 현재 로그온한 사용자의 이름을 보고합니다.   * **users** \\ 현재 로그온한 사용자의 이름을 보고합니다.
-  * **vdir** \\ ls -l과 동일합니다.+  * **vdir** \\ **ls -l**과 동일합니다.
   * **wc** \\ 주어진 각 파일의 줄, 단어 및 바이트 수를 보고하며, 둘 이상의 파일이 주어진 경우 총합계를 보고합니다.   * **wc** \\ 주어진 각 파일의 줄, 단어 및 바이트 수를 보고하며, 둘 이상의 파일이 주어진 경우 총합계를 보고합니다.
   * **who** \\ 로그온한 사용자를 보고합니다.   * **who** \\ 로그온한 사용자를 보고합니다.
   * **whoami** \\ 현재 유효한 사용자 ID와 연결된 사용자 이름을 보고합니다.   * **whoami** \\ 현재 유효한 사용자 ID와 연결된 사용자 이름을 보고합니다.
-  * **yes** \\ 종료될 때까지 y 또는 지정된 문자열을 반복적으로 출력합니다. +  * **yes** \\ 종료될 때까지 ''y'' 또는 지정된 문자열을 반복적으로 출력합니다. 
-  * libstdbuf \\ stdbuf에서 사용하는 라이브러리+  * libstdbuf \\ **stdbuf**에서 사용하는 라이브러리
    
-------+----
  
 +[[https://www.linuxfromscratch.org/lfs/errata/stable-systemd/|사소한 정정]] \\
 2024년 5월 24일 기준 \\ 2024년 5월 24일 기준 \\
 Coreutils 테스트 스위트에서 test-getlogin 및 test/tty/tty.sh라는 이름의 두 가지 테스트가 실패하는 것으로 알려져 있지만 책에는 언급되어 있지 않습니다. 테스트 스위트를 실행할 때 표준 입력을 리디렉션하여 이러한 오류를 억제할 수 있습니다. Coreutils 테스트 스위트에서 test-getlogin 및 test/tty/tty.sh라는 이름의 두 가지 테스트가 실패하는 것으로 알려져 있지만 책에는 언급되어 있지 않습니다. 테스트 스위트를 실행할 때 표준 입력을 리디렉션하여 이러한 오류를 억제할 수 있습니다.
  
  • linuxfromscratch/12.1/127-coreutils-9.4.1716812714.txt.gz
  • 마지막으로 수정됨: 2024/05/27 12:25
  • 저자 127.0.0.1