インストール: Fcitx | Linuxでの代表的なIM
LinuxなどのUNIX系OSで採用されているIM (Input Method) のFcitxをソースコードからインストールする。
インストール手順
項目 | 説明 |
---|---|
配布元 | Fcitx – Fcitx |
リポジトリー | |
手順 | INSTALL · master · fcitx / fcitx · GitLab |
依存情報 | |
依存先 (必須) |
|
依存先 (任意) |
|
依存元 | fcitx-qt |
日付 | バージョン | OS | 依存関係 |
---|---|---|---|
2018-05-17 | 4.2.9.6 | Ubuntu 16.04 | |
2019-06-15 | 4.2.9.6 | Ubuntu 18.04 | GNU Make 4.2.1, GCC 7.4.0, CMake 3.10.2 |
Fcitxは任意の依存関係が大量に存在している。cmakeのオプションで不要なオプションを解除 (-D ENABLE_LIBXML2=OFF -D ENABLE_QT=OFF -D ENABLE_GIR=OFF -D ENABLE_DBUS=OFF
) してビルドした。
make実行中に辞書ファイルなどをダウンロードしにいくので,インターネット環境が必要と思われるので注意しておく。
fcitxにはテストは付属していないようで,ctestやmake check, make testを実行してもテストは実行されなかった。そのため,扱いには注意する。
ビルドエラー対応
オプションを何も指定しない場合,デフォルトでビルドが有効になっているため,必要な依存関係が不足していると,cmakeの実行時にエラーが出る。
まずENABLE_LIBXML2=ON
の影響で,cmakeの実行時に以下のエラーが出る。
-- Checking for module 'xkbfile' -- No package 'xkbfile' found CMake Error at /usr/share/cmake-3.10/Modules/FindPackageHandleStandardArgs.cmake:137 (message): Could NOT find XkbFile (missing: XKBFILE_LIBRARIES XKBFILE_MAIN_INCLUDE_DIR) Call Stack (most recent call first): /usr/share/cmake-3.10/Modules/FindPackageHandleStandardArgs.cmake:378 (_FPHSA_FAILURE_MESSAGE) cmake/FindXkbFile.cmake:33 (find_package_handle_standard_args) CMakeLists.txt:101 (find_package) -- Configuring incomplete, errors occurred!
CMakeListx.txt:101付近は,ENABLE_LIBXML2
のif文のブロックであり,XkbFileパッケージの不足のためエラーとなっている。
if (ENABLE_LIBXML2)
find_package(LibXml2 REQUIRED)
find_package(IsoCodes REQUIRED)
find_package(XkbFile REQUIRED)
endif (ENABLE_LIBXML2)
cmakeのオプションに,-D ENABLE_LIBXML2=OFF
を指定することでこのビルドエラーを回避した。
ENABLE_QT=ON
が原因でcmakeの実行時に以下のエラーが出る。
-- Could NOT find Enchant (missing: ENCHANT_LIBRARIES ENCHANT_INCLUDE_DIR ENCHANT_API_COMPATIBLE) -- Could NOT find Presage (missing: PRESAGE_LIBRARIES PRESAGE_INCLUDE_DIR PRESAGE_API_COMPATIBLE) CMake Error at /usr/share/cmake-3.10/Modules/FindQt4.cmake:1320 (message): Found unsuitable Qt version "5.9.5" from /usr/bin/qmake, this code requires Qt 4.x Call Stack (most recent call first): CMakeLists.txt:111 (find_package) -- Configuring incomplete, errors occurred!
CMakeLists.txt:111付近はENABLE_QT
のif文のブロックで,Qt 4の不足のためエラーが出ている。
if(ENABLE_QT)
find_package(Qt4 4.8 COMPONENTS QtCore QtGui QtDBus REQUIRED)
endif()
cmakeのオプションに,-D ENABLE_QT=OFF
を指定することでこのビルドエラーを回避した。
ENABLE_GIR=ON
が原因でcmakeの実行時に以下のエラーが出る。
-- Checking for module 'gobject-introspection-1.0' -- No package 'gobject-introspection-1.0' found CMake Error at /usr/share/cmake-3.10/Modules/FindPkgConfig.cmake:415 (message): A required package was not found Call Stack (most recent call first): /usr/share/cmake-3.10/Modules/FindPkgConfig.cmake:593 (_pkg_check_modules_internal) cmake/GObjectIntrospection.cmake:4 (pkg_check_modules) src/lib/fcitx-gclient/CMakeLists.txt:67 (include) -- Configuring incomplete, errors occurred!
src/lib/fcitx-gclient/CMakeLists.txt:67付近hENABLE_GIRのif文のブロックであり,include(GObjectIntrospection) でcmake/GObjectIntrospection.cmake:4 でpkg-config経由でgobject-introspection-1.0を参照して,不足のためエラーとなっている。
if(ENABLE_GIR)
include(GObjectIntrospection)
gobject_introspection(
FILENAME Fcitx-1.0.gir
NSVERSION 1.0
INCLUDE Gio-2.0 GObject-2.0 GLib-2.0
PACKAGE_EXPORT fcitx-gclient
LIBRARY fcitx-gclient
SCANNER_ARGS --warn-all --add-include-path=${CMAKE_CURRENT_SOURCE_DIR}
COMPILER_ARGS "--includedir=${CMAKE_CURRENT_SOURCE_DIR}"
SYMBOL_PREFIXES fcitx
SOURCES ${FCITX_GCLIENT_SOURCES} ${FCITX_GCLIENT_HEADERS}
QUIET
)
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/Fcitx-1.0.gir"
DESTINATION "${GOBJECT_INTROSPECTION_GIRDIR}")
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/Fcitx-1.0.typelib"
DESTINATION "${GOBJECT_INTROSPECTION_TYPELIBDIR}")
endif()
cmakeのオプションに,-D ENABLE_GIR=OFF
を指定することでこのビルドエラーを回避した。
ENABLE_DBUS=ON
が原因でcmakeの実行時に以下のエラーが出る。
-- Checking for module 'uuid' -- No package 'uuid' found CMake Error at /usr/share/cmake-3.10/Modules/FindPkgConfig.cmake:415 (message): A required package was not found Call Stack (most recent call first): /usr/share/cmake-3.10/Modules/FindPkgConfig.cmake:593 (_pkg_check_modules_internal) src/frontend/ipcportal/CMakeLists.txt:5 (pkg_check_modules) -- Configuring incomplete, errors occurred!
src/frontend/ipcportal/CMakeLists.txt:5付近の_ENABLE_DBUS
のブロック内で,uuidパッケージの不足のためエラーが出ている。
if(_ENABLE_DBUS)
include_directories(${DBUS_INCLUDE_DIRS})
link_directories(${DBUS_LIBRARY_DIRS})
pkg_check_modules(LibUUID "uuid" IMPORTED_TARGET REQUIRED)
set(FCITX_IPCPORTAL_LINK_LIBS ${FCITX_IPCPORTAL_LINK_LIBS} ${DBUS_LIBRARIES} PkgConfig::LibUUID)
set(ipcportal_noinstall)
else()
set(ipcportal_noinstall NO_INSTALL)
endif()
_ENABLE_DBUS
はCMakeLists.txt:151付近のENABLE_DBUS
のif文のブロックで設定している。
set(_ENABLE_DBUS 0)
if (ENABLE_DBUS)
PKG_CHECK_MODULES(DBUS "dbus-1>=1.1.0" )
if (DBUS_FOUND)
set(_ENABLE_DBUS 1)
endif (DBUS_FOUND)
endif (ENABLE_DBUS)
cmakeのオプションに,-D ENABLE_DBUS=OFF
を指定することでこのビルドエラーを回避した。
なお,これらのビルドオプションを指定しても,以下の警告が出る。
-- Checking for module 'enchant' -- No package 'enchant' found -- Could NOT find Enchant (missing: ENCHANT_LIBRARIES ENCHANT_INCLUDE_DIR ENCHAN T_API_COMPATIBLE) -- Could NOT find Presage (missing: PRESAGE_LIBRARIES PRESAGE_INCLUDE_DIR PRESAG E_API_COMPATIBLE) -- Checking for module 'opencc' -- No package 'opencc' found -- Could NOT find OpenCC (missing: OPENCC_LIBRARIES OPENCC_INCLUDE_DIR OPENCC_AP I_COMPATIBLE)
ビルド止まるわけではないので,enchantとopenccの不足による警告は無視した。