やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

Qt QuickControls2アプリのプロジェクトを作成したが実行するとエラーが出たので直した(module "QtQuick.Controls" version 2.0 is not installed)

 ぜんぜん環境構築できてないじゃん……。(2回目)

対象環境

  • Raspbierry pi 3 Model B+
  • Raspbian stretch 2018-06-27
  • Qt 5.7.1

問題

 Qt QuickControls2アプリケーションのプロジェクトを作成する。

f:id:ytyaru:20181124154839p:plain

 Qt Creatorで実行したところ、以下のようにエラーが出た。(メニュー→ビルドすべてビルド

/tmp/work/build-Hello_Pj_App_QuickControls2-unknown-Debug/Hello_Pj_App_QuickControls2 を起動中...
QML debugging is enabled. Only use this in a safe environment.
libEGL warning: DRI2: failed to authenticate
qt5ct: using qt5ct plugin
JIT is disabled for QML. Property bindings and animations will be very slow. Visit https://wiki.qt.io/V4 to learn about possible solutions for your platform.
QQmlApplicationEngine failed to load component
qrc:/main.qml:2 module "QtQuick.Controls" version 2.0 is not installed

調べる1

 以下をインストールする必要があるらしい。

  • qml-module-qtquick-dialogs
  • qml-module-qtquick-controls
    • qml-module-qtquick-layouts
    • qml-module-qtquick-window2
$ sudo apt install -y qml-module-qtquick-dialogs qml-module-qtquick-controls qml-module-qtquick-layouts qml-module-qtquick-window2
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
qml-module-qtquick-controls はすでに最新バージョン (5.7.1~20161021-2) です。
qml-module-qtquick-controls は手動でインストールしたと設定されました。
qml-module-qtquick-layouts はすでに最新バージョン (5.7.1-2+rpi1) です。
qml-module-qtquick-layouts は手動でインストールしたと設定されました。
qml-module-qtquick-window2 はすでに最新バージョン (5.7.1-2+rpi1) です。
qml-module-qtquick-window2 は手動でインストールしたと設定されました。
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  libdirectfb-1.2-9 libiso9660-8 libvcdinfo0 libvlccore8
これを削除するには 'sudo apt autoremove' を利用してください。
以下の追加パッケージがインストールされます:
  qml-module-qtquick-privatewidgets
以下のパッケージが新たにインストールされます:
  qml-module-qtquick-dialogs qml-module-qtquick-privatewidgets
アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 0 個。
124 kB のアーカイブを取得する必要があります。
この操作後に追加で 554 kB のディスク容量が消費されます。
取得:1 http://ftp.jaist.ac.jp/raspbian stretch/main armhf qml-module-qtquick-privatewidgets armhf 5.7.1~20161021-2 [36.5 kB]
取得:2 http://ftp.jaist.ac.jp/raspbian stretch/main armhf qml-module-qtquick-dialogs armhf 5.7.1~20161021-2 [87.1 kB]
124 kB を 0秒 で取得しました (369 kB/s)              
以前に未選択のパッケージ qml-module-qtquick-privatewidgets:armhf を選択しています。
(データベースを読み込んでいます ... 現在 168407 個のファイルとディレクトリがインストールされています。)
.../qml-module-qtquick-privatewidgets_5.7.1~20161021-2_armhf.deb を展開する準備をしています ...
qml-module-qtquick-privatewidgets:armhf (5.7.1~20161021-2) を展開しています...
以前に未選択のパッケージ qml-module-qtquick-dialogs:armhf を選択しています。
.../qml-module-qtquick-dialogs_5.7.1~20161021-2_armhf.deb を展開する準備をしています ...
qml-module-qtquick-dialogs:armhf (5.7.1~20161021-2) を展開しています...
qml-module-qtquick-privatewidgets:armhf (5.7.1~20161021-2) を設定しています ...
qml-module-qtquick-dialogs:armhf (5.7.1~20161021-2) を設定しています ...

 再び実行するも同様のエラー……。

調べる2

$ sudo apt install -y qml-module-qtquick-controls2
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  libdirectfb-1.2-9 libiso9660-8 libvcdinfo0 libvlccore8
これを削除するには 'sudo apt autoremove' を利用してください。
以下の追加パッケージがインストールされます:
  libqt5quickcontrols2-5 libqt5quicktemplates2-5
以下のパッケージが新たにインストールされます:
  libqt5quickcontrols2-5 libqt5quicktemplates2-5 qml-module-qtquick-controls2
アップグレード: 0 個、新規インストール: 3 個、削除: 0 個、保留: 0 個。
317 kB のアーカイブを取得する必要があります。
この操作後に追加で 2,022 kB のディスク容量が消費されます。
取得:1 http://ftp.jaist.ac.jp/raspbian stretch/main armhf libqt5quicktemplates2-5 armhf 5.7.1-1 [161 kB]
取得:2 http://ftp.jaist.ac.jp/raspbian stretch/main armhf libqt5quickcontrols2-5 armhf 5.7.1-1 [24.3 kB]
取得:3 http://ftp.jaist.ac.jp/raspbian stretch/main armhf qml-module-qtquick-controls2 armhf 5.7.1-1 [132 kB]
317 kB を 0秒 で取得しました (409 kB/s)               
以前に未選択のパッケージ libqt5quicktemplates2-5:armhf を選択しています。
(データベースを読み込んでいます ... 現在 168425 個のファイルとディレクトリがインストールされています。)
.../libqt5quicktemplates2-5_5.7.1-1_armhf.deb を展開する準備をしています ...
libqt5quicktemplates2-5:armhf (5.7.1-1) を展開しています...
以前に未選択のパッケージ libqt5quickcontrols2-5:armhf を選択しています。
.../libqt5quickcontrols2-5_5.7.1-1_armhf.deb を展開する準備をしています ...
libqt5quickcontrols2-5:armhf (5.7.1-1) を展開しています...
以前に未選択のパッケージ qml-module-qtquick-controls2:armhf を選択しています。
.../qml-module-qtquick-controls2_5.7.1-1_armhf.deb を展開する準備をしています ...
qml-module-qtquick-controls2:armhf (5.7.1-1) を展開しています...
libqt5quicktemplates2-5:armhf (5.7.1-1) を設定しています ...
libc-bin (2.24-11+deb9u3) のトリガを処理しています ...
libqt5quickcontrols2-5:armhf (5.7.1-1) を設定しています ...
qml-module-qtquick-controls2:armhf (5.7.1-1) を設定しています ...
libc-bin (2.24-11+deb9u3) のトリガを処理しています ...

module "QtQuick.Templates" is not installed

 別のエラーになった。あと何をいくつインストールすればいいの……。いつ終わるの……。

/tmp/work/build-Hello_Pj_App_QuickControls2-unknown-Debug/Hello_Pj_App_QuickControls2 を起動中...
QML debugging is enabled. Only use this in a safe environment.
libEGL warning: DRI2: failed to authenticate
qt5ct: using qt5ct plugin
JIT is disabled for QML. Property bindings and animations will be very slow. Visit https://wiki.qt.io/V4 to learn about possible solutions for your platform.
JIT is disabled for QML. Property bindings and animations will be very slow. Visit https://wiki.qt.io/V4 to learn about possible solutions for your platform.
QQmlApplicationEngine failed to load component
qrc:/main.qml:27 Type TabBar unavailable
file:///usr/lib/arm-linux-gnueabihf/qt5/qml/QtQuick/Controls.2/TabBar.qml:38 module "QtQuick.Templates" is not installed

調べる3

 qt5-declarative, qt5-quick, qt5-quickcontrols2 をインストールするものらしい。

sudo apt install -y qt5-declarative qt5-quick qt5-quickcontrols2

 騙された。存在しないじゃん……。

パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
E: パッケージ qt5-declarative が見つかりません
E: パッケージ qt5-quick が見つかりません
E: パッケージ qt5-quickcontrols2 が見つかりません

調べる4

 一つ前の参考URLでいっぱいインストール候補があった。あれを入れてみるか。

$ sudo apt install -y qtbase5-dev qt5-default qtdeclarative5-dev qml-module-qtquick-controls qml-module-qtquick-xmllistmodel qttools5-dev-tools qml-module-qtquick-dialogs qml-module-qt-labs-settings libqt5qml-graphicaleffects qtmultimedia5-dev qml-module-qtmultimedia libzbar-dev

 意味不明だがインストールされなかったっぽい。

パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
パッケージ libqt5qml-graphicaleffects は使用できませんが、別のパッケージから参照されます。
これは、パッケージが欠落しているか、廃止されたか、または別のソース
からのみ利用可能であることを意味します。
しかし、以下のパッケージが置き換えます:
  qml-module-qtgraphicaleffects

E: パッケージ 'libqt5qml-graphicaleffects' にはインストール候補がありません

調べる5

 出力ディレクトリに以下のDLLを配置すればいいらしい。

  • デバッグ
    • Qt5QuickTemplates2d.dll
    • Qt5QuickControls2d.dll
  • リリース版
    • Qt5QuickTemplates2.dll
    • Qt5QuickControls2.dll

 拡張子DLLはWindowsLinuxだとたぶんso? 何にせよ、それが存在するのか、あるならどこか、さっぱりわからない。

調べる6

In the end I also needed the window package. Here's the summary of the packages (which only worked on newer ubuntus, bionic for example): python3 python3-pyqt5 python3-pyqt5.qtquick qt5-default qml-module-qtquick-controls2 libqt5qml5 qml-module-qtquick2 qml-module-qtquick-window2

 今まででインストールしていないものを抽出する。

$ sudo apt install -y libqt5qml5 qml-module-qtquick2
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
libqt5qml5 はすでに最新バージョン (5.7.1-2+rpi1) です。
libqt5qml5 は手動でインストールしたと設定されました。
qml-module-qtquick2 はすでに最新バージョン (5.7.1-2+rpi1) です。
qml-module-qtquick2 は手動でインストールしたと設定されました。
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  libdirectfb-1.2-9 libiso9660-8 libvcdinfo0 libvlccore8
これを削除するには 'sudo apt autoremove' を利用してください。
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。

 あら、既存だったみたい。

調べる7

 パッケージを探してみる。

$ apt list | grep quick
...
qml-module-qtquick-templates2
...

 qml-module-qtquick-templates2という未インストールのものがあった。名前的にこれじゃね?

$ sudo apt install -y qml-module-qtquick-templates2
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  libdirectfb-1.2-9 libiso9660-8 libvcdinfo0 libvlccore8
これを削除するには 'sudo apt autoremove' を利用してください。
以下のパッケージが新たにインストールされます:
  qml-module-qtquick-templates2
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
36.6 kB のアーカイブを取得する必要があります。
この操作後に追加で 312 kB のディスク容量が消費されます。
取得:1 http://ftp.jaist.ac.jp/raspbian stretch/main armhf qml-module-qtquick-templates2 armhf 5.7.1-1 [36.6 kB]
36.6 kB を 0秒 で取得しました (68.8 kB/s)              
以前に未選択のパッケージ qml-module-qtquick-templates2:armhf を選択しています。
(データベースを読み込んでいます ... 現在 168711 個のファイルとディレクトリがインストールされています。)
.../qml-module-qtquick-templates2_5.7.1-1_armhf.deb を展開する準備をしています ...
qml-module-qtquick-templates2:armhf (5.7.1-1) を展開しています...
qml-module-qtquick-templates2:armhf (5.7.1-1) を設定しています ...

 再びQt Creatorに戻ってコードを実行すると、できたーーーーーーーーーーーーーー!

f:id:ytyaru:20181124155051p:plain

f:id:ytyaru:20181124155612p:plain

所感

 やっとQt QuickControls2アプリの実行ができた。これで環境構築は完璧! だと思った? 残念でしたぁぁぁーじつはデザイナが使えませぇぇぇーん。……。もうやだQtクソすぎ。