Как действительно установить tar.gz файл на Linux - как справиться вручную установленный (или автономный) приложения?

Я знаю об одной причине иметь в наличии подкачку. У меня есть приложение, которое поднимает столько памяти, сколько я могу позволить себе настроить для своей системы. Это использует Hadoop, который в одной части обработки делает ветвление и должностное лицо для выполнения единственной команды Unix (я думаю "uname" или "пользователь" или что-то, что они не могли найти Java эквивалентным для). Кажется, что Java не делает, vfork с копией на семантике записи как исходное приложение был бы. Если я запускаю свое приложение с помощью 4 ГБ RAM, когда это разветвляется, ветвление использует еще 4 ГБ RAM, но затем быстро выпускает ее. Если у меня не было 4 ГБ подкачки для того, который Hadoop для свопинга в я должен буду оплатить 8 ГБ RAM только, чтобы иметь 4 ГБ для моего приложения.

12
23.04.2018, 06:47
4 ответа

Почему много приложений не доступно в пакете repos?

Могло быть много причин:

Нет никакой единственной причины. Если требуется видеть любимое приложение в диспетчере пакетов дистрибутива, необходимо рассматривать каждый случай отдельно. Попытайтесь выйти на связь с devs (на канале IRC или списке рассылки, например) и спросить, как Вы могли помочь упаковке.

Как установить tarball?

tarball (.tar.gz пакет) мог содержать что-либо. Пока Вы на самом деле не открываете его, у Вас нет способа принять, как установить его. Снова, к каждому пакету нужно приблизиться по-другому.

Ищите документацию! Любой (полу-) достойный пакет предоставит инструкции относительно того, как установить приложение. Ваше первое отражение должно всегда быть должно искать текстовый файл под названием README, УСТАНОВКА или что-то вроде этого. Проверка веб-сайта издателя могла бы также помочь.

Так как каждый пакет отличается, нет никакого универсального способа обработать каждый tarball в мире. Это похоже на просьбу о рецепте, который работает над всеми компонентами в мире. Не случай.

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

Особый случай: автоинструменты

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

В Источнике/Бесплатном программном обеспечении Linux мировой / Открытый мировой Источник/Бесплатное программное обеспечение одна система сборки получила более широкое принятие: Автоинструменты GNU. Если Вы когда-нибудь имеете дело с (n открытый) исходный пакет, существует основательный шанс, что Вы будете использовать Автоинструменты.

В самом простом случае вот то, как установить приложение, упакованное с автоинструментами:

  • ./configure: Сценарий, который генерирует Make-файлы, соответствующие Вашей системе (это также часто проверяет на доступность зависимостей).
  • make: Компиляция исходного кода согласно Make-файлам, сгенерированным ранее.
  • make install: Копирует двоичные файлы в соответствующие местоположения, создает символьные ссылки и любой другой шаг, определенный разработчиком.

Примечания

  • configure сценарии обычно имеют много опций, как которые компилятор для использования, или как можно определить целевой каталог. При необходимости в гибкости на это стоит посмотреть ./configure --help.
  • Даже если Вы уверены, что это - Автоинструменты, и Вы знаете это действительно хорошо, всегда запускаетесь путем чтения документов (README, УСТАНОВКА...)

Ответьте на обновление в вопросе

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

Это сказанное, вот является несколькими персональными комментариями.

  • В моей системе я резервирую /usr/local/bin для пакетов, установленных моим диспетчером пакетов. Все, что я компилирую/устанавливаю вручную, входит /opt. Это - деталь, но она помогает избегающим сильным головным болям при контакте с несколькими версиями той же программы.

  • xxx.desktop, и проблемы GUI в целом, характерны для настольной среды, которую Вы используете. Если это работает на Вашу систему, большую. Но это не может быть обобщено ко всем средам, доступным на Unix.

  • /usr/local/bin имеет преимущество того, чтобы уже быть в Вашем ПУТИ. Если Вы хотите использовать другой каталог (как /opt как я предполагаю), несомненно, будут включать его в Ваш ПУТЬ. Если Вы не знаете, как сделать это, открыть терминал и выполнить следующее в терминале (не самый симпатичный способ сделать это, но ничего не зная о Вашей системе, я не могу предложить ничто больше): echo 'export PATH=$PATH:/opt' >> ~/.bashrc

14
27.01.2020, 19:54
  • 1
    Спасибо за подробный ответ. Я изучил readmes, но я решил, что не хотел делать что-то другое каждый раз. Таким образом, после намного большего количества исследования, попыток и разочарования, я придумал более конкретный вопрос/спецификацию - см. обновленное сообщение. –  Raekye 04.02.2013, 00:18
  • 2
    Вам рады, я надеюсь, что это помогает :) Я отредактировал свой ответ для обращения к обновлениям. Следует иметь в виду, что нет никакого "Одного Истинного Пути", чтобы сделать вещи (кроме того, если Вы emacs пользователь). Необходимо пройти пробную версию и ошибки учиться, со временем, преимуществами и недостатками каждого из разных подходов. Примечание –  rahmu 04.02.2013, 01:37
  • 3
    Спасибо за обновление! Конечно, делает. Я предполагаю xxx.desktop обычно работы для Gnome. Что Вы знаете об использовании update-alternatives устанавливать путь? –  Raekye 04.02.2013, 04:30
  • 4
    Насколько я знаю, это - Debian-особенный-метод контакта с универсальным программным обеспечением, как наличие нескольких браузеров или редакторов. (Ubuntu и Монетный двор основаны на Debian и наследовали это). Вот больше, если Вам интересно –  rahmu 04.02.2013, 05:02
  • 5
    Большой ответ. Одна вещь, которая часто необходима (или по крайней мере предпочтенный) состоит в том, чтобы сделать, sudo делает установку как последний шаг (с пакетом, которому Вы доверяете). Это дает процессу полномочия, он должен поместить вещи в системные каталоги, не принадлежавшие Вашему пользователю (как/usr/bin). –  Joe 08.02.2013, 22:44

Я думаю, что необходимо разъяснить с собой, в чем Вы хотите "зарегистрировать" его.

Для объяснения - и я не пытаюсь быть умным-alecky - "Linux" является, конечно, ядром и ядром не знает об и не имеет любой интерес к любому программному обеспечению пространства пользователя в системе вне init. Таким образом, о чем мы говорим здесь?

Вы упоминаете много различных дистрибутивов. Я иногда создаю программное обеспечение из источника даже при том, что это доступно в репозитории, потому что я хочу, некоторые настраивают набор опций, которые не установлены в двоичном файле дистрибутива. Единственная проблема, которую я имею с этим, состоит в том, что, если пакет является предпосылкой для чего-то еще, я должен действительно зарегистрировать это в упаковочной системе, чтобы не случайно устанавливать пакет дистрибутива сверху того, который я создал. В основанных на мягкой фетровой шляпе/об/мин системах это, покончили rpm -i --justdb <package>. Я не делаю, это на debian/apt основывало системы; вместо этого я просто вызываю установки по мере необходимости, который, возможно, ленив - надеется быть более хорошим способом сделать его путем создания фиктивного пакета, который симулирует выполнять безотносительно prereq. Это - вид вроде предложения m0nhawk фактического создания пакета из .tar.gz источника - кроме вполне немного более простого (я буду честен и скажу, что мне нисколько не нравится предложение m0nhawk).

Кажется, что у Вас есть некоторые другие проблемы помимо той с упаковочной системой. Мне не ясно, каково это, хотя Вы упоминаете настольную среду (например, Gnome). Они неоднородны, таким образом, нет просто никакого ответа на вопрос, "как я делаю это на Linux" - это даже не вопрос, "как я делаю это на человечности" или, "как я делаю это на хинду" - это - вопрос, "как я делаю это для рабочего стола гнома" или, "как делают это на рабочем столе XFCE", и т.д. По моему мнению единственной проблемой там является вопрос средств запуска, которые Вы упоминаете, который я хотел бы полагать, что каждый DE обеспечивает простое средство выполнения этого (но это не будет точно то же, потому что они отличаются). Существует также возможно проблема наличия, что-то обеспечивает значение по умолчанию для контакта с файлами - я думаю, что вопрос, "как я регистрирую команду в своем файловом браузере" (и файловые браузеры на Linux являются неоднородным набором также).

Затем существуют сервисы, которые организованы init системой (например, systemd или выскочка). Таким образом, этим вопросом является на самом деле серия связанных вопросов, касающихся, потенциально:

  • упаковочная система, например, склонный или вкусный
  • init система, например, systemd или выскочка
  • настольная среда, например, kde или единица
  • filebrower, например, наутилус или завоеватель
  • ?????

Часть причины там не может быть одним простым унифицированным решением (хотя стандарт XDG может обеспечить, некоторые части такого) то, что "Linux" не является одной простой объединенной операционной системой, и я предполагаю, что подавляющее большинство ее пользователей предпочитает его тот путь. Я часто не использую DE вообще, и я никогда не использую файловый браузер, с которым они идут и т.д.

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

8
27.01.2020, 19:54
  • 1
    "в двоичном файле дистрибутива" <-/меня бормочет что-то об основанных на источнике дистрибутивах –  njsg 03.02.2013, 15:07
  • 2
    кроме того, проблема со стандартом XDG состоит, вероятно в том, о котором некоторые восходящие потоки не заботятся об этом вообще, и разработчики дистрибутива - те обеспечивающие их .desktop файлы, для таких задач они требуются. –  njsg 03.02.2013, 15:08
  • 3
    , который я не знаю, должны ли восходящие разработчики быть обеспокоены этим. Я просто упомянул XDG, потому что это доступно конечному пользователю, если Вы хотите использовать его. Цена неоднородности - то, что она неизбежно помещает нагрузку ответственности на пользователе, которого они не имели бы с, например, OSX. Некоторые дистрибутивы Linux имеют целью минимизировать это больше, чем другие, и Вы свободны выбрать, но в конечном счете я думаю люди, которым действительно неудобно с той моделью, не должен просто использовать Linux вообще - я не уверен, почему они хотели бы во-первых на самом деле. –  goldilocks 03.02.2013, 15:28
  • 4
    у меня есть вид сформулированных лучший вопрос - как я должен управлять своими вручную установленными приложениями? Как Eclipse и Firefox, которые обычно работают без сложных зависимостей (таким образом, я могу установить его сам и загрузить пакет). Они работают автономные, как Ваш, или кто-то еще упомянул, но я должен я отслеживать эти приложения, вместо того, чтобы оставить их всех вокруг моей файловой системы? (См. обновленный вопрос), –  Raekye 04.02.2013, 00:20
  • 5
    Raekye: Это не имеет никакого значения к моей точке, которая является, что Вы не должны делать ничего для управления, или "отслеживают" вещи, которые Вы установили из источника в/usr/local, кроме того, до такой степени, что Вы хотите для того, что Ваши цели. Вне компиляции и установки в $PATH, нет никакого универсального реестра Linux, потому что нет никакой цели для такого универсального подхода. Я предполагаю, что Вы просто волнуетесь, что пропустили что-то - Вы не сделали. Вы не смолите, Вы configure, Вы make install. Вот именно, сделанный. Что-либо после этого - вопрос персонального предпочтения. –  goldilocks 04.02.2013, 16:59

Я думаю, что основная причина Вашей полной проблемы состоит в том, что система Linux на своем собственном не содержит "реестр" как таковой. Исполняемый файл - все, в чем Вы действительно нуждаетесь, чтобы что-то работало. Если Вы не захотите указывать полный путь к исполняемому файлу затем, то большинство оболочек будет искать их в каталогах, перечисленных в Вашей переменной $PATH сред. Это может стать немного более сложным со связанными библиотеками и так далее, но обычно Вы не должны пахать настолько далеко.

Различные дистрибутивы Linux стандартизировали на различных разметках файловой системы и системах управления пакета в этом и заключается проблема. Об/мин использования Redhats, Debians/Ubuntu используют deb пакеты. Дуга пошла своим собственным путем также. С точки зрения проектов программного обеспечения, если Вы не хотите быть включенными в распределение, Ваша база пользователей находится полностью в одном дистрибутиве или коммерческом продукте, который это нацеливает для простоты установки на всех, они - вероятно, единственные точки, Вы начинаете обращаться к созданию различных пакетов.

На самом деле, источник tar.gz, который создает с gcc вероятно, лучшее определение общего "пакета Linux". Ядро Linux с некоторыми утилитами GNU и GCC примерно общий знаменатель между всеми различными ароматами основанных на Linux операционных систем можно добраться.

Я не пошел бы до высказывания "так мало", вещи доступны как пакеты, потому что что-то определенное, которое Вы ищете, не. (или возможно дистрибьютор принял решение не обеспокоиться всей этой суетой пакета? Как Chrome и свой собственный процесс обновления). Существует столько пакетов вокруг для такого количества различных систем пакета для такого количества архитектуры для такого большого количества бесплатного программного обеспечения не забавный.

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

Существуют различные руководства сеть о создании пакетов. Причем Debian является одним из них.

Если все, что Вы хотите сделать, выполняется скомпилированный пакет, возможно, добавьте двоичный путь к Вашему $PATH?

Если Вы делаете что-то еще, что это?

4
27.01.2020, 19:54
  • 1
    , "Если все Вы хотите сделать действительно ли выполненный, является скомпилированным пакетом, возможно, добавьте двоичный путь к своему $PATH?" <-я предполагаю любой нормальный процесс установки (скажите, make install и т.п.), по крайней мере установил бы символьную ссылку под /usr/bin/, если не устанавливают все это под /) –  njsg 03.02.2013, 15:09
  • 2
    Главным образом я предполагаю, что это происходит из-за меня делающий много из --prefix=/elsewhere держать пользовательские сборки отдельно от нормального дерева. –  Matt 03.02.2013, 15:44
  • 3
    Обычно использование tarballs make install установит на /usr/local/bin –  Shadur 03.02.2013, 17:48

Я хотел бы добавить, что Вы можете также символьная ссылка на ~/bin/ вместо /usr/bin. *.desktop файлы могут быть помещены в ~/.local/share/applications/ или /usr/share/applications/. Только я использую свой компьютер, и мне нравится стараться не касаться системных файлов (что-либо вне моего корневого каталога) самому как можно больше.

Конечно, когда Вы помещаете материал в дубликаты "корневого каталога", они не соберутся для других пользователей.

Это - то, что включено в значение по умолчанию ~/.profile для хрипящего debian:

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi
0
27.01.2020, 19:54

Теги

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