web-dev-qa-db-fra.com

CMake sur Linux CentOS 7, comment forcer le système à utiliser cmake3?

J'ai essayé d'installer PyTorch sur mon Linux CentOS 7.3. J'ai téléchargé son package, exécuté cette commande et obtenu cette erreur:

Sudo python setup.py install

running install
running build_deps
CMake Error at CMakeLists.txt:1 (cmake_minimum_required):
  CMake 3.0 or higher is required.  You are running version 2.8.12.2


-- Configuring incomplete, errors occurred!

J'ai donc essayé d'installer CMake 3 en utilisant la commande

Sudo yum -y install cmake3

L'installation s'est bien passée, mais le système utilise toujours cmake2.8 par défaut. Si je tape le yum info comnmand, j'obtiens ceci:

Sudo yum info cmake

Installed Packages
Name        : cmake
Arch        : x86_64
Version     : 2.8.12.2
Release     : 2.el7
Size        : 27 M
Repo        : installed
From repo   : base
Summary     : Cross-platform make system
URL         : http://www.cmake.org
License     : BSD and MIT and zlib
Description : CMake is used to control the software compilation process using simple
            : platform and compiler independent configuration files. CMake generates
            : native makefiles and workspaces that can be used in the compiler
            : environment of your choice. CMake is quite sophisticated: it is possible
            : to support complex environments requiring system configuration, preprocessor
            : generation, code generation, and template instantiation.

Donc, le problème est clair: le système voit toujours cmake2.8 par défaut, et donc Python n'utilise pas cmake3 pour son installation PyTorch. Comment puis-je résoudre ce problème?

Merci

8
DavideChicco.it

Une fois que vous avez à la fois le cmake et le cmake3 package installé sur votre machine, vous pouvez utiliser pdate-alternatives pour basculer entre les deux packages.

Utilisez la commande alternatives pour enregistrer les deux installations:

$ Sudo alternatives --install /usr/local/bin/cmake cmake /usr/bin/cmake 10 \
--slave /usr/local/bin/ctest ctest /usr/bin/ctest \
--slave /usr/local/bin/cpack cpack /usr/bin/cpack \
--slave /usr/local/bin/ccmake ccmake /usr/bin/ccmake \
--family cmake

$ Sudo alternatives --install /usr/local/bin/cmake cmake /usr/bin/cmake3 20 \
--slave /usr/local/bin/ctest ctest /usr/bin/ctest3 \
--slave /usr/local/bin/cpack cpack /usr/bin/cpack3 \
--slave /usr/local/bin/ccmake ccmake /usr/bin/ccmake3 \
--family cmake

Après ces deux commandes, cmake3 sera invoqué par défaut lorsque vous entrez cmake à partir d'une invite bash ou lancez un script bash. Les commandes prennent également en charge l'enregistrement de quelques commandes esclaves supplémentaires comme ctest qui doivent être commutées avec cmake.

Si vous devez revenir à cmake 2.8 par défaut, exécutez la commande suivante:

$ Sudo alternatives --config cmake

There are 2 programs which provide 'cmake'.

  Selection    Command
-----------------------------------------------
   1           cmake (/usr/bin/cmake)
*+ 2           cmake (/usr/bin/cmake3)

Enter to keep the current selection[+], or type selection number: 1
28
sakra

Si vous ne disposez pas d'un accès root, créez simplement un lien comme celui-ci:

ln -s /usr/bin/cmake3 ~/bin/cmake
2
DrumM

Sur Centos, package cmake3contient un exécutable nommé cmake3. Comme la plupart des programmes exécutent cmake, ils ne trouvent pas cmake3.

Comme d'habitude, vous pouvez quelque part créer un lien nommé cmake qui pointe vers /usr/bin/cmake3 et placez le répertoire vers ce lien dans la variable [~ # ~] path [~ # ~] avant les autres répertoires.

0
Tsyvarev