Почему некоторые пакеты используют 'make install', а другие 'sudo make install'

8

Я недавно установил кодировщик LAME на моем сервере, чтобы конвертировать WAV в MP3, и это работало с ./configure; make; make install.

Затем я попытался установить кодировщик OGG, и для этого требуется «./configure, make, sudo make install», чего я не могу сделать, поскольку у меня нет VPS (и я бы предпочел не платить 15 долларов в месяц за VPN только установить кодек).

Я новичок во всем этом, и я понимаю, что sudo дает вам разрешения - но я пытался выяснить, почему именно некоторые make installтребуют доступа sudo, а другие - нет. Я еще не нашел ответ.

alexbooots
источник
Вы должны иметь возможность изменить Makefile (или некоторый шаблон, из которого создан Makefile) или передать параметры командной строки чему-то (вероятно ./configure), чтобы установить его в другой каталог (предположительно, к которому вам не нужен sudoдоступ). ).

Ответы:

7

Обычно я пытаюсь запустить его без каких-либо sudoдействий - иногда это работает. Иногда создатели пакетов считают sudoэто необходимым, они используют его по своему усмотрению или иным образом выбирают для установки вещей в не-пользовательских областях системы. Иногда это необходимо, но часто это не так.

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

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

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

jefflunt
источник
2
Большинство пакетов должны иметь параметры конфигурации где-нибудь, чтобы вы могли установить их в других местах. Их использование может потребовать немного больше усилий, но если вы не можете sudoэто сделать, то вы застряли.
6

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

Большинство программ, которые предоставляют ./configureсценарий, также принимают --prefix=~/binили --prefix=~/Local/около того, чтобы вы могли установить его в свой домашний каталог. Не все программы предоставляют ./configure, но большинство предоставляют некоторый механизм, Makefileкоторый позволяет вам настроить место установки.

Итак: ваши библиотеки / программы для вас или для всех пользователей вашей системы?

sarnold
источник
Они только для меня, чтобы использовать .. и, бриллиант! .. Я использовал ./configure --exec-prefix = / home / username / folder --prefix = / home / username / folder, и, кажется, прошел нормально без sudo (чего не было при использовании только ./configure) для libogg, libvorbis, есть некоторые проблемы с libtheora и vorbis-tools, но пока не уверен, что с этим. Я должен быть в состоянии получить это все же. Спасибо!
3
Затем вам может понадобиться использовать параметр командной строки, например, --theora-path=/home/username/folderпри компиляции других программ - обязательно прочитайте READMEили аналогичные файлы, чтобы узнать, какие переменные необходимо изменить.
Сарнольд
0

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

Представьте себе учетную запись администратора в Windows, а не учетную запись пользователя или гостя с ограниченными правами. То же самое.

тарелки
источник