Linux용 Drop Compress Image 빌드
이 가이드는 Ubuntu 24.04 LTS(및 유사한 Debian 기반 배포판)에서 개발 환경을 설정하고 Drop Compress Image를 빌드하는 과정을 안내합니다。
사전 요구사항
시작하기 전에 다음이 필요합니다:
- Ubuntu 24.04 LTS 또는 유사한 Debian 기반 배포판
- 소프트웨어 설치를 위한 sudo 권한
- 터미널 명령어에 대한 기본적인 지식
단계 1: 시스템 패키지 업데이트
먼저 최신 버전이 있는지 확인하기 위해 시스템 패키지를 업데이트합니다:
sudo apt update
sudo apt upgrade -y
단계 2: 빌드 종속성 설치
Tauri 개발에 필요한 필수 빌드 도구 및 라이브러리를 설치합니다:
# 빌드 필수 요소 및 개발 라이브러리 설치
sudo apt install -y \
build-essential \
curl \
wget \
file \
libssl-dev \
libgtk-3-dev \
libayatana-appindicator3-dev \
librsvg2-dev \
libwebkit2gtk-4.1-dev \
patchelf
패키지 설명
- build-essential: GCC, G++, make 제공
- libssl-dev: OpenSSL 개발 라이브러리
- libgtk-3-dev: UI용 GTK3 개발 라이브러리
- libayatana-appindicator3-dev: 시스템 트레이 지원
- librsvg2-dev: SVG 렌더링 지원
- libwebkit2gtk-4.1-dev: Tauri의 webview용 WebKit
- patchelf: AppImage용 ELF 바이너리 패처
설치 확인
gcc --version
GCC 버전 13.x 이상이 표시되어야 합니다.
단계 3: Rust 설치
Drop Compress Image는 Rust로 빌드되므로 Rust 툴체인을 설치해야 합니다.
rustup을 통한 Rust 설치
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
프롬프트가 표시되면 옵션 1(기본 설치)을 선택하세요.
셸 구성
source $HOME/.cargo/env
영구적으로 만들려면 셸 프로파일에 추가하세요:
echo 'source $HOME/.cargo/env' >> ~/.bashrc
source ~/.bashrc
Rust 설치 확인
rustc --version
cargo --version
rustc와 cargo 모두에 대한 버전 정보가 표시되어야 합니다.
단계 4: Node.js 설치
Drop Compress Image의 프론트엔드는 Vue.js로 빌드되어 Node.js가 필요합니다.
NodeSource 저장소를 통한 Node.js 설치
# Node.js 22.x (LTS) 설치
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs
Node.js 설치 확인
node --version
npm --version
Node.js 버전 22.x 이상이 표시되어야 합니다.
단계 5: pnpm 설치
Drop Compress Image는 성능과 디스크 효율성을 위해 pnpm을 패키지 관리자로 사용합니다.
pnpm 설치
npm install -g pnpm
pnpm 설치 확인
pnpm --version
단계 6: vcpkg 설정 및 종속성 설치
이 프로젝트는 vcpkg를 사용하여 C/C++ 이미지 처리 라이브러리(libaom, libavif, libjxl 등)를 관리합니다.
vcpkg 선행 조건 설치
# vcpkg에 필요한 도구 설치
sudo apt install -y curl zip unzip tar cmake pkg-config
vcpkg 설치
# vcpkg 복제
git clone https://github.com/Microsoft/vcpkg.git ~/vcpkg
# vcpkg 부트스트랩
cd ~/vcpkg
./bootstrap-vcpkg.sh
# 환경 변수 설정(~/.bashrc에 추가)
echo 'export VCPKG_ROOT="$HOME/vcpkg"' >> ~/.bashrc
echo 'export PATH="$VCPKG_ROOT:$PATH"' >> ~/.bashrc
source ~/.bashrc
종속성 설치
자동 설치 스크립트 사용(권장):
cd ~/path/to/DropWebP/app/src-tauri
./setup-vcpkg.sh
또는 수동으로 설치:
cd ~/vcpkg
# x64 Linux의 경우
./vcpkg install aom:x64-linux
./vcpkg install libavif[aom]:x64-linux
./vcpkg install libjxl:x64-linux
./vcpkg install libwebp:x64-linux
./vcpkg install openjpeg:x64-linux
./vcpkg install libjpeg-turbo:x64-linux
./vcpkg install lcms:x64-linux
# ARM64 Linux의 경우
./vcpkg install aom:arm64-linux
./vcpkg install libavif[aom]:arm64-linux
./vcpkg install libjxl:arm64-linux
./vcpkg install libwebp:arm64-linux
./vcpkg install openjpeg:arm64-linux
./vcpkg install libjpeg-turbo:arm64-linux
./vcpkg install lcms:arm64-linux
설치된 라이브러리:
- libaom: AV1 인코더(AVIF 형식용, 필수)
- libavif: AVIF 이미지 형식
- libjxl: JPEG XL 이미지 형식
- libwebp: WebP 이미지 형식
- openjpeg: JPEG 2000 이미지 형식
- libjpeg-turbo: JPEG 이미지 처리(jpegli용)
- lcms: Little CMS 색상 관리
설치 확인
./vcpkg list | grep -E "aom|avif|jxl|webp|openjpeg|jpeg|lcms"
단계 7: Drop Compress Image 복제 및 빌드
이제 Drop Compress Image를 복제하고 빌드할 준비가 되었습니다.
리포지토리 복제
git clone https://github.com/logue/DropWebP.git
cd DropWebP
프론트엔드 종속성 설치
# 모든 워크스페이스 종속성 설치
pnpm install
Tauri CLI v2 설치
# Tauri CLI v2를 전역으로 설치
pnpm add -g @tauri-apps/cli@next
애플리케이션 빌드
개발용:
# 개발 모드로 실행
pnpm dev:tauri
프로덕션용:
# 프로덕션용 빌드
pnpm build:tauri
빌드된 애플리케이션은 app/src-tauri/target/release/에 있습니다.
단계 8: 배포 형식
Linux의 Tauri는 여러 배포 형식을 생성할 수 있습니다:
AppImage (권장)
AppImage는 대부분의 Linux 배포판에서 작동하는 범용 패키지 형식입니다:
pnpm build:tauri
AppImage는 app/src-tauri/target/release/bundle/appimage/에 있습니다.
Debian 패키지 (.deb)
Debian/Ubuntu 기반 배포판용:
pnpm build:tauri
.deb 패키지는 app/src-tauri/target/release/bundle/deb/에 있습니다.
설치:
sudo dpkg -i app/src-tauri/target/release/bundle/deb/*.deb
RPM 패키지 (.rpm)
Red Hat/Fedora 기반 배포판의 경우 추가 도구를 설치해야 합니다:
sudo apt install -y rpm
pnpm build:tauri
.rpm 패키지는 app/src-tauri/target/release/bundle/rpm/에 있습니다.
문제 해결
일반적인 문제
- libwebkit2gtk-4.1 누락
webkit 라이브러리 누락에 대한 오류가 발생하면:# 이전 webkit 버전 시도 sudo apt install -y libwebkit2gtk-4.0-dev - npm/pnpm 권한 거부
# npm 전역 디렉토리 권한 수정 mkdir -p ~/.npm-global npm config set prefix '~/.npm-global' echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc source ~/.bashrc - 네이티브 종속성으로 인한 빌드 실패
# 빌드 캐시 정리 cargo clean pnpm clean # 모든 것을 다시 빌드 pnpm install pnpm build:tauri - AppImage 실행 불가
# AppImage를 실행 가능하게 만들기 chmod +x app/src-tauri/target/release/bundle/appimage/*.AppImage - GLIBC 버전 누락
GLIBC 버전에 대한 오류가 표시되면 Ubuntu 24.04 LTS 이상인지 확인하세요:ldd --version
그래픽 드라이버 문제
최적의 성능을 위해 적절한 그래픽 드라이버가 설치되어 있는지 확인하세요:
# NVIDIA용
sudo ubuntu-drivers autoinstall
# AMD용
sudo apt install -y mesa-vulkan-drivers
# Intel용
sudo apt install -y intel-media-va-driver
도움 받기
여기서 다루지 않은 문제가 발생하면:
- 알려진 문제에 대해 Drop Compress Image 리포지토리 확인
- Linux 관련 가이드는 Tauri v2 문서 참고
- 기존 GitHub 이슈 검색하거나 새 이슈 생성
다음 단계
Drop Compress Image가 성공적으로 빌드되면:
- 테스트 실행:
pnpm test를 실행하여 모든 것이 올바르게 작동하는지 확인 - 개발: 핫 리로딩이 포함된 개발에는
pnpm dev:tauri사용 - 사용자 정의: 코드베이스를 탐색하고 수정 사항 적용
- 배포: 배포 가능한 패키지를 만들려면
pnpm build:tauri사용
이제 Linux에서 Drop Compress Image를 개발하고 빌드할 준비가 되었습니다!