Понимание форматов исполняемых файлов Linux и пакетов распределения программного обеспечения

Если Вы имеете опцию, пытаетесь протестировать NX (хотя это - боль для начинаний), поскольку это будет чувствовать себя намного быстрее, чем туннелирование X по ssh...

8
16.12.2018, 00:03
5 ответов

Диспетчеры пакетов и Зависимости

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

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

Различия: форматы пакета и стратегии

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

Кроме того, различные дистрибутивы имеют различные требования программного обеспечения, которое включено. Существует много частей программного обеспечения, которое может иметь отличающиеся возможности в зависимости от опций, которые даны, когда оно компилируется от исходного кода в исполняемый файл машины. Некоторые дистрибутивы хотят обеспечить полные наборы функций и богатый опыт, в то время как другие хотят обеспечить максимально минимизированный и простой опыт, и существует все промежуточное. Кроме того, распределение может решить отформатировать свою структуру каталогов по-другому или использовать другую init систему. Они могут решить связать программное обеспечение по-другому: может быть пакет, названный "dev-utils" в двух различных дистрибутивах, но одна версия этого включает yacc в то время как другой не делает. Из-за этих различных потребностей дистрибутивы принимают решение скомпилировать программное обеспечение по-разному.

Поэтому, даже если у Вас есть пакет в правильном формате для Вашего диспетчера пакетов, он не может работать, если пакет был предназначен для другого распределения. Например, тот пакет мог бы полагаться yacc будучи установленным, и это выразило ту зависимость посредством требования "dev-utils" пакета, но Ваш "dev-utils" не включает yacc. Теперь существует пакет, установленный с невстреченной зависимостью.

Это не действительно проблема.

Большая часть того, чтобы быть дистрибутивом Linux поддерживает центральный репозиторий программного обеспечения. Распределение заботится о поддержании всего этого для Вас. Это на самом деле делает очень легким установить программное обеспечение. Вы обычно используете диспетчер пакетов, чтобы искать и выбрать некоторые пакеты, затем говорите ему устанавливать их; это заботится об остальных для Вас. Процесс установки программного обеспечения Windows включает поиск для программного обеспечения на сторонних веб-сайтах, попытка определить местоположение соответствующей ссылки на загрузку, загрузки, проверки вируса и запущения программы установки, которая затем спрашивает Вас набор несоответствующих вопросов. Та целая путаница не является стандартом на Linux.

Репозиторий не может возможно включать все

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

Общественные репозитории

Много дистрибутивов имеют неофициальные репозитории, которые сохраняются людьми, не связанными с распределением. Ubuntu называет их PPAs, Fedora называет их Людьми Fedora Репозитории. Дуга Linux не имеет собственного имени для сторонних репозиториев, но он действительно имеет свой АУР, который является набором "рецептов" для пакетов (примечание: существует только один АУР). Вы могли бы сначала попытаться установить пакет из одного из этих источников, так как легко удалить их, если они не работают.

Скомпилируйте из источника

Если Вы не можете найти неофициальный репозиторий с тем, в чем Вы нуждаетесь, компилирование из источника не трудно. У Вас должен быть установленный пакет разработки своего распределения; это включает основные вещи как компилятор, компоновщик, синтаксический анализатор и другие инструменты, которые обычно необходимы для компиляции программного обеспечения. Затем Вы находите исходный код проекта (который почти всегда упаковывается в a .tgz или .tbz (названный "tarball"). Загрузите его в его собственный каталог где-нибудь, извлеките его (использование tar -xf filename.tgz, и обычно входите в один каталог, который это создало. В том каталоге может быть названный файл README или INSTALL. Если это существует, идите вперед и считайте его; большинство из них говорит Вам делать то же самое. Следующие несколько шагов сделаны в командной строке. Выполненный ls, и ищите названный исполняемый файл configure. Если это существует, выполните его путем выполнения ./configure; может иногда требоваться несколько минут. Это обычно запускает некоторые тесты, чтобы выяснить, как Ваше распределение имеет вещи установка, и это удостоверяется, что Вам потребовали, чтобы инструменты скомпилировали эту часть программного обеспечения. Следующий шаг должен работать make. Это на самом деле компилирует программное обеспечение, и оно, вероятно, займет время - где угодно от нескольких минут до часов в зависимости от размера программного обеспечения, которое Вы компилируете. После того как это сделано, Вы работаете make install. Это устанавливает программное обеспечение, которое включает копирование продуктов компиляции к соответствующим местам в Вашей файловой системе. После этого программное обеспечение доступно для использования.

Это было длинным разделом, но он получен в итоге, поскольку "README./настраивать, делают, сделайте установку". Это - стандартная программа для запоминания.

Установите пакет от другого распределения (не делайте этого),

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

Командная строка укусила

Некоторые люди предпочитают командную строку для преимуществ, которые она дает им. Они могут быть получены в итоге в три вещи:

  • Простота автоматизации
  • Скорость (по сравнению с нажатием повсеместно в gui)
  • Выразительность

Самым большим из них является выразительность; существуют вещи, которые могут быть сделаны в командной строке, которые не возможны в графическом интерфейсе.

Наконец, инструкции командной строки часто даются на полезных форумах, таких как этот, потому что намного легче передать корректную информацию, чем предоставление "click-here-then-there-then-there" инструкции по типу.

13
27.01.2020, 20:08

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

Сводка

  • Формат исполняемых файлов является тем же.
  • Существуют различные диспетчеры пакетов, которые не совместимы, даже если собранные программы. (Вы видели пакет как файл установщика как .msi файлы).
  • В основном различные дистрибутивы/версии имеют различные версии оперативных библиотек, и по причинам непротиворечивости и устойчивости приложения должны быть созданы против тех версий. (Версия Linux dll ада).
  • Различные дистрибутивы делают вещи немного отличающимися способами, и это может в некоторых случаях быть проблемой совместимости.
  • Командная строка может быть быстрее, и командная строка Unix значительно лучше, чем командная строка Windows.

Диспетчеры пакетов

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

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

Различные диспетчеры пакетов

Существуют всевозможные диспетчеры пакетов с различными достоинствами и недостатками. Примерами является об/мин и debian диспетчер пакетов (.deb файлы), но существуют другие. Эти диспетчеры пакетов, очевидно, нуждаются в различных форматах и таким образом не совместимы.

Различные дистрибутивы или версии

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

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

Двоичные дистрибутивы поэтому часто обновляют свою собственную версию для продолжения к новым версиям различных базовых пакетов (в других случаях, Вам нужны большие обновления).

Различные другие файлы

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

Командная строка

Unix, прежде всего, является рабочей станцией и серверной операционной системой. Это означает, что разработано с профессиональными системными администраторами в памяти. Автоматизация является важной частью панели инструментов системного администрирования, и сценарии оболочки являются способом сделать это. Попытайтесь добавить продвижение от 0 до 1 000 имен файлов в менеджере по графическому файлу.

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

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

Microsoft на самом деле поняла это хорошо и предлагает powershell как замену командной строки, а также последняя версия Windows Server является, прежде всего, администрируемой командной строкой.

6
27.01.2020, 20:08

Форматы исполняемых файлов являются всеми одинаковыми через дистрибутивы, но исполняемые файлы могли бы потребовать, чтобы дополнительное базовое программное обеспечение работало правильно. При рассмотрении основанных на Redhat дистрибутивов продуктом установки является об/мин, который будет включать все требования для данной части программного обеспечения, и не будет установкой по умолчанию, что программное обеспечение, если требованиям не отвечают. (yum альтернатива rpm и это используется некоторыми основанными на Redhat версиями). По определению GUI должен иметь намного большее место, чем интерфейс командной строки. Базовая философия UNIX должна упростить все так, чтобы данная задача работала максимально эффективно. Именно поэтому существует столько утилит, которые выполнят единственную задачу с выводом той способности задачи объединить в цепочку к входу другой задачи сделать что-то еще.

3
27.01.2020, 20:08
  • 1
    Быть корректными, вкусными не альтернативны, это работает выше об/мин, обеспечивающего nicier межтуз и функции как репозитории. –  rvs 29.10.2011, 18:24

Различные дистрибутивы имеют различные предпосылки установки. Однако существует RPMs или DEBs (или другие пакеты для других пакетных систем управления), та работа больше чем для одного дистрибутива. Философия Linux делает исходные коды легко доступными. При компиляции собственного программного обеспечения это - в значительной степени та же стандартная программа на всех дистрибутивах, и это всегда - то же .tar.gz заархивируйте Вас использование.

Скомпилированные RPMs больше похожи на часть системы; само приложение, как автономный объект, предназначено, чтобы быть распределенным и скомпилированным на каждой цели.

Вашими вторыми вопросами является что-то совершенно другое... Ну, "много пользователей Linux" предпочитает приложения CLI по многим различным причинам, небольшой объем потребляемой памяти является только одной причиной. При использовании SSH приложения CLI имеют больше смысла, особенно при работе удаленный над серверами. Как правило, тем серверам не установили графические среды. При запущении non-daemonized программ, их очень легко прервать. Ctrl - c, и программа ушел. Кроме того, много программ регистрируются к консоли, таким образом, легче отладить. При программировании Вы делаете большую часть компиляции в консоли. Это просто имеет больше смысла для быстрой отладки компиляции. Это или что, или читающий файлы журнала, иногда, читая консоль более быстро.

1
27.01.2020, 20:08

Дуга. Или FreeBSD, который разрабатывается в целом. (RHEL, SLES и подобный являются $upported в целом.)

Использование ноутбука: Монетный двор

Применимый hackability: Дуга.

Садистский hackability: Genoo.

Забава hackability: LFS.

Обеспеченность (сервер): RHEL, Ubuntu LTS, FreeBSD (отличающийся, чем Linux).

0
27.01.2020, 20:08
  • 1
    Можно хотеть отредактировать ответ для создания то, что Вы пытаетесь сказать, более ясный, и исправить несколько ошибок опечаток/грамматики. –  haziz 24.04.2012, 10:27

Теги

Похожие вопросы