Как я знаю, где положить вещи в Linux?


58

Установка чего-либо в Windows происходит одним нажатием кнопки. Но каждый раз, когда я пытаюсь установить что-то в linux, чего нет в APT, я очень запутываюсь.

Вы скачиваете заархивированную папку, и что тогда? Если вам повезет, есть README, ссылающийся на некоторую документацию, которая может вам помочь, если вам повезет.

В чем заключается хитрость при «установке» расширений и приложений, которых нет в APT?

Я люблю Linux, но эта проблема преследует меня каждый день.



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

1
Если это не из APT, то, вероятно, это не то, что вы можете просто установить - вам нужно скомпилировать и установить его самостоятельно. И тогда это начнет путаться с пакетами на основе APT. Проще всего найти APT / .debs для всего, что вам нужно, насколько это возможно.
Rup

2
@Rup Plus, если в программном обеспечении нет пакета deb, вам, вероятно, не следует устанавливать его, поскольку оно либо устарело, либо является устаревшим, либо несовместимо с дистрибутивами на основе apt.
Let_Me_Be

3
Как только вы получите достаточный опыт сборки / установки программного обеспечения, вы можете просто создавать свои собственные пакеты. Пожалуйста, не забудьте оставить отзыв вышестоящему провайдеру!
Jsbillings

Ответы:


32

Если это программное обеспечение , которое подчиняется Filesystem Hierarchy Standard , чем вы должны поместить его в /usr/localи соответствующие подкаталоги (как bin, lib, share, ...).

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


1
Хороший ответ, правда, но не нужно делать это каждый день.
phunehehe

1
@phunehehe - Ты должен делать это каждый день?
Роб

3
Нет, я имел в виду ФП "эта проблема преследует меня каждый день".
phunehehe

1
В дополнение к ссылке в Википедии на FHS, прочитайте и эту: pathname.com/fhs/pub/fhs-2.3.html . Прочитайте раздел с надписью «Цель».
yasouser

27

На этот вопрос нет простого ответа, но я могу дать вам общее представление о том, как это работает:

Большая часть программного обеспечения для Linux предоставляется авторами («апстрим») в виде исходного кода. Это позволяет каждому, у кого есть компилятор для конкретной платформы и конфигурации системы, загрузить исходный код и скомпилировать его самостоятельно. К сожалению для вас, многие программы полагаются на функции, предоставляемые другими программами и библиотеками программного обеспечения (зависимости).

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

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

Если нет предварительно скомпилированного пакета, вы всегда можете скачать исходный код и скомпилировать его самостоятельно. В большинстве случаев будет работать следующее:

./configure
make
(sudo) make install (or sudo checkinstall)

Строка ./configure устанавливает этап для процесса компиляции (и выдает ошибки, если зависимости не встречаются). Линия make выполнит Makefile, скрипт, который компилирует все части программы.

Традиционно вы должны использовать make install для установки программного обеспечения. Обычно это помещает исполняемые файлы в / usr / local / bin.

Поскольку вы используете apt, я очень рекомендую установить checkinstall. Вы можете использовать его вместо make install, и он создаст для вас пакет .deb. Это значительно упрощает последующее удаление программного обеспечения.

Обратите внимание, что есть несколько других систем компиляции, например, cmake; и некоторое программное обеспечение поставляется предварительно скомпилированным, но не распакованным (в этом случае вы можете запустить его прямо из разархивированной папки); а некоторые программы поставляются как набор скриптов, которые вы должны запускать самостоятельно. Свежий код из SVN иногда поставляется без скриптов настройки, поэтому сначала нужно запустить набор инструментов autoconf ... и т. Д., И т. Д. ... вы видите, что существует множество исключений из правила, но с небольшим опытом вы сможете расскажите, что делать с большинством этих загадочных загрузок. Configure-Make-Checkinstall - это хороший первый старт.

PS. Проведите выходные или два, чтобы научиться программировать себя, и все станет очень очевидно :-)

PPS. Вы можете удивиться, почему авторы программного обеспечения для Linux не предоставляют предварительно скомпилированные пакеты вместо исходного кода. Ну, они иногда делают. Но разные платформы и дистрибутивы Linux имеют свои собственные форматы пакетов и правила файловой системы, так что, как разработчик, вы должны будете предоставлять пакеты для каждой возможной конфигурации, что является проблемой. Пакеты Ubuntu часто проще всего найти - вы должны узнать, что такое PPA и как он работает!


1
«PS. Проведите выходные или два, чтобы научиться программировать себя, и все станет очень очевидно :-)». Плохой совет в отличном ответе. Просить людей программировать, чтобы понять, что Linux - это то же самое, что пассажирские авиалинии ремонтировать самолеты.
apoorv020

вместо программирования просто измените его, чтобы скомпилировать свой собственный linux, например, LFS (linux с нуля) linuxfromscratch.org
jsolarski

@apoorv, точка принята. :)
sebastian_k

4

Вы должны проверить checkinstall . Вместо

./configure
make
sudo make install

вы делаете

./configure
make
sudo make checkinstall

и вы сможете управлять этим пакетом, как если бы вы установили его через apt.


Ой, только что заметил, что @sebastian_k уже упоминал checkinstall ... О, хорошо!
mgalgs

1

Есть веская и веская причина, которая так запутывает (есть и раздражающая причина артефакта) ...

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

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

ПК с Windows, как правило, являются однопользовательскими системами и не имеют этого ограничения, все идет в Program Files, несмотря ни на что.

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

Система инициализации еще хуже.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.