Skip to content

Build Instructions ko

Kevin Kim edited this page Aug 16, 2025 · 1 revision

Build Instructions

Nimf는 Docker 기반 통합 빌드 시스템을 제공하여 모든 Linux 배포판에서 일관된 빌드 환경을 제공합니다.

🚀 빠른 빌드

Docker 빌드 (권장)

# 특정 배포판용 빌드
./scripts/build-docker.sh ubuntu.2404
./scripts/build-docker.sh debian.bookworm
./scripts/build-docker.sh fedora.latest
./scripts/build-docker.sh arch

# ARM64 빌드
./scripts/build-docker.sh ubuntu.2404.arm64
./scripts/build-docker.sh debian.bookworm.arm64
./scripts/build-docker.sh fedora.latest.arm64

# 모든 환경에서 테스트 빌드
./scripts/build-docker.sh --all

# 추가 옵션들
./scripts/build-docker.sh ubuntu.2404 --interactive  # 빌드 후 셸 실행
./scripts/build-docker.sh debian.trixie --clean      # 기존 이미지 삭제 후 빌드

네이티브 빌드

# 소스에서 직접 빌드
git clone --recurse-submodules https://github.com/hamonikr/nimf
cd nimf
./autogen.sh
./configure --prefix=/usr --enable-gtk4 --enable-bundled-libhangul
make -j$(nproc)
sudo make install

📦 빌드 결과물

✅ 모듈형 패키지 구조 (v1.3.9+)

코어 패키지 (nimf)

  • 입력 엔진: 한국어(내장 libhangul), 일본어(anthy), 중국어(rime)
  • 클라이언트 모듈: GTK2/3/4, Qt5/6 완전 지원
  • 서비스 모듈: ayatana-appindicator, 향상된 Wayland, XIM
  • 개발 파일: 헤더, 라이브러리, pkg-config 파일

다국어 확장 (nimf-i18n)

  • 100+ 언어: m17n 기반 다국어 입력 엔진
  • 선택적 설치: 필요한 경우에만 설치

📁 출력 위치

dist/
├── ubuntu.2404/           # Ubuntu 24.04 패키지
├── debian.bookworm/       # Debian Bookworm 패키지
├── debian.trixie/         # Debian Trixie 패키지
├── fedora.latest/         # Fedora 패키지
├── opensuse/              # openSUSE 패키지
└── arch/                  # Arch Linux 패키지

🎯 지원 플랫폼

배포판 아키텍처 패키지 형식 상태 빌드 방법
Ubuntu 22.04+ x86_64 .deb ✅ 안정 Docker
Ubuntu 24.04+ x86_64, ARM64 .deb ✅ 안정 Docker
Debian Bookworm x86_64, ARM64 .deb ✅ 안정 Docker
Debian Trixie x86_64, ARM64 .deb ✅ 안정 Docker
Debian Sid x86_64 .deb ✅ 안정 Docker
Fedora Latest x86_64, ARM64 .rpm ✅ 안정 Docker
openSUSE Leap 15.6 x86_64, ARM64 .rpm ✅ 안정 Docker
Arch Linux x86_64 .pkg.tar.zst ✅ 안정 Docker

⚙️ 고급 옵션

Docker 빌드 옵션

# 빌드만 수행 (패키지 생성 안함)
./scripts/build-docker.sh ubuntu.2404 --build-only

# 패키지만 생성 (빌드 스킵)
./scripts/build-docker.sh debian.bookworm --package-only

# 빌드 후 대화형 셸 실행
./scripts/build-docker.sh fedora.latest --interactive

# 기존 이미지 삭제 후 새로 빌드
./scripts/build-docker.sh arch --clean

# 모든 환경에서 테스트
./scripts/build-docker.sh --all

# 도움말 보기
./scripts/build-docker.sh --help

🔧 배포판별 수동 빌드

Ubuntu/Debian/LinuxMint

의존성 설치

sudo apt install build-essential devscripts debhelper autoconf automake \
    libglib2.0-dev intltool gtk-doc-tools libgtk-3-dev libgtk2.0-dev \
    qtbase5-dev qt6-base-dev libayatana-appindicator3-dev librsvg2-bin \
    libhangul-dev anthy libxkbcommon-dev libxklavier-dev libm17n-dev \
    m17n-db librime-dev

빌드 및 설치

git clone https://github.com/hamonikr/nimf.git
cd nimf
debuild -b -uc -us

# 패키지 설치 (v1.4.0 모듈형 구조)
cd ..
sudo dpkg -i nimf_*.deb

# 다국어 지원 추가 (선택사항)
sudo dpkg -i nimf-i18n_*.deb

# 입력기 설정
im-config -n nimf

Ubuntu 22.04+ 주의사항

# Ubuntu 22.04에서는 반드시 모든 패키지를 최신으로 업데이트 후 빌드
sudo apt update && sudo apt upgrade -y

# qtbase5-private-dev 패키지 충돌 방지

HamoniKR

최신 버전 (4.0+)

# 특정 브랜치 사용 (Ubuntu 21.10 이전 버전)
git clone -b before-ubuntu21.10 https://github.com/hamonikr/nimf.git

# 의존성 자동 설치
sudo mk-build-deps --install debian/control

# 또는 수동 설치
sudo apt install -y libglib2.0-dev intltool libgtk-3-dev libgtk2.0-dev \
    qtbase5-dev qtbase5-private-dev libappindicator3-dev librsvg2-bin \
    libhangul-dev libanthy-dev anthy librime-dev libxkbcommon-dev \
    libwayland-dev wayland-protocols libxklavier-dev libm17n-dev m17n-db \
    gtk-doc-tools devscripts build-essential debhelper

cd nimf
debuild -b -uc -us

Fedora/CentOS/RedHat

의존성 설치

sudo dnf install anthy-devel gcc-c++ glib2-devel gtk-doc gtk2-devel \
    gtk3-devel intltool libappindicator-gtk3-devel libhangul-devel \
    librime-devel librsvg2-tools libtool libxkbcommon-devel \
    libxklavier-devel m17n-db-devel m17n-lib-devel qt5-qtbase-devel \
    qt5-qtbase-private-devel qt6-qtbase-devel qt6-qtbase-private-devel \
    wayland-devel wayland-protocols-devel rpm-build

빌드

git clone https://github.com/hamonikr/nimf.git
cd nimf
# RPM 빌드 스크립트 사용 또는 Docker 빌드 권장
./build.sh --docker fedora

Arch Linux/Manjaro

의존성 설치

sudo pacman -S base-devel git glib2 gtk3 gtk2 qt5-base qt6-base \
    libappindicator-gtk3 librsvg noto-fonts-cjk libhangul anthy \
    librime libxkbcommon wayland libxklavier m17n-lib m17n-db gtk-doc

Manjaro 빌드 (x86_64)

git clone https://github.com/hamonikr/nimf.git
cd nimf

# makepkg.conf 수정 (오류 방지)
sudo sed -i 's/CFLAGS=.*/CFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -fno-plt -Wno-error=deprecated-declarations"/' /etc/makepkg.conf

makepkg -s
sudo pacman -U nimf-*.pkg.tar.zst

# 환경 변수 설정
echo 'export GTK_IM_MODULE=nimf
export QT4_IM_MODULE="nimf"
export QT_IM_MODULE=nimf
export XMODIFIERS="@im=nimf"
nimf' >> ~/.xprofile

openSUSE

의존성 설치

sudo zypper install gcc-c++ glib2-devel gtk2-devel gtk3-devel \
    libqt5-qtbase-devel libappindicator3-devel librsvg-devel \
    libhangul-devel anthy-devel librime-devel libxkbcommon-devel \
    wayland-devel libxklavier-devel m17n-lib-devel gtk-doc rpm-build

🖥️ ARM 플랫폼 빌드

라즈베리파이 4 (ARM64)

APT 저장소 사용 (권장)

# HamoniKR 저장소 추가
wget -qO- https://update.hamonikr.org/add-update-repo.apt | sudo -E bash -

# 패키지 설치
sudo apt install nimf nimf-libhangul

# 전체 언어 지원
sudo apt install libnimf1 nimf nimf-anthy nimf-dev nimf-libhangul nimf-m17n nimf-rime

im-config -n nimf

소스에서 빌드 (Armbian)

# 추가 의존성 설치
sudo apt install fakeroot libgtk-3-bin

# 빌드 시간: 약 40분 이상 소요
git clone https://github.com/hamonikr/nimf.git
cd nimf
debuild -b -uc -us

# 설치
cd ..
sudo dpkg -i libnimf1_*.deb nimf_*.deb nimf-libhangul_*.deb
im-config -n nimf
reboot

Manjaro ARM (라즈베리파이 4)

# 특별한 ARM 브랜치 사용
git clone -b manjaro-arm --single-branch https://github.com/hamonikr/nimf.git

# 의존성 설치
sudo pacman -S meson ninja qt5-tools

# 빌드
cd nimf/manjaro-arm
makepkg -s

# 설치
sudo pacman -U nimf-*.pkg.tar.xz

# 환경 설정
echo 'export GTK_IM_MODULE=nimf
export QT4_IM_MODULE="nimf"
export QT_IM_MODULE=nimf
export XMODIFIERS="@im=nimf"
nimf' >> ~/.xprofile

sudo reboot

🔧 수동 빌드 (고급 사용자)

소스에서 빌드

git clone --recurse-submodules https://github.com/hamonikr/nimf.git
cd nimf
./autogen.sh
./configure --prefix=/usr --enable-gtk-doc --enable-bundled-libhangul
make -j$(nproc)
sudo make install

Configure 옵션 (v1.4.0)

# 기본 옵션
--prefix=/usr                    # 설치 경로
--disable-hardening              # 하드닝 비활성화

# 입력 엔진 토글
--disable-nimf-libhangul         # 한국어 입력 비활성화
--disable-nimf-anthy             # 일본어 입력 비활성화
--disable-nimf-m17n              # 다국어 입력 비활성화
--disable-nimf-rime              # 중국어 입력 비활성화

# UI 툴킷 지원
--enable-gtk4                    # GTK4 IM 모듈 빌드
--enable-qt6                     # Qt6 지원 활성화
--with-gtk=3|4                   # nimf-settings의 GTK 버전 선택

# 플랫폼 지원
--disable-x11                    # Wayland 전용 빌드 (X11 비활성화)

# 시스템 통합
--with-im-config-data            # im-config 데이터 설치
--with-imsettings-data           # imsettings 데이터 설치

설정 및 활성화

im-config 사용 (Debian/Ubuntu)

im-config -n nimf

im-chooser 사용 (Fedora/CentOS)

imsettings-switch nimf

수동 환경 변수 설정

# ~/.bashrc 또는 ~/.zshrc에 추가
export GTK_IM_MODULE=nimf
export QT4_IM_MODULE=nimf
export QT_IM_MODULE=nimf
export XMODIFIERS=@im=nimf

# 시스템 전역 설정 (/etc/environment)
sudo tee -a /etc/environment << EOF
GTK_IM_MODULE=nimf
QT4_IM_MODULE=nimf
QT_IM_MODULE=nimf
XMODIFIERS=@im=nimf
EOF

🐛 빌드 문제 해결

일반적인 문제들

  1. gettext 버전 오류

    AM_GNU_GETTEXT_VERSION 오류 발생 시
    

    → 자동으로 해결됨 (autogen.sh에서 자동 수정)

  2. Qt6 관련 오류

    Qt6 라이브러리를 찾을 수 없음
    

    --disable-qt6 옵션 사용 또는 Qt6 패키지 설치

  3. Docker 권한 오류

    sudo usermod -aG docker $USER
    newgrp docker
  4. Ubuntu 22.04 패키지 충돌

    # 모든 패키지를 최신으로 업데이트 후 빌드
    sudo apt update && sudo apt upgrade -y
  5. Manjaro 컴파일 오류

    # makepkg.conf에서 deprecated-declarations 경고 무시
    sudo sed -i 's/CFLAGS=.*/CFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -fno-plt -Wno-error=deprecated-declarations"/' /etc/makepkg.conf

디버그 빌드

# 상세 로그 출력
./build.sh --verbose

# Docker 빌드 로그 확인
docker logs nimf-build-ubuntu

# 수동 디버그 빌드
G_MESSAGES_DEBUG=nimf ./configure --enable-debug
make -j$(nproc)

의존성 문제 해결

# Ubuntu/Debian
sudo apt update && sudo apt install -f

# Fedora
sudo dnf check-update && sudo dnf install --best --allowerasing

# Arch Linux
sudo pacman -Syu

🗑️ 제거

패키지 제거

# Ubuntu/Debian
sudo apt purge '*nimf*'
sudo apt autoremove

# Fedora
sudo dnf remove nimf

# Arch Linux
sudo pacman -Rns nimf

소스 빌드 제거

sudo make uninstall  # 소스 디렉토리에서

설정 파일 제거

rm -rf ~/.config/nimf
sudo rm -rf /etc/nimf

📚 관련 문서

Clone this wiki locally