vi. 패키지 선정 이유

LFS의 목표는 자가 복제에 필요한 모든 패키지를 포함하여 완전하고 사용 가능한 기초 수준의 시스템을 구축하고, 사용자의 선택에 따라 보다 완벽한 시스템을 사용자 지정할 수 있는 비교적 최소한의 기반을 제공하는 것입니다. 그렇다고 해서 LFS가 가장 작은 시스템이라는 뜻은 아닙니다. 엄밀히 말하자면 필수는 아니지만 몇 가지 중요한 패키지가 포함되어 있습니다. 아래 목록에는 책에 포함된 각 패키지가 포함된 이유가 설명되어 있습니다.

Acl

이 패키지에는 파일 및 디렉터리에 대한 세분화된 임의 액세스 권한을 정의하는 데 사용되는 액세스 제어 목록을 관리하는 유틸리티가 포함되어 있습니다.

Attr

이 패키지에는 파일 시스템 개체의 확장 속성을 관리하기 위한 프로그램이 포함되어 있습니다.

Autoconf

이 패키지는 개발자의 템플릿에서 소스 코드를 자동으로 구성할 수 있는 셸 스크립트를 생성하는 프로그램을 제공합니다. 빌드 절차가 업데이트된 후 패키지를 다시 빌드하는 데 필요한 경우가 많습니다.

Automake

이 패키지에는 템플릿에서 Make 파일을 생성하는 프로그램이 포함되어 있습니다. 빌드 절차가 업데이트된 후 패키지를 다시 빌드하는 데 필요한 경우가 많습니다.

Bash

이 패키지는 시스템에 본 셸 인터페이스를 제공하기 위한 LSB 핵심 요구 사항을 충족합니다. 일반적인 사용법과 광범위한 기능으로 인해 다른 셸 패키지보다 선택되었습니다.

Bc

이 패키지는 임의의 정밀도 수치 처리 언어를 제공합니다. 리눅스 커널을 빌드하기 위한 요구 사항을 충족합니다.

Binutils

이 패키지는 객체 파일을 처리하기 위한 링커, 어셈블러 및 기타 도구를 제공합니다. 이 패키지의 프로그램은 LFS 시스템에서 대부분의 패키지를 컴파일하는 데 필요합니다.

Bison

이 패키지에는 여러 LFS 프로그램을 빌드하는 데 필요한 yacc(Yet Another Compiler Compiler)의 GNU 버전이 포함되어 있습니다.

Bzip2

이 패키지에는 파일 압축 및 압축 해제를 위한 프로그램이 포함되어 있습니다. 많은 LFS 패키지를 압축 해제하는 데 필요합니다.

Check

이 패키지는 다른 프로그램을 위한 테스트 도구를 제공합니다.

Coreutils

이 패키지에는 파일과 디렉터리를 열고 조작하는 데 필요한 여러 가지 필수 프로그램이 포함되어 있습니다. 이러한 프로그램은 명령줄 파일 관리에 필요하며 LFS의 모든 패키지의 설치 절차에 필요합니다.

D-Bus

이 패키지에는 애플리케이션이 서로 통신할 수 있는 간단한 방법인 메시지 버스 시스템을 구현하는 프로그램이 포함되어 있습니다.

DejaGNU

이 패키지는 다른 프로그램을 테스트하기 위한 프레임워크를 제공합니다.

Diffutils

이 패키지에는 파일 또는 디렉터리 간의 차이점을 보여주는 프로그램이 포함되어 있습니다. 이 프로그램은 패치를 만드는 데 사용할 수 있으며 많은 패키지의 빌드 절차에도 사용됩니다.

E2fsprogs

이 패키지는 ext2, ext3 및 ext4 파일 시스템을 처리하기 위한 유틸리티를 제공합니다. 이 파일 시스템은 리눅스가 지원하는 가장 일반적이고 철저한 검증를 거친 파일 시스템입니다.

Expat

이 패키지는 비교적 작은 XML 구문 분석 라이브러리를 생성합니다. XML::Parser Perl 모듈에 필요합니다.

Expect

이 패키지에는 다른 대화형 프로그램과 스크립트 대화를 수행하기 위한 프로그램이 포함되어 있습니다. 일반적으로 다른 패키지를 테스트하는 데 사용됩니다.

File

이 패키지에는 지정된 파일의 유형을 확인하는 유틸리티가 포함되어 있습니다. 일부 패키지는 빌드 스크립트에 이 유틸리티가 필요합니다.

Findutils

이 패키지는 파일 시스템에서 파일을 찾는 프로그램을 제공합니다. 많은 패키지의 빌드 스크립트에서 사용됩니다.

lex

이 패키지에는 텍스트의 패턴을 인식하는 프로그램을 생성하는 유틸리티가 포함되어 있습니다. lex(lexical analyzer) 프로그램의 GNU 버전입니다. 여러 LFS 패키지를 빌드하는 데 필요합니다.

Gawk

이 패키지는 텍스트 파일 조작을 위한 프로그램을 제공합니다. awk(Aho-Weinberg-Kernighan)의 GNU 버전입니다. 다른 많은 패키지의 빌드 스크립트에서 사용됩니다.

GCC

Gnu 컴파일러 컬렉션입니다. 여기에는 C 및 C++ 컴파일러와 LFS에서 빌드하지 않은 여러 컴파일러가 포함되어 있습니다.

GDBM

이 패키지에는 GNU 데이터베이스 관리자 라이브러리가 포함되어 있습니다. 다른 LFS 패키지인 Man-DB에서 사용됩니다.

Gettext

이 패키지는 많은 패키지의 국제화(I18N) 및 현지화(L10N)를 위한 유틸리티와 라이브러리를 제공합니다.

Glibc

이 패키지에는 기본 C 라이브러리가 포함되어 있습니다. 이 패키지가 없으면 Linux 프로그램이 실행되지 않습니다.

GMP

이 패키지는 임의 정밀도 계산에 유용한 기능을 제공하는 수학 라이브러리를 제공합니다. GCC를 빌드하는 데 필요합니다.

Gperf

이 패키지는 키 집합에서 완벽한 해시 함수를 생성하는 프로그램을 생성합니다. Systemd에 필요합니다.

Grep

이 패키지에는 파일 검색을 위한 프로그램이 포함되어 있습니다. 이 프로그램은 대부분의 패키지 빌드 스크립트에서 사용됩니다.

Groff

이 패키지는 텍스트 처리 및 서식을 지정하는 프로그램을 제공합니다. 이 프로그램의 중요한 기능 중 하나는 매뉴얼 페이지의 서식을 지정하는 것입니다.

GRUB

GRand Unified Bootloader입니다. 여러 부트 로더 중 가장 유연합니다.

Gzip

이 패키지에는 파일 압축 및 압축 해제 프로그램이 포함되어 있습니다. LFS에서 많은 패키지의 압축을 풀 때 필요합니다.

Iana 등

이 패키지는 네트워크 서비스 및 프로토콜에 대한 데이터를 제공합니다. 적절한 네트워킹 기능을 활성화하는 데 필요합니다.

Inetutils

이 패키지는 기본 네트워크 관리를 위한 프로그램을 제공합니다.

Intltool

이 패키지는 소스 파일에서 번역 가능한 문자열을 추출하기 위한 도구를 제공합니다.

IProute2

이 패키지에는 기본 및 고급 IPv4 및 IPv6 네트워킹을 위한 프로그램이 포함되어 있습니다. 이 패키지는 다른 일반적인 네트워크 도구 패키지(net-tools)보다 IPv6 기능 때문에 선택되었습니다.

Jinja2

이 패키지는 텍스트 템플릿을 위한 Python 모듈입니다. Systemd를 빌드하는 데 필요합니다.

Kbd

이 패키지는 키 테이블 파일, 미국 이외의 키보드용 키보드 유틸리티 및 여러 콘솔 글꼴을 생성합니다.

Kmod

이 패키지는 리눅스 커널 모듈을 관리하는 데 필요한 프로그램을 제공합니다.

Less

이 패키지에는 파일을 볼 때 위아래로 스크롤할 수 있는 매우 멋진 텍스트 파일 뷰어가 포함되어 있습니다. 많은 패키지가 출력 페이징에 이 패키지를 사용합니다.

Libcap

이 패키지는 리눅스 커널에서 사용할 수 있는 POSIX 1003.1e 기능에 대한 사용자 공간 인터페이스를 구현합니다.

Libelf

elfutils 프로젝트는 ELF 파일 및 DWARF 데이터를 위한 라이브러리와 도구를 제공합니다. 이 패키지의 대부분의 유틸리티는 다른 패키지에서 사용할 수 있지만 기본(그리고 가장 효율적인) 구성을 사용하여 리눅스 커널을 빌드하려면 이 라이브러리가 필요합니다.

Libffi

이 패키지는 다양한 호출 규칙에 대한 이식 가능한 고수준 프로그래밍 인터페이스를 구현합니다. 일부 프로그램은 컴파일 시 함수에 어떤 인수를 전달할지 모를 수 있습니다. 예를 들어, 인터프리터는 런타임에 주어진 함수를 호출하는 데 사용되는 인수의 수와 유형을 알 수 있습니다. 이러한 프로그램에서 Libffi를 사용하여 인터프리터 프로그램에서 컴파일된 코드로 연결을 제공할 수 있습니다.

Libpipeline

Libpipeline 패키지는 유연하고 편리한 방식으로 서브프로세스의 파이프라인을 조작하기 위한 라이브러리를 제공합니다. Man-DB 패키지에 필요합니다.

Libtool

이 패키지에는 GNU 일반 라이브러리 지원 스크립트가 포함되어 있습니다. 이 스크립트는 공유 라이브러리 사용의 복잡성을 일관되고 이식 가능한 인터페이스로 래핑합니다. 다른 LFS 패키지의 테스트 스위트에서 필요합니다.

Libxcrypt

이 패키지는 비밀번호 해싱을 위해 다양한 패키지(특히 Shadow)에 필요한 libcrypt 라이브러리를 제공합니다. 이 패키지는 더 이상 사용되지 않는 Glibc의 libcrypt 구현을 대체합니다.

Linux Kernel

이 패키지는 운영 체제입니다. GNU/Linux 환경의 리눅스입니다.

M4

이 패키지는 다른 프로그램의 빌드 도구로 유용한 일반 텍스트 매크로 프로세서를 제공합니다.

Make

이 패키지에는 패키지 빌드를 지시하는 프로그램이 포함되어 있습니다. LFS의 거의 모든 패키지에 필요합니다.

MarkupSafe

이 패키지는 HTML/XHTML/XML의 문자열을 안전하게 처리하기 위한 Python 모듈입니다. Jinja2에는 이 패키지가 필요합니다.

Man-DB

이 패키지에는 man 페이지를 찾고 보기 위한 프로그램이 포함되어 있습니다. 이 패키지는 국제화 기능이 뛰어나기 때문에 man 패키지 대신 선택되었습니다. 이 패키지는 man 프로그램을 제공합니다.

Man-pages

이 패키지는 기본 리눅스 매뉴얼 페이지의 실제 내용을 제공합니다.

Meson

이 패키지는 소프트웨어 빌드 자동화를 위한 소프트웨어 도구를 제공합니다. Meson의 주요 목표는 소프트웨어 개발자가 빌드 시스템을 구성하는 데 소요되는 시간을 최소화하는 것입니다. Systemd 및 많은 BLFS 패키지를 빌드하는 데 필요합니다.

MPC

이 패키지는 복소수에 대한 산술 함수를 제공합니다. GCC에 필요합니다.

MPFR

이 패키지에는 배정밀도 산술을 위한 함수가 포함되어 있습니다. GCC에 필요합니다.

Ninja

이 패키지는 속도에 중점을 둔 소규모 빌드 시스템을 제공합니다. 상위 레벨 빌드 시스템에서 입력 파일을 생성하고 가능한 한 빠르게 빌드를 실행하도록 설계되었습니다. 이 패키지는 Meson에 필요합니다.

Ncurses

이 패키지에는 터미널에 독립적인 문자 화면 처리를 위한 라이브러리가 포함되어 있습니다. 메뉴형 시스템에 커서 제어를 제공하는 데 자주 사용됩니다. LFS의 여러 패키지에 필요합니다.

Openssl

이 패키지는 암호화와 관련된 관리 도구와 라이브러리를 제공합니다. 이 패키지는 리눅스 커널을 비롯한 다른 패키지에 암호화 기능을 제공합니다.

Patch

이 패키지에는 일반적으로 diff 프로그램에서 만든 패치 파일을 적용하여 파일을 수정하거나 생성하는 프로그램이 포함되어 있습니다. 여러 LFS 패키지의 빌드 절차에 필요합니다.

Perl

이 패키지는 런타임 언어 PERL에 대한 인터프리터입니다. 여러 LFS 패키지의 설치 및 테스트 스위트에 필요합니다.

Pkgconf

이 패키지에는 개발 라이브러리의 컴파일러 및 링커 플래그를 구성하는 데 도움이 되는 프로그램이 포함되어 있습니다. 이 프로그램은 많은 패키지의 빌드 시스템에 필요한 pkg-config의 대체 프로그램으로 사용할 수 있습니다. 원래 Pkg-config 패키지보다 더 활발하게 유지 관리되고 약간 더 빠릅니다.

Procps-NG

이 패키지에는 프로세스 모니터링용 프로그램이 포함되어 있습니다. 이러한 프로그램은 시스템 관리에 유용하며 LFS 부트스크립트에서도 사용됩니다.

Psmisc

이 패키지는 실행 중인 프로세스에 대한 정보를 표시하는 프로그램을 생성합니다. 이러한 프로그램은 시스템 관리에 유용합니다.

Python 3

이 패키지는 코드 가독성을 강조하는 디자인 철학을 가진 인터프리터 언어를 제공합니다.

Readline

이 패키지는 명령줄 편집 및 히스토리 기능을 제공하는 라이브러리 세트입니다. Bash에서 사용합니다.

Sed

이 패키지를 사용하면 텍스트 편집기에서 텍스트를 열지 않고도 텍스트를 편집할 수 있습니다. 많은 LFS 패키지의 구성 스크립트에도 필요합니다.

Shadow

이 패키지에는 비밀번호를 안전하게 처리하는 프로그램이 포함되어 있습니다.

Systemd

이 패키지는 Sysvinit의 대안으로 초기화 프로그램과 몇 가지 추가 부팅 및 시스템 제어 기능을 제공합니다. 많은 리눅스 배포판에서 사용됩니다.

Tar

이 패키지는 LFS에서 사용되는 거의 모든 패키지의 아카이브 및 추출 기능을 제공합니다.

Tcl

이 패키지에는 많은 테스트 모음에서 사용되는 도구 명령 언어가 포함되어 있습니다.

Texinfo

이 패키지는 info 파일 읽기, 쓰기 및 변환을 위한 프로그램을 제공합니다. 많은 LFS 패키지의 설치 절차에 사용됩니다.

Util-linux

이 패키지에는 기타 유틸리티 프로그램이 포함되어 있습니다. 여기에는 파일 시스템, 콘솔, 파티션 및 메시지를 처리하기 위한 유틸리티가 포함되어 있습니다.

Vim

이 패키지는 편집기를 제공합니다. 클래식 vi 편집기와의 호환성 및 수많은 강력한 기능 때문에 선택되었습니다. 편집기는 많은 사용자들에게 매우 개인적인 선택입니다. 원하는 경우 다른 편집기로 대체할 수 있습니다.

Wheel

이 패키지는 파이썬 휠 패키징 표준의 참조 구현인 파이썬 모듈을 제공합니다.

XML::파서

이 패키지는 Expat과 인터페이스를 제공하는 Perl 모듈입니다.

XZ Utils

이 패키지에는 파일 압축 및 압축 해제를 위한 프로그램이 포함되어 있습니다. 일반적으로 사용 가능한 가장 높은 압축을 제공하며 XZ 또는 LZMA 형식의 패키지를 압축 해제하는 데 유용합니다.

Zlib

이 패키지에는 일부 프로그램에서 사용하는 압축 및 압축 해제 루틴이 포함되어 있습니다.

Zstd

이 패키지는 일부 프로그램에서 사용하는 압축 및 압축 해제 루틴을 제공합니다. 높은 압축률과 매우 광범위한 압축/속도 관련 선택을 제공합니다.