Різниця між "make install" та "sudo make install"


15

Іноді у мене виникають проблеми з використанням, make installщо дає мені permission deniedпомилку під час запису до деяких папок. Так я інстинктивно використовую sudo make install. Чи це спричинить додаткові проблеми?

Я використовую Debian Etch.

Відповіді:


16

Уникайте внесення локальних установок у системні каталоги. Наприклад, системні каталоги /usrзарезервовані для використання системою управління пакетами. За визначенням, якщо ви це робите, make installце означає, що ви робите локальну установку, і якщо вам потрібно це зробити, sudo make installце означає, що ви не маєте дозволу туди, куди пишете.

Отже, якщо ви отримуєте помилки з дозволом make install, перевірте і перевірте, чи намагаєтесь ви встановити в системні каталоги, а не /usr/localзамість цього встановити . /usr/localзарезервовано для локальних установок. Можливо, вам доведеться дати собі дозвіл на написання /usr/local, але це, як правило, легко зробити. У Debian це можна зробити, додавши себе до staffгрупи. Ще краще, знайти або створити двійковий пакет і встановити його замість цього. Таким чином ви можете легко відслідковувати встановлені пакети та отримувати інші переваги управління пакетами.

Зауважте, що система управління пакунками, навпаки, не встановлюється в /usr/localFHS. Див. Розділ 9.1 Посібника з політик Debian - Ієрархія файлової системи для огляду.


3

Ось основний провал команд - це питання:

  • sudo- запустити команду як root
  • зробіть сценарій для створення з джерела

Оскільки команда sudo запускає команду, ви передаєте її як root, це означає, що команда make має привілеї суперкористувача. Це означає, що якщо makefile є шкідливим, або будь-який із скриптів, які він може викликати, є шкідливим, то це може поставити під загрозу вашу систему.

Якщо коротко, якщо ви не довіряєте програмному забезпеченню, не встановлюйте його. Якщо ви довіряєте програмному забезпеченню, то запуск як root нічого не зашкодить.

Примітка:

sudo make installте саме, що і su; make installв більшості випадків.


3
Ви мали рацію закінчити "в більшості випадків". Ось кутовий випадок.
ederag

3

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

Проблема, яку я можу передбачити, полягає в тому, що пізніше ви можете видалити або оновити програму. Якщо у вас все ще є дерево каталогів вихідного коду, make uninstallпрограма a видалить програму для вас, але якщо, як і багато інших типових користувачів, ви видалили дерево каталогу каталогів вихідного коду, тоді вам не пощастить. А оскільки ви не встановили програму за допомогою системи управління пакетами, ви також не можете видалити програму таким чином.

Найкращим способом встановлення таких програм може бути встановлення їх у вашому домашньому каталозі. Передайте опцію --prefix=/home/<user>/<some>/<directory>в ./configure. Це дозволить вам використовувати make installзамість sudo make installтак /home/<user>/<some>/<directory>Перезаписуємо вами. Також видалення є оснащенням -rm -rf /home/<user>/<some>/<directory>

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.