
У нас есть Makefile для компиляции драйвера сетевого интерфейса. При вызове Makefile в установке Ubuntu 9.04 нам нужно вызвать просто 'make'. Однако при вызове Makefile в установке Ubuntu 10.04 нам нужно вызвать 'sudo -s make'.
В Ubuntu 9.04, если мы вызываем 'sudo -s make', компиляция завершается неудачей. А в Ubuntu 10.04, если мы вызываем 'make', компиляция также завершается неудачей.
Хотя компиляция может быть выполнена в обеих версиях Ubuntu, как с использованием бита 'sudo -s', так и без него, мы хотели бы иметь один скрипт .sh, который успешно вызывает Makefile независимо от того, на какой версии Ubuntu он запущен. Есть ли какие-либо различия в том, как sudo -s обрабатывается в 9.04 по сравнению с 10.04? И если есть, то какое лучшее решение для обеспечения того, чтобы обе версии обслуживались в одном скрипте .sh при вызове make?
решение1
Команда make
должна компилировать исходный код. Это задача, которая не должна требовать никаких административных привилегий. Для общесистемной установки необходимы привилегии root. Это означает в вашем случае, что makefile неверный. Я не знаю, что он делает, но он не должен этого делать, так как для этого требуются привилегии root.
Рассмотрим следующий сценарий: пользователь хочет установить программное обеспечение. Он/она запускает
./configure --prefix=/home/joe/bin/usr && make && make install
Команда make
не должна требовать доступа root, это позволит избежатьлюбойпользователь, устанавливающий вашу программу. Вы упомянули, что это сетевой драйвер, который обычно не требуется для использования не-root пользователями, в любом случае, вам следует исправить вашу сборку.