ibus hangul 어떻게 컴파일하나요?

세벌의 이미지

https://github.com/libhangul/ibus-hangul 내려받았는데, 컴파일 하는 방법을 모르겠네요.

./autogen.sh
실행했더니...

*** WARNING: I am going to run 'configure' with no arguments.
*** If you wish to pass any to it, please specify them on the
*** './autogen.sh' command line.
 
autoreconf: Entering directory `.'
autoreconf: running: autopoint --force
autoreconf: running: aclocal --force -I m4
autoreconf: configure.ac: tracing
autoreconf: running: libtoolize --copy --force
autoreconf: running: /usr/bin/autoconf --force
autoreconf: running: /usr/bin/autoheader --force
autoreconf: running: automake --add-missing --copy --force-missing
configure.ac:34: installing './compile'
configure.ac:33: installing './missing'
src/Makefile.am: installing './depcomp'
tests/Makefile.am:45: warning: addsuffix .test, $(test_execs: non-POSIX variable name
tests/Makefile.am:45: (probably a GNU make extension)
autoreconf: Leaving directory `.'
configure: error: Package requirements (
    ibus-1.0 >= 1.5.4
) were not met:
 
No package 'ibus-1.0' found
 
Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.
 
Alternatively, you may set the environment variables IBUS_CFLAGS
and IBUS_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
이런 에러가 나네요...
익명 사용자의 이미지

"아래 글 참고해서 다시 질문 하시면 여러 전문가가 도와드릴 거 같네요.
http://oops.org/?t=lecture&sb=beginner&n=2"

핵심은 마지막 몇 줄에 있습니다. ibus 개발 패키지는 설치하셨나요?

익명 사용자의 이미지

libibus-1.0-dev 패키지 설치하세요

세벌의 이미지

고맙습니다. 그런데 libibus-1.0-dev 설치 후 시도했더니...
아래 에러 메시지 나오네요.

*** WARNING: I am going to run 'configure' with no arguments.
*** If you wish to pass any to it, please specify them on the
*** './autogen.sh' command line.
 
autoreconf: Entering directory `.'
autoreconf: running: autopoint --force
autoreconf: running: aclocal --force -I m4
autoreconf: configure.ac: tracing
autoreconf: running: libtoolize --copy --force
autoreconf: running: /usr/bin/autoconf --force
autoreconf: running: /usr/bin/autoheader --force
autoreconf: running: automake --add-missing --copy --force-missing
configure.ac:34: installing './compile'
configure.ac:33: installing './missing'
src/Makefile.am: installing './depcomp'
tests/Makefile.am:45: warning: addsuffix .test, $(test_execs: non-POSIX variable name
tests/Makefile.am:45: (probably a GNU make extension)
autoreconf: Leaving directory `.'
configure: error: Package requirements (
    libhangul >= 0.1.0
) were not met:
 
No package 'libhangul' found
 
Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.
 
Alternatively, you may set the environment variables HANGUL_CFLAGS
and HANGUL_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.

libhangul 설치하면 되나 하고 시도했는데 다른 에러 나네요.

root@sebul:~# apt-get install libhangul
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다       
상태 정보를 읽는 중입니다... 완료
E: libhangul 패키지를 찾을 수 없습니다
root@sebul:~# 

이번엔 어떻게 하면 되나요?
peecky의 이미지

apt-cache search libhangul 명령어로 설치할 패키지 이름을 검색해보세요.

세벌의 이미지

덕분에 libhangul-dev 설치했습니다. 고맙습니다.
그 다음에 ./autogen.sh 했더니 아래와 같이 경고가 좀 나오는데, 이건 무시해도 되나요?

configure.ac:30: installing './compile'
configure.ac:6: installing './missing'
data/keyboards/Makefile.am:34: warning: '%'-style pattern rules are a GNU make extension
data/keyboards/Makefile.am:42: warning: '%'-style pattern rules are a GNU make extension
hangul/Makefile.am: installing './depcomp'
익명 사용자의 이미지

GNU make 사용하시면 무시하시면 됩니다.

세벌의 이미지

./configure 할 때 아래와 같은 에러가 납니다.

configure: error: Package requirements (expat) were not met:
 
No package 'expat' found
 
Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.
 
Alternatively, you may set the environment variables EXPAT_CFLAGS
and EXPAT_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
그런데 expat 설치하려고 하면 이미 있다고하네요.
root@sebul:~# apt-get install expat
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다       
상태 정보를 읽는 중입니다... 완료
expat is already the newest version (2.2.6-2+deb10u1).
0개 업그레이드, 0개 새로 설치, 0개 제거 및 0개 업그레이드 안 함.
익명 사용자의 이미지

여기서 요구하는 https://github.com/libhangul/ibus-hangul/blob/master/configure.ac 걸 보면 expat 는 없네요.

https://packages.debian.org/search?suite=bullseye&searchon=names&keywords=expat%20dev

이렇게 일일이 검색해야 되요.
https://packages.debian.org/bullseye/amd64/libexpat1-dev/filelist 보면
/usr/lib/x86_64-linux-gnu/pkgconfig/expat.pc 이 파일이 있습니다.
그게 설치되어 있어야 하고 그런 파일들은 packname-dev 패키지에 있습니다.
저걸 일일이 검색해서 확인하셔야 되는 겁니다.
PKG_CHECK_MODULES 이
pkg-config --cflags expat
pkg-config --libs expat
를 실행시키는데, expat.pc 파일이 없어서 에러나는 겁니다.
아마 debian 계열의 배포판에서 시도하고 계실텐데,
마찬가지로 아치 계열에서 시도하신다면,
https://www.archlinux.org/packages/ 에서 일일이 검색해서
https://www.archlinux.org/packages/core/x86_64/expat/
usr/lib/pkgconfig/expat.pc 이 있는걸 확인해야 하는 거죠.

익명 사용자의 이미지

그리고 데비안에서 ibus-hangul 을 컴파일하여 사용/테스트하시길 원한다면
make, make install 방식으로 하지 마시길 바래요.
ibus 랑 뭔가가 매치되어야 실행할 때 에러 안 날 거 같네요.
아, 그리고 glib-compile-schemas 이런 명령도 해줘야할 것을 짐작되고,
데비안/우분투 계열은 libdir 설치 디렉토리를 이상하게 바꿔 놓아서 아마 골탕먹을 겁니다.
dpkg-architecture -qDEB_TARGET_MULTIARCH 에 대한 지식이 없으시면,

override_dh_auto_configure:
	./configure --prefix=/usr \
	            --libdir=\$${prefix}/lib/`dpkg-architecture -qDEB_TARGET_MULTIARCH`

위에 이런거 할 줄 모르시면,

아래 ibus-hangul_1.5.1-1.debian.tar.xz 을 압축 풀어서 데비안 방식으로 컴파일/인스톨하는 게 좋습니다.

https://packages.debian.org/buster/ibus-hangul 보시면
http://deb.debian.org/debian/pool/main/i/ibus-hangul/ibus-hangul_1.5.1-1.debian.tar.xz
이걸 이용해서 deb 파일을 만들어서 설치하시는게 좋죠.

익명 사용자의 이미지

그리고,

override_dh_auto_configure:
	./configure --prefix=/usr \
	            --libdir=\$${prefix}/lib/`dpkg-architecture -qDEB_TARGET_MULTIARCH`

이 코드는 제가 제작한 사유 소프트웨어에 있는 부분입니다. 다른 사람이 저 코드를 사용하는 건 괜찮은데, 자기네들이 작업한 걸 저더러 가로챘다고 주장하는 일은 재발해서는 안 될 것입니다.
괜히 올렸네. 자유/오픈소스 이쪽 세계 사람들 도와주면 나중에 뒤통수 치는데.
익명 사용자의 이미지

http://deb.debian.org/debian/pool/main/i/ibus-hangul/ibus-hangul_1.5.3-2.debian.tar.xz
이거 압출 풀면 debian 디렉토리 나오는데,
cp -r debian ibus-hangul
명령 후,
sudo apt install devscripts build-essential debhelper
cd ibus-hangul
dpkg-checkbuilddeps
후, 없다는 패키지 설치해주시고,
configure: error: Package requirements (expat) were not met:

No package 'expat' found
이렇게 에러 나오면 expat.pc 파일이 없어서 그렇습니다.
*.pc 파일은 pkg-config 가 사용하는 파일이고 package-name-dev 패키지에 있습니다.
위에 말씀대로 packages.debian.org 에서 검색하셔서 해당 패키지 설치 후에,
debuild -b -uc -us 명령해주시면 됩니다.

http://deb.debian.org/debian/pool/main/i/ibus-hangul/ibus-hangul_1.5.3-2.debian.tar.xz
압출 풀면,

$ find debian
debian
debian/apparmor
debian/apparmor/usr.libexec.ibus-engine-hangul
debian/apparmor/usr.libexec.ibus-setup-hangul
debian/changelog
debian/control
debian/copyright
debian/gbp.conf
debian/ibus-hangul.bug-script
debian/ibus-hangul.install
debian/ibus-hangul.maintscript
debian/patches
debian/patches/hide-auto-reordering.patch
debian/patches/series
debian/patches/specify-setup-in-ibus-component.patch
debian/rules
debian/salsa-ci.yml
debian/source
debian/source/format
debian/source/options
debian/watch

이런 파일들이 있고, debian/patches/ 에 패치 파일을이 있습니다.
데비안 방식으로 컴파일하면 위 패치들이 적용됩니다. 패치 적용을 원치 않으면 debian/patches/ 을 삭제하시면 됩니다.
debian/patches/series 파일에는 적용될 패치가 순서대로 들어 있습니다.
만약 세벌님이 패치를 만드시면, debian/patches/ 에 name.patch 파일을 넣고,
series 에 그 파일 이름을 넣으시면 됩니다.
패치 만드는 거는,
소스코드 수정 후에 git diff > name.patch 하면 diff 형식의 패치 파일이 만들어집니다.
주의할 점은, debian/* 파일들을 git 에 넣은후(add) diff 하면 debian/* 파일들도 name.patch 되어서 패치 적용에 문제가 발생하겠죠.
처음할 때는 일주일씩 걸리기도 하는데, 나중에 반복되다보면 노하우가 쌓여서 개발외 무관한 소스코드 관리 부분은 분 단위로 끝나게 됩니다.
건투를 빕니다~~~~~~~~~~~~~~~~~~
그리고 아래 debian/rules (makefile) 코드는 제가 작성한 코드이고, 나중에 이러쿵 저러쿵 문제되는게 싫어서 퍼블릭 도메인 선언합니다. 아래 debian/rules 코드는 저작권이 없습니다.
ibus-hangul 에 적용되는 코드는 아니며, autotools, automake 를 사용하지 않는 경우, dpkg-architecture -qDEB_TARGET_MULTIARCH 을 어떻게 써먹는지 교육용으로 보시라고 올립니다.
아래 코드(debian/rules)는 제가 저작권을 포기하여 저작권이 없습니다.
#!/usr/bin/make -f
# -*- makefile -*-
 
%:
	dh $@
 
override_dh_auto_clean:
	./configure --prefix=/usr \
	            --libdir=\$${prefix}/lib/`dpkg-architecture -qDEB_TARGET_MULTIARCH`
	dh_auto_clean
 
override_dh_auto_configure:
	./configure --prefix=/usr \
	            --libdir=\$${prefix}/lib/`dpkg-architecture -qDEB_TARGET_MULTIARCH`
 
override_dh_auto_build:
	make -j 4
세벌의 이미지

고맙습니다.

익명 사용자의 이미지

libhangul-dev 설치하세얘

익명 사용자의 이미지

https://lists.debian.org/debian-l10n-korean/2020/03/msg00010.html

결국 자진 철회하셨지만 데비안 컨설턴트를 해 보겠다고 목록에까지 추가하는 소동이 있었는데 이 정도도 모르실 줄은 몰랐군요 :(

세벌의 이미지

여러 분의 익명사용자께서 도움 주시니 헷갈리네요.
어느 분께 고맙다고 해야할지...

익명 사용자의 이미지

세벌님같은 컨설턴트&코디네이터&커뮤니티관리자가 아니라서 소심하게 익명으로만 남기고 갑니다.