LINUX.ORG.RU

установка libssh-4

 


0

1

Нужна последняя версия, в репо нет.
В мануале написано сделать так:

    cmake -DUNIT_TESTING=ON -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Debug ..
    make
CMake Error at cmake/Modules/MacroEnsureOutOfSourceBuild.cmake:13 (message):
  libssh requires an out of source build.  Please create a separate build
  directory and run 'cmake /path/to/libssh [options]' there.
Call Stack (most recent call first):
  CMakeLists.txt:40 (macro_ensure_out_of_source_build)


CMake Error at cmake/Modules/MacroEnsureOutOfSourceBuild.cmake:14 (message):
  Remove the file CMakeCache.txt in /tmp/libssh-0.9.2 first.
Call Stack (most recent call first):
  CMakeLists.txt:40 (macro_ensure_out_of_source_build)


-- Configuring incomplete, errors occurred!

Что за ‘separate build directory’ не понятно, /path/to/libssh не нашел где текущая версия libssh, удаление CMakeCache.txt вообще ничего не дало.


separate - отдельная директория.

Т.е. собирай не прямо в директории с исходниками, а создай поддиректорию, перейди в неё и вызывай команду сборки указывая относительный путь до /path/to/libssh.

anonymous
()
Ответ на: комментарий от anonymous

Как вызвать команду сборки из пустой директории?
/path/to/libssh, это путь к уже установленной версии?
find / -name ‘libssh’ его не нашел, а libssh в системе есть.

yoholo
() автор топика
Ответ на: комментарий от anonymous

Так я не понимаю, что автор этого

Please create a separate build
  directory and run 'cmake /path/to/libssh [options]

хочет сказать. Кто распишет многоходовочку?
Типа

mkdir /tmp/libssh
cd /tmp/libssh
cmake ???
yoholo
() автор топика
Ответ на: комментарий от yoholo
Please create a separate build
  directory and run 'cmake /path/to/libssh [options]

Я не понимаю почему у тебя не работает голова.

Напишу, пусть тебе будет стыдно.

Здесь написано, что нужно после распаковки исходников создать отдельную директрию, можно поддиректорию в директории с исходниками.

Например, если исходники ты распаковал в libssh-0.9.2, то создай например build в ней:

libssh-0.9.2/
       build/

Перейди в неё:

cd libssh-0.9.2/build/
и выполни:
cmake ../ [options]
Т.е. в твоём примере:
cmake ../ -DUNIT_TESTING=ON -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Debug

anonymous
()
Ответ на: комментарий от anonymous

То, что «separate build directory» должна быть внутри libssh-0.9.2, не очевидно. И это не сработало.

CMake Error at cmake/Modules/MacroEnsureOutOfSourceBuild.cmake:13 (message):
  libssh requires an out of source build.  Please create a separate build
  directory and run 'cmake /path/to/libssh [options]' there.
Call Stack (most recent call first):
  CMakeLists.txt:40 (macro_ensure_out_of_source_build)


CMake Error at cmake/Modules/MacroEnsureOutOfSourceBuild.cmake:14 (message):
  Remove the file CMakeCache.txt in /tmp/libssh-0.9.2 first.
Call Stack (most recent call first):
  CMakeLists.txt:40 (macro_ensure_out_of_source_build)
yoholo
() автор топика
Ответ на: комментарий от yoholo

У кого-то лишний слеш в подсказке, а у кого-то похоже на лишнюю хромосому…

$ cat INSTALL

...
## Building
First, you need to configure the compilation, using CMake. Go inside the
`build` dir. Create it if it doesn't exist.

GNU/Linux, MacOS X, MSYS/MinGW:

    cmake -DUNIT_TESTING=ON -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Debug ..
    make

...
vvn_black ★★★★★
()
Последнее исправление: vvn_black (всего исправлений: 2)
Ответ на: комментарий от vvn_black

Не, это не все :) Есть еще CMakeLists.txt.

cmake -DUNIT_TESTING=ON -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Debug
cp /tmp/libssh-0.9.2/CMakeLists.txt /tmp/libssh-0.9.2/build/ && cmake -DUNIT_TESTING=ON -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Debug
CMake Error at CMakeLists.txt:10 (include):
  include could not find load file:

    DefineCMakeDefaults


CMake Error at CMakeLists.txt:11 (include):
  include could not find load file:

    DefineCompilerFlags


-- The C compiler identification is GNU 6.3.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
CMake Error at CMakeLists.txt:31 (include):
  include could not find load file:

    DefinePlatformDefaults


CMake Error at CMakeLists.txt:32 (include):
  include could not find load file:

    DefineOptions.cmake


CMake Error at CMakeLists.txt:33 (include):
  include could not find load file:

    CPackConfig.cmake


CMake Error at CMakeLists.txt:36 (include):
  include could not find load file:

    CompilerChecks.cmake


CMake Error at CMakeLists.txt:39 (include):
  include could not find load file:

    MacroEnsureOutOfSourceBuild


CMake Error at CMakeLists.txt:40 (macro_ensure_out_of_source_build):
  Unknown CMake command "macro_ensure_out_of_source_build".


-- Configuring incomplete, errors occurred!
yoholo
() автор топика
Ответ на: комментарий от yoholo

Редактировать сообщение не получается. Оно захотело

CMake Error: The source directory "/tmp/libssh-0.9.2/build" does not appear to contain CMakeLists.txt.
yoholo
() автор топика
Ответ на: комментарий от yoholo

Ладно, мне не жалко:

$ tar xf /path/to/libssh-0.9.2.tar.xz
$ cd libssh-0.9.2
libssh-0.9.2 $ mkdir build
libssh-0.9.2 $ cd build
libssh-0.9.2/build $ cmake -DUNIT_TESTING=ON -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Debug .. 

-- The C compiler identification is GNU 9.2.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Performing Test REQUIRED_FLAGS_WERROR
-- Performing Test REQUIRED_FLAGS_WERROR - Success
-- Performing Test WITH_STD_GNU99_FLAG
-- Performing Test WITH_STD_GNU99_FLAG - Success
-- Performing Test WITH_WPEDANTIC_FLAG
-- Performing Test WITH_WPEDANTIC_FLAG - Success
-- Performing Test WITH_WALL_FLAG
-- Performing Test WITH_WALL_FLAG - Succes
...
vvn_black ★★★★★
()
Ответ на: комментарий от vvn_black

Я все так и сделал. Получил

CMake Error: The source directory "/tmp/libssh-0.9.2/build" does not appear to contain CMakeLists.txt.

Здесь без поллитры не разберешся. Например «separate build directory» гугл переводит как «отдельный каталог сборки» а нифига не внутренний. Что он хочет от CMakeLists.txt вообще не понятно.

yoholo
() автор топика
Ответ на: комментарий от vvn_black

Так вот эти две строчки.

    cmake -DUNIT_TESTING=ON -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Debug ..
    make

Это должно было скомпилить libssh, а не выводить нравоучения на английском. И там нет ни слова о CMakeLists.txt, так что libssh так и не скомпилился.

yoholo
() автор топика
Ответ на: комментарий от yoholo

Специально для теста развернул в виртуалке debian 10, скачал архив, распаковал и сделал:

user@debian:~/libssh-0.9.2$ mkdir build
user@debian:~/libssh-0.9.2$ cd build/
user@debian:~/libssh-0.9.2/build$ cmake ../
-- The C compiler identification is GNU 8.3.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
...
-- Performing Test WITH_WERROR_WRITE_STRINGS_FLAG - Success
-- Performing Test -- Performing Test WITH_WNO_DEPRECATED_DECLARATIONS_FLAG
-- Performing Test WITH_WNO_DEPRECATED_DECLARATIONS_FLAG - Success
-- Found ZLIB: /usr/lib/x86_64-linux-gnu/libz.so (found version "1.2.11")
-- Found OpenSSL: /usr/lib/x86_64-linux-gnu/libcrypto.so (found version "1.1.1d")
-- Looking for pthread.h
...
-- Found PythonInterp: /usr/bin/python (found version "2.7.16")
-- Could not find `abimap` in PATH. It can be found in PyPI as `abimap` (try `pip install abimap`)
-- Could NOT find ABIMap (missing: ABIMAP_EXECUTABLE) (Required is at least version "0.3.1")
-- Performing Test WITH_VISIBILITY_HIDDEN
-- Performing Test WITH_VISIBILITY_HIDDEN - Success
...
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)
-- Threads_FOUND=TRUE
-- The CXX compiler identification is GNU 8.3.0
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- ********************************************
-- ********** libssh build options : **********
-- zlib support: ON
-- libgcrypt support: OFF
-- libmbedTLS support: OFF
-- libnacl support: OFF
-- SFTP support: ON
-- Server support : ON
-- GSSAPI support : 0
-- GEX support : ON
-- Pcap debugging support : ON
-- Build shared library: ON
-- Unit testing: OFF
-- Client code testing: OFF
-- Blowfish cipher support: OFF
-- Server code testing: OFF
-- Public API documentation generation
-- Benchmarks: OFF
-- Symbol versioning: ON
-- Allow ABI break: OFF
-- Release is final:
-- Global client config: /etc/ssh/ssh_config
-- Global bind config: /etc/ssh/libssh_server_config
-- ********************************************
-- Configuring done
-- Generating done
-- Build files have been written to: /home/user/libssh-0.9.2/build
user@debian:~/libssh-0.9.2/build$

Помимо прочего ещё поставил:

apt install cmake libzip-dev/stable libssh-dev build-essential

Всё работает.

Вот сборка:

user@debian:~/libssh-0.9.2/build$ make
Scanning dependencies of target ssh
[  1%] Building C object src/CMakeFiles/ssh.dir/agent.c.o
[  2%] Building C object src/CMakeFiles/ssh.dir/auth.c.o
...
[ 98%] Building C object examples/CMakeFiles/senddata.dir/connect_ssh.c.o
[ 99%] Linking C executable senddata
[ 99%] Built target senddata
Scanning dependencies of target libsshpp
[100%] Building CXX object examples/CMakeFiles/libsshpp.dir/libsshpp.cpp.o
[100%] Linking CXX executable libsshpp
[100%] Built target libsshpp

Всё собирается, начни сначала, с распаковки архива, если не получается :)

anonymous
()
Ответ на: комментарий от yoholo

Для сборки с такими опциями, только без последней с отладкой, также нужно установить

apt install libcmocka-dev/stable

Вот тоже всё компилируется:

user@debian:~/libssh-0.9.2/build$ cmake -DUNIT_TESTING=ON -DCMAKE_INSTALL_PREFIX=/usr ..
-- Found CMocka: /usr/lib/x86_64-linux-gnu/libcmocka.so
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Check if compiler accepts -pthread
-- Check if compiler accepts -pthread - yes
-- Found Threads: TRUE
-- Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE)
-- Could NOT find GSSAPI (missing: GSSAPI_LIBRARIES GSSAPI_INCLUDE_DIR)
-- Could NOT find NaCl (missing: NACL_LIBRARIES NACL_INCLUDE_DIRS)
-- Found PythonInterp: /usr/bin/python (found version "2.7.16")
-- Could not find `abimap` in PATH. It can be found in PyPI as `abimap` (try `pip install abimap`)
-- Could NOT find ABIMap (missing: ABIMAP_EXECUTABLE) (Required is at least version "0.3.1")
-- Performing Test WITH_VISIBILITY_HIDDEN
-- Performing Test WITH_VISIBILITY_HIDDEN - Success
-- Looking for argp.h
-- Looking for argp.h - found
-- Looking for pty.h
...
-- Detecting CXX compile features - done
-- ********************************************
-- ********** libssh build options : **********
-- zlib support: ON
-- libgcrypt support: OFF
-- libmbedTLS support: OFF
-- libnacl support: OFF
-- SFTP support: ON
-- Server support : ON
-- GSSAPI support : 0
-- GEX support : ON
-- Pcap debugging support : ON
-- Build shared library: ON
-- Unit testing: ON
-- Client code testing: OFF
-- Blowfish cipher support: OFF
-- Server code testing: OFF
-- Public API documentation generation
-- Benchmarks: OFF
-- Symbol versioning: ON
-- Allow ABI break: OFF
-- Release is final:
-- Global client config: /etc/ssh/ssh_config
-- Global bind config: /etc/ssh/libssh_server_config
-- ********************************************
-- Configuring done
-- Generating done
-- Build files have been written to: /home/user/libssh-0.9.2/build

anonymous
()
Ответ на: комментарий от anonymous

Да, установил дополнительные библиотеки, которые попросили и все равно обломался.

Install the project...
-- Install configuration: "Debug"
-- Installing: /usr/lib/x86_64-linux-gnu/pkgconfig/libssh.pc
CMake Error at cmake_install.cmake:36 (file):
  file INSTALL cannot copy file "/tmp/libssh-0.9.2/build/libssh.pc" to
  "/usr/lib/x86_64-linux-gnu/pkgconfig/libssh.pc".


Makefile:72: ошибка выполнения рецепта для цели «install»
make: *** [install] Ошибка 1
yoholo
() автор топика
Ответ на: комментарий от yoholo

Покажи что ты вводишь.

У меня собирается:

user@debian:~/libssh-0.9.2/build$ make
Scanning dependencies of target ssh
[  0%] Building C object src/CMakeFiles/ssh.dir/agent.c.o
[  1%] Building C object src/CMakeFiles/ssh.dir/auth.c.o
[  1%] Building C object src/CMakeFiles/ssh.dir/base64.c.o
[  2%] Building C object src/CMakeFiles/ssh.dir/bignum.c.o
[  2%] Building C object src/CMakeFiles/ssh.dir/buffer.c.o
[  3%] Building C object src/CMakeFiles/ssh.dir/callbacks.c.o
[  3%] Building C object src/CMakeFiles/ssh.dir/channels.c.o
[  3%] Building C object src/CMakeFiles/ssh.dir/client.c.o
[  4%] Building C object src/CMakeFiles/ssh.dir/config.c.o
...
[ 99%] Built target torture_threads_crypto
Scanning dependencies of target torture_threads_buffer
[100%] Building C object tests/unittests/CMakeFiles/torture_threads_buffer.dir/torture_threads_buffer.c.o
[100%] Linking C executable torture_threads_buffer
[100%] Built target torture_threads_buffer

Это была сборка.

А вот установка:

user@debian:~/libssh-0.9.2/build$ su
Password:
root@debian:/home/user/libssh-0.9.2/build# make install
[ 26%] Built target ssh
[ 52%] Built target ssh-static
[ 53%] Built target libsshpp_noexcept
[ 55%] Built target ssh-client
[ 57%] Built target sshnetcat
[ 59%] Built target libssh_scp
[ 61%] Built target scp_download
[ 63%] Built target samplesftp
[ 64%] Built target samplesshd-kbdint
[ 64%] Built target keygen
[ 65%] Built target ssh_server_fork
...
[ 96%] Built target torture_bind_config
[ 97%] Built target torture_pki_dsa
[ 98%] Built target torture_pki_ecdsa
[ 99%] Built target torture_threads_crypto
[100%] Built target torture_threads_buffer
Install the project...
-- Install configuration: ""
-- Installing: /usr/lib/x86_64-linux-gnu/pkgconfig/libssh.pc
-- Installing: /usr/lib/x86_64-linux-gnu/cmake/libssh/libssh-config-version.cmake
-- Installing: /usr/include/libssh/callbacks.h
-- Installing: /usr/include/libssh/libssh.h
-- Installing: /usr/include/libssh/ssh2.h
-- Installing: /usr/include/libssh/legacy.h
-- Installing: /usr/include/libssh/libsshpp.hpp
-- Installing: /usr/include/libssh/sftp.h
-- Installing: /usr/include/libssh/server.h
-- Installing: /usr/lib/x86_64-linux-gnu/libssh.so.4.8.3
-- Installing: /usr/lib/x86_64-linux-gnu/libssh.so.4
-- Installing: /usr/lib/x86_64-linux-gnu/libssh.so
-- Installing: /usr/lib/x86_64-linux-gnu/cmake/libssh/libssh-config.cmake
-- Installing: /usr/lib/x86_64-linux-gnu/cmake/libssh/libssh-config-noconfig.cmake
Тоже всё проходит.

Только есть одной но, делать так в бинарных дистрибутивах не стоит и даже скорее нельзя.

Делать 'make install' можно только после 'make'.

anonymous
()
Ответ на: комментарий от anonymous

make проходит нормально

make install
[ 28%] Built target ssh
[ 55%] Built target ssh-static
.....
[ 99%] Built target torture_pki
[100%] Built target torture_pki_rsa
Install the project...
-- Install configuration: "Debug"
-- Installing: /usr/lib/x86_64-linux-gnu/pkgconfig/libssh.pc
CMake Error at cmake_install.cmake:36 (file):
  file INSTALL cannot copy file "/tmp/libssh-0.9.2/build/libssh.pc" to
  "/usr/lib/x86_64-linux-gnu/pkgconfig/libssh.pc".


Makefile:72: ошибка выполнения рецепта для цели «install»
make: *** [install] Ошибка 1
yoholo
() автор топика
Ответ на: комментарий от yoholo

От имени какого пользователя происходит вызов команд?

Какой дистрибутив?

Ставь Debian, если не можешь сделать всё в своём.

anonymous
()
Ответ на: комментарий от yoholo

Какой у тебя дистрибутив?

В нём есть /usr/lib/x86_64-linux-gnu/pkgconfig/?

anonymous
()
Ответ на: комментарий от anonymous

Да, дело было в правах пользователя. Самое забавное, что все собралось но это не помогло. По умолчанию все равно используется версия 0.8.1.

yoholo
() автор топика
Ответ на: комментарий от yoholo

Не ну ты точно ГОЛОВОЙ НЕ ПОЛЬЗУЕШЬСЯ, это просто нонсенс какой-то, эпидемия мировая.

Вот это для кого было показано?

user@debian:~/libssh-0.9.2/build$ su
Password:
root@debian:/home/user/libssh-0.9.2/build# make install

По умолчанию все равно используется версия 0.8.1.

Где?

anonymous
()
Ответ на: комментарий от anonymous

Ну да, голова уже не варит. Весь этот гемор, чтобы поставить remmina, которая отказывается работать с версией libssh из репозитория.

 remmina : Зависит: libssh-4 (>= 0.8.1) но 0.7.3-2+deb9u2 будет установлен```
yoholo
() автор топика
Ответ на: комментарий от yoholo

У тебя вообще голова отсутствует похоже.

Ещё раз спрашиваю ДИСТРИБУТИВ КАКОЙ!!!?

remmina : Зависит: libssh-4 (>= 0.8.1) но 0.7.3-2+deb9u2 будет установлен```

Это вывод от пакетного менеджера. И зависимости пакета прописаны в самом пакете в отдельном файле внутри пакета. Пакетный менеджер при установке пакета анализирует свою пакетную базу на предмет доступных для установке пакетов и пакетов уже поставленных в системе. И на основе файлов с зависимостями пакетов, содержащихся внутри пакета и в файлах с информацией о зависимостях их репозитория пакетный менеджер просчитывает зависимости пакетов при установке новых пакетов.

И на файлы, установленные в системе В ОБХОД ПАКЕТНОГО МЕНЕДЖЕРА ему ВСЁ РАВНО. Ставь их исходников / не ставь из исходников что-то в систему от этого пакетный менеджер не увидит установленных таким способом программ.

ЕЩЁ РАЗ, КАКОЙ ДИСТРИБУТИВ? И ЧТО ТЫ ХОЧЕШЬ СДЕЛАТЬ?

remmina есть в репозитории твоего дистрибутива.

И если ты не подключил к дистрибутиву ОДНОЙ ВЕРСИИ репозиторий другой более новой, то проблем не будет. Или если ты не пытаешься поставить пакет, СКАЧЕННЫЙ ПРОСТО РУКАМИ В ОБХОД ПАКЕТНОГО МЕНЕДЖЕРА более новой версии дистрибутива.

anonymous
()
Ответ на: комментарий от yoholo

У тебя похоже Debian 9, а пакет ты ставишь либо от Debian 10, либо от какой-то Ubuntu или другого Debian-based дистрибутива.

Либо репозиторий подключил от дистрибутива, в котором remmina собрана под более новую вресии libssh.

Отключай твой репозиторий и ставь всё из репозитория Debian 9, в нём есть remmina.

И да, Debian 9 - это теперь old stable релиз, поэтому если ты подключил репозиторий для Debian, как stable ветку, то это не Debian 9, а Debian 10.

И вообще, релизы нужно подключать по кодовым именам, а именно для Debian 9 - stretch, а для Debian 10 - buster.

Исправь репозитории. Собирать ничего из исходных кодов не надо в бинарных дистрибутивах, по крайней мере для большиства пакетов, которые широко применяемы.

Если не можешь разобраться, то показывай содержимое /etc/apt/sources.list и рассказывай что делаешь.

anonymous
()
Ответ на: комментарий от anonymous

Да откуда мне знать, что apt не видит файлов установленных из исходников? Debian9. В репозитории

libssh-4/oldstable,now 0.7.3-2+deb9u2 amd64 [установлен]
  tiny C SSH library (OpenSSL flavor)

Никаких обновлений для него нет. remmina по инструкции с их сайта.

echo 'deb https://ftp.debian.org/debian stretch-backports main' | sudo tee --append /etc/apt/sources.list.d/stretch-backports.list >> /dev/null
sudo apt update
sudo apt install -t stretch-backports remmina remmina-plugin-rdp remmina-plugin-secret remmina-plugin-spice
yoholo
() автор топика
Ответ на: комментарий от yoholo
remmina/stretch-backports 1.3.3+dfsg-2~bpo9+1 amd64
  GTK+ Remote Desktop Client
yoholo
() автор топика
Ответ на: комментарий от yoholo

Покажи целиком содержимое sources.list.

Да откуда мне знать, что apt не видит файлов установленных из исходников?

Ну-да, голова-то не работает, а по образванию наверное менеджер, если вообще не школьник.

sudo apt install -t stretch-backports remmina remmina-plugin-rdp remmina-plugin-secret remmina-plugin-spice

Да, думать вообще тяжело. Ты понимаешь написанное в этой команде?

Здесь указано, что ты хочешь поставить из репозитория указанного релиза (stretch-backpots) указанные пакеты.

И в этом же репозитории есть нужная версия libssh, вот смотри: https://packages.debian.org/ru/stretch-backports/libssh-4

А это значит, что в этой же команде нужно указать и установку libssh из репозитория stretch-backports, т.е. команда должна быть примерно такая:

sudo apt install -t stretch-backports remmina remmina-plugin-rdp remmina-plugin-secret remmina-plugin-spice libssh-4

Включай голову.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.