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

10

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

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

/home/sphinx

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

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
источник

Ответы:

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файлы окажетесь в нужном каталоге

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

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

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

иш
источник
спасибо за подробный ответ, только один вопрос. Поскольку вы сказали «Нет. Где вы находитесь, когда запускаете команды установки, практически не имеет значения», означает ли это, что теперь, когда я установил программу, я могу безопасно удалить папку Sphinx в / home / sphinx /, которую я извлек из tarball и запустил установку и сделал команды в? Является ли это сейчас эквивалентом программы установки, которую я уже запустил для установки программы и которая теперь бесполезна?
JakeRow123
1
Да, вы можете удалить папку, извлеченную из архива - по сути, это папка «temp», в которую был извлечен установщик, и теперь она бесполезна. Это был отличный вопрос, я отредактирую ответ, чтобы включить эту информацию.
Иш
Вы можете, но тогда у вас возникнут проблемы с их удалением с помощью команды «make uninstall». В Debian / Ubuntu вы никогда не должны устанавливать свое программное обеспечение с префиксом / или / usr, вы должны использовать / usr / local. Почему, потому что / usr / local создан для локальных администраторов, это вы JakeRow123, чтобы устанавливать свои собственные программы. / и / usr предназначены только для пакетов Debian. Если вы установите там, шансы велики, что вы получите проблемы. Поэтому используйте ключ '--prefix = / usr / local' для команды configure при компиляции своей собственной. Тогда сделай; sudo make install 'установит вашу программу там.
Андерс
@Anders, make uninstallНЕ является стандартной функцией и не встречается во многих программных источниках. Кроме того, /usr/localчасто отсутствует в пути в Ubuntu и может вызвать проблемы при попытке запуска программ или при попытке компиляции (из-за включений в /usr/local).
иш
Вы НЕ должны устанавливать программное обеспечение не в том месте, как в / usr, а не в том месте, как / usr / local. Вы должны исправить ошибку с помощью PATH, если среда компьютера / пользователей настроена неправильно. Установка под / или / usr доставит вам неприятности. Поверь мне в этом. Был там и сделал это. Это было НЕ весело Совсем. Некоторые программы, все с автоконфигурацией, когда вы настраиваете команду configure, получили удаление. Другие, у которых этого нет, бесполезны и должны сообщать об ошибке ...
Андерс
4

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

Префикс /usr- это программное обеспечение, упакованное вашим дистрибутивом. Вам не следует устанавливать какое-либо другое программное обеспечение там, потому что это будет путать дистрибутив при установке и обновлении программного обеспечения, упакованного дистрибутивом. Поэтому, пожалуйста , не устанавливайте там свое собственное скомпилированное программное обеспечение. Это не очень хорошая идея, если вы действительно не знаете, что делаете. И если вы не являетесь разработчиком 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всегда устанавливаемые в нужном месте для распространения. Вы не можете изменить это место.
Андерс
источник
2

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

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

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

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

Марти Фрид
источник
Хорошая статья, за исключением того, что в ней не было никакой ссылки на / usr / local, где вы устанавливаете свое собственное программное обеспечение, чтобы не вступать в конфликт с программным обеспечением, установленным системой и вашими дистрибутивными (например, Ubuntu) пакетами. Установить ваше собственное программное обеспечение в / / / usr - значит спросить о проблемах, которые, вероятно, решают только повторную установку системы с нуля ...
Anders