Un script pour installer OpenDCP sur Debian8 Jessie

Répondre
Messages : 24
Enregistré le : dim. 13 avr. 2014 - 22:53

Un script pour installer OpenDCP sur Debian8 Jessie

Message

Salut à tous !

Après une nouvelle installation de Debian 8 (Jessie) sur ma machine principale, j'ai eu un peu de mal à réinstaller OpenDCP.
J'ai donc écrit un petit script en bash qui télécharge les sources à partir de Github, vérifie la présence ou installe la plupart des dépendances (y compris celles de Cmake)
avant de compiler OpenDCP.

Le script vérifie openssl, libtiff, openjpeg, libxml2, libxslt, cmake, g++, pkg-config, git, et les librairies dev : libssl-dev, libxml2-dev, libxslt1-dev, libxmlsec1-dev, libexpat1-dev, libtiff5-dev.

Ensuite vous pouvez choisir soit d'installer ce qui vient d'être compilé, dans /usr/local/bin ou de sortir un paquet .deb que vous pourrez installer plus tard (dans /usr/bin) avec gdebi, dpkg ou ce que vous voudrez.

Le script invoque sudo quand c'est nécessaire, votre utilisateur doit donc appartenir au groupe sudo. Votre mot de passe sera demandé le cas échéant.
Les sources téléchargées ne seront pas supprimées, vous devrez les gérer comme bon vous semble.

Ça a marché pour moi sur mes deux machines principales, une réinstallation complète (net-install) de jessie, et une mise à jour de wheezy vers jessie.
N'hésitez pas à me prévenir d'éventuels erreurs et oublis.

Quant au script lui-même (à coller dans un fichier vierge) :

Code : Tout sélectionner

#!/bin/bash
## by Zanobox, july 12th 2015

## Quelques variables

downl_dir=$HOME/bin/src
build_dir=$HOME/bin/opendcp-build

[ -z `which opendcp_xml` ] && no_odcp=true

if [ $no_odcp ]; then

	starting_place=`pwd`

	## Tester si on a les droits d'admin
	test_admin=`groups | sed s/.*sudo.*/ok_sudo/ | grep sudo`
	if [ "x$test_admin" == "xok_sudo" ]; then
		echo -e "...On a les droits d'administrateur, on continue."
	else
		echo -e "Désolé, il faut les privilèges d'administrateur pour effectuer l'installation."
		exit 0
	fi
	
	## Récupérer les sources
	
	[ ! -d $downl_dir ] && mkdir -p $downl_dir

	# Download opendcp
	cd $downl_dir
	if ! [ -f $downl_dir/master.zip ]; then
		echo
		echo -e "...téléchargement d' opendcp-master dans $downl_dir"
		wget https://github.com/tmeiczin/opendcp/archive/master.zip	
	fi
	
	# Unzip
	if ! [ -d $downl_dir/opendcp-master ]; then
		echo
		echo -e "...extraction d' opendcp-master dans $downl_dir" 
		unzip $downl_dir/master.zip
	fi
	
	
	## Resolution de dépendances manquantes
	
	# Pour commencer, il faudra cmake
	if [ -z `which cmake` ]; then 
		echo
		echo -e "...installation de cmake (mot de passe requis pour sudo)"
		sudo apt-get install -y cmake
	else
		echo
		echo -e "...cmake  déjà présent"
	fi
	
	# If not openssl
	if [ -z `which openssl` ]; then 
		echo
		echo -e "...installation de openssl on the system (mot de passe requis pour sudo)"
		sudo apt-get install -y g++
	else
		echo
		echo -e "...openssl  déjà présent"
	fi

	# If not /usr/bin/zlib
	if [ -z `which g++` ]; then 
		echo
		echo -e "...installation de g++ on the system (mot de passe requis pour sudo)"
		sudo apt-get install -y g++
	else
		echo
		echo -e "...g++  déjà présent"
	fi

	# If not pkg-config
	if [ -z `which pkg-config` ]; then 
		echo
		echo -e "...installation de pkg-config on the system (mot de passe requis pour sudo)"
		sudo apt-get install -y pkg-config
	else
		echo
		echo -e "...pkg-config  déjà présent"
	fi

	# If not git
	if [ -z `which git` ]; then 
		echo
		echo -e "...installation de git on the system (mot de passe requis pour sudo)"
		sudo apt-get install -y git
	else
		echo
		echo -e "...git  déjà présent"
	fi

	# Pour satisfaire cmake, il va falloir disposer des
	# paquets de développement de certaines bibliothèques.
	echo
	echo -e "...essai d'installation de bibliothèques -dev (mot de passe requis pour sudo)"

	sudo apt-get install -y \
		libssl-dev \
		libxml2-dev \
		libxslt1-dev \
		libxmlsec1-dev \
		libexpat1-dev \
		libtiff5-dev
		

	## Running cmake
	echo -e "Options disponibles :"
	echo -e "\t1) CLI (ligne de commande seulement)"
	echo -e "\t2) GUI (interface graphique + CLI)"
	echo -e "\t3) Paquet .deb pour debian (pour gDebi par exemple)"
	echo -e "\t4) Paquet .rpm pour les RedHat like."
	echo -en " :>"; read choice
	echo
	echo -e "...préparation du paquet avec cmake (mot de passe requis pour sudo)"
	case $choice in
		1)
			## Pre-build CLI only
			echo -e "...CLI only"
			option='-DENABLE_GUI=ON'
		;;
		2)
			## Pre-build GUI
			echo -e "...full GUI"
			option='-DENABLE_GUI=ON'
			
			# If not qt4/qt5
			if [ -z `which qt4-qmake` ]; then 
				echo
				echo -e "...installation de qt4-qmake (mot de passe requis pour sudo)"
				sudo apt-get install -y qt4-qmake
			else
				echo
				echo -e "...qt4-qmake déjà présent"
			fi
		;;
		3)
			## Pre-build DEB package
			echo -e "...paquet Debian"
			option='-DDEB=ON'
		;;
		3)
			## Pre-build RPM package
			echo -e "...paquet RPM"
			option='-DRPM=ON'
		;;
		*)
			echo -e "Option invalide. Relancer le script."
			exit 0
		;;
	esac
	
	
	## Starting the real deal
	
	[ ! -d $build_dir ] && mkdir -p $build_dir
	
	cd $build_dir
	
	sudo cmake \
		-DOPENSSL_ROOT_DIR=/usr/lib/i386-linux-gnu/ \
		-DCMAKE_CXX_COMPILER_ID=GNU \
		$option \
		$downl_dir/opendcp-master \
		|| exit 0

	## Make
	echo
	echo -e "...compilation et installation d'OpenDCP (mot de passe requis pour sudo)"
	sudo make 
	
	case $choice in
		3|4)
			## Si on voulait un paquet
			make package
		;;
		*)
			## Pour une installation locale
			sudo make install
		;;
	esac
	
	## Back
	cd $starting_place
	exit 0

else
	echo -e "...OpenDCP est déjà installé sur cette machine."
	exit 0
fi

Et comme toujours il faudra faire

Code : Tout sélectionner

chmod +x ~/bin/odcp-installer-fr.sh
(ou le nom que vous lui aurez donné) en supposant que vous l'avez copié dans /home/user/bin.

Enjoy !

Z.
Messages : 1
Enregistré le : lun. 10 mars 2014 - 15:32

Re: Un script pour installer OpenDCP sur Debian8 Jessie

Message

Bonjour,
ravi de voir un script pour Debian Jessie. Par contre pour moi, il me met une erreur et l'installation ne se finit pas bien...

Voici les messages, on dirait que les librairies Qt ne lui convienne pas...

Code : Tout sélectionner

CMake Warning at /usr/share/cmake-3.0/Modules/FindQt4.cmake:616 (message):
  /usr/bin/qmake reported QT_INSTALL_LIBS as "/usr/lib/x86_64-linux-gnu" but
  QtCore could not be found there.  Qt is NOT installed correctly for the
  target build environment.
Call Stack (most recent call first):
  gui/CMakeLists.txt:13 (FIND_PACKAGE)


CMake Error at /usr/share/cmake-3.0/Modules/FindQt4.cmake:621 (message):
  Could NOT find QtCore.  Check
  /home/rodrob/bin/opendcp-build/CMakeFiles/CMakeError.log for more details.
Call Stack (most recent call first):
  gui/CMakeLists.txt:13 (FIND_PACKAGE)


-- Configuring incomplete, errors occurred!
See also "/home/rodrob/bin/opendcp-build/CMakeFiles/CMakeOutput.log".
Dans les logs qu'il suggère de regarder, en fin de compilation, cela donne :

Code : Tout sélectionner

make[1]: Leaving directory '/home/rodrob/bin/opendcp-build/CMakeFiles/CMakeTmp'

Source file was:

#include <omp.h>
int main() {
#ifdef _OPENMP
  return 0;
#else
  breaks_on_purpose
#endif
}
003654
Messages : 4
Enregistré le : ven. 18 avr. 2014 - 16:27

Un script pour installer OpenDCP sur Debian8 Jessie- Ubuntu

Message

Désolé de répondre 650 jours plus tard !
Ayant des problème avec la version 0.30 d'Opencp je veux installer une des versions anciennes qu'on trouve ici :https://github.com/tmeiczin/opendcp/releases
Du coups je suis intéressé par le script d'instal, je l'ai étudié et modifié un peu car les adresses et nom des sources ont changés il me semble.
J'ai eu le même problème avec qt4 que j'ai résolu avec: sudo apt install cmake gcc g++ qt{4,5}-qmake libqt4-dev
En revanche j'ai maintenant pour problème :
CMake Error: The following variables are used in this project, but they are set to NOTFOUND que je détail ici tout en bas.
Je suis sous ubuntu 14-04 LTS
Voici mon code adapaté puis plus bas ce que j'ai comme indication dans la fenetre du terminal:
Si des linuxiens pouvaient m' (nous) aider à résoudre ce problème d'instal 07534

Code : Tout sélectionner


# https://github.com/tmeiczin/opendcp/releases   Pour  trouver les versions de opendcp

## Quelques variables
downl_dir=$HOME/bin/src
build_dir=$HOME/bin/opendcp-build
versionFile=0.29.0

[ -z `which opendcp_xml` ] && no_odcp=true  ## test si opendcp est déjà installé
echo $no_odcp;
if [ $no_odcp ]; then

   starting_place=`pwd`

   ## Tester si on a les droits d'admin
   test_admin=`groups | sed s/.*sudo.*/ok_sudo/ | grep sudo`
   if [ "x$test_admin" == "xok_sudo" ]; then
      echo -e "...On a les droits d'administrateur, on continue."
   else
      echo -e "Désolé, il faut les privilèges d'administrateur pour effectuer l'installation."
      read a;
      exit 0
   fi
   
   ## Récupérer les sources
   
   [ ! -d $downl_dir ] && mkdir -p $downl_dir

   # Download opendcp
   cd $downl_dir
   if ! [ -f $downl_dir/v$versionFile.zip ]; then
      echo
      echo -e "...téléchargement d' opendcp-master dans $downl_dir"
      #wget https://github.com/tmeiczin/opendcp/archive/master.zip
      wget https://github.com/tmeiczin/opendcp/archive/v$versionFile.zip   # Telecharge le fichier vers repertoir courant
      
   fi

   # Unzip
   if ! [ -d $downl_dir/opendcp-$versionFile ]; then   # Si le repertoir n'existe pas on extrait le .zip
      echo
      echo -e "...extraction d' opendcp-master dans $downl_dir"
      unzip $downl_dir/v$versionFile.zip 
   fi

   
   ## Resolution de dépendances manquantes
   
   # Pour commencer, il faudra cmake
   if [ -z `which cmake` ]; then
      echo
      echo -e "...installation de cmake (mot de passe requis pour sudo)"
      sudo apt-get install -y cmake
   else
      echo
      echo -e "...cmake  déjà présent"
   fi
   
   # If not openssl
   if [ -z `which openssl` ]; then
      echo
      echo -e "...installation de openssl on the system (mot de passe requis pour sudo)"
      sudo apt-get install -y g++
   else
      echo
      echo -e "...openssl  déjà présent: `which openssl`"
   fi
   # If not /usr/bin/zlib
   if [ -z `which g++` ]; then
      echo
      echo -e "...installation de g++ on the system (mot de passe requis pour sudo)"
      sudo apt-get install -y g++
   else
      echo
      echo -e "...g++  déjà présent: `which g++`"
   fi

   # If not pkg-config
   if [ -z `which pkg-config` ]; then
      echo
      echo -e "...installation de pkg-config on the system (mot de passe requis pour sudo)"
      sudo apt-get install -y pkg-config
   else
      echo
      echo -e "...pkg-config  déjà présent: `which pkg-config`"
   fi

   # If not git
   if [ -z `which git` ]; then
      echo
      echo -e "...installation de git on the system (mot de passe requis pour sudo)"
      sudo apt-get install -y git
   else
      echo
      echo -e "...git  déjà présent: `which git`"
   fi

   # Pour satisfaire cmake, il va falloir disposer des
   # paquets de développement de certaines bibliothèques.
   echo
   echo -e "...essai d'installation de bibliothèques -dev (mot de passe requis pour sudo)"

   sudo apt-get install -y \
      libssl-dev \
      libxml2-dev \
      libxslt1-dev \
      libxmlsec1-dev \
      libexpat1-dev \
      libtiff5-dev
      

   ## Running cmake
   echo -e "Options disponibles :"
   echo -e "\t1) CLI (ligne de commande seulement)"
   echo -e "\t2) GUI (interface graphique + CLI)"
   echo -e "\t3) Paquet .deb pour debian (pour gDebi par exemple)"
   echo -e "\t4) Paquet .rpm pour les RedHat like."
   echo -en " :>"; read choice
   echo
   echo -e "...préparation du paquet avec cmake (mot de passe requis pour sudo)"
   case $choice in
      1)
         ## Pre-build CLI only
         echo -e "...CLI only"
         option='-DENABLE_GUI=OFF'   # Et non ON !
      ;;
      2)
         ## Pre-build GUI
         echo -e "...full GUI"
         option='-DENABLE_GUI=ON'
         
         # If not qt4/qt5
         if [ -z `which qt4-qmake` ]; then
            echo
            echo -e "...installation de qt4-qmake (mot de passe requis pour sudo)"
            sudo apt-get install -y qt4-qmake
            #  Il m'a fallut réglé l'install de qt4 avec sudo apt install cmake gcc g++ qt{4,5}-qmake libqt4-dev
         else
            echo
            echo -e "...qt4-qmake déjà présent: `which qt4-qmake`"
         fi
      ;;
      3)
         ## Pre-build DEB package
         echo -e "...paquet Debian"
         option='-DDEB=ON'
      ;;
      4)
         ## Pre-build RPM package
         echo -e "...paquet RPM"
         option='-DRPM=ON'
      ;;
      *)
         echo -e "Option invalide. Relancer le script."
         exit 0
      ;;
   esac
   
   
   ## Starting the real deal
   
   [ ! -d $build_dir ] && mkdir -p $build_dir
   
   cd $build_dir
   echo "cmake \
      -DOPENSSL_ROOT_DIR=/usr/lib/i386-linux-gnu/ \
      -DCMAKE_CXX_COMPILER_ID=GNU \
      $option \
      $downl_dir/opendcp-$versionFile"; read a;
   # cmake -DOPENSSL_ROOT_DIR=/usr/lib/i386-linux-gnu/ -DCMAKE_CXX_COMPILER_ID=GNU -DENABLE_GUI=ON  /home/guillaume/bin/src/opendcp-0.29.0
   # me donne CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
   # en détails ici tout en bas
   sudo cmake \
      -DOPENSSL_ROOT_DIR=/usr/lib/i386-linux-gnu/ \
      -DCMAKE_CXX_COMPILER_ID=GNU \
      $option \
      $downl_dir/opendcp-$versionFile \
      || echo "EXIT cmake a echoué ! :("; read a; #exit 0

   ## Make
   echo
   echo -e "...compilation et installation d'OpenDCP (mot de passe requis pour sudo)"
   ls
   sudo make

   case $choice in
      3|4)
         ## Si on voulait un paquet
         sudo make package
      ;;
      *)
         ## Pour une installation locale
         sudo make install
      ;;
   esac
   
   ## Back
   cd $starting_place
   echo "Installation terminée"; read a;
   exit 0

else
   echo -e "...OpenDCP est déjà installé sur cette machine.: `which opendcp_xml`"
   exit 0
fi
L'erreur qui me fait 776792 :

Code : Tout sélectionner

#-- Creating Upload Package Target
#-- -------------------------------------------------------------------------------
#-- /home/guillaume/bin/src/opendcp-0.29.0/scripts/googlecode_upload.py -s "OpenDCP 0.29.0 Linux DEB 32-bit" -p "OpenDCP" -u "terrence72@gmail.com"  -l "Type-Package, Featured, OpSys-Linux" /home/guillaume/bin/opendcp-build/opendcp-0.29.0-linux.i386.deb
#CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
#Please set them or make sure they are set and tested correctly in the CMake files:
#OPENJPEG_INCLUDE_DIR
#   used as include directory in directory /home/guillaume/bin/src/opendcp-0.29.0/libasdcp
#   used as include directory in directory /home/guillaume/bin/src/opendcp-0.29.0/libasdcp
#   used as include directory in directory /home/guillaume/bin/src/opendcp-0.29.0/libopendcp
#   used as include directory in directory /home/guillaume/bin/src/opendcp-0.29.0/cli
#   used as include directory in directory /home/guillaume/bin/src/opendcp-0.29.0/cli
#   used as include directory in directory /home/guillaume/bin/src/opendcp-0.29.0/cli
#   used as include directory in directory /home/guillaume/bin/src/opendcp-0.29.0/cli
#   used as include directory in directory /home/guillaume/bin/src/opendcp-0.29.0/cli
#   used as include directory in directory /home/guillaume/bin/src/opendcp-0.29.0/gui
#   used as include directory in directory /home/guillaume/bin/src/opendcp-0.29.0/gui
#   used as include directory in directory /home/guillaume/bin/src/opendcp-0.29.0/upload

#-- Configuring incomplete, errors occurred!
#See also "/home/guillaume/bin/opendcp-build/CMakeFiles/CMakeOutput.log".
#See also "/home/guillaume/bin/opendcp-build/CMakeFiles/CMakeError.log".
#EXIT cmake a echoué ! :(
Messages : 24
Enregistré le : dim. 13 avr. 2014 - 22:53

Un script pour installer OpenDCP sur Debian8 Jessie

Message

Oulala! Il faudrait que je me replonge dans tout ça!

À première vue, on dirait que la librairie OpenJpeg (qui gère le format d'image Jpeg2000) n'est pas installée sur ton système.
La configuration de CMake dans opendcp-master cherche le fichier openjpeg.h dans l'un des dossiers suivants :
  • /usr/local/include/openjpeg
    /usr/local/include
    /usr/include/openjpeg
    /usr/include/openjpeg-1.5
    /usr/include
Comme il ne le trouve pas, CMake interrompt l'installation.

Il faut donc déterminer la bonne version d'OpenJpeg pour la version d'OpenDCP que tu veux installer, puis l'installer. A priori je pense que libopenjpeg2 devrait faire le job. Mais je ne sais pas si c'était le cas en 2014...

Ensuite,
- Soit tu peux l'inclure dans le script, au même titre que les autres dépendances d'OpenDCP, par exemple :

Code : Tout sélectionner

sudo apt-get install -y \
      libssl-dev \
      libxml2-dev \
      libxslt1-dev \
      libxmlsec1-dev \
      libexpat1-dev \
      libtiff5-dev \
      libopenjpeg2
Je n'ai pas testé, et je ne sais pas non plus dans quelle mesure libopenjpeg2 est disponible sur les dépots d'Ubuntu 14.04.
Tente un

Code : Tout sélectionner

apt-cache search openjpeg
pour voir.

- Soit tu peux essayer de l'installer séparément, voire de le compiler s'il n'est pas dans les dépots, et si les propres dépendances d'OpenJpeg sont satisfaites dans Ubuntu 14.04.
Avant d'exécuter le script d'install.

Mais j'y pense tout d'un coup, en 2014, Terrence Meiczinger n'avait pas prévu une version pré-compilée d'OpenDCP pour Ubuntu? Ça se trouve peut-être encore quelque part sur son serveur...

Merci en tout cas d'avoir fait avancer le problème de Rodinux ! (moi j'étais dans les choux à ce moment là)

Bon courage!
Z.
Messages : 24
Enregistré le : dim. 13 avr. 2014 - 22:53

Un script pour installer OpenDCP sur Debian8 Jessie

Message

Addendum !

Si OpenJPEG est déjà installé sur ton système, c'est que c'est seulement la librairie -dev qui manque : dans mon cas c'est libopenjp2-7-dev mais il y a aussi libopenjpeg-dev.
Messages : 1717
Enregistré le : lun. 22 févr. 2010 - 8:05
Localisation : je maintiens le câble réseau pendant les transferts de la librairie au serveur

Un script pour installer OpenDCP sur Debian8 Jessie

Message

:?
Messages : 4
Enregistré le : ven. 18 avr. 2014 - 16:27

Un script pour installer OpenDCP sur Debian8 Jessie

Message

07534 Merci Zanobox ! :)
Il faut que je revienne sur tout cela dès que je peux pour essayer selon tes conseils.
A défaut de trouver les .deb des versions antérieures à 0.30.0 j'espère ainsi pouvoir les fabriquer grâce au script de cette discussion et avec les archives .zip et .tar.gz . dont on dispose sur https://github.com/tmeiczin/opendcp/releases

A bientôt, très bientôt
Répondre