Rabbit Remote Control 0.0.33
|
Author: Kang Lin kl222.nosp@m.@126.nosp@m..com
Translator: Allan Nordhøy epost.nosp@m.@ano.nosp@m.thera.nosp@m.genc.nosp@m.y.no
# Only build AppImage ./Script/build_linux.sh --appimage # Only build deb package ./Script/build_linux.sh --deb
See: Script
~$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 24.04.1 LTS Release: 24.04 Codename: noble
~$ lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 12 (bookworm) Release: 12 Codename: bookworm
Version: v15.0.0 It is recommended to use version v5.0.2 or later.
Prior versions don't have CMake support.
~$ sudo apt install build-essential
~$ sudo apt install g++ gcc
~$ sudo apt install automake autoconf make fakeroot
~$ sudo apt install git
Version: Greater than 3.27.0
~$ sudo apt install cmake
~$ sudo apt install debhelper
export QT_ROOT=Qt install root # Needed by complied AppImage export QMAKE=$QT_ROOT/bin/qmake # When Qt6 export Qt6_ROOT=$QT_ROOT # When Qt5 export Qt5_ROOT=$QT_ROOT # Or # When Qt6 export Qt6_DIR=$QT_ROOT/lib/cmake/Qt6 # When Qt5 export Qt5_DIR=$QT_ROOT/lib/cmake/Qt5
# Qt6 cmake -DQT_ROOT=[Qt install root] -DQt6_DIR=[Qt install root]/lib/cmake/Qt6 ...... # Qt5 cmake -DQT_ROOT=[Qt install root] -DQt5_DIR=[Qt install root]/lib/cmake/Qt5 ...... # Needed by complied AppImage export QMAKE=$QT_ROOT/bin/qmake
~$ sudo apt install qttools5-dev qttools5-dev-tools qtbase5-dev qtbase5-dev-tools qtmultimedia5-dev qtlocation5-dev libqt5svg5-dev libqtermwidget5-0-dev
~$ sudo apt install qmake6 qt6-tools-dev qt6-tools-dev-tools qt6-base-dev qt6-base-dev-tools qt6-qpa-plugins libqt6svg6-dev qt6-l10n-tools qt6-translations-l10n qt6-scxml-dev qt6-multimedia-dev libqt6serialport6-dev
l@l:/home/RabbitRemoteControl$ qtchooser Usage: qtchooser { -l | -list-versions | -print-env } qtchooser -install [-f] [-local] <name> <path-to-qmake> qtchooser -run-tool=<tool name> [-qt=<Qt version>] [program arguments] <executable name> [-qt=<Qt version>] [program arguments] Environment variables accepted: QTCHOOSER_RUNTOOL name of the tool to be run (same as the -run-tool argument) QT_SELECT version of Qt to be run (same as the -qt argument)
l@l:/home/RabbitRemoteControl$ qtchooser -l 4 5 default qt4-x86_64-linux-gnu qt4 qt5-x86_64-linux-gnu qt5 qt6 # View the Qt version of your current environment l@l:/home/RabbitRemoteControl$ qtchooser --print-env QT_SELECT="default" QTTOOLDIR="[Paths]" QTLIBDIR="Prefix=/usr"
export QT_SELECT=qt6 # Set the Qt6 version of your current environment # View the Qt version of your current environment l@l:/home/RabbitRemoteControl$ qtchooser --print-env QT_SELECT="qt6" QTTOOLDIR="/usr/lib/qt6/bin" QTLIBDIR="/usr/lib/aarch64-linux-gnu"
Prior versions don't have CMake support.
~$ sudo apt install qtcreator
~$ sudo apt install libglu1-mesa-dev
~$ sudo apt install doxygen
~$ git clone https://github.com/KangLin/RabbitRemoteControl.git ~$ git clone https://github.com/KangLin/RabbitCommon.git
~$ git clone https://github.com/KangLin/RabbitRemoteControl.git # Set environment variable ~$ export RabbitCommon_ROOT=[RabbitCommon install root] ~$ cd RabbitRemoteControl # Or set CMake parameters ~/RabbitRemoteControl$ cmake -DRabbitCommon_ROOT=[RabbitCommon installation path] ......
~$ sudo apt install freerdp3-dev
~$ git clone https://github.com/microsoft/vcpkg.git ~$ cd vcpkg ~/vcpkg$ ./bootstrap-vcpkg.sh ~/vcpkg$ ./vcpkg install freerdp
~$ git clone https://github.com/FreeRDP/FreeRDP.git ~$ cd FreeRDP ~/FreeRDP$ mkdir build ~/FreeRDP/build$ cmake .. -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=`pwd`/install -DWITH_SERVER=ON ~/FreeRDP/build$ cmake --build . --config Release --target install
~$ sudo apt install libvncserver-dev
-DLibVNCServer_DIR=[LibVNCServer installation path]/lib/cmake/LibVNCServer
~$ sudo apt install libpixman-1-dev ~$ git clone https://github.com/KangLin/RabbitVNC.git ~$ cd RabbitVNC ~/RabbitVNC$ mkdir build ~/RabbitVNC$ cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=`pwd`/install ~/RabbitVNC$ cmake --build . --config Release --target install
-DRabbitVNC_DIR=[RabbitVNC installation path]/lib/cmake/tigervnc
The official program does not support libraries. See: https://github.com/TigerVNC/tigervnc/issues/1123
The KangLin fork has support. Source-code location: https://github.com/KangLin/tigervnc
~$ sudo apt install libpixman-1-dev ~$ git clone https://github.com/KangLin/tigervnc.git ~$ cd tigervnc ~/tigervnc$ mkdir build ~/tigervnc$ cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=`pwd`/install ~/tigervnc$ cmake --build . --config Release --target install
-Dtigervnc_DIR=[TigerVNC installation path]/lib/cmake/tigervnc
~$ git clone https://github.com/microsoft/vcpkg.git ~$ cd vcpkg ~/vcpkg$ ./vcpkg install libdatachannel
~$ git clone https://github.com/paullouisageneau/libdatachannel.git ~$ cd libdatachannel ~/libdatachannel$ git submodule update --init --recursive ~/libdatachannel$ mkdir build ~/libdatachannel$ cd build ~/libdatachannel/build$ cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=`pwd`/install ~/libdatachannel/build$ cmake --build . --config Release --target install
-DLibDataChannel_DIR=[libdatachannel installation path]/lib/cmake/LibDataChannel
~$ sudo apt install libqxmpp-dev
~$ git clone https://github.com/qxmpp-project/qxmpp.git ~$ cd qxmpp ~/qxmpp$ mkdir build ~/qxmpp$ cd build ~/qxmpp/build$ cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=`pwd`/install -DQt5_DIR=[Qt install path]/lib/cmake/Qt5 ~/qxmpp/build$ cmake --build . --config Release --target install
-DQXmpp_DIR=[libdatachannel installation path]/lib/cmake/qxmpp
~$ sudo apt install libqtermwidget5-0-dev
-Dqtermwidget5_DIR=[qtermwidget installation path]/lib/cmake/qtermwidget5
~$ sudo apt install libssh-dev
~$ git clone https://github.com/microsoft/vcpkg.git ~$ cd vcpkg ~/vcpkg$ ./vcpkg install libssh
-Dlibssh_DIR=[libssh installation path]/lib/cmake/libssh
~$ git clone https://github.com/KangLin/qt-solutions.git ~$ cd qt-solutions ~/qt-solutions$ mkdir build ~/qt-solutions$ cd build ~/qt-solutions/build$ cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=`pwd`/install ~/qt-solutions/build$ cmake --build . --config Release --target install
-DQtService_DIR=[QtService installation path]/lib/cmake/QtService
~$ git clone https://github.com/seladb/PcapPlusPlus.git
~$ git clone https://github.com/microsoft/vcpkg.git ~$ cd vcpkg ~/vcpkg$ ./vcpkg install pcapplusplus
-DPcapPlusPlus_DIR=[PcapPlusPlus install path]/lib/cmake/pcapplusplus
It is depended by PcapPlusPlus
~$ sudo apt install libpcap-dev
~$ git clone https://github.com/KangLin/RabbitRemoteControl.git
~$ cd RabbitRemoteControl ~/RabbitRemoteControl$ mkdir build ~/RabbitRemoteControl/build$ cmake .. \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=`pwd`/install [...] ~/RabbitRemoteControl/build$ cmake --build . \ --config Release --target install
~$ cd RabbitRemoteControl ~/RabbitRemoteControl$ mkdir build ~/RabbitRemoteControl/build$ cmake .. -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=`pwd`/install \ -DCMAKE_TOOLCHAIN_FILE=[vcpkg installation path]/scripts/buildsystems/vcpkg.cmake \ [options libraries] ~/RabbitRemoteControl/build$ cmake --build . \ --config Release --target install
export RabbitVNC_DIR=[RabbitVNC installation path]/lib/cmake/RabbitVNC export tigervnc_DIR=[TigerVNC installation path]/lib/cmake/tigervnc
./Script/build_debpackage.sh $QT_ROOT $RabbitCommon_ROOT
~$ cd RabbitRemoteControl ~/RabbitRemoteControl$ cd build/install/bin ~/RabbitRemoteControl$ ./RabbitRemoteControl.sh # Or ~/RabbitRemoteControl$ ./RabbitRemoteControlAppNote: If the plugin does not load. It may be that the plugin's dependencies are not installed on the system. You can add the path of the dependency libraries to the environment variable LD_LIBRARY_PATH. You can also add the path of the dependency libraries to the /etc/ld.so.conf file, and then run ldconfig to add the dependency libraries to the system.
```bash #Install the development tools package ~$ sudo apt install build-essential # Install tools ~$ sudo apt install git cmake debhelper doxygen # Install Qt5 ~$ sudo apt install qttools5-dev qttools5-dev-tools qtbase5-dev \ qtbase5-dev-tools qtmultimedia5-dev qtlocation5-dev libqt5svg5-dev \ libqtermwidget5-0-dev # Install dependency libraries ~$ sudo apt install freerdp2-dev libvncserver-dev libssh-dev libtelnet-dev # Install X development libraries ~$ sudo apt install libxkbcommon-dev libxkbcommon-x11-dev libx11-xcb-dev \ libx11-dev libxfixes-dev ~$ sudo apt install libutf8proc-dev libpam0g-dev # Need by compile qtermwidget # Install libpixman, RabbitVNC and TigerVNC need it. ~$ sudo apt install libpixman-1-dev libjpeg-dev # Compile RabbitVNC ~$ git clone https://github.com/KangLin/RabbitVNC.git ~$ cd RabbitVNC ~$ mkdir build ~/RabbitVNC/build$ cmake .. -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=`pwd`/install ~/RabbitVNC/build$ cmake --build . --config Release --target install ~/RabbitVNC/build$ cd ~ # Compile TigerVNC ~$ git clone https://github.com/KangLin/tigervnc.git ~$ cd tigervnc ~$ mkdir build ~/tigervnc/build$ cmake .. -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=`pwd`/install ~/tigervnc/build$ cmake --build . --config Release --target install ~/tigervnc/build$ cd ~ ~$ sudo apt install libqxmpp-dev # Compile libdatachannel ~$ git clone https://github.com/paullouisageneau/libdatachannel.git ~$ cd libdatachannel ~/libdatachannel$ git submodule update --init --recursive ~/libdatachannel$ mkdir build ~/libdatachannel$ cd build ~/libdatachannel/build$ cmake .. -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=`pwd`/install ~/libdatachannel/build$ cmake --build . --config Release --target install ~/libdatachannel/build$ cd ~ # Compile QtService ~$ git clone https://github.com/KangLin/qt-solutions.git ~$ cd qt-solutions/qtservice ~/qt-solutions/qtservice$ mkdir build ~/qt-solutions/qtservice$ cd build ~/qt-solutions/qtservice/build$ cmake .. -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=`pwd`/install ~/qt-solutions/qtservice/build$ cmake --build . --config Release --target install ~/qt-solutions/qtservice/build$ cd ~ ~$ git clone https://github.com/KangLin/RabbitCommon.git ~$ git clone https://github.com/KangLin/RabbitRemoteControl.git ~$ cd RabbitRemoteControl ~/RabbitRemoteControl$ mkdir build ~/RabbitRemoteControl$ cd build ~/RabbitRemoteControl/build$ cmake .. -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=`pwd`/install \ -DRabbitVNC_DIR=~/RabbitVNC/build/install/lib/cmake/RabbitVNC \ -Dtigervnc_DIR=~/tigervnc/build/install/lib/cmake/tigervnc \ -DBUILD_FREERDP=ON \ -DLibDataChannel_DIR=~/libdatachannel/build/install/lib/cmake/LibDataChannel \ -DQtService_DIR=~/qt-solutions/qtservice/build/lib/cmake/QtService ~/RabbitRemoteControl/build$ cmake --build . --config Release --target install ```
See: Script
~/RabbitRemoteControl/build$ cmake .. \ -DCMAKE_INSTALL_PREFIX=/usr \ -DCMARK_SHARED=OFF \ -DCMARK_TESTS=OFF \ -DCMARK_STATIC=ON \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=/usr \ -DBUILD_QUIWidget=OFF \ -DBUILD_APP=ON \ -DBUILD_FREERDP=ON cmake --build . --parallel $(nproc) cmake --install . --config Release --component DependLibraries --prefix AppDir/usr cmake --install . --config Release --component Runtime --prefix AppDir/usr cmake --install . --config Release --component Application --prefix AppDir/usr cmake --install . --config Release --component Plugin --prefix AppDir/usr
# See: https://github.com/linuxdeploy/linuxdeploy-plugin-qt #export QMAKE=${QT_ROOT}/bin/qmake export EXTRA_PLATFORM_PLUGINS="libqxcb.so" # Icons from theme are not displayed in QtWidgets Application: https://github.com/linuxdeploy/linuxdeploy-plugin-qt/issues/17 export EXTRA_QT_MODULES="svg" ./linuxdeploy-`uname -m`.AppImage --appdir=AppDir -v0 \ --deploy-deps-only=AppDir/usr/plugins/Client \ --deploy-deps-only=AppDir/usr/lib/`uname -m`-linux-gnu \ --plugin qt \ --output appimage
sudo chmod u+x ./Rabbit_Remote_Control-`uname -m`.AppImage ./Rabbit_Remote_Control-`uname -m`.AppImage
./Rabbit_Remote_Control-`uname -m`.AppImage --appimage-extract
FUSE issue
When you run the AppImage file for the first time, you may encounter PUSE-related issues, and the following error message is displayed:
Solution: Install fuse2
sudo apt install fuse
Fuse issue in docker
When creating a container, add the parameter: --privileged
docker run --privileged --interactive ubuntu
snapcraft pull [<part-name>] snapcraft build [<part-name>] snapcraft stage [<part-name>] snapcraft prime [<part-name>] snapcraft pack or snapcraft
$ snapcraft prime -v --debug --shell Using 'snap/snapcraft.yaml': Project assets will be searched for from the 'snap' directory. Launching a VM. Launched: snapcraft-test [...] Pulling part-test Building part-test Staging part-test snapcraft-test #
snapcraft clean
snap install ./rabbitremotecontrol_0.0.27_amd64.snap --devmode
rabbitremotecontrol
snap remove rabbitremotecontrol
$ sudo dnf install flatpak flatpak-builder
$ sudo apt-get update && sudo apt-get install flatpak flatpak-builder
$ sudo pacman -Sy flatpak flatpak-builder
$ flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
$ flatpak remotes --show-details
$ flatpak-builder build-dir RabbitRemoteControl/io.github.KangLin.RabbitRemoteControl.json ** (flatpak-builder:37): WARNING **: 03:05:45.408: Unknown property branch for type BuilderSourceDir error: org.kde.Sdk/x86_64/6.8 not installed Failed to init: Unable to find sdk org.kde.Sdk version 6.8Install sdk and runtime:
$ flatpak install org.kde.Sdk//6.8 org.kde.Platform//6.8After install sdk and runtime, Run again:
$ flatpak-builder --force-clean build-dir RabbitRemoteControl/io.github.KangLin.RabbitRemoteControl.json # or user $ flatpak-builder --user --force-clean --install build-dir /home/RabbitRemoteControl/Package/io.github.KangLin.RabbitRemoteControl.json
$ flatpak-builder --user --force-clean --install build-dir RabbitRemoteControl/io.github.KangLin.RabbitRemoteControl.json
$ flatpak run io.github.KangLin.RabbitRemoteControl
Fuse issue in docker
When creating a container, add the parameter: --privileged
docker run --privileged -v /home/RabbitRemoteControl:/home/RabbitRemoteControl -it ubuntu
# Only build AppImage ./Script/build_linux.sh --appimage # Only build deb package ./Script/build_linux.sh --deb # Build deb package and AppImage with docker ./Script/build_linux.sh --docker --deb --appimage
# If use Qt be installed from [Qt](download.qt.io) export QT_ROOT= export Qt6_ROOT=$QT_ROOT export QMAKE=$QT_ROOT/bin/qmake # If use the system-packaged Qt export QT_SELECT=qt6 # Note: The following environment variables must be absolute path export BUILD_DIR=`pwd`/build export INSTALL_DIR=$BUILD_DIR/install export SOURCE_DIR=$BUILD_DIR/source export TOOLS_DIR=$BUILD_DIR/tools # Install dependency libraries sudo ./Script/build_depend.sh --apt_update --base --default --rabbitcommon \ --tigervnc --pcapplusplus \ --install ${INSTALL_DIR} \ --source ${SOURCE_DIR} \ --tools ${TOOLS_DIR} \ --build ${BUILD_DIR} # Set dependency libraries environment variable export RabbitCommon_ROOT=${SOURCE_DIR}/RabbitCommon export tigervnc_DIR=${INSTALL_DIR}/lib/cmake/tigervnc export PcapPlusPlus_DIR=${INSTALL_DIR}/lib/cmake/pcapplusplus # Compile deb package ./Script/build_debpackage.sh # Compile AppImage ./Script/build_appimage.sh