Разница между «make install» и «sudo make install»

15

Иногда я сталкиваюсь с проблемами при использовании, make installчто выдает permission deniedошибку при записи в некоторые папки. Так что инстинктивно пользуюсь sudo make install. Это создаст дополнительные проблемы?

Я использую Debian Etch.

lokheart
источник

Ответы:

16

Избегайте локальной установки в системные каталоги. Системные каталоги, например /usr, зарезервированы для использования системой управления пакетами. По определению, если вы делаете это, make installэто означает, что вы делаете локальную установку, и если вам нужно сделать sudo make installэто, значит, у вас нет разрешения на то, куда вы пишете.

Итак, если вы получаете ошибки разрешения с make install, проверьте и посмотрите, пытаетесь ли вы установить в системные каталоги, а /usr/localвместо этого установить в или аналогичные. /usr/localзарезервировано для локальных установок. Возможно, вам потребуется дать разрешение на запись /usr/local, но обычно это легко сделать. На Debian это можно сделать, добавив себя в staffгруппу. Более того, найдите или создайте двоичный пакет и установите его вместо этого. Таким образом, вы можете легко отслеживать установленные пакеты и получать другие преимущества управления пакетами.

Обратите внимание, что система управления пакетами, наоборот, не устанавливается в /usr/localсоответствии с FHS. Смотрите раздел 9.1 Руководства по политике Debian - иерархия файловой системы для обзора.

Фахим Митха
источник
3

Вот краткое изложение команд: вопрос:

  • sudo - запустить команду от имени пользователя root
  • make - запустить скрипт для сборки из исходного кода

Поскольку команда sudo запускает команду, которую вы передаете от имени пользователя root, это означает, что команда make имеет привилегии суперпользователя. Это означает, что если make-файл является вредоносным или любой из скриптов, которые он может вызвать, является вредоносным, то это может поставить под угрозу вашу систему.

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

Замечания:

sudo make installтакой же, как и su; make installв большинстве случаев.

beatgammit
источник
3
Вы были правы, чтобы закончить с «в большинстве случаев». Вот угловой случай.
отек
3

Как уже было сказано выше, sudo make installвы можете устанавливать файлы в каталогах, которые в противном случае доступны только вам как пользователю.

Проблема, которую я могу предвидеть, заключается в том, что позже вы можете захотеть удалить или обновить программу. Если у вас все еще есть дерево каталогов исходного кода, то программа make uninstallудалит программу для вас, но если, как и многие другие обычные пользователи, вы удалили дерево каталогов исходного кода, то вам не повезло. И поскольку вы не установили программу с помощью системы управления пакетами, вы также не сможете удалить программу таким способом.

Наилучшим способом установки таких программ может быть их установка в вашем домашнем каталоге. Пропустите вариант --prefix=/home/<user>/<some>/<directory>для ./configure. Это позволит вам использовать make installвместо sudo make installтак /home/<user>/<some>/<directory>как доступно для записи вами. Также удаление совсем несложно -rm -rf /home/<user>/<some>/<directory>

latexnewbie
источник