登録日: 2020-04-08 更新日: 2020-04-08
公開直前の「Lubuntu 20.04 LTS」の未公開版(ベータ版)をUSB メモリにインストールしました。
前回は、ログイン画面のテーマを手動で変更しましたが、GitHUB に「SDDM」の設定ツールがあったので、その「C++ 版」のインストールにトライしてみました。備忘録です。
-
-
参考:
SDDM (Simple Desktop Display Manager) は、 KDE 5 の Plasma デスクトップで推奨されているディスプレイマネージャで、QML によるテーマ機能をサポートしています。
公式リポジトリ(extra) にある「sddm-kcm」パッケージをインストールすると、Plasma のシステム設定から GUI で SDDM を設定できるようになるみたい(未確認)。
AUR リポジトリに、Qt ベースの設定エディタ (sddm-config-editor-git ) がありました。Arch Linux 系なら簡単にインストールできるので、恵まれていますね。
→今回は 「これをビルド」 してみます。
-
ダウンロード
1. ブラウザで lxqt/sddm-config-editor を開きます。
2. 緑色の「Clone or Download」をクリック →青い「Download ZIP」をクリック
3. ダウンロードされた「sddm-config-editor-master.zip」を任意のフォルダ「sdd-cnf」に移動して、展開。
4. インストールガイドを確認:
「ruby」フォルダに[Ruby] バージョン、「cpp」フォルダに[C++] バージョンが入っています。それぞれのフォルダにREADME.md があります。
-
「C++」の場合のファイル構成:
$ cd ~/ダウンロード/sdd-cnf/sddm-config-editor-master/cpp/ $ ls -1 README.md configuration.cpp configuration.h controller.cpp controller.h data deployment.pri main.cpp qml.qrc sddm-config-editor.pro sddm-config-editor_it.ts sddm-config-editor_ru.ts sddm-config-editor_zh_CN.ts section.cpp section.h setting.cpp setting.h translations.qrc ui update-config.sh
→すでに3カ国で翻訳されています。
-
README.md を確認
$ cat README.md # SDDM Configuration Editor - C++ バージョン :
-
依存関係
-
ビルドのやり方
$ qmake $ make
qmake にオプションで、
PREFIX=<path>
にてインストール先を設定できます。インストールするには、「make install」を使用します。
- その他の情報については、通常の README.md を参照。
-
依存関係のインストール:
polkit は入っているみたい?
QtCreator が必要みたい。
-
polkit 関連のインストール
polkit は、承認を定義および処理するためのツールキットです。 非特権プロセスが特権プロセスと話すことを許可するために使用されます。
-
1. 「圧縮されたtarball」を入手:
-
2. 圧縮されたtarballの信頼性を確認:
$ gpg --verify polkit-$(VERSION).tar.gz.sign polkit-$(VERSION).tar.gz gpg: Signature made Tue 23 Apr 2019 04:19:29 PM CEST using RSA key ID FFDCE258 gpg: Good signature from "Jan Rybar (Red Hat) <jrybar@redhat.com>"
-
3. 公開鍵を入手:
-
4. 設定
-
apt で入っているかを確認
$ apt search polkit | grep インストール済み : gir1.2-polkit-1.0/focal,now 0.105-26ubuntu1 amd64 [インストール済み、自動] libpolkit-agent-1-0/focal,now 0.105-26ubuntu1 amd64 [インストール済み、自動] libpolkit-gobject-1-0/focal,now 0.105-26ubuntu1 amd64 [インストール済み、自動] libpolkit-qt5-1-1/focal,now 0.113.0-0ubuntu2 amd64 [インストール済み、自動] lxqt-openssh-askpass/focal,now 0.14.1-1ubuntu1 amd64 [インストール済み、自動] muon/focal,now 4:5.8.0-1ubuntu5 amd64 [インストール済み、自動] polkit-kde-agent-1/focal,now 4:5.18.4.1-0ubuntu1 amd64 [インストール済み、自動]
→polkit は入っているみたい?これだけでいいのかは不明。
-
Qt5 関連のインストール
インストール 1:
$ sudo apt update $ sudo apt install build-essential : 以下のパッケージが新たにインストールされます: binutils binutils-common binutils-x86-64-linux-gnu build-essential dpkg-dev fakeroot g++ g++-9 gcc gcc-9 libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan5 libatomic1 libbinutils libc-dev-bin libc6-dev libcc1-0 libcrypt-dev libctf-nobfd0 libctf0 libfakeroot libgcc-9-dev libitm1 liblsan0 libquadmath0 libstdc++-9-dev libtsan0 libubsan1 linux-libc-dev make manpages-dev : update-alternatives: /usr/bin/c++ (c++) を提供するために自動モードで /usr/bin/g++ を使います
→「g++」と「make」が入りました。
-
確認:
$ make --version GNU Make 4.2.1 $ whereis make make: /usr/bin/make /usr/share/man/man1/make.1.gz
-
$ c++ --version c++ (Ubuntu 9.3.0-8ubuntu1) 9.3.0 $ whereis c++ c++: /usr/bin/c++ /usr/include/c++ /usr/share/man/man1/c++.1.gz
-
$ g++ --version g++ (Ubuntu 9.3.0-8ubuntu1) 9.3.0 $ whereis g++ g++: /usr/bin/g++ /usr/share/man/man1/g++.1.gz
-
インストール 2:
$ sudo apt install qttools5-dev-tools : 提案パッケージ: qt5-doc 以下のパッケージが新たにインストールされます: libclang1-10 libllvm10 libqt5designercomponents5 qdoc-qt5 qhelpgenerator-qt5 qt5-assistant qtattributionsscanner-qt5 qtchooser qttools5-dev-tools
メニュー →「プログラミング」にて、 「Qt5 アシスタント」、「Qt5 デザイナ」、「Qt5 リンギスト」が入りました。
-
インストール 3:
$ sudo apt install qt5-default : 以下のパッケージが新たにインストールされます: libegl-dev libgl-dev libglu1-mesa-dev libglx-dev libpthread-stubs0-dev libqt5opengl5-dev libvulkan-dev libx11-dev libxau-dev libxcb1-dev libxdmcp-dev libxext-dev qt5-default qt5-qmake qt5-qmake-bin qtbase5-dev qtbase5-dev-tools x11proto-core-dev x11proto-dev x11proto-xext-dev xorg-sgml-doctools xtrans-dev
→「qt5-default、qt5-qmake、qt5-qmake-bin、qtbase5-dev、qtbase5-dev-tools、libglu1-mesa-dev」が入りました。
-
確認:
$ qmake --version QMake version 3.1 Using Qt version 5.12.5 in /usr/lib/x86_64-linux-gnu $ whereis qmake qmake: /usr/bin/qmake
-
インストール 4:
OpenGL のライブラリのインストール:
$ sudo apt install mesa-common-dev : 以下のパッケージが新たにインストールされます: libdrm-dev mesa-common-dev
-
インストール 5:
「QtCreator」が必要みたい。QtCreator は、Qt プログラミング用のIDEです。
$ sudo apt install qtcreator : 以下のパッケージが新たにインストールされます: binfmt-support clang clang-10 clang-tidy clang-tidy-10 clang-tools-10 gdb gdbserver lib32gcc-s1 lib32gcc1 lib32stdc++6 libbabeltrace1 libc6-dbg libc6-i386 libclang-common-10-dev libclang-cpp10 libclang1-8 libdw1 libffi-dev libkf5syntaxhighlighting-data libkf5syntaxhighlighting5 libllvm8 libncurses-dev libobjc-9-dev libomp-10-dev libomp5-10 libpfm4 libqbscore1.13 libqt5quicktest5 libqt5serialport5 libqt5xmlpatterns5 libtinfo-dev libz3-4 libz3-dev llvm-10 llvm-10-dev llvm-10-runtime llvm-10-tools python3-pygments qbs-common qmlscene qt3d5-doc qt5-doc qt5-qmltooling-plugins qtbase5-doc qtcharts5-doc qtconnectivity5-doc qtcreator qtcreator-data qtcreator-doc qtdatavisualization5-doc qtdeclarative5-dev-tools qtdeclarative5-doc qtgraphicaleffects5-doc qtlocation5-doc qtmultimedia5-doc qtnetworkauth5-doc qtquickcontrols2-5-doc qtquickcontrols5-doc qtscript5-doc qtscxml5-doc qtsensors5-doc qtserialbus5-doc qtserialport5-doc qtsvg5-doc qttools5-doc qtvirtualkeyboard5-doc qtwayland5-doc qtwebchannel5-doc qtwebengine5-doc qtwebsockets5-doc qtwebview5-doc qtx11extras5-doc qtxmlpatterns5-dev-tools qtxmlpatterns5-doc
メニュー →「プログラミング」→「Qt5 Creator」が入りました。
-
インストール 6:
フォントライブラリをインストールしてなかったので確認。
$ apt list libfontconfig1 : libfontconfig1/focal,now 2.13.1-2ubuntu2 amd64 [インストール済み、自動]
→何かを入れたときに自動で入ったみたい。インストール不要。
-
ビルド
依存関係に不備があり、エラーするだろうから、インストール先を指定してビルドしてみます。
→追記: そこまで行けなかったので結局は不要でした。
前準備:
$ cd ~/ダウンロード/sdd-cnf/ $ mkdir build $ ls build sddm-config-editor-master sddm-config-editor-master.zip
qmake 1回目:
$ cd ~/ダウンロード/sdd-cnf/sddm-config-editor-master/cpp/ $ qmake PREFIX=/home/ubn/ダウンロード/sdd-cnf/build : Info: creating stash file /home/ubn/ダウンロード/sdd-cnf/sddm-config-editor-master/cpp/.qmake.stash WARNING: Project ERROR: Unknown module(s) in QT: qml quick Updating '/home/ubn/ダウンロード/sdd-cnf/sddm-config-editor-master/cpp/sddm-config-editor_zh_CN.qm'... 15 件のメッセージを翻訳しました(完了 15 件、未完了 0 件) 29 件の未翻訳のソーステキストを無視しました Updating '/home/ubn/ダウンロード/sdd-cnf/sddm-config-editor-master/cpp/sddm-config-editor_ru.qm'... 54 件のメッセージを翻訳しました(完了 54 件、未完了 0 件) Updating '/home/ubn/ダウンロード/sdd-cnf/sddm-config-editor-master/cpp/sddm-config-editor_it.qm'... 50 件のメッセージを翻訳しました(完了 50 件、未完了 0 件) Project ERROR: Unknown module(s) in QT: qml quick
→エラーで停止:
WARNING: Project ERROR: Unknown module(s) in QT: qml quick
-
対策:
「qtdeclarative5-dev」パッケージがないのでインストール:
$ sudo apt install qtdeclarative5-dev : 以下のパッケージが新たにインストールされます: libqt5quickparticles5 libqt5quickshapes5 qtdeclarative5-dev
-
qmake 2回目:
$ cd ~/ダウンロード/sdd-cnf/sddm-config-editor-master/cpp/ $ qmake PREFIX=/home/ubn/ダウンロード/sdd-cnf/build : Updating '/home/ubn/ダウンロード/sdd-cnf/sddm-config-editor-master/cpp/sddm-config-editor_zh_CN.qm'... 15 件のメッセージを翻訳しました(完了 15 件、未完了 0 件) 29 件の未翻訳のソーステキストを無視しました Updating '/home/ubn/ダウンロード/sdd-cnf/sddm-config-editor-master/cpp/sddm-config-editor_ru.qm'... 54 件のメッセージを翻訳しました(完了 54 件、未完了 0 件) Updating '/home/ubn/ダウンロード/sdd-cnf/sddm-config-editor-master/cpp/sddm-config-editor_it.qm'... 50 件のメッセージを翻訳しました(完了 50 件、未完了 0 件)
→正常終了しました。
-
確認:
$ ls Makefile data sddm-config-editor_it.ts section.h README.md deployment.pri sddm-config-editor_ru.qm setting.cpp configuration.cpp main.cpp sddm-config-editor_ru.ts setting.h configuration.h qml.qrc sddm-config-editor_zh_CN.qm translations.qrc controller.cpp sddm-config-editor.pro sddm-config-editor_zh_CN.ts ui controller.h sddm-config-editor_it.qm section.cpp update-config.sh
→作業しているフォルダに、Makefile が作られました。.ts が翻訳されて、.qm が作られています。
-
make
$ make g++ -c -pipe -g -Wall -W -D_REENTRANT -fPIC -DQT_QUICK_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I. -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtQuick -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtQml -isystem /usr/include/x86_64-linux-gnu/qt5/QtNetwork -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -o main.o main.cpp g++ -c -pipe -g -Wall -W -D_REENTRANT -fPIC -DQT_QUICK_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I. -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtQuick -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtQml -isystem /usr/include/x86_64-linux-gnu/qt5/QtNetwork -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -o controller.o controller.cpp g++ -c -pipe -g -Wall -W -D_REENTRANT -fPIC -DQT_QUICK_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I. -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtQuick -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtQml -isystem /usr/include/x86_64-linux-gnu/qt5/QtNetwork -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -o configuration.o configuration.cpp g++ -c -pipe -g -Wall -W -D_REENTRANT -fPIC -DQT_QUICK_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I. -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtQuick -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtQml -isystem /usr/include/x86_64-linux-gnu/qt5/QtNetwork -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -o section.o section.cpp g++ -c -pipe -g -Wall -W -D_REENTRANT -fPIC -DQT_QUICK_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I. -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtQuick -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtQml -isystem /usr/include/x86_64-linux-gnu/qt5/QtNetwork -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -o setting.o setting.cpp make: *** 'qrc_qml.cpp' に必要なターゲット 'data/config-schema.json' を make するルールがありません. 中止.
→途中でエラー。Makefile に不備があるみたい。
-
Makefile を確認
$ featherpad ~/ダウンロード/sdd-cnf/sddm-config-editor-master/cpp/Makefile
53 行目以降: 59 行目に注目
####### Files SOURCES = main.cpp \ controller.cpp \ configuration.cpp \ section.cpp \ setting.cpp qrc_qml.cpp \ ←(この行に注目) qrc_translations.cpp \ moc_controller.cpp \ moc_configuration.cpp \ moc_section.cpp \ moc_setting.cpp OBJECTS = main.o \ controller.o \ configuration.o \ section.o \ setting.o \ qrc_qml.o \ ←(ここに注目) qrc_translations.o \ ←(ここに注目) moc_controller.o \ moc_configuration.o \ moc_section.o \ moc_setting.o : : 401 行目: : compiler_rcc_make_all: qrc_qml.cpp qrc_translations.cpp ←(ここに注目) compiler_rcc_clean: -$(DEL_FILE) qrc_qml.cpp qrc_translations.cpp qrc_qml.cpp: qml.qrc \ ←(ここに注目) /usr/lib/qt5/bin/rcc \ data/config-schema.json \ ←(ここに注目) ui/path_list-editor.qml \ ui/theme-editor.qml \ ui/session-editor.qml \ ui/boolean-editor.qml \ ui/enum-editor.qml \ ui/file-editor.qml \ ui/directory-editor.qml \ ui/setting-section.qml \ ui/string-editor.qml \ ui/main-window.qml \ ui/integer-editor.qml \ ui/numlock-editor.qml /usr/lib/qt5/bin/rcc -name qml qml.qrc -o qrc_qml.cpp qrc_translations.cpp: translations.qrc \ ←(ここに注目) /usr/lib/qt5/bin/rcc \ sddm-config-editor_it.qm \ sddm-config-editor_zh_CN.qm \ sddm-config-editor_ru.qm /usr/lib/qt5/bin/rcc -name translations translations.qrc -o qrc_translations.cpp compiler_moc_predefs_make_all: moc_predefs.h compiler_moc_predefs_clean: -$(DEL_FILE) moc_predefs.h :
-
うまく行けば、
rcc で、qml.qrc →qrc_qml.cpp (C++ ソース)と変換され、 その後、C++ でqrc_qml.cpp →qrc_qml.o にコンパイル。
rcc で、translations.qrc →qrc_translations.cpp (C++ ソース)に変換され、 その後、C++ でqrc_translations.cpp →qrc_translations.o にコンパイル。
される流れみたいですが、その最初でエラー。
-
~/ダウンロード/sdd-cnf/sddm-config-editor-master/cpp/data の内容:
../data
→これで「data/」のパス合わせ。
-
~/ダウンロード/sdd-cnf/sddm-config-editor-master/cpp/ui の内容:
../ui
→これで「ui/」のパス合わせ。
-
make のやり直しのとき:
$ make clean rm -f sddm-config-editor_zh_CN.qm sddm-config-editor_ru.qm sddm-config-editor_it.qm rm -f qrc_qml.cpp qrc_translations.cpp rm -f moc_predefs.h rm -f moc_controller.cpp moc_configuration.cpp moc_section.cpp moc_setting.cpp rm -f main.o controller.o configuration.o section.o setting.o qrc_qml.o qrc_translations.o moc_controller.o moc_configuration.o moc_section.o moc_setting.o rm -f *~ core *.core
-
qmake のやり直しのとき:
Makefile が削除されます。
$ make distclean rm -f sddm-config-editor_zh_CN.qm sddm-config-editor_ru.qm sddm-config-editor_it.qm rm -f qrc_qml.cpp qrc_translations.cpp rm -f moc_predefs.h rm -f moc_controller.cpp moc_configuration.cpp moc_section.cpp moc_setting.cpp rm -f main.o controller.o configuration.o section.o setting.o qrc_qml.o qrc_translations.o moc_controller.o moc_configuration.o moc_section.o moc_setting.o rm -f *~ core *.core rm -f sddm-config-editor rm -f .qmake.stash rm -f Makefile
-
いろいろいじってみたけど、ダメでした。
そのたびに、ファイル名が変わり、「make するルールがありません」というおなじみのエラー。
-
参考: 同じQt5 アプリのfeatherpad のコンパイルに必要で、入っていないものをインストール:
関係ないだろうな〜と思いつつ、
$ sudo apt install libqt5x11extras5-dev libqt5svg5-dev libhunspell-dev : 以下のパッケージが新たにインストールされます: libhunspell-dev libqt5svg5-dev libqt5x11extras5-dev
→同じエラー。
-
あとは、最新の Qt とpolkit をサイトからダウンロードして入れるしかなさそう。
これなら依存関係の漏れは防げるかも。
-
まとめ
Arch Linux だとAUR (開発者が依存関連をスクリプトで書くのでビルドの成功率が高いというシステム)があるので簡単にビルドできますが、Ubuntu だと依存関係、その他を自己解決しないといけないのでたいへん。
今のところ、Makefile でハマって保留中です。成功するまで待っていたら投稿できません。 ./configure の代わりに、CMake が使われているのはわかったけど、スキルがないので「学ぶ」のが先でしょうね。
-
-
目次
-
-