GhostBSD - pyQt5をインストールする（作業記録）

# GhostBSD　に pyQt5 を install する。

* 本記事は、[qiita-cli](https://qiita.com/Qiita/items/666e190490d0af90a92b) を使って作成されました。
* 本日の結論：　必要なものは自分で開発しよう。
* 動機：　GhostBSD xfce4  デスクトップに VPN用のWidgetがほしいなあ。
* [wireguard](https://www.wireguard.com/) のための [qt5](https://github.com/qt/qt5) Widget を探していたら、[WG_client_manager](https://github.com/unlimmitted/WG_client_manager) を発見。
* pip install してたら、[pyQt5](https://pypi.org/project/PyQt5/) の壁に 当たった。
* [RouterOS](https://mikrotik.com/software) 用だと書いてあったのでそのままは使えない感じ　
* GUI開発するか思案中（現在）


## 作業
```
$ python ./main.py 
Traceback (most recent call last):
  File "/home/hiko/work/WG_client_manager/./main.py", line 3, in <module>
    from PyQt5 import QtWidgets
ModuleNotFoundError: No module named 'PyQt5'
strnh@ghostbsd ~/w/WG_client_manager (master) [1]> pip install QtWidgets
Defaulting to user installation because normal site-packages is not writeable
Collecting QtWidgets
  Downloading qtwidgets-1.1.tar.gz (14 kB)
  Preparing metadata (setup.py) ... done
Requirement already satisfied: markdown in /usr/local/lib/python3.11/site-packages (from QtWidgets) (3.6)
Building wheels for collected packages: QtWidgets
  Building wheel for QtWidgets (setup.py) ... done
  Created wheel for QtWidgets: filename=qtwidgets-1.1-py3-none-any.whl size=20491 sha256=dff464bdbf394f920681153cb9f67c8f0f279d7c3c0da6a8277c0a2b016edb56
  Stored in directory: /home/hiko/.cache/pip/wheels/70/2c/7a/165ab65f24bb2974ee4989ef57a89a0a4a9dbbbc7bbfc90cc9
Successfully built QtWidgets
Installing collected packages: QtWidgets
Successfully installed QtWidgets-1.1
strnh@ghostbsd ~/w/WG_client_manager (master)> python ./main.py
Traceback (most recent call last):
  File "/home/hiko/work/WG_client_manager/./main.py", line 3, in <module>
    from PyQt5 import QtWidgets
ModuleNotFoundError: No module named 'PyQt5'
strnh@ghostbsd ~/w/WG_client_manager (master) [1]> pip install PyQt5
Defaulting to user installation because normal site-packages is not writeable
Collecting PyQt5
  Downloading PyQt5-5.15.11.tar.gz (3.2 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.2/3.2 MB 1.5 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... error
  error: subprocess-exited-with-error
  
  × Preparing metadata (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [25 lines of output]
      Traceback (most recent call last):
        File "/usr/local/lib/python3.11/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
          main()
        File "/usr/local/lib/python3.11/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main
          json_out['return_val'] = hook(**hook_input['kwargs'])
                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/usr/local/lib/python3.11/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 152, in prepare_metadata_for_build_wheel
          whl_basename = backend.build_wheel(metadata_directory, config_settings)
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/tmp/pip-build-env-kvxi6vxp/overlay/lib/python3.11/site-packages/sipbuild/api.py", line 28, in build_wheel
          project = AbstractProject.bootstrap('wheel',
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/tmp/pip-build-env-kvxi6vxp/overlay/lib/python3.11/site-packages/sipbuild/abstract_project.py", line 74, in bootstrap
          project.setup(pyproject, tool, tool_description)
        File "/tmp/pip-build-env-kvxi6vxp/overlay/lib/python3.11/site-packages/sipbuild/project.py", line 629, in setup
          self.apply_user_defaults(tool)
        File "/tmp/pip-install-nd56dt81/pyqt5_6c2f1148fd2147d1bfa2e3e44c46ffca/project.py", line 68, in apply_user_defaults
          super().apply_user_defaults(tool)
        File "/tmp/pip-build-env-kvxi6vxp/overlay/lib/python3.11/site-packages/pyqtbuild/project.py", line 51, in apply_user_defaults
          super().apply_user_defaults(tool)
        File "/tmp/pip-build-env-kvxi6vxp/overlay/lib/python3.11/site-packages/sipbuild/project.py", line 243, in apply_user_defaults
          self.builder.apply_user_defaults(tool)
        File "/tmp/pip-build-env-kvxi6vxp/overlay/lib/python3.11/site-packages/pyqtbuild/builder.py", line 49, in apply_user_defaults
          raise PyProjectOptionException('qmake',
      sipbuild.pyproject.PyProjectOptionException
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed

× Encountered error while generating package metadata.
╰─> See above for output.

note: This is an issue with the package mentioned above, not pip.
hint: See above for details.

```
* pkg で devel/py-qt5 を入れる。

```
hiko-ghostbsd# pkg install devel/py-qt5  
Updating FreeBSD repository catalogue...
FreeBSD repository is up to date.
Updating GhostBSD repository catalogue...
GhostBSD repository is up to date.
Updating GhostBSD-base repository catalogue...
GhostBSD-base repository is up to date.
All repositories are up to date.
The following 29 package(s) will be affected (of 0 checked):

New packages to be INSTALLED:
	fam: 2.6.10_10 [GhostBSD]
	jasper: 4.2.4 [GhostBSD]
	libao: 1.2.0_7 [FreeBSD]
	libmad: 0.16.4 [FreeBSD]
	libmng: 2.0.3_2 [GhostBSD]
	llvm19-lite: 19.1.7_1 [GhostBSD]
	mDNSResponder: 2200.140.11 [GhostBSD]
	mozjpeg: 4.1.5 [FreeBSD]
	pkg-devel: 2.0.99.5 [GhostBSD]
	py311-PyQt5-sip: 12.17.0 [GhostBSD]
	py311-qt5: 5.15.11_1 [GhostBSD]
	py311-qt5-3d: 5.15.7 [GhostBSD]
	py311-qt5-charts: 5.15.7 [GhostBSD]
	py311-qt5-datavis3d: 5.15.6 [GhostBSD]
	py311-qt5-networkauth: 5.15.6 [GhostBSD]
	py311-qt5-pyqt: 5.15.11 [GhostBSD]
	qt5-3d: 5.15.16p0_1 [FreeBSD]
	qt5-charts: 5.15.16p0_1 [FreeBSD]
	qt5-connectivity: 5.15.16p1_1 [FreeBSD]
	qt5-datavis3d: 5.15.16p0_1 [FreeBSD]
	qt5-imageformats: 5.15.16p2 [GhostBSD]
	qt5-quick3d: 5.15.16p1_1 [FreeBSD]
	qt5-remoteobjects: 5.15.16p0_1 [FreeBSD]
	qt5-sensors: 5.15.16p0_1 [FreeBSD]
	schilybase: 2024.03.21_1 [FreeBSD]
	sqlite3-tcl: 3.46.1_1,1 [GhostBSD]
	talloc242: 2.4.2_2 [FreeBSD]
	tdb1410: 1.4.10_2,1 [FreeBSD]
	tevent016: 0.16.1_1 [GhostBSD]

Number of packages to be installed: 29

The process will require 596 MiB more space.
14 MiB to be downloaded.

Proceed with this action? [y/N]: y
[1/20] Fetching qt5-datavis3d-5.15.16p0_1.pkg: 100%  491 KiB 502.4kB/s    00:01    
[2/20] Fetching py311-qt5-pyqt-5.15.11.pkg: 100%    4 MiB   1.5MB/s    00:03    
[3/20] Fetching jasper-4.2.4.pkg: 100%  427 KiB 437.3kB/s    00:01    
[4/20] Fetching qt5-charts-5.15.16p0_1.pkg: 100%  624 KiB 638.7kB/s    00:01    
[5/20] Fetching qt5-sensors-5.15.16p0_1.pkg: 100%  158 KiB 161.6kB/s    00:01    
[6/20] Fetching qt5-imageformats-5.15.16p2.pkg: 100%   61 KiB  62.2kB/s    00:01    
[7/20] Fetching libmad-0.16.4.pkg: 100%   74 KiB  76.0kB/s    00:01    
[8/20] Fetching py311-qt5-3d-5.15.7.pkg: 100%  499 KiB 510.5kB/s    00:01    
[9/20] Fetching py311-qt5-networkauth-5.15.6.pkg: 100%   56 KiB  57.7kB/s    00:01    
[10/20] Fetching qt5-quick3d-5.15.16p1_1.pkg:  11%  448 KiB 458.3kB/s    00:07 E[10/20] Fetching qt5-quick3d-5.15.16p1_1.pkg:  56%    2 MiB   1.7MB/s    00:01 E[10/20] Fetching qt5-quick3d-5.15.16p1_1.pkg: 100%    4 MiB   1.9MB/s    00:02    
[11/20] Fetching qt5-connectivity-5.15.16p1_1.pkg: 100%  245 KiB 250.9kB/s    00:01    
[12/20] Fetching qt5-3d-5.15.16p0_1.pkg: 100%    2 MiB   2.1MB/s    00:01    
[13/20] Fetching py311-qt5-5.15.11_1.pkg: 100%    1 KiB   1.1kB/s    00:01    
[14/20] Fetching py311-qt5-charts-5.15.7.pkg: 100%  174 KiB 178.7kB/s    00:01    
[15/20] Fetching schilybase-2024.03.21_1.pkg:  35%  208 KiB 212.6kB/s    00:01 E[15/20] Fetching schilybase-2024.03.21_1.pkg: 100%  589 KiB 603.1kB/s    00:01    
[16/20] Fetching qt5-remoteobjects-5.15.16p0_1.pkg: 100%  349 KiB 357.9kB/s    00:01    
[17/20] Fetching libao-1.2.0_7.pkg: 100%   54 KiB  55.7kB/s    00:01    
[18/20] Fetching py311-PyQt5-sip-12.17.0.pkg: 100%   61 KiB  62.9kB/s    00:01    
[19/20] Fetching py311-qt5-datavis3d-5.15.6.pkg: 100%  159 KiB 162.4kB/s    00:01    
[20/20] Fetching libmng-2.0.3_2.pkg: 100%  239 KiB 245.0kB/s    00:01    
Checking integrity... done (19 conflicting)
  - mDNSResponder-2200.140.11 [GhostBSD] conflicts with avahi-libdns-0.8_2 [installed] on /usr/local/lib/libdns_sd.so
  - mDNSResponder-2200.140.11 [FreeBSD] conflicts with avahi-libdns-0.8_2 [installed] on /usr/local/lib/libdns_sd.so
  - tevent016-0.16.1_1 [GhostBSD] conflicts with tevent-0.15.0 [installed] on /usr/local/include/tevent.h
  - tdb1410-1.4.10_2,1 [FreeBSD] conflicts with tdb-1.4.9,1 [installed] on /usr/local/bin/tdbbackup
  - tdb1410-1.4.10_1,1 [GhostBSD] conflicts with tdb-1.4.9,1 [installed] on /usr/local/bin/tdbbackup
  - sqlite3-tcl-3.46.1_1,1 [GhostBSD] conflicts with sqlite3-3.46.1_1,1 [installed] on /usr/local/bin/sqlite3
  - sqlite3-tcl-3.46.1_1,1 [GhostBSD] conflicts with sqlite3-3.46.1_1,1 [GhostBSD] on /usr/local/bin/sqlite3
  - mozjpeg-4.1.5 [FreeBSD] conflicts with jpeg-turbo-3.1.0 [installed] on /usr/local/bin/cjpeg
  - mozjpeg-4.1.5 [FreeBSD] conflicts with jpeg-turbo-3.1.0 [GhostBSD] on /usr/local/bin/cjpeg
  - mozjpeg-4.1.5 [GhostBSD] conflicts with jpeg-turbo-3.1.0 [installed] on /usr/local/bin/cjpeg
  - talloc242-2.4.2_2 [FreeBSD] conflicts with talloc-2.4.1 [installed] on /usr/local/include/pytalloc.h
  - talloc242-2.4.2_1 [GhostBSD] conflicts with talloc-2.4.1 [installed] on /usr/local/include/pytalloc.h
  - fam-2.6.10_10 [GhostBSD] conflicts with gamin-0.1.10_10 [installed] on /usr/local/include/fam.h
  - fam-2.6.10_10 [GhostBSD] conflicts with gamin-0.1.10_10 [FreeBSD] on /usr/local/include/fam.h
  - pkg-devel-2.0.99.5 [GhostBSD] conflicts with pkg-2.0.6 [installed] on /usr/local/etc/bash_completion.d/_pkg.bash
  - pkg-devel-2.0.99.5 [GhostBSD] conflicts with pkg-1.21.3 [GhostBSD] on /usr/local/etc/bash_completion.d/_pkg.bash
  - pkg-devel-2.0.99.5 [GhostBSD] conflicts with pkg-2.0.6 [FreeBSD] on /usr/local/etc/bash_completion.d/_pkg.bash
  - llvm19-lite-19.1.7_1 [GhostBSD] conflicts with llvm19-19.1.7_1 [installed] on /usr/local/llvm19/lib/clang/19/include/arm_bf16.h
  - llvm19-lite-19.1.7_1 [GhostBSD] conflicts with llvm19-19.1.7_1 [GhostBSD] on /usr/local/llvm19/lib/clang/19/include/arm_bf16.h
Checking integrity... done (0 conflicting)
Conflicts with the existing packages have been found.
One more solver iteration is needed to resolve them.
The following 22 package(s) will be affected (of 0 checked):

New packages to be INSTALLED:
	jasper: 4.2.4 [GhostBSD]
	libao: 1.2.0_7 [FreeBSD]
	libmad: 0.16.4 [FreeBSD]
	libmng: 2.0.3_2 [GhostBSD]
	mozjpeg: 4.1.5 [FreeBSD]
	py311-PyQt5-sip: 12.17.0 [GhostBSD]
	py311-qt5: 5.15.11_1 [GhostBSD]
	py311-qt5-3d: 5.15.7 [GhostBSD]
	py311-qt5-charts: 5.15.7 [GhostBSD]
	py311-qt5-datavis3d: 5.15.6 [GhostBSD]
	py311-qt5-networkauth: 5.15.6 [GhostBSD]
	py311-qt5-pyqt: 5.15.11 [GhostBSD]
	qt5-3d: 5.15.16p0_1 [FreeBSD]
	qt5-charts: 5.15.16p0_1 [FreeBSD]
	qt5-connectivity: 5.15.16p1_1 [FreeBSD]
	qt5-datavis3d: 5.15.16p0_1 [FreeBSD]
	qt5-imageformats: 5.15.16p2 [GhostBSD]
	qt5-quick3d: 5.15.16p1_1 [FreeBSD]
	qt5-remoteobjects: 5.15.16p0_1 [FreeBSD]
	qt5-sensors: 5.15.16p0_1 [FreeBSD]
	schilybase: 2024.03.21_1 [FreeBSD]

Installed packages to be REINSTALLED:
	jpeg-turbo-3.1.0 [FreeBSD]

Number of packages to be installed: 21
Number of packages to be reinstalled: 1

The process will require 73 MiB more space.
483 KiB to be downloaded.

Proceed with this action? [y/N]: y

[1/1] Fetching jpeg-turbo-3.1.0.pkg: 100%  483 KiB 494.8kB/s    00:01    
Checking integrity... done (1 conflicting)
  - jpeg-turbo-3.1.0 [FreeBSD] conflicts with mozjpeg-4.1.5 [GhostBSD] on /usr/local/bin/cjpeg
Checking integrity... done (0 conflicting)
Conflicts with the existing packages have been found.
One more solver iteration is needed to resolve them.
The following 22 package(s) will be affected (of 0 checked):

New packages to be INSTALLED:
	jasper: 4.2.4 [GhostBSD]
	libao: 1.2.0_7 [FreeBSD]
	libmad: 0.16.4 [FreeBSD]
	libmng: 2.0.3_2 [GhostBSD]
	mozjpeg: 4.1.5 [FreeBSD]
	py311-PyQt5-sip: 12.17.0 [GhostBSD]
	py311-qt5: 5.15.11_1 [GhostBSD]
	py311-qt5-3d: 5.15.7 [GhostBSD]
	py311-qt5-charts: 5.15.7 [GhostBSD]
	py311-qt5-datavis3d: 5.15.6 [GhostBSD]
	py311-qt5-networkauth: 5.15.6 [GhostBSD]
	py311-qt5-pyqt: 5.15.11 [GhostBSD]
	qt5-3d: 5.15.16p0_1 [FreeBSD]
	qt5-charts: 5.15.16p0_1 [FreeBSD]
	qt5-connectivity: 5.15.16p1_1 [FreeBSD]
	qt5-datavis3d: 5.15.16p0_1 [FreeBSD]
	qt5-imageformats: 5.15.16p2 [GhostBSD]
	qt5-quick3d: 5.15.16p1_1 [FreeBSD]
	qt5-remoteobjects: 5.15.16p0_1 [FreeBSD]
	qt5-sensors: 5.15.16p0_1 [FreeBSD]
	schilybase: 2024.03.21_1 [FreeBSD]

Installed packages to be REINSTALLED:
	jpeg-turbo-3.1.0 [FreeBSD]

Number of packages to be installed: 21
Number of packages to be reinstalled: 1

The process will require 73 MiB more space.

Proceed with this action? [y/N]: 

Checking integrity... done (0 conflicting)
[1/22] Reinstalling jpeg-turbo-3.1.0...
[1/22] Extracting jpeg-turbo-3.1.0: 100%
[2/22] Installing jasper-4.2.4...
[2/22] Extracting jasper-4.2.4: 100%
[3/22] Installing libao-1.2.0_7...
[3/22] Extracting libao-1.2.0_7: 100%
[4/22] Installing libmad-0.16.4...
[4/22] Extracting libmad-0.16.4: 100%
[5/22] Installing libmng-2.0.3_2...
[5/22] Extracting libmng-2.0.3_2: 100%
[6/22] Installing mozjpeg-4.1.5...
pkg: mozjpeg-4.1.5 conflicts with jpeg-turbo-3.1.0 (installs files into the same place).  Problematic file: /usr/local/bin/cjpeg

``` 
* 衝突したので、jpeg-turbo の一時的な削除を考えたがあまりに影響多大。

```
Number of packages to be removed: 393

The operation will free 5 GiB.

Proceed with deinstalling packages? [y/N]: n
```
* いろいろぶっ飛ばすと入れ直しが面倒だからとりあえず削除はキャンセル。
* 再度 pkg install したら通過。

```
hiko-ghostbsd# pkg install devel/py-qt5
Updating FreeBSD repository catalogue...
FreeBSD repository is up to date.
Updating GhostBSD repository catalogue...
GhostBSD repository is up to date.
Updating GhostBSD-base repository catalogue...
GhostBSD-base repository is up to date.
All repositories are up to date.
Checking integrity... done (20 conflicting)
  - mDNSResponder-2200.140.11 [GhostBSD] conflicts with avahi-libdns-0.8_2 [installed] on /usr/local/lib/libdns_sd.so
  - mDNSResponder-2200.140.11 [FreeBSD] conflicts with avahi-libdns-0.8_2 [installed] on /usr/local/lib/libdns_sd.so
  - tevent016-0.16.1_1 [GhostBSD] conflicts with tevent-0.15.0 [installed] on /usr/local/include/tevent.h
  - tdb1410-1.4.10_2,1 [FreeBSD] conflicts with tdb-1.4.9,1 [installed] on /usr/local/bin/tdbbackup
  - tdb1410-1.4.10_1,1 [GhostBSD] conflicts with tdb-1.4.9,1 [installed] on /usr/local/bin/tdbbackup
  @- sqlite3-tcl-3.46.1_1,1 [GhostBSD] conflicts with sqlite3-3.46.1_1,1 [installed] on /usr/local/bin/sqlite3
  - sqlite3-tcl-3.46.1_1,1 [GhostBSD] conflicts with sqlite3-3.46.1_1,1 [GhostBSD] on /usr/local/bin/sqlite3
  - mozjpeg-4.1.5 [FreeBSD] conflicts with jpeg-turbo-3.1.0 [installed] on /usr/local/bin/cjpeg
  - mozjpeg-4.1.5 [FreeBSD] conflicts with jpeg-turbo-3.1.0 [GhostBSD] on /usr/local/bin/cjpeg
  - mozjpeg-4.1.5 [FreeBSD] conflicts with jpeg-turbo-3.1.0 [FreeBSD] on /usr/local/bin/cjpeg
  - mozjpeg-4.1.5 [GhostBSD] conflicts with jpeg-turbo-3.1.0 [installed] on /usr/local/bin/cjpeg
  - talloc242-2.4.2_2 [FreeBSD] conflicts with talloc-2.4.1 [installed] on /usr/local/include/pytalloc.h
  - talloc242-2.4.2_1 [GhostBSD] conflicts with talloc-2.4.1 [installed] on /usr/local/include/pytalloc.h
  - fam-2.6.10_10 [GhostBSD] conflicts with gamin-0.1.10_10 [installed] on /usr/local/include/fam.h
  - fam-2.6.10_10 [GhostBSD] conflicts with gamin-0.1.10_10 [FreeBSD] on /usr/local/include/fam.h
  - pkg-devel-2.0.99.5 [GhostBSD] conflicts with pkg-2.0.6 [installed] on /usr/local/etc/bash_completion.d/_pkg.bash
  - pkg-devel-2.0.99.5 [GhostBSD] conflicts with pkg-1.21.3 [GhostBSD] on /usr/local/etc/bash_completion.d/_pkg.bash
  - pkg-devel-2.0.99.5 [GhostBSD] conflicts with pkg-2.0.6 [FreeBSD] on /usr/local/etc/bash_completion.d/_pkg.bash
  - llvm19-lite-19.1.7_1 [GhostBSD] conflicts with llvm19-19.1.7_1 [installed] on /usr/local/llvm19/lib/clang/19/include/arm_bf16.h
  - llvm19-lite-19.1.7_1 [GhostBSD] conflicts with llvm19-19.1.7_1 [GhostBSD] on /usr/local/llvm19/lib/clang/19/include/arm_bf16.h
Checking integrity... done (0 conflicting)
The following 16 package(s) will be affected (of 0 checked):

New packages to be INSTALLED:
	py311-PyQt5-sip: 12.17.0 [GhostBSD]
	py311-qt5: 5.15.11_1 [GhostBSD]
	py311-qt5-3d: 5.15.7 [GhostBSD]
	py311-qt5-charts: 5.15.7 [GhostBSD]
	py311-qt5-datavis3d: 5.15.6 [GhostBSD]
	py311-qt5-networkauth: 5.15.6 [GhostBSD]
	py311-qt5-pyqt: 5.15.11 [GhostBSD]
	qt5-3d: 5.15.16p0_1 [FreeBSD]
	qt5-charts: 5.15.16p0_1 [FreeBSD]
	qt5-connectivity: 5.15.16p1_1 [FreeBSD]
	qt5-datavis3d: 5.15.16p0_1 [FreeBSD]
	qt5-imageformats: 5.15.16p2 [GhostBSD]
	qt5-quick3d: 5.15.16p1_1 [FreeBSD]
	qt5-remoteobjects: 5.15.16p0_1 [FreeBSD]
	qt5-sensors: 5.15.16p0_1 [FreeBSD]
	schilybase: 2024.03.21_1 [FreeBSD]

Number of packages to be installed: 16

The process will require 65 MiB more space.

Proceed with this action? [y/N]: y
[1/16] Installing py311-PyQt5-sip-12.17.0...
[1/16] Extracting py311-PyQt5-sip-12.17.0: 100%
[2/16] Installing qt5-3d-5.15.16p0_1...
[2/16] Extracting qt5-3d-5.15.16p0_1: 100%
[3/16] Installing qt5-charts-5.15.16p0_1...
[3/16] Extracting qt5-charts-5.15.16p0_1: 100%
[4/16] Installing qt5-connectivity-5.15.16p1_1...
[4/16] Extracting qt5-connectivity-5.15.16p1_1: 100%
[5/16] Installing qt5-datavis3d-5.15.16p0_1...
[5/16] Extracting qt5-datavis3d-5.15.16p0_1: 100%
[6/16] Installing qt5-imageformats-5.15.16p2...
[6/16] Extracting qt5-imageformats-5.15.16p2: 100%
[7/16] Installing qt5-quick3d-5.15.16p1_1...
[7/16] Extracting qt5-quick3d-5.15.16p1_1: 100%
[8/16] Installing qt5-remoteobjects-5.15.16p0_1...
[8/16] Extracting qt5-remoteobjects-5.15.16p0_1: 100%
[9/16] Installing qt5-sensors-5.15.16p0_1...
[9/16] Extracting qt5-sensors-5.15.16p0_1: 100%
[10/16] Installing py311-qt5-pyqt-5.15.11...
[10/16] Extracting py311-qt5-pyqt-5.15.11: 100%
[11/16] Installing py311-qt5-3d-5.15.7...
[11/16] Extracting py311-qt5-3d-5.15.7: 100%
[12/16] Installing py311-qt5-charts-5.15.7...
[12/16] Extracting py311-qt5-charts-5.15.7: 100%
[13/16] Installing py311-qt5-datavis3d-5.15.6...
[13/16] Extracting py311-qt5-datavis3d-5.15.6: 100%
[14/16] Installing py311-qt5-networkauth-5.15.6...
[14/16] Extracting py311-qt5-networkauth-5.15.6: 100%
[15/16] Installing py311-qt5-5.15.11_1...
[15/16] Extracting py311-qt5-5.15.11_1: 100%
[16/16] Installing schilybase-2024.03.21_1...
[16/16] Extracting schilybase-2024.03.21_1: 100%
```



```
strnh@ghostbsd ~/w/WG_client_manager (master)> pip install PyQt5
Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: PyQt5 in /usr/local/lib/python3.11/site-packages (5.15.11)
Requirement already satisfied: PyQt5-sip<13,>=12.15 in /usr/local/lib/python3.11/site-packages (from PyQt5) (12.17.0)
strnh@ghostbsd ~/w/WG_client_manager (master)> ls
configs/        icons/          qr_generate.py  screenshots/
design/         main.py         README.md       settings.json
strnh@ghostbsd ~/w/WG_client_manager (master)> python ./main.py
Traceback (most recent call last):
  File "/home/hiko/work/WG_client_manager/./main.py", line 5, in <module>
    from routeros_api.exceptions import RouterOsApiCommunicationError
ModuleNotFoundError: No module named 'routeros_api'
strnh@ghostbsd ~/w/WG_client_manager (master) [1]> 


```
* 動かそうとしたのが、Mikrotik RouterOS用だとわかった。残念😅

## 修正する？

* RouterOS は知らない仲ではないけど、GhostBSDのお供には使えなさそう。
* とりあえず使えそうなものが無さそうと思うのが肝心。