분류 전체보기 60

[LFS17] xz 패키지 빌드

1. Xz 패키지 역할Xz는 데이터에서 반복되는 패턴을 찾아내어 극단적으로 크기를 줄여준다높은 압출률 : gzip 이나 bzip2 보다 훨씬 더 작게 파일을 압출할 수 있다. 저장 공간이 귀한 임시 시스템이나 배포 환경에서 필수적이다.LFS에서의 역할 : 6장 이후로 넘어가면서 설치할 수많은 거대 패키지(GCC, Glibc 등)의 압축 을 풀 때, 이 xz 라이브러리와 실행 파일이 우리 시스템 안에 이미 준비되어 있어야 한다.2. Xz 패키지 빌드 1. 소스 준비 및 이동 (lfs 유저)cd $LFS/sourcestar -xvf xz-5.8.2.tar.xz cd xz-5.8.2 2. 설정./configure --prefix=/usr \ --host=..

리눅스/LFS 2026.04.27

[LFS16] Tar 패키지 빌드

1. Tar 패키지 역할Tar의 역할은 아래와 같다.아카이브(Archive) : 여러 개의 파일과 디렉토리 구조를 깨뜨리지 않고, 하나의 파일(.tar)로 묶어주는 역할만 한다.압축(Compression) : 여기에 gzip이나 xz같은 친구들이 달라붙어 용량을 줄여주는 것LFS에서의 역할 : 나중에 chroot로 진짜 루트 권한 환경에 들어갔을 때, 거기서 새로운 패키지 소스를 풀기 위해 가장 먼저 필요한 도구 2. Tar 패키지 빌드 1. 소스 준비 및 이동 (lfs 유저)cd $LFS/sourcestar -xvf tar-1.35.tar.xzcd tar-1.35 2. 설정 ./configure --prefix=/usr \ --host=$LFS..

리눅스/LFS 2026.04.27

[LFS15] sed 패키지 빌드

1. Sed의 역할sed는 파일을 직접 열어 수정하는 일반적인 에디터(Vim, Nano)와는 작동 방식이 완전히 다르다.비파괴적인 편집 : 원본 파일을 건드리지 않고, 터미널로 출력되는 스트림을 가공해서 보여준다.(물론 -i 옵션을 쓰면 파일도 직접 고친다.)패턴 매칭 : 특정 단어가 들어간 줄만 지우거나, 정규 표현식을 사용해 복잡한 문자열 패턴을 순식간에 바꿀 수 있다.2. Sed 패키지 설치 1. 소스 준비 및 이동 (lfs 유저) cd $LFS/sourcestar -xvf sed-4.9.tar.xzcd sed-4.9 2. 설정./configure --prefix=/usr \ --host=$LFS_TGT \ ..

리눅스/LFS 2026.04.27

[LFS14] Python3 빌드

1. Python3 패키지 역할빌드 도구 및 자동화 기반 LFS 과정에서 일부 패키지들은 내부적으로 Python 스크립트를 사용해서 아래와 같은 작업을 합니다설정(configure 보조)테스트 스위트 실행코드 생성최근 패키지들 meson, ninja, gdb, systemd 계열 등에서 Python 의존성이 있습니다.즉, 컴파일을 돕는 보조 언어 역할을 합니다.테스트 프레임워크 지원많은 패키지에서 make check 실행 시 Python을 사용테스트 자동화 스크립트들이 Python 기반없으면 테스트 실패 또는 일부가 스킵됨시스템 유틸리티 스크립트 실행일부 시스템 도구들이 Python으로 작성됨예: 일부 관리 스크립트, 빌드 헬퍼LFS이후 BLFS단계에서 더욱 중요해질 예정2. Python3 패키지 구성P..

리눅스/LFS 2026.04.21

[LFS13] Perl 패키지 빌드

1. Perl 패키지 역할LFS에서 perl 패키지의 역할은 단순한 언어가 아니라, 시스템 빌드와 테스트를 지원하는 핵심 도구입니다.주요 역할은 아래와 같습니다.빌드 지원(Build Support)configure, make 과정에서 Perl 스크립트 실행자동화된 빌드 절차 수행예:일부 패키지의 configure 단계에서 perl 필요테스트 자동화(Test Suite 실행)make check 수행 시 Perl 기반 테스트 실행빌드된 프로그램의 정상 동작 검증LFS에서 "정상 시스템" 만들려면 테스트 통과가 핵심텍스트 처리 및 스크립팅로그 분석, 문자열 처리, 파일 파싱빌드 과정 중 데이터 가공정규표현식(regex) 처리에 매우 강함2. Perl 패키지의 구성LFS에서 설치되는 Perl 패키지는 단순 실행..

리눅스/LFS 2026.04.21

이진탐색트리(Binary Search Tree) - 삭제 연산

이진탐색트리의 핵심은 정렬된 상태를 유지하면서 빠르게 탐색하는것 입니다.배열은 정렬하면 탐색은 빠르지만 삽입/삭제가 느리고, 리스트는 삽입은 빠르지만 탐색이 느립니다. 이 이진탐색트리는 그 중간을 노린 구조입니다. 대표적인 활용케이스는1. 검색 시스템값 찾기 : O(log n)예 : 사용자 ID, 세션, 키-값 조회내부적으로는 Redis 같은 시스템도 트리/해시 기반 구조를 섞여 사용합니다.2. 정렬된 데이터 유지항상 왼쪽중위 순회(inorder)하면 자동 정렬예:로그 시간순 정렬점수 랭킹 시스템3. 범위 검색(Range Query)10이상 50이하 데이터만 뽑고싶을때BST는 이런 범위 탐색이 효율적DB 인덱스에서 핵심 개념즉, 삽입/삭제/탐색을 모두 적당히 빠르게 처리하면서 정렬 상태를 유지해야 할 때..

Python/자료구조 2026.04.20

트리 - 힙 insert 연산

1. 힙 이란?(다시 한 번 짚고 넘어가자)힙은 완전이진트리 형태를 가지면서, 동시에 부모와 자식 사이의 대소관계를 만족하는 자료구조 이다.따라서, 부모가 자식보다 크기만 하다고 해서 다 힙은 아니다.예를 들어보자. 10 / \ 8 9 / 7이건 완전이진트리라서 힙이 될 수 있다. 10 / \ 8 9 \ 7이건 부모-자식 크기 관계는 맞아도, 완전이진트리 모양이 아니므로 힙이 아니다.왜냐하면, 왼쪽 자식의 왼쪽이 비었는데 오른쪽이 차 있으므로, 힙이 아니다. 2. insert 연산 과정step1. 초기 상태 array = [ 5, 7, 9, 10, 8, 6 ]에서 make_heap()으로 정렬한다. step2. 마지막 위치..

Python/자료구조 2026.04.14

트리(tree)란?

1. 트리(Tree)여태까지 봤던 배열, 스택, 큐, 연결 리스트는 대부분 선형 구조이다. 즉 "앞 - 뒤"로 이어지는 구조였음 그런데 트리는 다르게, 계층적 관계를 표현하는 비선형 자료구조이다. 예를 들면 폴더 구조, 조직도, 가족관계, HTML DOM 구조 같은 것을 표현할 때 트리가 잘 맞는다. 트리는 노드와 간선으로 이루어지고, 보통 하나의 루트에서 아래로 가지가 뻗는 형태로 설명된다. 2. 트리는 왜 필요할까?학생 명단을 저장하는 건 배열로도 가능하다. 하지만 "학과장 아래 교수들, 교수 아래 조교들, 조교 아래 학생들" 처럼 상하관계가 있으면 배열은 불편하다. 연결 리스트도 한 줄로만 이어지기 때문에 "누가 누구 밑에 있는가"를 표현하기엔 한계가 있다. 트리는 바로 이런 부모-자식 관계, 즉..

Python/자료구조 2026.04.09

트리 - 힙 make_heap 연산

1.make_heap이 무엇인가? make_heap은 힙이 아닌 배열(또는 완전이진트리 형태의 데이터)을 힙 성질을 만족하도록 바꾸는 연산이다. 이 과정을 부모-자식 비교를 통해 재배치하는것. 보통 heapify_down을 반복해서 수행한다A = [3, 8, 2, 5, 1, 7, 6] 이런 형태의 배열이 있다고 해보자. 이건 그냥 배열이지, 아직 힙이라는 보장은 없다. 이걸 최대 힙 또는 최소 힙 조건에 맞게 다시 정리하는게 make_heap이다. 2. 왜 make_heap이 필요할까?힙은 보통 우선순위 큐에 쓰이는데, 처음부터 데이터가 힙 상태로 들어오는게 아니라 그냥 막 들어온 배열인 경우가 많다. 그럴 때 이 전체 데이터를 한 번에 힙 구조로 바꿔야 이후 find_max, delete_max, in..

Python/자료구조 2026.04.09