← 목록
한선씨 2026-07-07 9KB 읽기 9분

한선씨 설치 프로그램 4종 — ccp 고속고압축 패키징

개요

사장님 지시(2026-07-07): "npm으로 실행하는 게 아니라 한선씨 프로그램으로 실행. 맥용·윈도우용·리눅스용·하드웨어직접용 한선씨 설치프로그램으로 패키징. .ccp 고속고압축 압축도구 활용."

/Users/ef/crowny-compressor/ccp(크라우니 압축기)를 이용해 4개 플랫폼용 .ccp 설치 아카이브 + macOS self-extract .command를 만들고, 설치 로직 자체는 한선씨(설치기.한선)로 작성했다. hansunc.crowny.org download.html에 배선 완료.

산출물

/Users/ef/crowny-hanseon-dist/설치/ (원본), /Users/ef/crowny-hansunc/public/dist/ (배포):

파일크기상태
한선씨설치-macos-arm64.ccp540K정본 3바이너리+libs 47종, 라운드트립 검증 완료
한선씨설치-macos-arm64.command600Kself-extract, E2E 실행 검증 완료(아래)
한선씨설치-linux-x64.ccp2.1M기존 linux dist 재패키징(2026-06-21 빌드, 구버전 명시)
한선씨설치-windows-x86.ccp968K소스+빌드안내(VM 바이너리 미포함 — 아래 블로커)
한선씨설치-hardware-raspberrypi.ccp716K소스+네이티브 빌드 스크립트(aarch64 크로스빌드 검증)
한선씨설치-hardware-orinnx.ccp716K소스+네이티브 빌드 스크립트(aarch64 크로스빌드 검증)
.ccp/.command.sha256 동반.

설치기.한선 (설치 로직 본체 — 한선씨로 작성)

/Users/ef/crowny-hanseon-dist/설치기.한선 (→ 설치기.toau, hanseonc_high로 컴파일, 모든 패키지에 동일 바이트코드 재사용 — TOAU는 플랫폼 독립).

내용: 산술(더하기/곱하기) 스모크, 문자열 결합 스모크, 3진 Kleene 논리(참&&모름=모름) 스모크, 설치 위치 출력(현재경로()), 실행 예시 안내. ccp가 파일 배치를 끝낸 뒤 번들된 crownyc가 이 .toau를 실행해 검증한다.

macOS 패키징 — 기술적 결정 (sx2 vs sx)

ccp sx(스텁이 ccp x를 호출)는 대상 머신에 ccp가 이미 설치돼 있어야 동작 — 새 사용자 배포에는 부적합. 대신 ccp sx2(ccp 바이너리 자체를 임베드, 외부 의존 0)를 사용하고, 그 위에 얇은 셸 스텁을 한 겹 더 씌워 "추출 → 성공 시 번들 crownyc로 설치기.toau 실행"까지 체이닝했다 (ccp sx2가 자체 프로세스를 exit()로 종료해버려 체이닝 지점이 없으므로 바깥에서 한 겹 더 감쌈). 최종 구조:

[셸 스텁 8192B 고정크기, tail -c로 내부 바이너리 추출·실행·체이닝]
[ccp sx2 산출물: ccp 바이너리 + .ccp 아카이브 + 14B 트레일러]

E2E 검증 (macOS, 스크래치 디렉토리)

/private/tmp/claude-501/.../scratchpad/e2e-install 로 설치대상 오버라이드(시스템 /usr/local 안 건드림)
$ ./한선씨설치-macos-arm64.command $SCRATCH/e2e-install
CCP 자가추출 설치기 → .../e2e-install/
설치: → .../e2e-install/  (디렉토리 2, 파일 54, 심볼릭 0)
[검증] 산술(더하기) OK: 3 + 7 = 10
[검증] 산술(곱하기) OK: 3 * 7 = 21
[검증] 문자열: 한선씨 설치 검증 문자열 결합 OK
[검증] 3진논리 OK: 참 && 모름 = 모름 (Kleene)
한선씨 설치 완료: .../e2e-install
EXIT=0
설치된 bin/crownyc로 재실행해도 동일 정상 동작 확인. 전 플랫폼 .ccp 라운드트립(ccp accp x) 무결성도 개별 검증(파일수/바이너리 매직 보존).

Linux 패키징

기존 /Users/ef/crowny-hanseon-dist/linux/{bin,std} 그대로 재사용 (2026-06-21 빌드, ELF x86-64 정적링크, STR_HANDLE_BASE/STR_ID_MAX 최신패치 미포함 — 기존 README-버전주의.md 경고를 패키지 README에도 명시). std/ 113개 라이브러리 그대로 포함(전례 커레이션 존중, 47종 화이트리스트로 재축소하지 않음).

Windows 패키징 — mingw 시도 결과 (중요 발견)

x86_64-w64-mingw32-gcc 15.2.0(Homebrew mingw-w64) 존재 확인, 실제 빌드 시도:

  • hanseonc_high.exe, toau_pack.exe — 빌드 성공(경고만, 에러 0). 실행은
Wine 미설치로 미검증.
  • crownyc.exe(VM 런타임) — 빌드 실패. 정확한 원인 4가지를 진단(공유 정본
소스는 이 작업에서 수정하지 않음 — 진단만 README에 상세 기록): 1. crownyc.c:37,89usleep/ftruncate 매크로가 #include <unistd.h> (110행)보다 먼저 정의되어 mingw unistd.h의 실제 선언과 충돌 (매크로를 unistd.h 인클루드 뒤로 옮기거나, ifdef 블록 안에 `#include <unistd.h>` 한 줄 선행 추가하면 해결). 2. crownyc.c:168 #include "crownyc_jit.c" — JIT 모듈이 <dlfcn.h>, <spawn.h>를 무조건 include(POSIX 전용). JIT는 아직 인터프리터 디스패치에 배선 안 됨(v0, "핫 디스패치는 항상 BAIL") → Windows에서 #ifndef _WIN32로 통째로 비활성해도 기능 손실 없음. 단 외부 호출부 crownyc.c:7552 cj_note_call((int)fn) 한 곳도 같이 가드 필요. 3. setsockopt() 콜사이트 6곳(9843,9928,10076,11816,11821,11843) — Winsock은 4번째 인자가 const char*인데 POSIX 스타일 void* 그대로 전달해 타입 불일치. 4. SO_REUSEPORT(11821) — Windows 소켓에 없는 옵션, 무조건 참조.
  • 종합: 1~2는 국소 1줄 수정, 3~4는 캐스팅 6곳 — 완주 시 하루 이내
  • 작업으로 추정. 이번 작업에서는 "19+ 동시 세션이 참조하는 정본 보호" 원칙에 따라 크로스빌드 검증만 하고 crownyc.c는 건드리지 않음.
    • 패키지는 소스 전체 + libs 47종 + 위 블로커 상세 + 재빌드 안내로 구성.

    하드웨어 직접(Raspberry Pi / Jetson Orin NX)

    /Users/ef/crowny-downloads/public/platforms/{raspberrypi,orinnx}/베어메탈 CrownyOS 부팅(리눅스 커널 없이 crownyc가 직접 SD 부팅) 전례로, 이번 패키지의 용도(Linux가 이미 올라간 보드 위에 한선씨 툴체인 설치)와는 달라 재사용하지 않고 별도 구성했다(단, 전례 문서는 전례참조/에 참고용으로 동봉).

    • aarch64-linux-musl-gcc 크로스컴파일로 crownyc.c, hanseonc_high.c 경고/
    에러 0건 클린 빌드 확인(ELF aarch64 산출물 실측) — 소스 이식성 검증.
    • 다만 musl 링크라 glibc 기반 Raspberry Pi OS/L4T에서 그대로 실행 안 될 수
    있어, 기본 설치 경로는 보드 위 네이티브 빌드(build-native.sh, cc -O2)로 설정. 실기 미보유로 실행은 미검증.

    download.html 배선

    /Users/ef/crowny-hansunc/public/download.html(명시 위임된 유일한 수정 허용 파일)에 "ccp 설치판(권장)" 섹션 신규 추가, 기존 install.sh 원라이너 섹션은 그대로 유지. /Users/ef/crowny-hansunc/public/dist/에 6개 산출물 + sha256 복사 배치, curl 200 확인(로컬 :9763, https://hansunc.crowny.org 양쪽). HTML 파서로 신규 마크업 파싱 오류 없음 확인.

    크라우니코드

    crownycode-learn.sh search "설치 검증 스모크" → 0건(신규 패턴) → add "한선씨_설치검증_스모크테스트"로 학습 완료. 크라우니코드: lookup HIT 0 / MISS 1 / learn 1

    잔여 이슈

    1. Windows crownyc.exe 미완성 — 위 4개 블로커 수정(추정 1일) 후 재빌드 필요.
    수정은 공유 정본 crownyc.c에 적용해야 다른 세션에도 이득 — 별도 작업으로 분리 권장.
    1. Linux/하드웨어 실행 미검증 — 이 맥에는 Linux 실기·Raspberry Pi·Orin NX가
    없어 크로스빌드/재사용 바이너리의 실제 실행은 확인 못함(빌드 무결성만 확인).
    1. macOS .command Finder 더블클릭 자체는 미검증 — 터미널에서 직접 실행한
    E2E만 확인(샌드박스에 GUI 없음). 셸 실행 경로는 완전 동일하므로 위험 낮음.
    1. Linux 바이너리는 2026-06-21 스냅샷(최신 STR 패치 2건 미포함) — 재배포 전
    Linux 환경에서 정본 소스로 재빌드 권장(README에 안내 포함).

    관련 파일

    • 설치 로직: /Users/ef/crowny-hanseon-dist/설치기.한선, .toau
    • 스테이징: /Users/ef/crowny-hanseon-dist/staging/{macos-arm64,linux-x64,windows-x86,hardware-raspberrypi,hardware-orinnx}/
    • 산출물 원본: /Users/ef/crowny-hanseon-dist/설치/
    • 배포: /Users/ef/crowny-hansunc/public/dist/, /Users/ef/crowny-hansunc/public/download.html
    • Windows 크로스빌드 진단: 위 패키지 내 README.md (staging/windows-x86)