Упакованный файл не является исполняемым

Обновлено: 01.07.2024

Переименование или копирование файла не должно быть возможным, поскольку ваше имя пользователя более чем вероятно будет частью others ( а не частью user или group).

Пользователь должен быть в той же группе, что и пользователь apache, или вам нужно больше разрешений только для этого файла, или вам нужно sudoer.

4 ответа

Это не совсем так. Программное обеспечение Ubuntu обычно поставляется в одном файле .deb. Будучи совершенно упрощенным (и неточным), файлы .deb являются соответствующим .exe-файлом для окон. Все программы, в том числе в окнах, используют зависимости от других файлов в операционной системе (библиотеки). Процесс установки является более или менее явным в разных ОС. Когда вы используете программный центр в Ubuntu для загрузки программы, вы загружаете только те зависимости, которые не установлены в вашей системе, и фактические файлы программ. Это предотвращает перегрузку системы с помощью дубликатов файлов и дублирует функциональные возможности, которые могут возникнуть в конфликтах.

Верьте или нет, единственная разница между установкой программы в Windows или Ubuntu - это объем информации, которую они предоставлять пользователям. Windows думает, что ее пользователи глупы и не хотят, чтобы они знали, что он устанавливает при запуске exe-файла. В linux вы получаете эту информацию . для некоторых пользователей слишком много деталей, но другие (большинство) действительно ценят это.

надеюсь, что это имеет смысл.

Совершенно верно. Даже другие дистрибутивы (не так хорошо, как Ubuntu) используют .rpms. Дело в .exe, .deb или что-то еще в том, что это в основном большой .tar, который извлекает себя в разные места! В Windows он переходит в Program Files и показывает вам индикатор выполнения, но на linux он показывает вам намного больше. – WindowsEscapist 17 June 2012 в 01:55 Я думаю, что предположение, что exe-файл похож на большой файл tar, слишком далеко продвигается в сторону упрощения. Файл tar не является исполняемым. Файл exe (естественно) есть. То есть с файлом deb (который действительно является tar-файлом), диспетчер пакетов обрабатывает фактический процесс перемещения файлов по округу, поэтому система может оставаться в стороне от вещей довольно элегантно. С программой установки (например, в Windows) это делает сам установщик. Он может говорить с некоторыми системными компонентами, чтобы держать вещи в порядке, но только если это так. – Dylan McCall 17 June 2012 в 03:15 Я думаю, что пути Linux намного лучше, чем Windows. Но да, пути Windows просты и легки – Anwar 17 June 2012 в 09:16 Формат файла Windows, соответствующий .deb, - .msi . – Eliah Kagan 18 June 2012 в 02:24

В Ubuntu большинство программных продуктов входит в один файл. Это *.deb debian пакетный файл, который загружается, распаковывается и устанавливается из вашего диспетчера пакетов.

Почему Ubuntu не устанавливает программное обеспечение из самораспаковывающихся исполняемых файлов, как это делает большинство программ для Windows? [!d1 ]

Поскольку самораспаковывающиеся файлы *.exe являются очень опасным предложением для принятия.

Наиболее важные различия между самораспаковывающимися исполняемыми файлами и системой упаковки, такими как debian / Ubuntu, являются:

Прозрачность безопасности Более подробное управление

В мире Windows вы должны доверять этому одиночному файл. Как можно действительно быть уверенным, что ему можно доверять? Как вы можете даже знать, что он что-то устанавливает? Как вы можете быть уверены, что за вашей спиной нет других вещей?

В Ubuntu все пакеты имеют цифровую подпись, поэтому, используя отдельный файл пакета - диспетчер пакетов (будь то muon, synaptic, aptitude или даже прямой apt) - вы проверяете содержимое до того, как оно будет даже распаковано, а тем более установлено. Это предполагает, конечно, что вы доверяете репозиториям. Я предпочитаю доверять репозиториям Ubuntu (единый авторитет), чем сотни часто незнакомых разных источников для загрузки.

Безопасность

С помощью функции , вы можете по существу сделать одно: выполнить его. В Ubuntu вы можете проверить содержимое пакета, описания, конфиги, отдельные файлы, последние изменения, исправления ошибок и т. Д. Из удобства вашего диспетчера пакетов, , прежде чем решит установить или нет. [ ! d17]

Когда вы устанавливаете файл *.exe, вы также должны доверять своему «удалению» крючка (и не все *.exe файлы гарантированно имеют один). В Ubuntu все файлы, принадлежащие стандартным пакетам, установленным менеджером пакетов, всегда можно удалить, поскольку это функция диспетчера пакетов, а не самого пакета. Менеджер пакетов - это отдельное и надежное приложение, которое предоставляет как установщик, так и деинсталлятор, пакет не может отнять у вас крючок удаления. Конечно, вредоносный пакет может прокрасться через действия после установки, но поэтому у нас есть официальная система репозитория и те же люди, которым мы доверяем, чтобы поддерживать их.

It идет дальше. На Ubuntu я действительно могу доверять своей системе, потому что могу проверить программное обеспечение на многих уровнях. Конечный уровень - это возможность взглянуть на исходный код. бинарные пакеты имеют соответствующие исходные пакеты. Я действительно могу посмотреть на источник (Пример: « Transparency » предоставит вам полные источники оболочки bash). В мире файлов * .exe обычно есть только двоичные файлы, и кто знает, что они на самом деле делают за кулисами?

Тем не менее, всегда есть исключения из правил, но для меня безопасность и доверие Я не могу принять исполняемые файлы из сотен различных источников, которые трудно проверить как стандартный способ установки компонентов в моей системе.

Я не знаю, каково точное расширение исполняемого файла. Это .deb или .tar.gz ?

Не ответ, но я хотел бы добавить, что ВСЕ в LINUX - это ФАЙЛ, поэтому наличие расширений в виде .exe никогда не имеет значения. @tijybba Философия дизайна "все - это файл" совершенно не связана с .exe расширениями, которые не нужны для собственных исполняемых файлов. Первый объясняет содержание /dev ; последнее связано с разрешениями на выполнение и проверкой внутренней части файла, чтобы определить, какой это тип файла. @ Eliah Kagan - Это была просто базовая информация, так как в Windows расширение необходимо для выполнения, ну, в Linux это не так, что касается разрешений для исполняемых файлов , оно требует немного больше ноу-хау о доступе пользователя Sudo и проблем безопасности Underlaid , который, как я догадался, кто-то уточнит в ответе в качестве его последней части, если вообще понадобится, вот почему я разместил его как комментарий, а не как ответ. @tijybba Но «все», будучи файлом, не имеет ничего общего с темой этого вопроса, не так ли? Я полагаю, что я неправильно прочитал эту часть, в которой говорится «что такое exe- файл в Ubuntu?», Я подумал , что это исполняемый файл , но теперь с вашей нетерпеливой помощью кажется, что это означает «что такое exe- файл в Ubuntu?». Если это крайне неуместно, дайте мне знать, что я был бы рад удалить его (ошибки - большой опыт обучения: D).

В Windows нет стандартного File-Extention, подобного файлу ".exe".

В Linux практически любой файл может быть исполняемым. Окончание файла просто описывает (но не обязательно), что или как файл «исполняется».

Например, скрипт оболочки заканчивается на .sh и «выполняется» через оболочку bash.

В своем вопросе вы спрашиваете .deb и .tar.gz. Хорошо. Файл .deb устанавливает программное обеспечение в вашей системе (пожалуйста, будьте осторожны!), А файл .tar.gz представляет собой сжатый файл, такой как .zip, который вы могли бы узнать по Окна.

Файл .deb также больше похож на .zip, чем на .exe. Дело в том, что .deb не выполняется сам по себе , он извлекается, интерпретируется и устанавливается другим приложением. Это другое приложение, обычно являющееся Центром программного обеспечения, который также служит установщиком. Linux меньше зависит от расширений по сравнению с Windows и, следовательно, решает возможность выполнения на основе разрешений, а не расширений.

Я бы суммировал систему следующим образом:

Поэтому, ответьте на свой оригинальный вопрос, расширения нет, или редко, это .elf или .bin .

Это сделано вики-сообществом, поэтому любой может добавить запись.

Я никогда не видел расширение .elf, но видел расширение .bin довольно часто. В то время как другие ответы сосредоточены на том факте, что «любой» файл может быть исполняемым, этот ответ действительно бьет по голове, в то время как высказывание «все» может быть исполняемым, на самом деле не информативно и не правда, а скорее исключительно. Я мог бы переименовать любой файл в Windows в .exe, и он попытается выполнить его, но не обязательно будет работать, в Linux он такой же, если он не предназначен для выполнения, он не будет работать . Моя проблема много раз загружает пакет, и не совсем понимая, с чего начать, но, конечно, rtfm. Вы должны добавить расширение .bin (как Windows, эквивалентное .exe) Это не расширение, но для меня было полезно узнать, что формат "PE" в Windows эквивалентен формату "ELF" в Linux

Концепция исполняемого файла отличается в Unix / Linux от Windows.

Windows

Linux / Unix

Каждый файл имеет исполняемый бит, поэтому любой файл может быть выполнен, в отличие от Windows. Чтобы увидеть, является ли файл исполняемым, вы можете проверить его свойства (вкладка «Разрешения») или даже увидеть их помеченные в терминале (все они отмечены *).

Даже текстовые файлы (например, сценарии оболочки) могут иметь свои исполняемые биты и запускаться как единое целое.

Отдельные исполняемые биты существуют для пользователя, группы и других. Использование этих битов может ограничить, кто может выполнять программу. Существуют дополнительные биты для SUID и SGID, чтобы заставить программу работать от имени пользователя или группы, которой принадлежит файл. Выше приведены некоторые неточности: 2) «у каждого файла есть исполняемый бит»: есть три исполняемых бита (владелец, группа и другие), поэтому один может разрешить выполнение файла самому себе, но не другим. Также есть бит setuid для «execute-as-owner» и setgid «execute-as-group». 2) «любой файл может быть выполнен»: не так. биты разрешения являются обязательным, но недостаточным условием для успешного выполнения файла. Немедленный сбой произойдет, например, если файл на самом деле не может быть загружен и запущен (Ссылка: магические числа файлов man magic , ELF man elf и строка хэш-бэнг man execve )

Чтобы узнать, что операционная система UNIX думает о типе конкретного файла, вы используете команду file:

В приведенном выше примере я указываю путь к программе 'ls', вы должны заменить путь к вашему файлу.

Файл сценария будет выглядеть так:

Случайный текстовый файл:

Он даже достаточно умен, чтобы правильно идентифицировать программу Windows, если у вас есть одна, лежащая на вашем компьютере с UNIX:

И когда он не может понять, что это за файл (но может открыть его), он называет это данными:

Выполнение файла в Linux вообще не связано с именем файла или расширением. Любой файл может быть потенциально выполнен при условии, что он обрабатывается binfmt механизмом ядра (и что для него установлены разрешения на выполнение).

Наиболее распространенным форматом для исполняемого файла является ELF , хотя некоторые ядра могут быть скомпилированы для поддержки старого a.out формата. (Для получения полной технической информации, binfmt_elf.c это где искать.)

binfmt_misc позволяет для регистрации других обработчиков, как описано здесь .

Если вам нравится заниматься программированием ядра, вы даже можете написать свой собственный .

Хотя это и не связано напрямую, file команда должна указать вам, является ли файл исполняемым файлом ELF или чем-то еще.

Другой аспект, который может возникнуть, когда вы хотите «запустить» файл, - это иметь инструмент проводника, который использует расширения регистра, чтобы иметь возможность запустить программу, которая откроет эти файлы. Это то, что произойдет, если вы дважды щелкнете по a .txt , .tar.gz или .deb , например: файлы не являются ни исполняемыми, ни исполняемыми, но то, что вы используете для двойного щелчка, выбирает, какой исполняемый файл нужно открыть, чтобы открыть эти файлы.

@ObsessiveFOSS, но заслуживает ли он снижения? Никто не упомянул моно до моего ответа. Никакой ответ здесь действительно не говорит о том, как на самом деле работают исполняемые файлы Linux (см. Мой комментарий о binfmt в отношении принятого ответа). Я не понизил. Я чувствовал, что голосование должно остаться как есть. @ObsessiveFOSS, нет проблем. Я также заметил, что вопрос был отредактирован с тех пор, как я на него ответил, немного изменив его значение (изначально я понимал его как «У меня есть исполняемый файл, я не могу его запустить . ») и уменьшил свой ответ актуально действительно.

В Windows .exe-файл - это компьютерный файл, который заканчивается расширением «.exe», которое обычно называют исполняемым файлом. Когда вы нажимаете exe-файл, встроенная подпрограмма автоматически выполняет код, который может привести в движение несколько функций. EXE-файлы обычно используются для установки файлов в операционной системе Windows.

Кроме того, у вас есть файлы .tar, обычно известные как сжатые файлы. В версиях Linux, таких как Ubuntu, функции используются в различных дистрибутивах программного обеспечения, причем большая часть исходного кода программного обеспечения доступна в формате tar.gz. Из этого можно предположить, что tar. gz - это форма хорошо известного формата .tar, который используется для архивирования.

В Ubuntu, с другой стороны, формат файла .deb больше похож на файл .exe в windows. Когда вы открываете его, центр программного обеспечения обрабатывает его код и устанавливает содержащуюся в нем программу, такую ​​как исполняемый файл.

Даже если вы по-прежнему можете устанавливать программное обеспечение и пакеты из исходного формата (tar.gz), наиболее подходящим форматом для установки программного обеспечения является .deb. Возьмем, к примеру, Ubuntu Software Center; все приложения, которые он содержит, на самом деле являются файлами .deb. В целом, в linux почти каждый формат файла (включая .deb и tar.gz, а также хорошо известные файлы bash .sh) может вести себя как исполняемый файл, так что вы можете установить пакеты или программное обеспечение с этим.

Я бы лучше сравнил файлы .deb в системах, производных от Debian, с файлами MSI для установщика Microsoft .

В Windows нет эквивалента расширению exe, указывающему на то, что файл является исполняемым. Вместо этого исполняемые файлы могут иметь любое расширение и, как правило, вообще не иметь расширения .

Linux / Unix использует права доступа к файлам , чтобы указать , если файл может быть выполнен. В частности, есть разрешение на выполнение файла, которое сообщает системе, что этот файл разрешено выполнять. Однако отсутствие этого разрешения не означает, что файл не является исполняемым; просто, что соответствующий пользователь не имеет права пытаться выполнить его. Точно так же наличие этого разрешения не всегда указывает на то, что файл является допустимым исполняемым файлом.

Linux / Unix имеет двоичный формат исполняемых файлов, называемый ELF, который эквивалентен двоичным исполняемым форматам PE (Windows) или MZ / NE (DOS), которые обычно имеют расширение .exe.

Тем не менее, другие типы файлов могут быть исполняемыми, в зависимости от оболочки. Как правило, если вы пытаетесь выполнить файл, который система не распознает как двоичный исполняемый файл (например, формат ELF), то он интерпретируется текущим интерпретатором оболочки. Это выполняет тот же эффект, что и пакетные файлы в Windows или DOS, за исключением того, что опять-таки это не расширение, которое определяет его тип или способ его выполнения.

Ух, я тоже почти ответил на это. Посмотрите на дату, этот пост является динозавром.

Файлы EXE и DLL являются переносимыми исполняемыми файлами. Они основаны на Unix-файлах PE / COFF.

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

Важным фактором является то, что в этих файлах установлен исполняемый бит. Если у вас есть цветной терминал, вы заметите, что это другой цвет при использовании ls .

В файловой системе Unix бинарные исполняемые файлы обычно хранятся в собственном месте.

  1. / bin (основные двоичные файлы)
  2. / sbin (системные двоичные файлы)
  3. / usr / bin (двоичные файлы приложения)

тогда как другие ресурсы приложения могут храниться в / usr / lib / или / usr / share /

Файл deb более корректно соответствует файлу msi в windows (то есть установщику пакета).

Проблемы, возникающие при использовании Pyinstaller для упаковки и создания исполняемых файлов

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

1 Базовый метод использования Pyinstaller для упаковки программного обеспечения

После установки pyinstaller вы можете выполнить следующую команду в упакованном каталоге

Введение общих параметров

  • --Icon = путь к значку
  • -F пакет в исполняемый файл
  • -w Использовать окно без консоли
  • -c Использовать консоль, без окна
  • -d Вывести информацию журнала в консоль, используемую для просмотра информации об ошибках (при использовании этого параметра лучше не использовать параметр -w)
  • -D Создать каталог, содержащий exe и другие зависимые файлы
  • pyinstaller -h для просмотра параметров

2 После успешной упаковки я обнаружил ошибку «Нет модуля с именем pandas._libs.tslibs.np_datetime».


Причина в том, что pandas является исходным кодом c, и pyInstaller не может найти код pandas, даже если вы -p / lib / site-packages или нет.
Решение:
в ./Lib/site-packages/PyInstaller/hooks,Создайте новый файл с именем hook-pandas.py, Напишите следующее и сохраните.

Тогда это может не сработать
Изменить команду при упаковке

Изменить файл спецификации после генерации
Измените спецификации, а затем снова используйте спецификации для генерации exe

Тогда pyinstaller -F main.spec сделает
Ссылка на конкретное решение
Этот пост в блоге

Чтобы решить эту проблему

3 Произошла ошибка при использовании библиотеки docx в файле пакета



Если вы хотите упаковать код файла операции word, используйте инструмент pyinstaller, чтобы упаковать скрипт с использованием библиотеки python-docx в исполняемый файл exe, дважды щелкните, чтобы запустить сгенерированный exe-файл, и сообщите об ошибке:

Решения
Найдите файл с именем default.docx в пути установки пакета python-docx,

Скопируйте найденный файл default.docx в каталог, где находится мой файл сценария py.
Измените способ создания объекта Document в сценарии:
Исходный метод создания:

Используйте инструмент pyinstaller, чтобы снова упаковать скрипт как exe-файл

4 Есть вопросы по упаковке ресурсов изображения

Добавить в сгенерированный файл спецификации


для решения
Если вы по-прежнему получаете ошибку и не можете найти файл зависимых ресурсов, возможно, это проблема относительного пути. Поместите соответствующий файл ресурсов в тот же каталог, что и exe-файл.

В основном решаем проблемы, возникающие в этом упакованном программном обеспечении.

Интеллектуальная рекомендация


Michael.W Поговорите о Hyperledger Fabric. Проблема 20 - Подробная индивидуальная сортировка узла с пятью порядками с исходным кодом для чтения.

Michael.W Поговорите о Hyperledger Fabric. Проблема 20 - Подробная индивидуальная сортировка узла с пятью порядками с исходным кодом чтения Fabric Файл исходного кода одиночного режима находится в ord.


Мяу Пасс Матрица SDUT

Мяу Пасс Матрица SDUT Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Problem Description Лянцзян получил матрицу, но эта матрица была особенно уродливой, и Лянцзян испытал отвращение. Чт.


Гессенская легкая двоичная структура удаленного вызова

Hessian - это легкая двоичная структура удаленного вызова, официальный адрес документа, в основном он включает протокол удаленного вызова Hessian, протокол сериализации Hessian, прокси-сервер клиента .


TCP Pasket и распаковка и Нетти Solutions

Основные введение TCP является ориентированным на соединение, обеспечивая высокую надежность услуг. На обоих концах (клиенты и терминалы сервера) должны иметь один или более гнезда, так что передающий.

Научите, как упаковать код Java в файл JAR и преобразовать в исполняемый файл EXE

Научите, как упаковать код Java в файл JAR и преобразовать в исполняемый файл EXE

При изучении java в учебнике есть только один раздел о проблеме, и вы должны сами написать проблемный файл конфигурации, но окончательный результат можно преобразовать только в jar-файл. Это действительно неудобно. Этот блог научит вас, как быстро и легко упаковать код Java в файл JAR и преобразовать его в исполняемый файл EXE

Мы все знаем, что Java может упаковывать двоичные программы в исполняемые файлы jar. Двойной щелчок на этом jar аналогичен двойному щелчку exe, но он все равно выглядит иначе. Фактически, для упаковки java-программы в exe-файл также требуется этот исполняемый jar-файл.

eclipse или Myeclipse и exe4j (загрузка программного обеспечения и учетной записи онлайн)

Шаг 1: Упакуйте проект Java в исполняемый файл JAR

Сначала посмотрите на мою структуру проекта java, Main.java - это класс записи программы, в котором есть основная функция, каталог config - это некоторые файлы конфигурации, а lib - сторонняя библиотека классов, используемая


Начать упаковку, Simulate (Java-проект) - правая кнопка мыши - Экспорт


Во всплывающем окне выберите «JAR-файл», нажмите «Далее»


Снимите отметки с каталогов «config» и «lib» и файлов конфигурации проекта «.classpath» и «.project», сгенерированных eclipse, и нажмите «Далее»


Все по умолчанию, нажмите «Далее»


Во всплывающем окне выберите файл MANIFEST.MF, который мы создали сами, и нажмите «Готово».


Содержимое моего файла MANIFEST.MF:

Manifest-Version: 1.0 Main-Class: bing.Main Class-Path: . lib/ojdbc14.jar lib/poi- 2.5.1 .jar lib/jbcl.jar lib/JTattoo.jar lib/liquidlnf.jar Created-By: Kun Sun

Указав «Main-Class» для достижения цели исполняемого файла JAR. Фактически, мы заканчиваем упаковкой проекта в exe-файл. Class-Path может быть не указан, и classpath также должен быть указан при упаковке exe-файла.

Шаг 2: упаковать проект в exe

Для ясности, не все файлы упакованы в исполняемые файлы, файлы ресурсов не могут быть включены, смотрите вниз ↓

Сначала создайте папку в любом каталоге, желательно с именем, совпадающим с именем проекта, я создал папку «Simulate» на диске F, а затем все файлы ресурсов и сгенерированный исполняемый файл JAR (мой Simulate. jar) копируются в эту папку, каталог конфигурации и каталог lib, если вы боитесь, что jre не установлен на машине, на которой выполняется программа, то вам необходимо скопировать каталог jre на свой компьютер, jre5, который я установил, последний Структура каталогов:


Откройте exe4j, пропустите приветствие и сразу щелкните по второму элементу в левой панели навигации, потому что мы заранее запаковали проект java в исполняемый файл jar


Во всплывающем окне выберите «JAR в режиме EXE» и нажмите «Далее»


В новом окне дайте нашему приложению имя, а затем выберите каталог для создания исполняемых файлов (My F: \ Simulate), нажмите «Далее»



Нажмите зеленую «+», чтобы установить путь к классу для запуска программы


Сначала выберите наш собственный исполняемый файл JAR (мой Simulate.jar) и нажмите кнопку ОК


Наш Simulate.jar добавлен в путь к классам


Затем нажмите кнопку выбора основного класса в общем. Во всплывающем окне exe4j будет автоматически искать все банки в текущем пути к классам, которые содержат метод main, и перечислять их, потому что в настоящее время я выбираю только банку своего проекта, и я В проекте только Main.jar содержит метод main, поэтому сразу выделите его и нажмите «ОК», класс ввода программы установлен


После настройки основного класса добавьте все необходимые сторонние библиотеки в путь к классу так же, как и при добавлении «Simulate.jar», нажмите «Далее».


Введите минимальный номер версии Jre для Java, то есть Jre ниже этой версии не может запустить программу, а затем нажмите «Дополнительные параметры» - «Последовательность поиска», чтобы настроить нашу JRE. Как я уже говорил, что, если Jre не установлен на клиенте? , Не имеет значения, мы связываем один в


Нажмите на зеленое «+», чтобы выбрать расположение JRE в комплекте


Во всплывающем диалоговом окне выберите «Направление», а затем выберите папку JRE. Примечание: Этот каталог JRE является копией локального каталога JRE в текущий каталог создания исполняемых файлов. Мой каталог - F: \ Simulate \ jre5. Программа ниже использует относительный каталог, нажмите OK, чтобы завершить операцию связывания JRE

Читайте также: