데비안 기본 입력기로 nimf 들어가게?

세벌의 이미지

https://gitlab.com/nimf-i18n/nimf
괜찮아 보이기는 한데...
ibus 가 기본이라 귀차니즘이 작용...

리눅스에 기본 입력기로 nimf 가 들어가려면 어떻게 해야 하나요?

배포본 마다 다르다면 한 예를 들어 데비안 리눅스에 nimf 가 기본 입력기로 포함되게 하려면 어떤 절차를 거쳐야 하나요?

alstjr7375의 이미지

데비안은 보수적이라 들어가는게 쉽지 않을듯요.
하모니카 기본 입력기 또는 apt 저장소에 올라가는게 가장 현실적인 목표가 아닐까 싶습니다.

Hodong Kim@Google의 이미지

2016년 4월, 제가 데비안에 버그리포트 낸 적이 있습니다.
nimf 를 홍보할 목적으로 한 것은 아니고, nimf 가 널리 사용되도록할 목적이 아니였습니다.
다만, 당시 evince 관련하여
https://bugs.launchpad.net/ubuntu/+source/evince/+bug/1569863
이런 문제가 있었습니다. (지금은 확인해보지 않아서 어떤 상태인지 모릅니다.)
debian 저장소에 nimf 를 넣으면 apparmor 와 연관된 문제에 대응하는데에 도움이 될 것이라 판단하여 제가 데비안측에 nimf 를 패키지해달라고 요청한 적이 있습니다.

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=821790

그 후, 제가 2018년 5월, https://github.com/cogniti/nimf 를 아카이브, 읽기 전용(read-only) 처리를 한 적이 있습니다. 그래서 데비안측에서 유지 보수가 안 되는 소프트웨어를 패키지할 가치가 없다고 판단하여 버그 리포트를 닫았습니다. 위에 링크 읽어보시면 나오는 얘기입니다.
(괜히 오해생길까봐 덧붙이는데 nimf 서비스 유료화 이런 거랑은 관련이 없습니다. 오픈소스 논쟁 이런 거 하고 싶지 않습니다. poedit 는 데비안 저장소에 있고, https://packages.debian.org/buster/poedit 돈 내고 살 수도 있습니다. https://poedit.net/pro )

사용자분들 문의/요청 때문에 제가 nimf 외 타 프로젝트에 관여를 하기도 했지만, 저는 nimf 외에 데비안 공식 저장소, 아치리눅스 위키 문서, 하모니카 프로젝트, 텔레그램 프로젝트, 끝글자 버그가 있는 각종 응용 어플 프로젝트 등에는 관여하고 싶지 않습니다. nimf 개발자가 nimf 외 타 프로젝트에 관여하지 않는게 바람직하다고 생각합니다. dasom 에서 nimf 로 이름을 바꾼 이후 nimf 홍보를 한 적도 없는데, 사용자분들 문의/요청이 많아서 https://nimf-i18n.gitlab.io/ 에 여러 문서를 게시하고 있고, 여러 패키지들을 제공하고 있습니다. nimf 홈페이지를 만든 목적이 홍보 목적이 아니라는 거죠.

데비안 저장소에 nimf 가 들어가길 원하신다면,
https://www.debian.org/devel/wnpp/ 여기 문서를 참고하셔서
데비안측에 버그리포트를 제출해야 합니다.
다른 프로젝트들을 보면, 개발자가 아니라, 보통 사용자분들이 데비안측에 요청을 합니다.

텔레그램도 보면, 입력기 개발자가 텔레그램측에 요청하는게 아니라 사용자분들이 텔레그램 측에 요청을 해서 fcitx, hime, nimf 가 텔레그램에 포함되게 된 것입니다. 그 과정에서 저에게 도움을 요청하면 제가 거기에 응해드리는 것이죠.

홈페이지에 도움 주시는 분도 계시고, telegram 에 신경써주시는 분도 계시고, 패키지에 도움 주시는 분도 계십니다. 이런게 오픈소스죠. 요새 오픈소스에 재미를 느끼고 있습니다.
우분투 PPA 를 이용하여 데비안에 호환되는 패키지를 만들 수 있는지 좀 알아보겠습니다.
감사합니다.

Hodong Kim@Google의 이미지

이제, 우분투 PPA 를 사용하여 데비안 Buster 에서도 nimf 를 설치하실 수 있습니다.
거짓말 같지만 꿈 같은 일들이 일어납니다.

https://nimf-i18n.gitlab.io/ko/installation/

우분투, 쿠분투, 데비안, 아치 리눅스, 만자로 리눅스, 페도라, CentOS, 오픈수세 등 현존하는 거의 모든 리눅스 배포판에서 nimf 를 사용하실 수 있습니다.

감사합니다.

thinxs의 이미지

https://wiki.debian.org/DontBreakDebian#Don.27t_make_a_FrankenDebian

Quote:
Repositories that can create a FrankenDebian if used with Debian Stable:

* Debian testing release (currently buster)
* Debian unstable release (also known as sid)
* Ubuntu, Mint or other derivative repositories are not compatible with Debian!
* Ubuntu PPAs

설사 패키지가 설치 및 사용이 가능하다고 해도 데비안에서는 권장하지 않는 방법임을 다시 한 번 알려 드립니다.

Hodong Kim@Google의 이미지

확인해봤는데 별 문제 없습니다. 우분투 PPA 에 있는 nimf 를 데비안 Buster 에 설치한다고 하여, 우분투 공식 저장소에 있는 패키지가 데비안에 설치되지 않습니다.
Nimf PPA 에서 제공하는 바이너리는 다음과 같습니다. nimf 가 필요로 하는 라이브러리들은 데비안 공식 저장소로부터 설치가 됩니다.

    libnimf1
    nimf
    nimf-anthy
    nimf-dev
    nimf-libhangul
    nimf-m17n
    nimf-rime
    qtbase-abi-5-9-5-dummy

qtbase-abi-5-9-5-dummy 는 더미 패키지입니다.
데비안 Buster 에 qtbase-abi-5-11-3 가 있고,
우분투 bionic 에 qtbase-abi-5-9-5 가 있습니다.
의존성을 맞추기 위해 추가한 빈 패키지입니다. 내용물이 없습니다.

Package: qtbase-abi-5-9-5-dummy
Architecture: any
Depends: qtbase-abi-5-11-3
Provides: qtbase-abi-5-9-5
Description: Dummy package for Debian Buster
 This package provides a dummy qtbase-abi-5-9-5 for Debian Buster.

nimf 에서 사용하는 라이브러리가 많이 있는데, nimf 에서 사용하는 라이브러리들의 헤더 파일들을 살펴보았는데 바이너리 호환됩니다.

appindicator, xkbcommon, xklavier, libhangul, anthy: 업데이트가 거의 없거나 별로 없습니다. 바이너리 호환됩니다.

m17n: 데비안에 1.8 있고, 우분투 bionic 에 1.7 들어 있습니다. 따라서 1.8 에서 추가된 언어(hi, hu, kn, ml, mr, ne)를 사용하지 못합니다. hi, hu, kn, ml, mr, ne 언어를 사용하시려면 m17n 1.8 버전이 들어 있는 데비안 Buster 에서 컴파일 하셔야 됩니다. 바이너리 호환됩니다. m17n 의 헤더 파일을 확인했습니다. 동일합니다.

rime: rime_api.h 를 보면 nimf 에서 사용하는 함수 및 구조체가 바이너리 호환됩니다.

glib, gtk, qt4: 바이너리 호환됩니다.

qt5: QTextFormat, QInputMethodEvent, qplatforminputcontext.h, qplatforminputcontextplugin_p.h, QApplication, QWidget 헤더 파일을 확인해봤는데, nimf 에서 사용하는 class 및 method 들은 5.9 버전과 5.11 버전이 바이너리 호환됩니다. diff 로 직접 확인했습니다.
a 가 qtbase-opensource-src_5.9.5+dfsg.orig.tar.xz,
b 가 qtbase-opensource-src_5.11.3+dfsg1.orig.tar.xz 입니다.

hodong@debian:~/Downloads$ find | grep QTextFormat
./a/include/QtGui/QTextFormat
./b/include/QtGui/QTextFormat
hodong@debian:~/Downloads$ diff ./a/include/QtGui/QTextFormat ./b/include/QtGui/QTextFormat
hodong@debian:~/Downloads$ find | grep QInputMethodEvent
./a/include/QtGui/QInputMethodEvent
./b/include/QtGui/QInputMethodEvent
hodong@debian:~/Downloads$ diff ./a/include/QtGui/QInputMethodEvent ./b/include/QtGui/QInputMethodEvent
hodong@debian:~/Downloads$ find | grep qplatforminputcontext.h
./a/src/gui/kernel/qplatforminputcontext.h
./a/include/QtGui/5.9.5/QtGui/qpa/qplatforminputcontext.h
./b/src/gui/kernel/qplatforminputcontext.h
./b/include/QtGui/5.11.3/QtGui/qpa/qplatforminputcontext.h
hodong@debian:~/Downloads$ diff ./a/src/gui/kernel/qplatforminputcontext.h ./b/src/gui/kernel/qplatforminputcontext.h
hodong@debian:~/Downloads$ find | grep qplatforminputcontextplugin_p.h
./a/src/gui/kernel/qplatforminputcontextplugin_p.h
./a/include/QtGui/5.9.5/QtGui/qpa/qplatforminputcontextplugin_p.h
./b/src/gui/kernel/qplatforminputcontextplugin_p.h
./b/include/QtGui/5.11.3/QtGui/qpa/qplatforminputcontextplugin_p.h
hodong@debian:~/Downloads$ diff ./a/src/gui/kernel/qplatforminputcontextplugin_p.h ./b/src/gui/kernel/qplatforminputcontextplugin_p.h
69c69
<     explicit QPlatformInputContextPlugin(QObject *parent = 0);
---
>     explicit QPlatformInputContextPlugin(QObject *parent = nullptr);
hodong@debian:~/Downloads$ find | grep QApplication
./a/include/QtGui/QApplicationStateChangeEvent
./a/include/QtWidgets/QApplication
./b/include/QtGui/QApplicationStateChangeEvent
./b/include/QtWidgets/QApplication
hodong@debian:~/Downloads$ diff ./a/include/QtWidgets/QApplication ./b/include/QtWidgets/QApplication
hodong@debian:~/Downloads$ find | grep QWidget
./a/include/QtGui/QWidgetMapper
./a/include/QtGui/QWidgetSet
./a/include/QtGui/QWidgetList
./a/include/QtWidgets/QWidgetAction
./a/include/QtWidgets/QWidget
./a/include/QtWidgets/QWidgetItem
./a/include/QtWidgets/QWidgetData
./a/include/QtWidgets/QWidgetItemV2
./b/include/QtGui/QWidgetMapper
./b/include/QtGui/QWidgetSet
./b/include/QtGui/QWidgetList
./b/include/QtWidgets/QWidgetAction
./b/include/QtWidgets/QWidget
./b/include/QtWidgets/QWidgetItem
./b/include/QtWidgets/QWidgetData
./b/include/QtWidgets/QWidgetItemV2
hodong@debian:~/Downloads$ diff ./a/include/QtWidgets/QWidget ./b/include/QtWidgets/QWidget

wayland: 는 확인할 필요가 없어서 하지 않았습니다. 바이너리가 호환되지 않으면 libnimf-wayland.so 모듈이 로딩되지 않습니다. 어차피, gtk, qt 는 자체 wayland backend 를 사용하기 때문에 현 시점에서는 libnimf-wayland.so 모듈이 로딩되지 않아도 nimf 사용에 아무 지장이 없습니다.

바이너리 호환성 확인을 해본거니까 편안한 마음으로 사용하시면 되겠습니다.
감사합니다.

onion의 이미지

부디 마음 상하지 않는 범위내에서 즐거운 작업이 되시길 기원합니다.

-----새벽녘의 흡혈양파-----

세벌의 이미지

비가 엄청나게 옵니다.

늘 건강. 몸과 마음의 건강.
건강하지 않으면 프로그램이고 뭐고 제대로 되는 일이 없을 테니까요.

Hodong Kim@Google의 이미지

감사합니다. 예전에는 시간에 쫓기면서 작업했는데 요새는 느긋하게 ㅎㅎ 말 그대로 틈틈이 xlib --> xcb 작업하고 있습니다. nimf 만드냐고 시간없어서 못했던 중국어 공부도 열심히 하고 있고.. 잠도 6시간은 자고 사는게 즐겁네요. ㅎㅎ
고마워요~~