File indexing completed on 2024-05-12 04:17:32
0001 #!/bin/bash 0002 0003 # Script to install dependencies under Ubuntu Linux to compile digiKam. 0004 # This script must be run as sudo 0005 # *Ubuntu* compatible version >= 18.04 0006 # 0007 # SPDX-FileCopyrightText: 2021 by TRAN Quoc Hung <quochungtran1999 at gmail dot com> 0008 # SPDX-FileCopyrightText: 2021 by Surya K M <suryakm_is20 dot rvitm@rvei dot edu dot in> 0009 # SPDX-FileCopyrightText: 2021-2024 by Gilles Caulier <caulier dot gilles at gmail dot com> 0010 # SPDX-FileCopyrightText: 2024 by Joerg Lohse <joergmlpts at gmail dot com> 0011 0012 # 0013 # SPDX-License-Identifier: BSD-3-Clause 0014 # 0015 0016 # Check OS name and version. 0017 0018 OS_NAME=$(awk '/DISTRIB_ID=/' /etc/*-release | sed 's/DISTRIB_ID=//' | sed 's/\"//' | sed 's/\"//' | tr '[:upper:]' '[:lower:]') 0019 OS_ARCH=$(uname -m | sed 's/x86_//;s/i[3-6]86/32/') 0020 OS_VERSION=$(awk '/DISTRIB_RELEASE=/' /etc/*-release | sed 's/DISTRIB_RELEASE=//' | sed 's/[.]0/./') 0021 0022 echo $OS_NAME 0023 echo $OS_ARCH 0024 echo $OS_VERSION 0025 0026 if [[ "$OS_NAME" != "ubuntu" ]] ; then 0027 echo "Not running Linux ubuntu..." 0028 exit -1 0029 fi 0030 0031 0032 echo "Check the list of dependencies in the online doc API : https://www.digikam.org/api/index.html#externaldeps" 0033 echo "-------------------------------------------------------------------" 0034 0035 # To download package information from all configured sources.' 0036 0037 sudo apt-get update 0038 sudo apt-get upgrade 0039 0040 # Benefit from a higher version of certain software , update the key 0041 0042 sudo apt-key adv --refresh-keys --keyserver keyserver.ubuntu.com 0043 sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main" 0044 0045 # To fix GPP key error with some repositories 0046 # See: https://www.skyminds.net/linux-resoudre-les-erreurs-communes-de-cle-gpg-dans-apt/ 0047 0048 sudo apt-get update 2>&1 | \ 0049 sed -ne 's?^.*NO_PUBKEY ??p' | \ 0050 xargs -r -- sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 0051 0052 # Install dependencies to checkout source code 0053 0054 sudo apt-get install -y git git-lfs 0055 0056 echo "-------------------------------------------------------------------" 0057 0058 sudo apt-get install -y perl 0059 0060 echo "-------------------------------------------------------------------" 0061 0062 # Install required dependencies to compile and link source code 0063 0064 required_packages=("cmake" # To Compile Source Code 0065 "ninja-build" # To Compile Source Code 0066 "extra-cmake-modules" # To Compile Source Code 0067 "build-essential" # To Compile Source Code 0068 "qttools5-dev-tools" # To handle Qt5 configuration. 0069 0070 "libqt5core5a" # Qt 5 core module 0071 "libqt5gui5" # Qt 5 Gui module 0072 "libqt5widgets5" # Qt 5 widget module 0073 "libqt5network5" # Qt 5 network module 0074 "libqt5sql5" # Qt 5 SQL module 0075 "libqt5sql5-mysql" # Qt 5 SQL module 0076 "libqt5sql5-sqlite" # Qt 5 SQL module 0077 "libqt5xml5" # Qt 5 XML module 0078 "libqt5concurrent5" # Qt 5 Concurrent module 0079 "libqt5printsupport5" # Qt 5 PrintSupport module 0080 "libqt5svg5" # Qt 5 Svg module 0081 "libqt5webengine5" # Qt 5 webengine module 0082 "qtwebengine5-dev" # Qt 5 webengine module 0083 "libqt5networkauth5-dev" # Qt 5 network authentification. 0084 0085 "libkf5config-dev" # Configuration settings framework for Qt 0086 "libkf5xmlgui-dev" # User configurable main windows 0087 "libkf5i18n-dev" # Advanced internationalization framework 0088 "libkf5windowsystem-dev" # Development files for kwindowsystem 0089 "libkf5service-dev" # Development files for kservice 0090 "libkf5solid-dev" # Qt library to query and control hardware 0091 "libkf5coreaddons-dev" # Development files - KDE Frameworks 5 addons to QtCore 0092 0093 "libopencv-dev" # Development files for opencv 0094 "libpthread-stubs0-dev" # Development files for pthread 0095 "libtiff-dev" # Tag image file format library 0096 "libpng-dev" # PNG library 0097 "libjpeg-dev" # JPEG library 0098 "libboost-all-dev" # Boots C++ Libraries 0099 "liblcms2-dev" # Little CMS 2 color management library 0100 "libexpat1-dev" # XML parsing C library 0101 "libexiv2-dev" # Metadata manipulation library 0102 ) 0103 0104 0105 for pkg in ${required_packages[@]}; do 0106 0107 sudo apt-get install -y ${pkg} 0108 0109 current_version=$(dpkg-query --showformat='${Version}' --show ${pkg}) 0110 0111 case "${pkg}" in 0112 "cmake") 0113 required_version=3.3.2 0114 ;; 0115 "extra-cmake-modules") 0116 required_version=5.5.0 0117 ;; 0118 "build-essential") 0119 required_version=7.2.0 0120 ;; 0121 "libqt5core5a") 0122 required_version=5.9.0 0123 ;; 0124 "libkf5config-dev") 0125 required_version=5.5.0 0126 ;; 0127 "libopencv-dev") 0128 required_version=3.3.0 0129 ;; 0130 "libpthread-stubs0-dev") 0131 required_version=2.0.0 0132 ;; 0133 "libtiff-dev") 0134 required_version=4.0.0 0135 ;; 0136 "libpng-dev") 0137 required_version=1.6.0 0138 ;; 0139 "libjpeg-dev") 0140 required_version=6b 0141 ;; 0142 "libboost-all-dev") 0143 required_version=1.55.0 0144 ;; 0145 "liblcms2-dev") 0146 required_version=2.0.0 0147 ;; 0148 "libexpat1-dev") 0149 required_version=2.1.0 0150 ;; 0151 "libexiv2-dev") 0152 required_version=0.27.0 0153 ;; 0154 esac 0155 0156 echo $current_version 0157 0158 if $(dpkg --compare-versions "$current_version" "lt" "$required_version"); then 0159 echo "less than $required_version"; 0160 echo "please upgrade newer version or another packages"; 0161 else 0162 echo "greater than $required_version ............. accepted"; 0163 fi 0164 0165 echo "-------------------------------------------------------------------" 0166 0167 done 0168 0169 # Install optional dependencies to compile and link source code 0170 0171 optional_packages=("ruby" # For i18n extraction 0172 "subversion" # For i18n extraction 0173 "hunspell" # For check spelling 0174 "valgrind" # For debuging 0175 "keychain" # For git-ssh 0176 "ssh-askpass" # For git-ssh 0177 "lzip" # For CI/CD 0178 "gzip" # For CI/CD 0179 "unzip" # For CI/CD 0180 "unrar" # For CI/CD 0181 "autoconf" # For MXE build 0182 "automake" # For MXE build 0183 "autopoint" # For MXE build 0184 "bash" # For MXE build 0185 "bison" # For MXE build 0186 "bzip2" # For MXE build 0187 "flex" # For MXE build 0188 "gcc-mingw-w64" # For MXE build 0189 "g++" # For MXE build 0190 "g++-multilib" # For MXE build 0191 "gettext" # For MXE build 0192 "git" # For MXE build 0193 "gperf" # For MXE build 0194 "icoutils" # For MXE build 0195 "intltool" # For MXE build 0196 "libc6-dev-i386" # For MXE build 0197 "libgdk-pixbuf2.0-dev" # For MXE build 0198 "gtk-doc-tools" # For MXE build 0199 "libltdl-dev" # For MXE build 0200 "libgl-dev" # For MXE build 0201 "libssl-dev" # For MXE build 0202 "libtool" # For MXE build 0203 "libtool-bin" # For MXE build 0204 "libxml-parser-perl" # For MXE build 0205 "lzip" # For MXE build 0206 "make" # For MXE build 0207 "openssl" # For MXE build 0208 "p7zip-full" # For MXE build 0209 "patch" # For MXE build 0210 "perl" # For MXE build 0211 "python3" # For MXE build 0212 "python3-mako" # For MXE build 0213 "python3-pkg-resources" # For MXE build 0214 "python-is-python3" # For MXE build 0215 "ruby" # For MXE build 0216 "scons" # For MXE build 0217 "sed" # For MXE build 0218 "unzip" # For MXE build 0219 "wget" # For MXE build 0220 "xz-utils" # For MXE build 0221 "python3-pygments" # For Cppcheck static analysis 0222 "python3-bs4" # For Clazy static analysis 0223 "python3-soupsieve" # For Clazy static analisys 0224 "cppcheck" # For static analysis 0225 "clang" # For static analysis 0226 "clang-tidy" # For static analysis 0227 "clang-tools" # For static analysis 0228 "libasan4" # For static analysis 0229 "openjdk-18-jre" # For static analysis 0230 "libsaxonhe-java" # For static analysis 0231 "libxml-perl" # For static analysis 0232 "libxml-libxml-perl" # For static analysis 0233 "libyaml-libyaml-perl" # For static analysis 0234 "libyaml-perl" # For static analysis 0235 "libjson-perl" # For static analysis 0236 "llvm" # For static analysis 0237 "clazy" # For static analysis 0238 "libclang-dev" # For static analysis 0239 "doxygen" # For API doc 0240 "graphviz" # For API doc 0241 "kate" # For debuging 0242 "ktexteditor-katepart" # For debuging 0243 "ccache" # For compiling 0244 "hugin" # For run-time processing 0245 "exiftool" # For metadata processing 0246 "bison" # For Qt build (>= 2.5.0) 0247 "flex" # For compiling (>= 2.5.0) 0248 "mariadb-server" # Run-time: mysql internal server init 0249 "curl" # For CI/CD 0250 "wget" # For CI/CD 0251 "coreutils" # For CI/CD 0252 "dmg2img" # For CI/CD (MacOS) 0253 "tesseract-ocr" # For CI/CD (MacOS) 0254 "libeigen3-dev" # >= 3.2 0255 "liblensfun-dev" # >= 0.2.8 0256 "libgomp1" # For Libraw compilation 0257 "libavdevice-dev" # >= 3.3.x 0258 "libavfilter-dev" # >= 3.3.x 0259 "libavformat-dev" # >= 3.3.x 0260 "libavcodec-dev" # >= 3.3.x 0261 "libavutils-dev" # >= 3.3.x 0262 "libpostproc-dev" # >= 3.3.x 0263 "libgphoto2-dev" # >= 2.5 0264 "libsane-dev" # >= 5.0.0 0265 "libjasper-dev" # >= 1.900.1 0266 "libheif-dev" 0267 "libxslt-dev" # >= 1.1.0 0268 "libxml2-dev" # >= 2.7.0 0269 "libtiff-dev" # >= 4.0 0270 "liblqr-dev" # >= 0.4.2 0271 "libfftw3-dev" # For GMic-Qt compilation 0272 "libx265-dev" # >= 2.2 0273 "libmagick++-dev" # >= 6.7.0 0274 "libqt5x11extras5-dev" # >= 5.9 0275 "libqt5test5" # >= 5.9 0276 "libqt5xml5" # >= 5.9 0277 "qttools5-dev" # >= 5.9 0278 "libqt5xmlpatterns5-dev" # >= 5.9 0279 "libqt5opengl5-dev" # >= 5.9 0280 "libkf5sane-dev" # >= 5.5.0 0281 "libkf5threadweaver-dev" # >= 5.5.0 0282 "libkf5kio-dev" # >= 5.5.0 0283 "libkf5sonnet-dev" # >= 5.5.0 0284 "libkf5notifications-dev" # >= 5.5.0 0285 "libkf5notifyconfig-dev" # >= 5.5.0 0286 "libkf5filemetadata-dev" # >= 5.5.0 0287 "libkf5calendarcore-dev" # >= 5.5.0 0288 "libkf5akonadicontact-dev" # >= 4.89.0 0289 "libkf5doctools-dev" 0290 "libkf5filemetadata-dev" # Files indexer engine for Plasma desktop 0291 "libinih-dev" # For Exiv2 0292 "libbrotli-dev" # For Exiv2 0293 #TODO add new optional packages 0294 ) 0295 0296 for pkg in ${optional_packages[@]}; do 0297 sudo apt-get install -y ${pkg} 0298 echo "-------------------------------------------------------------------" 0299 done 0300 0301 # Add symbolic links for Krazy static analyzer 0302 0303 sudo ln -sf /usr/share/java /opt/saxon 0304 sudo ln -sf /usr/share/java/Saxon-HE.jar /usr/share/java/saxon9he.jar 0305 0306 echo "Remove SNAP and install Native Firefox package" 0307 echo "-------------------------------------------------------------------" 0308 0309 sudo systemctl disable snapd.service 0310 sudo systemctl disable snapd.socket 0311 sudo systemctl disable snapd.seeded.service 0312 0313 sudo snap remove firefox 0314 sudo snap remove snap-store 0315 sudo snap remove gtk-common-themes 0316 0317 sudo snap remove gnome-3-38-2004 0318 sudo snap remove gnome-32-2204 0319 sudo snap remove gnome-42-2204 0320 sudo snap remove core20 0321 sudo snap remove core22 0322 sudo snap remove bare 0323 sudo snap remove snapd 0324 sudo snap remove snapd-desktop-integration 0325 0326 sudo rm -rf /var/cache/snapd/ 0327 sudo apt autoremove --purge snapd 0328 rm -rf ~/snap 0329 0330 sudo tee /etc/apt/preferences.d/firefox-no-snap << EOF 0331 Package: firefox* 0332 Pin: release o=Ubuntu* 0333 Pin-Priority: -1 0334 EOF 0335 0336 sudo add-apt-repository ppa:mozillateam/ppa 0337 0338 sudo apt install firefox