Автор Тема: (опыты) Проверка работы по на live системах федоры 24 и убунты 15.04  (Прочитано 5273 раз)

Оффлайн sb

  • Модератор глобальный
  • *****
  • Сообщений: 8 991
Значит или билиотеки такие, которые этот бинарник не ожидал, или ещё что. Когда бинарник запускается, все надписи зависят только от него. Кроме Segmentation fault разве что. Всё остальное - только он и только те библиотеки, которые зовёт он сам. В общем, no_make_install всё объясняет.
Библиотеки здесь ни при чём. Мне шел говорит: нет такой команды! Как же нет, а вот же бинарник исполняемый перед носом. Ну ты хоть скажи, что библиотек нет или сегфолт покажи или иную ошибку, но "не могу запустить указанный в командной строке бинарник, т.к. нет такой команды" этого я никак не ожидал.

Оффлайн stranger573

  • Мастер
  • ***
  • Сообщений: 1 434
    • Email
Мне шел говорит: нет такой команды! Как же нет, а вот же бинарник исполняемый перед носом. Ну ты хоть скажи, что библиотек нет или сегфолт покажи или иную ошибку, но "не могу запустить указанный в командной строке бинарник, т.к. нет такой команды" этого я никак не ожидал.
А вы уверены, что бинарник не пытается выполнить какую-то команду? Уверены, что эта команда вообще есть в системе?
Что там будет выведено при запуске зависит от самого бинарника. Если в нём нет отладки, то ничего сказано и не будет.
Для выяснения по какой причине не работает бинарный файл существуют специализированные утилиты. Наподобие strace и ldd.
Посмотреть подробную информацию о бинарнике можно так:
readelf -a имя_файла

Вообще-то опыты подразумевают исследование файла, системы и причин по которым что-то происходит не так как ожидается. Вы же ничего этого не сделали.
« Последнее редактирование: 03.12.2017 17:11:57 от stranger573 »

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 8 099
Библиотеки здесь ни при чём. Мне шел говорит: нет такой команды! Как же нет, а вот же бинарник исполняемый перед носом. Ну ты хоть скажи, что библиотек нет или сегфолт покажи или иную ошибку, но "не могу запустить указанный в командной строке бинарник, т.к. нет такой команды" этого я никак не ожидал.
Шел может так говорить только из-за отсутствия ./ перед командой, если текущий каталог в PATH отсутствует (что, как правило, и бывает). В остальном это уже не shell определяет. значит бинарник захотел что-то отсутствующее. Если через strace запустить, что покажет ?
« Последнее редактирование: 03.12.2017 17:17:36 от asy »

Оффлайн sb

  • Модератор глобальный
  • *****
  • Сообщений: 8 991
Библиотеки здесь ни при чём. Мне шел говорит: нет такой команды! Как же нет, а вот же бинарник исполняемый перед носом. Ну ты хоть скажи, что библиотек нет или сегфолт покажи или иную ошибку, но "не могу запустить указанный в командной строке бинарник, т.к. нет такой команды" этого я никак не ожидал.
Шел может так говорить только из-за отсутствия ./ перед командой, если текущий каталог в PATH отсутствует (что, как правило, и бывает). В остальном это уже не shell определяет. значит бинарник захотел что-то отсутствующее. Если через strace запустить, что покажет ?
Указывал по всякому, как только не выкручивался - результат один: отсутствие результата. Мне, честно говроя, абсолютно не интересно дальше разбираться в убунте с этим непривычным интерфейсом, который я там увидел. Нет, так нет. В конечном итоге задача попытаться заставить это по работать в альте.
А вы уверены, что бинарник не пытается выполнить какую-то команду? Уверены, что эта команда вообще есть в системе?
Что там будет выведено при запуске зависит от самого бинарника. Если в нём нет отладки, то ничего сказано и не будет.
Система не может запустить сам бинарник! Сообщение шелла в вольном переводе "я не могу выполнить команду имя_бинарника.run". То есть, до запуска гипотетической команды дело просто не доходит. Пробовал убирать .run (получается обычный бинарник и об этом система сообщает сменой иконки на файле, что означает распознавание системой типа файла), но с тем же результатом.

Оффлайн stranger573

  • Мастер
  • ***
  • Сообщений: 1 434
    • Email
Ну во-первых интерфейс эмулятора терминала в убунте вообще ничем не отличается от таковых в других дистрибутивах. Вызывается совершенно банально либо из меню, либо из контекстного меню, либо по Ctrl+Alt+T (тоже банальный хоткей, который к тому же можно посмотреть в настройках).

Во-вторых двойное хлопанье по исполняемому файлу в убунте по-дефолту не вызывает его выполнение. Это тоже настраивается и дефолтная настройка абсолютно разумна.

В-третьих я тоже не пользуюсь убунтой, однако никаких критических отличий там не замечал.

В-четвёртых, и самое главное. В любых дистрибутивах (и необязательно Linux) система не берёт сообщения об ошибках выполнения из астрологических таблиц. Они берутся из самого исполняемого кода, при условии что там сделаны проверки и точки останова, в релизных бинарных сборках этого добра либо минимум, либо вообще нет, ибо замедляют работу программы.  Поэтому сообщения шелла ни о чём сказать не могут в принципе. Для разрешения подобных ситуаций существуют средства отладки, о некоторых из которых вам написали и которыми вы до сих пор не почесались воспользоваться.

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

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 8 099
Система не может запустить сам бинарник! Сообщение шелла в вольном переводе "я не могу выполнить команду имя_бинарника.run". То есть, до запуска гипотетической команды дело просто не доходит. Пробовал убирать .run (получается обычный бинарник и об этом система сообщает сменой иконки на файле, что означает распознавание системой типа файла), но с тем же результатом.
В Linux (любом) файллы совершенно никак не распознаются по имени. Вообще никак. Можно .run убрать, можно .run.run.run добавить - по барабану. Можно .exe добавить для смеха - это ничего абсолютно не поменяет. А то, что где-то там в гуях какие-то иконки меняются, имеет отношение только к DE.

Оффлайн stranger573

  • Мастер
  • ***
  • Сообщений: 1 434
    • Email
В Linux (любом) файллы совершенно никак не распознаются по имени.
Было так когда-то. Сейчас перешедшие програмисты испортили. В каких то случаях наличие неверного расширения может вызывать непотребное приложение для открытия файла. Без расширения пока всё ещё правильно файлы определяются (надолго ли?).
« Последнее редактирование: 04.12.2017 06:27:01 от ruslandh »

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 8 099
Было так когда-то. Сейчас перешедшие прогромисты испортили. В каких то случаях наличие неверного расширения может вызывать непотребное приложение для открытия файла.
Это если через иконки запускать, когда между действием с файлом и кликом что-то ещё делает DE. Если речь про консоль, то всё так, как я написал.

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 246
  • Учиться .... Телепатами не рождаются, ими ....
    • Email
Смотрите также
ldd test-file.run

Если предположить, что запрет запуска бинарника, то смотрите не запрещёно-ли из каталога, в котором находится бинарник запускать файл.
Например, раздел в котором он находится может быть смонтирован с опцией noexec

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 8 099
Например, раздел в котором он находится может быть смонтирован с опцией noexec
Кстати да, что-то я про это забыл.

Оффлайн sb

  • Модератор глобальный
  • *****
  • Сообщений: 8 991
Например, раздел в котором он находится может быть смонтирован с опцией noexec
Кстати да, что-то я про это забыл.
Разве при отсутствии прав на запуск путем задания параметра монтирования раздела (кстати, почему в убунте тогда noexec, а у остальных тестовых нет noexec) сообщение о не найденной команде должно выводиться при попытке запуска ?

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 8 099
о не найденной команде должно выводиться при попытке запуска ?
Вообще-то нет. Сейчас проверил:
# ./qq
bash: ./qq: Permission denied
Но что-то такое вспоминается вроде, связанное то ли с правами, то ли с атрибутами. Но пока не могу вспомнить, что именно. А произвольный скрипт с того же места запускается ?

Или ещё вариант - ищет какую-то библиотеку по другому имени, и вот именно на неё возникает ошибка "No such file". Но вот это уже только посредством strace смотреть.
« Последнее редактирование: 04.12.2017 12:17:39 от asy »

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 246
  • Учиться .... Телепатами не рождаются, ими ....
    • Email
Ещё вариант, что внутри *.run вызывается какая-нибудь другая команда (например,через system("/usr/bin/...")) и она не находится.

Оффлайн sb

  • Модератор глобальный
  • *****
  • Сообщений: 8 991
А произвольный скрипт с того же места запускается ?
Этого уже не узнать. Но я пробовал запуск из трех разных директорий внутри хомяка, но не суть.
Ещё вариант, что внутри *.run вызывается какая-нибудь другая команда (например,через system("/usr/bin/...")) и она не находится.
Неа. Очевидно, что идёт вызов содержимого бинарника, который слинкован динамически со внешними библиотеками (и которые он находит, а если не находит, то ругается).
Похоже, что тему пора закрывать, т.к. дальше рассуждать неинтересно.