차이

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

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
linuxfromscratch:12.1:028-setting_up_the_environment [2024/06/14 14:15] baecylinuxfromscratch:12.1:028-setting_up_the_environment [2024/06/14 14:45] (현재) baecy
줄 3: 줄 3:
 |[[.:027-Adding the LFS User|이전]]  |  [[.:04-final_preparations|위로]] / [[.:12.1|처음으로]]  |  [[.:029-About SBUs|다음]]| |[[.:027-Adding the LFS User|이전]]  |  [[.:04-final_preparations|위로]] / [[.:12.1|처음으로]]  |  [[.:029-About SBUs|다음]]|
  
-|Adding the LFS User  |  About SBUs|+|LFS 사용자 추가  |  SBU 설명|
  
 ---- ----
줄 9: 줄 9:
 ===== 4.4. 환경 설정 ===== ===== 4.4. 환경 설정 =====
  
-**bash** 셸 시작 파일을 두 개 새로 하여 작업 환경을 설정합니다. 사용자 //lfs//로 로그인한 상태에서 다음 명령을 실행하여 새 ''.bash_profile''을 만듭니다.+두 개의 **bash** 셸 시작 파일을 새로 해서 작업 환경을 설정합니다. 사용자 //lfs//로 로그인한 상태에서 다음과 같이 로운 ''.bash_profile''을 만듭니다.
  
 <code bash> <code bash>
줄 17: 줄 17:
 </code> </code>
  
-//lfs// 사용자로 로그온하거나 "-" 옵션이 포함된 **su** 명령을 사용하여 //lfs// 사용자로 전환한 경우 셸은 호스트의 ''/etc/profile''(일부 설정 및 환경 변수가 포함되어 있을 수 있음)을 읽은 다음'' .bash_profile''을 읽는 로그인 셸입니다. ''.bash_profile'' 파일에서 **exec env -i.../bin/bash** 명령은 ''HOME'', ''TERM'' 및 ''PS1'' 변수를 제외하고 완전히 빈 환경을 가진 새 셸로 실행 중인 셸을 대체합니다. 이렇게 하면 호스트 시스템에서 원치 않거나 잠재적으로 위험한 환경 변수가 빌드 환경으로 유출되지 않습니다.+//lfs// 사용자로 로그온하거나 "-" 옵션이 포함된 **su** 명령을 사용하여 //lfs// 사용자로 전환한 경우, 해당 셸은 호스트의 ''/etc/profile''(일부 설정 및 환경 변수가 포함되어 있을 수 있음)을 읽은 다음'' .bash_profile''을 읽는 로그인 셸입니다. ''.bash_profile'' 파일에서 **exec env -i.../bin/bash** 명령은 ''HOME'', ''TERM'' 및 ''PS1'' 변수를 제외하고 완전히 빈 환경을 가진 새 셸로 실행 중인 셸을 대체합니다. 이렇게 하면 호스트 시스템에 있지만 사용하길 원치 않거나 잠재적으로 위험한 환경 변수가 빌드 환경에 적용되지 않습니다.
  
-새 셸 인스턴스는 //non-login// 셸로, ''/etc/profile'' 또는 ''.bash_profile'' 파일의 내용을 읽고 실행하지 않고 대신 ''.bashrc'' 파일을 읽고 실행합니다. 다음과 같이 ''.bashrc'' 파일을 생성합니다.+로운 셸 인스턴스는 //non-login// 셸로, ''/etc/profile'' 또는 ''.bash_profile'' 파일의 내용을 읽고 실행하지 않고 대신 ''.bashrc'' 파일을 읽고 실행합니다. 다음과 같이 ''.bashrc'' 파일을 생성합니다.
  
 <code bash> <code bash>
줄 36: 줄 36:
 </code> </code>
  
-===.bashrc 설정 설명===+=== .bashrc 설정 설명 ===
  
-  * **set +h** \\ **set +h** 명령은 **bash**의 해시 기능을 끕니다. 해시 기능은 일반적으로 유용한 기능으로, 해시 테이블을 사용하여 실행 파일의 전체 경로를 기억함으로써 동일한 실행 파일을 찾기 위해 경로를 반복해서 검색하지 않아도 됩니다. 하지만 운 도구는 설치자마자 사용해야 합니다. 해시 기능을 끄면 프로그램을 실행할 때마다 셸이 ''PATH''를 검색하도록 강제합니다. 따라서 셸은 호스트 ''/usr/bin'' 또는 ''/bin''에 있는 배포판에서 제공한 동일한 프로그램의 이전 버전을 기억하지 않고 에서 즉시 새로 컴파일된 도구를 사용할 수 있는 ''$LFS/tools/bin''에서 찾습니다.+  * **set +h** \\ **set +h** 명령은 **bash**의 해시 기능을 끕니다. 해시 기능은 일반적으로는 유용한 기능으로, 해시 테이블을 사용하여 실행 파일의 전체 경로를 기억함으로써 동일한 실행 파일을 찾기 위해 경로를 반복해서 검색하지 않아도 됩니다. 하지만 스 컴파일 도구는 설치자마자 사용해야 합니다. 해시 기능을 끄면 프로그램을 실행할 때마다 셸이 ''PATH''를 검색하도록 지정합니다. 따라서 셸은 호스트 ''/usr/bin'' 또는 ''/bin''에 있는 배포판에서 제공한 동일한 프로그램의 이전 버전을 기억하지 않고 새로 컴파일된 도구를 사용할 수 있는 ''$LFS/tools/bin''에서 찾습니다.
   * **umask 022** \\ 사용자 파일 생성 마스크(umask)를 022로 설정하면 새로 만든 파일과 디렉터리는 소유자만 쓸 수 있지만 누구나 읽고 실행할 수 있습니다(기본 모드가 [[https://man.archlinux.org/man/open.2|open(2)]] 시스템 호출에 사용된다고 가정하면 새 파일은 권한 모드 644로, 디렉터리는 모드 755로 끝납니다).   * **umask 022** \\ 사용자 파일 생성 마스크(umask)를 022로 설정하면 새로 만든 파일과 디렉터리는 소유자만 쓸 수 있지만 누구나 읽고 실행할 수 있습니다(기본 모드가 [[https://man.archlinux.org/man/open.2|open(2)]] 시스템 호출에 사용된다고 가정하면 새 파일은 권한 모드 644로, 디렉터리는 모드 755로 끝납니다).
   * **LFS=/mnt/lfs** \\ ''LFS'' 변수는 선택한 마운트 지점으로 설정해야 합니다.   * **LFS=/mnt/lfs** \\ ''LFS'' 변수는 선택한 마운트 지점으로 설정해야 합니다.
-  * **LC_ALL=POSIX** \\ ''LC_ALL'' 변수는 특정 프로그램의 현지화를 제어하여 해당 메시지가 지정된 국가의 규칙을 따르도록 합니다. ''LC_ALL''을 "POSIX" 또는 "C"(이 둘은 동일)로 설정하면 교차 컴파일 환경에서 모든 것이 예상대로 작동합니다. +  * **LC_ALL=POSIX** \\ ''LC_ALL'' 변수는 특정 프로그램의 현지화를 제어하여 해당 메시지가 지정된 국가의 규칙을 따르도록 합니다. ''LC_ALL''을 "POSIX" 또는 "C"(둘은 동일)로 설정하면 크로스 컴파일 환경에서 모든 것이 예상대로 작동합니다. 
-  * **LFS_TGT=$(uname -m)-lfs-linux-gnu** \\ ''LFS_TGT'' 변수는 기본값은 아니지만, 크로스 컴파일러와 링커를 빌드할 때와 임시 툴체인을 크로스 컴파일할 때 사용할 호환 가능한 머신 설명을 설정합니다. 자세한 내용은 [[.:032-toolchain_technical_notes:툴체인 기술 노트]]에서 확인할 수 있습니다.+  * **LFS_TGT=$(uname -m)-lfs-linux-gnu** \\ ''LFS_TGT'' 변수는 기본값은 아니지만, 크로스 컴파일러와 링커를 빌드할 때와 임시 툴체인을 크로스 컴파일할 때 사용할 호환 가능한 머신 설명을 설정합니다. 자세한 내용은 [[.:032-toolchain_technical_notes|툴체인 기술 노트]]에서 확인할 수 있습니다.
   * **PATH=/usr/bin** \\ 많은 최신 리눅스 배포판은 ''/bin''과 ''/usr/bin''을 병합했습니다. 이 경우 [[.:06-cross_compiling_temporary_tools|챕터 6]] 환경에서는 표준 ''PATH'' 변수를 ''/usr/bin/''으로 설정해야 합니다. 그렇지 않은 경우 다음 줄은 경로에 ''/bin''을 추가합니다.   * **PATH=/usr/bin** \\ 많은 최신 리눅스 배포판은 ''/bin''과 ''/usr/bin''을 병합했습니다. 이 경우 [[.:06-cross_compiling_temporary_tools|챕터 6]] 환경에서는 표준 ''PATH'' 변수를 ''/usr/bin/''으로 설정해야 합니다. 그렇지 않은 경우 다음 줄은 경로에 ''/bin''을 추가합니다.
-  * **if [ ! -L /bin ]; then PATH=/bin:$PATH; fi** \\ 만약 ''/bin''이 심볼릭 링크가 아니라면 ''PATH'' 변수에 추가해야 합니다. +  * **if [ ! -L /bin ]; then PATH=/bin:$PATH; fi** \\ ''/bin''이 심볼릭 링크가 아니라면 ''PATH'' 변수에 추가합니다. 
-  * **PATH=$LFS/tools/bin:$PATH** \\ 표준 ''PATH'' 앞에 ''$LFS/tools/bin''을 넣으면 [[05-compiling_a_cross_toolchain|5장]] 초반에 설치한 크로스 컴파일러가 설치 직후 셸에서 선택됩니다. 위에서 설정한 해싱을 끄는것과 이 설정이면 크로스 컴파일러 대신 호스트의 컴파일러가 사용될 위험이 줄어듭니다. +  * **PATH=$LFS/tools/bin:$PATH** \\ 기본 ''PATH'' 앞에 ''$LFS/tools/bin''을 넣으면 [[05-compiling_a_cross_toolchain|5장]] 초반에 설치한 크로스 컴파일러가 설치 직후 셸에서 사용됩니다. 위에서 설정한 해싱을 끄는것과 이 설정으로 크로스 컴파일러 대신 호스트의 컴파일러가 사용될 위험이 줄어듭니다. 
-  * **CONFIG_SITE=$LFS/usr/share/config.site** \\ [[05-compiling_a_cross_toolchain|5장]]과 [[.:06-cross_compiling_temporary_tools|챕터 6]]에서 이 변수가 설정되어 있지 않으면 **configure** 스크립트가 호스트 시스템의 **/usr/share/config.site**에서 일부 배포에 특정한 구성 항목을 로드하려고 시도할 수 있습니다. 호스트의 잠재적인 오염을 방지하려면 이 변수를 정의하세요+  * **CONFIG_SITE=$LFS/usr/share/config.site** \\ [[05-compiling_a_cross_toolchain|5장]]과 [[.:06-cross_compiling_temporary_tools|챕터 6]]에서 이 변수가 설정되어 있지 않으면 **configure** 스크립트가 호스트 시스템의 **/usr/share/config.site**에서 일부 배포판의 특정한 구성 항목을 로드하려고 시도할 수 있습니다. 호스트에 한 잠재적인 오염을 방지하기 위해 이 변수를 다시 정의합니다
-  * **export ...** \\ 앞의 명령으로 일부 변수를 설정했지만, 모든 하위 셸에서 볼 수 있도록 하기 위해 해당 변수를 내보냅니다.+  * **export ...** \\ 앞의 명령으로 일부 변수를 설정했지만, 모든 서브 셸에서 볼 수 있도록 해당 변수를 내보냅니다.
  
 <WRAP center round important 90%> <WRAP center round important 90%>
 **중요** **중요**
-몇몇 상용 배포판은 문서화되지 않은 인스턴스 ''/etc/bash.bashrc''를 **bash**의 초기화에 추가합니다. 이 파일은 중요한 LFS 패키지 빌드에 영향을 줄 수 있는 방식으로 //lfs// 사용자 환경을 수정할 수 있습니다. //lfs// 사용자의 환경이 깨끗한지 확인하려면 ''/etc/bash.bashrc가'' 있는지 확인하고 있는 경우 이 파일을 다른 곳으로 옮기세요. ''root'' 사용자로 다음을 실행합니다.+몇몇 상용 배포판은 문서화되지 않은 인스턴스 ''/etc/bash.bashrc''를 **bash**의 초기화 과정에 추가합니다. 이 파일은 중요한 LFS 패키지 빌드에 영향을 줄 수 있는 //lfs// 사용자 환경을 수정할 수 있습니다. //lfs// 사용자의 환경이 깨끗한지 확인하려면 ''/etc/bash.bashrc가'' 있는지 확인하고 있는 경우 이 파일을 다른 곳으로 옮기세요. ''root'' 사용자로 다음을 실행합니다.
 <code bash> <code bash>
 [ ! -e /etc/bash.bashrc ] || mv -v /etc/bash.bashrc /etc/bash.bashrc.NOUSE [ ! -e /etc/bash.bashrc ] || mv -v /etc/bash.bashrc /etc/bash.bashrc.NOUSE
 </code> </code>
-//lfs// 사용자가 더 이상 필요하지 않은 경우([[.:07-entering_chroot_and_building_additional_tempory_tools|7장]] 시작 부분) ''/etc/bash.bashrc''를 안전하게 복원할 수 있습니다(원하는 경우).+//lfs// 사용자가 더 이상 필요하지 않고 파일을 복원하길 경우([[.:07-entering_chroot_and_building_additional_tempory_tools|7장]] 시작 부분) ''/etc/bash.bashrc''를 안전하게 되돌릴 수 있습니다.
  
 [[.: 105-bash-5.2.21|8.35장 "Bash-5.2.21"]]에서 빌드할 LFS Bash 패키지는 ''/etc/bash.bashrc''를 로드하거나 실행하도록 구성되지 않았으므로 완성된 LFS 시스템에서는 이 파일이 쓸모가 없다는 점에 유의하세요. [[.: 105-bash-5.2.21|8.35장 "Bash-5.2.21"]]에서 빌드할 LFS Bash 패키지는 ''/etc/bash.bashrc''를 로드하거나 실행하도록 구성되지 않았으므로 완성된 LFS 시스템에서는 이 파일이 쓸모가 없다는 점에 유의하세요.
줄 74: 줄 74:
 <WRAP center round important 90%> <WRAP center round important 90%>
 **중요** \\ **중요** \\
-숫자없는 //-j// 옵션을 **make**에 전달하거나 ''MAKEFLAGS''같은 옵션으로 전달하지 마세요.그렇게 하면 **make**가 무제한으로 빌드 작업을 생성하여 시스템 안정성 문제를 일으킬 수 있습니다.+숫자없는 //-j// 옵션을 **make**에 전달하거나 ''MAKEFLAGS''같은 옵션으로 전달하지 마세요.그렇게 하면 **make**가 무제한으로 빌드 작업을 생성하여 시스템의 안정성에 문제를 일으킬 수 있습니다.
 </WRAP> </WRAP>
  
-[[05-compiling_a_cross_toolchain|5장]]과 [[.:06-cross_compiling_temporary_tools|챕터 6]]에서 패키지를 빌드하는 데 사용할 수 있는 모든 논리 코어를 사용하려면 지금 ''.bashrc''에서 ''MAKEFLAGS''를 설정하세요.+[[05-compiling_a_cross_toolchain|5장]]과 [[.:06-cross_compiling_temporary_tools|챕터 6]]에서 패키지를 빌드하는 데 사용할 수 있는 모든 논리 코어를 사용하려면 ''.bashrc''에서 ''MAKEFLAGS''를 설정하세요.
  
 <code bash> <code bash>
줄 85: 줄 85:
 </code> </code>
  
-모든 논리적 코어를 사용하지 않으려면 //$(nproc)//를 사용하려는 논리 코어 수로 바꾸세요.+모든 논리적 코어를 사용하지 않으려면 //$(nproc)//를 사용하려는 논리 코어 수로 설정하세요.
  
-마지막으로 임시 도구 빌드를 위한 환경이 완전히 준비되었는지 확인하려면 **bash** 셸이 새 사용자 프로필을 읽도록 강제 설정합니다.+마지막으로 임시 도구 빌드를 위한 환경이 완전히 준비되었는지 확인하려면 **bash** 셸이 새로운 사용자 프로필을 다시 읽도록 합니다.
  
 <code bash> <code bash>
 source ~/.bash_profile source ~/.bash_profile
 </code> </code>
  • linuxfromscratch/12.1/028-setting_up_the_environment.1718374505.txt.gz
  • 마지막으로 수정됨: 2024/06/14 14:15
  • 저자 baecy