Jak zainstalować najnowszą wersję cmake z wiersza poleceń?


86

Próbuję zainstalować najnowszą cmakewersję w moim systemie Linux i zawsze otrzymuję następujący wyjątek -

userName@phx5qa01c-4e23:~/build$ wget http://www.cmake.org/files/v2.8/cmake-2.8.11.tar.gz
--2013-10-08 14:39:55--  http://www.cmake.org/files/v2.8/cmake-2.8.11.tar.gz
Resolving www.cmake.org... 66.194.253.19
Connecting to www.cmake.org|66.194.253.19|:80... failed: Connection timed out.
Retrying.

--2013-10-08 14:40:17--  (try: 2)  http://www.cmake.org/files/v2.8/cmake-2.8.11.tar.gz
Connecting to www.cmake.org|66.194.253.19|:80... failed: Connection timed out.
Retrying.

--2013-10-08 14:40:40--  (try: 3)  http://www.cmake.org/files/v2.8/cmake-2.8.11.tar.gz
Connecting to www.cmake.org|66.194.253.19|:80...

Zawsze się próbuje ... Jakieś myśli?

Czy ktoś wie, co złego tu robię? Czy jest jakiś lepszy sposób na zainstalowanie najnowszej wersji cmake w moim Linux-ie?

userName@phx5qa01c-4e23:~/build$ uname -a
Linux phx5qa01c-4e23 2.6.35-22-server #33-Ubuntu SMP Sun Sep 19 20:48:58 UTC 2010 x86_64 GNU/Linux

Czy na pewno nie ma zapory blokującej połączenie? Dlaczego przy użyciu wget? Spróbuj pobrać ten plik ( cmake.org/files/v2.8/cmake-2.8.11.tar.gz ) za pomocą przeglądarki internetowej.
Eric Carvalho,

Podobne pytanie tutaj: askubuntu.com/questions/610291/... z dobrą odpowiedzią.
Eliptyczny widok

Myślę, że twoje pytanie brzmi „Jak zainstalować najnowszą wersję cmake w Linuksie”, ale polecenie sudo apt-get install cmakenie instaluje najnowszej wersji.
Teocci,

Odpowiedzi:


22

Prawdopodobnie serwer na www.cmake.org był po prostu bardzo zajęty. Możesz spróbować ponownie lub pobrać plik za pomocą przeglądarki internetowej.

Istnieje jednak znacznie prostszy sposób:

sudo apt-get install cmake

Aktualizacja: komentatorzy zwracają uwagę, że „Ubuntu 12.04 jest dostarczane tylko w wersji 2.8.7”, a „14.04 jest nadal dostarczane w wersji 2.8” . Z tego powodu: 12.04 i 14.04 są wydaniami Ubuntu w wersji LTS . Wersje LTS mają pozostać stabilne przez 5 lat, więc otrzymują tylko aktualizacje dotyczące bezpieczeństwa i krytyczne, a nie najnowsze wersje pakietów. Normalne wydania pojawiają się co 6 miesięcy, a zatem są bardziej prawdopodobne, że pojawią się w ostatnim cmake.


3
Ubuntu 12.04 jest dostarczany tylko w wersji 2.8.7 cmake z apt-get. Obecna wersja wersji 2 to 2.8.12. Proponuję wytrwać w budowaniu go ze źródła.
Richard Hodges

52
To nie jest poprawna odpowiedź. Najnowsza wersja prawie nigdy nie jest na apt.
Senjai

3
14.04 wciąż wysyłka 2.8
Stolas

4
Ta odpowiedź jest zła. StableReleaseUpdates polityka jest nie tylko dla LTS zwalnia. Wszystkie wersje Ubuntu, po ich faktycznym wydaniu, otrzymują jedynie poprawki do luk w zabezpieczeniach lub innych poważnych błędów. Jak pokazano tutaj (i na Launchpadzie ), nawet wersje inne niż LTS nie otrzymały nowych cmakewersji. Istnieją oddzielne backporty dla niektórych pakietów (ale nie cmake).
Eliah Kagan,

10
Ta odpowiedź jest błędna, ponieważ sudo apt-get install cmakesama w sobie nigdy nie aktualizuje się cmakedo nowszej wersji. To nie działa w żadnej wersji Ubuntu. Jeśli twoja odpowiedź brzmi „uaktualnij system Ubuntu do nowszej wersji”, możesz chcieć dokonać edycji ponownie, aby było to bardziej zrozumiałe. (To nie byłoby rozsądne rozwiązanie dla wielu użytkowników i często nie ma wydanej wersji Ubuntu, której repozytoria mają najnowszą wersję cmake.)
Eliah Kagan

160

Najczęstszą sytuacją jest sytuacja, gdy chcesz zainstalować najnowszą wersję cmake , ale repozytoria systemu operacyjnego nie są aktualizowane. Na przykład w moim przypadku mam laptopa z systemem Ubuntu 16.04 , a kiedy wykonałem polecenie, sudo apt install cmakezainstalowaną wersją była 3.5.1 ; zamiast 3.15.4, która jest aktualną wersją na cmake.org .

Jak mogę uzyskać najnowszą wersję?

Możemy go zainstalować, wykonując jedną z następujących metod: Budowanie i instalowanie lub używanie plików binarnych .

A. Budowa i instalacja (zalecane)

A-1. Odinstaluj domyślną wersję dostarczoną przez menedżera pakietów i konfigurację Ubuntu, używając:

sudo apt remove --purge --auto-remove cmake

lub:

sudo apt purge --auto-remove cmake

A-2. Przejdź do oficjalnej strony CMake , a następnie pobierz i wypakuj najnowszą wersję. Zaktualizuj zmienne versioni buildw następującym poleceniu, aby uzyskać żądaną wersję:

version=3.15
build=4
mkdir ~/temp
cd ~/temp
wget https://cmake.org/files/v$version/cmake-$version.$build.tar.gz
tar -xzvf cmake-$version.$build.tar.gz
cd cmake-$version.$build/

A-3. Zainstaluj wyodrębnione źródło, uruchamiając:

./bootstrap
make -j$(nproc)
sudo make install

A-4. Przetestuj swoją nową cmakewersję.

$ cmake --version

Wyniki cmake --version:

cmake version 3.15.X

CMake suite maintained and supported by Kitware (kitware.com/cmake).

B. Korzystanie z plików binarnych ( cmake-guinie działa dobrze)

B-1. Odinstaluj domyślną wersję dostarczoną przez menedżera pakietów Ubuntu jak w A-1 .

B-2. Przejdź do oficjalnej strony CMake , a następnie pobierz i zainstaluj najnowszą .shwersję w opt/cmake. Zaktualizuj zmienne versioni buildw następującym poleceniu, aby uzyskać żądaną wersję:

version=3.15
build=4
mkdir ~/temp
cd ~/temp
wget https://cmake.org/files/v$version/cmake-$version.$build-Linux-x86_64.sh 
sudo mkdir /opt/cmake
sudo sh cmake-$version.$build-Linux-x86_64.sh --prefix=/opt/cmake

B-3. Dodaj zainstalowany link binarny /usr/local/bin/cmake, uruchamiając to:

sudo ln -s /opt/cmake/bin/cmake /usr/local/bin/cmake

B-4. Przetestuj swoją nową cmakewersję jak w A-4 .

Uwaga

W 3.15.X X reprezentuje ostatnią część wersji, że zdefiniowany jako kompilacji. Kompilacja może ulec zmianie, jeśli cmake zostanie zaktualizowany. Według oficjalnej strony internetowej najnowsze wydanie to 3.15.4 . Jeśli chcesz, aby poprzednia wersja 3.14.7 zastąpiła wersję i zbudowała parametry w następujący sposób:

version=3.14
build=7

14
Polecenie make install wymaga uprawnień roota. Polecenie cmake --version działa tylko po otwarciu nowego terminalu, ponieważ cmake jest domyślnie instalowany w katalogu / usr / local / bin /, a nie / usr / bin /.
HD189733b

@Teocci, od dawna próbowałem to robić na różne sposoby, a tylko twoja decyzja pomogła mi. Dziękuję bardzo !!!)))))))
neo

Cieszę się, że ta odpowiedź pomogła ci. Szczęśliwego kodowania i wszystkiego najlepszego.
Teocci

2
To nie jest rozwiązanie do aktualizacji, ale do zainstalowania cmake. Wypróbuj to polecenie lub wyszukaj w Google, aby znaleźć rozwiązanie:sudo apt-get remove cmake cmake-data
Teocci,

1
Uwaga: aby również zbudować narzędzie cmake-gui, dodaj --qt-gui do polecenia bootstrap.
Richard Whitehead,

41

Najpierw odinstaluj wcześniej zainstalowany pakiet cmake . Następnie:

  1. Przejdź do strony http://www.cmake.org/download/ i pobierz najnowszy instalator .sh

  2. Zainstaluj go (na przykład) opt/cmake, uruchamiając

    sudo mkdir /opt/cmake
    sudo sh <installer filename> --prefix=/opt/cmake
    
  3. Dodaj katalog bin cmake do swojej ścieżki: https://askubuntu.com/a/170240/359343

Zainstalowany w ten sposób cmake-guiwygląda trochę okropnie, jeśli znajdziesz sposób, aby to naprawić, możesz edytować tę odpowiedź.


7
Dodaj link z / usr / local / bin / cmake do zainstalowanego pliku binarnego. W ten sposób nie ma potrzeby zmiany ŚCIEŻKI. sudo ln -s /opt/cmake/bin/cmake /usr/local/bin/cmake
Christian

2
To najlepsza odpowiedź.
SuB

3
tak naprawdę jest to najbardziej przydatna odpowiedź na pierwsze pytanie
amigo421,

To daje mi zepsute cmake-gui, które nie działa na xRDP (poprzednia wersja działała), a xRDP jest jedynym sposobem na dostęp do serwera.
stiv 28.03.18

@stiv 1. Czy sprawdziłeś, czy cmakeinstalacja działa, i czy nie masz innej cmakewersji na swojej ścieżce? 2. Czy możesz sprawdzić, czy korzystasz z cmake-gui podanego w instalacji, a nie ze starszej wersji? (Aby poznać wersję, dołącz --versiondo linii poleceń)
Antonio

23

Na wszelki wypadek, jeśli ktoś musi zainstalować najnowszą wersję CMAKE na obrazie dokera (jak ja ..). W tym przypadku jest 3.7.2, ale możesz sprawdzić tutaj https://cmake.org/download/, jak już wspomniano

#install latest cmake
ADD https://cmake.org/files/v3.7/cmake-3.7.2-Linux-x86_64.sh /cmake-3.7.2-Linux-x86_64.sh
RUN mkdir /opt/cmake
RUN sh /cmake-3.7.2-Linux-x86_64.sh --prefix=/opt/cmake --skip-license
RUN ln -s /opt/cmake/bin/cmake /usr/local/bin/cmake
RUN cmake --version

3
Fajna, nieudokumentowana opcja --skap-license :)
4LegsDrivenCat

14

Uwielbiam następujący sposób, ponieważ możesz uzyskać najnowszą wersję bez większych problemów.

Wygląda na to, że Kitware oficjalnie wspiera zwolnienie kół. Aby uzyskać najnowszą wersję cmake, wykonując:

instalacja pip - aktualizacja cmake

Oto blog na ten temat: https://blog.kitware.com/cmake-python-wheels/


6

Kitware ma teraz repozytorium APT, które obecnie obsługuje Ubuntu 16.04 i 18.04

Instrukcje instalacji:

  1. Usuń starą wersję cmake

    sudo apt purge --auto-remove cmake
    
  2. Uzyskaj kopię klucza do podpisywania

    wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | sudo apt-key add -
    
  3. Dodaj repozytorium do listy źródeł

    za. Dla Ubuntu Bionic Beaver (18.04)

    sudo apt-add-repository 'deb https://apt.kitware.com/ubuntu/ bionic main'
    

    b. Dla Ubuntu Xenial Xerus (16.04)

    sudo apt-add-repository 'deb https://apt.kitware.com/ubuntu/ xenial main'
    
  4. Zaktualizuj i zainstaluj

    sudo apt update
    sudo apt install cmake
    

4

Możesz także wykonać następujące czynności:

export fn=/tmp/cmake.sh && ls $fn && (echo "use previous $fn? Enter for yes, ctrl+d for no." && read) || (wget -O $fn http://www.cmake.org/files/v3.0/cmake-3.0.2-Linux-i386.sh 1>&2) && (cd /opt && sudo bash ${fn} && echo sudo ln -f -s /opt/cmake*/bin/cmake /usr/local/bin/cmake && cd -)

Ten skrypt

  • pobiera 3.0.2 **, jeśli został już pobrany w tej sesji, możesz go ponownie użyć, jeśli instalacja nie została zakończona
  • następnie kopiuje tworzy link do kosza cmake.

3

W przypadku kontenera Docker najlepiej uruchomić

RUN wget -qO- "https://cmake.org/files/v3.12/cmake-3.12.1-Linux-x86_64.tar.gz" | \
  tar --strip-components=1 -xz -C /usr/local

W razie potrzeby dostosuj wersję.


2

Usuń starą wersję, używając:

apt-get purge cmake

Pobierz wersję binarną cmakezarchiwizowanego w archiwum. Możesz użyć nowej wersji cmake, dodając binścieżkę do katalogu $PATH. Alternatywnym rozwiązaniem jest wypakowanie tar.gzpakietu i przejście do katalogu utworzonego po wypakowaniu i uruchomienie następujących poleceń:

cp -r bin /usr/
cp -r doc /usr/share/
cp -r man /usr/share/
cp -r share /usr/

Druga metoda jest taka sama jak proces instalacji, który .debwykonuje pakiet!


1

Zainstaluj najnowszą wersję cmake z backportów, w których znajduje się wiele najnowszych wersji. Konkretne backporty zależą od bieżącej wersji systemu operacyjnego. Na przykład, uruchamiając Debian Stretch, dodaj następujące polecenie do /etc/apt/sources.list

deb http://ftp.debian.org/debian stretch-backports main

Następnie zainstaluj z tego backportu, czyli:

sudo apt-get -t stretch-backports install -y cmake

0

Możesz znaleźć najnowsze wersje cmake poprzez snap. Na przykład w momencie pisania tej odpowiedzi najnowsza wersja cmake to 3.15.3, a snap ma wersję 3.15.2.

sudo apt-get purge cmake
sudo snap install cmake --classic

0

Odpowiedź qwr na użycie przystawki może być dobra, ale jeśli chcesz czegoś jeszcze nowszego, cmake ułatwia zbudowanie DEB ze źródła. Poniżej założono, że masz już zainstalowany najnowszy cmake. Polecenie cmake apt install Ubuntu 18.04 na pewno będzie tutaj działać.

sudo apt-get build-dep cmake
git clone http://www.cmake.org/cmake.git
cd cmake
git tag
# find the highest tagged release value (hint, rarely at the bottom)
git co tags/<highest tagged release value>
mkdir build
cd build
cmake ..
cmake --build .
cpack -G DEB
# you built a single deb that has what Ubuntu provides as two debs, the binary
# deb and the additional architecture independent data files
sudo apt remove cmake-data
sudo dpkg -i cmake-<highest tagged release value>-Linux-x86_64.deb
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.