Как сообщить Ubuntu, где установить программу и как определить, где была установлена ​​существующая программа?

10

Я совершенно новый для Ubuntu / Linux, используя Ubuntu Server на данный момент. Просто пытаюсь понять что-то основное.

Как вы можете указать, где вы устанавливаете программу. Например, я только что установил поисковую систему Sphinx, поместив tarball, который я загрузил со своего сайта, на мой:

/home/sphinx

Каталог. Я создал каталог sphinx для размещения этого tarball. Затем я выполнил следующие команды:

tar xvzf sphinx-0.9.8.1.tar.gz
cd sphinx-0.9.8.1/
./configure --with-mysql-includes=/usr/include/mysql --with-mysql-libs=/usr/lib/mysql

, а затем они:

make
sudo make install

Теперь у меня много файлов, сидящих в каталоге, где я запускал эти команды. Является ли это моей установкой Spynx или установил ее где-то еще?

В Windows, если вы запустите установщик (файл .exe) в любом месте, программа все равно будет установлена ​​в ваш каталог C: \ Program Files. Что-то подобное относится к Linux, где все программы установлены в центральном месте или вы можете устанавливать программы в любом месте системы.

Вопросы

  1. Я бы предпочел сохранить все установленные программы в одном месте, чтобы что для этого лучше подходит с точки зрения лучшей практики. В другими словами, что такое эквивалент Linux C: \ Program Files?

  2. И как всегда устанавливать в этом месте, просто вопрос размещения tarball и запуск команд установки из этого местоположения?

  3. А если я использую sudo apt-get для установки пакета. Как я могу указать на это местоположение, чтобы сказать apt-get, чтобы он всегда устанавливался там?

задан JakeRow123 14.06.2012 в 02:16
источник

3 ответа

15
  

Что-то подобное применимо к Linux, где все программы установлены в центральном месте.

Приблизительные эквиваленты каталогов установки Windows в Linux

  • \Windows = /bin
  • \Windows\System32 = /lib и /sbin
  • \Program Files = /usr/bin и /usr/lib
  

Я бы предпочел сохранить все установленные программы в одном месте, чтобы это было подходящим для этого с точки зрения лучшей практики. Другими словами, что такое эквивалент Linux C: \ Program Files?

Это будут каталоги в /usr , в частности /usr/bin и /usr/lib .

  

И как всегда устанавливать в этом месте, просто вопрос размещения tarball и запуск команд установки из этого местоположения?

  • Нет. Где вы находитесь, когда вы запускаете команды установки, почти никогда не имеет значения.

  • Программы, которые вы устанавливаете через apt-get (или aptitude ), почти всегда попадают в /usr . НО программы, которые вы компилируете из источника, и make install чаще всего попадают в /usr/local/bin , /usr/local/lib и т. Д., И у вас могут быть проблемы с этим, поскольку установленный пользователем путь в Debian / Ubuntu равен /usr , а не% код%.

  • При компиляции из источника добавьте этот переключатель для настройки: /usr/local . Таким образом, когда вы ./configure --prefix=/usr , файлы будут в конечном каталоге

  • Также загляните в программу make install , которая отслеживает файлы, скомпилированные из исходных версий, делает файл deb и позволяет легко удалить / переустановить.

  

Что делать, если я использую sudo apt-get для установки пакета. Как я могу указать на это местоположение, чтобы сказать apt-get, чтобы он всегда устанавливался там?

checkinstall / apt-get позаботится об этом автоматически. Вы можете использовать dpkg , чтобы просмотреть все файлы, установленные пакетом и где они были установлены.

    
ответ дан izx 14.06.2012 в 02:29
источник
4

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

Префикс /usr используется программным обеспечением, упакованным вашим дистрибутивом. Вы должны not устанавливать там какое-либо другое программное обеспечение, потому что будет путать дистрибутив при установке и обновлении программного обеспечения, упакованного дистрибутивом. Поэтому пожалуйста не устанавливайте свое собственное скомпилированное программное обеспечение. Это не хорошая идея, если вы действительно не знаете, что делаете. И если вы не разработчик Debian или Ubunut, вы обычно этого не делаете. Я бы так не сделал.

Для коммерческого программного обеспечения используется префикс /opt . Для них зарезервировано меньше всего вмешиваться в дистрибутивы и локальный системный администратор.

Для программного обеспечения, устанавливаемого системным администратором для всех пользователей, используется префикс /usr/local . Там он находится в стороне от коммерческой и дистрибутивной установки и не будет мешать им. Так как системный администратор вы используете это (если у вас есть права root, вы являетесь системным администратором).

Если вы обычный пользователь, устанавливающий программное обеспечение для себя, вы можете использовать свой домашний каталог как префикс, используя параметр --prefix для configure с префиксом « ~/ » или $HOME/ . Я часто это использовал, когда был студентом. : -)

Обычно программное обеспечение делает правильные вещи, когда вы выполняете configure с опцией --prefix с правильным значением, а затем make; make install .

В любом из этих префиксов вы обычно находите эти каталоги в стандартной установке.

  • bin - исполняемые программы, двоичные файлы.
  • sbin - системные двоичные файлы, которые обычно не должны выполняться обычными пользователями.
  • man - страницы руководства для программ, библиотек и файлов конфигурации и т. д.
  • etc - файлы конфигурации со значениями по умолчанию для программного обеспечения.
  • lib - программные библиотеки и файлы данных, которые зависят от архитектуры (например, ЦП) на вашем компьютере.
  • share - файлы данных, которые не отличаются друг от друга на разных архитектурах и могут совместно использоваться разными компьютерами.
  • var - каталоги с данными, которые изменяются во время выполнения программы. Как и файлы журналов и т. Д.

Большинство этих каталогов могут использоваться с файловыми системами с защитой от записи для повышения безопасности. Единственный, кому нужно писать, - это каталог var/ . Когда программное обеспечение обновляется, эти каталоги, очевидно, (?) Должны иметь письменные привилегии. Это можно сделать с помощью перезагрузки с правами на запись во время установки, а затем повторно установить с чтением только после установки. Но это продвинуто, и я даю ему только пример расширенного управления пакетами.

Существуют также некоторые каталоги непосредственно в / (корневой каталог), которые не существуют ни под каким другим префиксом, как /dev , /tmp , /proc и /srv (для каталогов данных сервера, но они обычно находятся в /var/lib или /var/www и таких каталогах, поэтому вам нужно изменить конфигурацию, чтобы использовать этот каталог. Я рекомендую вам это делать, когда вы используете сервер. Используйте только /var/ для тестирования стандартная установка).

  1. Linux не является MS Windows. Есть много мест для размещения программ, которые вы устанавливаете. Это зависит от того, кто устанавливает и для кого. Прочтите это в моем посте. Примечание. RedHat использует /usr , поскольку Debian / Ubuntu использует /usr/local . Узнайте о своем распределении.
  2. Различные программы имеют разные способы установки. --prefix полезны для программ, использующих configure . Лучший способ узнать, вероятно, прочитать файл README.txt или что-то в этом роде, которое вы, вероятно, предоставили в tar-архиве. Архив tar может быть извлечен в любом месте, например, в вашем домашнем каталоге. После завершения установки вы можете удалить извлеченный tar-архив, если вам не хватает памяти. Но не делайте этого раньше, если вы не проверили свою установку должным образом.
  3. Программы, установленные с apt-get или aptitude , всегда устанавливаются в правильном месте для распространения. Вы не можете изменить это место.
ответ дан Anders 14.06.2012 в 22:08
2

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

Когда вы загружаете файл (не предпочтительный, но часто необходимый, когда приложение не находится в репозитории), то первое, что вы сделали, это запустить tar, что эквивалентно распаковке в Windows. Это создает файлы, которые вы, скорее всего, видите.

Затем, когда вы запустите make install, который обычно помещает результаты в нужное место, возможно, создайте меню, но он не удалит ненужные файлы. Вы, скорее всего, сделаете это, но вы можете временно их сохранить на всякий случай.

Вот интересная статья о структуре каталогов Debian .

    
ответ дан Marty Fried 14.06.2012 в 02:30