설치와 지원 플랫폼
이 페이지는 zeropty가 지원하는 플랫폼을 적고, 설치 방법을 비교하고, 받는 파일마다 무엇인지 설명해요. 모든 명령을 따라 하는 첫 설치는 시작하기를 보세요.
지원 플랫폼
| 플랫폼 | 지원 |
|---|---|
| macOS 11 이상, Apple silicon | 지원해요. 릴리스 바이너리가 macOS 11 이상에서 로드돼요 |
| macOS 11 이상, Intel | 릴리스 묶음으로 지원해요(zeropty와 shim.dylib에 x86_64 슬라이스가 있어요) |
| 확인한 버전 | macOS 15, macOS 26 |
| Linux | 지원하지 않아요 |
| Windows | 지원하지 않아요 |
zeropty는 지금은 macOS만 지원해요. 엔진이 kqueue 위에 있고, 터미널이 필요한 프로그램을 속이는 shim이 macOS의 DYLD_INSERT_LIBRARIES를 써요. 다른 플랫폼은 이 두 부분을 각자의 방식(epoll, LD_PRELOAD)으로 옮겨야 해요.
소스에서 빌드하려면 최소 지원 Rust 버전(MSRV)인 Rust 1.88 이상이 필요해요. 자세한 내용은 버전 정책을 보세요.
설치 방법
| 방법 | 필요한 것 | 받는 것 | 빠지는 것 |
|---|---|---|---|
| 릴리스 묶음 | curl, shasum | zeropty, shim.dylib, zeropty-tty, claude-zeropty | C·Node 임베딩 라이브러리, bash builtin |
소스에서 ./build.sh | Rust stable, Xcode Command Line Tools | 전부, dist/에 | 없어요 |
cargo install --git | Rust | zeropty만, ~/.cargo/bin에 | shim, zeropty-tty, claude-zeropty, 임베딩 라이브러리, bash builtin |
- 릴리스 묶음. 0.1.3부터 릴리스마다
zeropty-VERSION-darwin-universal.tar.gz와 그SHA256SUMS가 붙어 있어요.VERSION은0.1.5같은 릴리스 번호로 바꾸세요. 풀기 전에shasum -a 256 -c SHA256SUMS로 묶음을 확인하세요. 스크립트에서 버전을 고정하려면 버전과, 그 릴리스SHA256SUMS에 있는 묶음 해시를 고정해 두세요. ./build.sh. 저장소를 clone하고./build.sh를 실행해요. 워크스페이스를 release 모드로 빌드하고 결과를dist/에 복사해요. 계속 쓰려면dist/를PATH에 넣어 두세요.cargo install. CLI와 서버만 필요하면 한 줄이에요.
cargo install --git https://github.com/CreatiCoding/zeropty # ~/.cargo/bin/zeroptysh, python3, 빌드 명령처럼 터미널이 없어도 되는 프로그램을 돌리기에는 이걸로 충분해요. cargo install은 패키지의 실행 파일만 설치해서, ./build.sh가 따로 빌드하는 파일은 빠져요. 자세한 내용은 FAQ를 보세요.
Homebrew tap은 없고, crate는 crates.io에 올라가 있지 않아요. Rust 프로그램은 git 의존성으로 엔진을 쓸 수 있어요. 자세한 내용은 C와 Rust에 zeropty 내장하기를 보세요.
Gatekeeper
릴리스 파일은 ad-hoc 서명이고 공증은 받지 않았어요. 브라우저로 받으면 quarantine 표시가 붙고, macOS가 zeropty를 막아요. xattr -dr com.apple.quarantine FOLDER로 지우세요. FOLDER는 푼 폴더로 바꾸세요. curl은 표시를 붙이지 않아요.
파일마다의 용도
| 파일 | 묶음에 | dist/에 | 용도 |
|---|---|---|---|
zeropty | 있어요 (arm64, x86_64) | 있어요 | 서버와 CLI |
shim.dylib | 있어요 (arm64, arm64e, x86_64) | 있어요 (arm64, arm64e) | 세션의 소켓을 프로그램에게 터미널처럼 보이게 해요 |
zeropty-tty | 있어요 | 있어요 | shim을 넣어 프로그램을 띄워요(vim, less, claude) |
claude-zeropty | 있어요 | 있어요 | zeropty-tty claude를 실행해요 |
libzeropty_c.dylib, zeropty.h | 없어요 | 있어요 | C ABI(애플리케이션 바이너리 인터페이스)로 엔진 넣기 |
zeropty.node | 없어요 | 있어요 | Node.js에 엔진 넣기, client/embedded.mjs가 불러요 |
zeropty_bash.dylib | 없어요 | 있어요 | bash builtin: enable -f dist/zeropty_bash.dylib zeropty |
LICENSE-MIT, LICENSE-APACHE | 있어요 | 없어요 | 라이선스 |
이 파일들은 한곳에 두세요. zeropty-tty는 자기 옆의 shim.dylib를 찾고, claude-zeropty도 같은 방식으로 zeropty-tty를 찾아요. zeropty-tty나 claude-zeropty만 다른 곳에 심볼릭 링크하지 말고 폴더를 PATH에 넣거나, ZEROPTY_SHIM으로 shim을 가리켜 주세요.
zsh 함수 shell/zeropty.zsh는 dist/가 아니라 저장소에 있어요. source shell/zeropty.zsh로 불러요.
zeropty가 만드는 파일
| 경로 | 무엇 |
|---|---|
~/.zeropty/mux.sock | 서버 소켓(ZEROPTY_SOCK으로 바꿔요) |
~/.zeropty/tty/ | zeropty-tty가 실행하는 프로그램(/usr/bin에 있는 것 등)의 서명을 바꾼 사본(상위 폴더는 ZEROPTY_CACHE로 바꿔요) |
끄기와 지우기
서버와 그 안의 모든 세션을 꺼요.
shzeropty kill-server서버는 모든 세션의 프로세스 그룹에 SIGHUP을 보내고 끝나요. 다른 소켓의 서버라면
ZEROPTY_SOCK도 함께 주세요.풀었거나 clone한 폴더를 지우고,
~/.zshrc에 넣은PATH줄도 지워요.cargo install로 설치했다면cargo uninstall zeropty를 실행해요.~/.zeropty를 지워서 소켓 파일과zeropty-tty가 만든 사본을 없애요.
다음 단계
- 시작하기: 첫 세션을 돌려 봐요.
- 세션이 터미널을 얻는 방법: shim과
zeropty-tty가 왜 있는지. - C와 Rust에 zeropty 내장하기:
./build.sh가dist/에 만드는 라이브러리를 써요.