Ubuntuのバージョンによっては、makeコマンドにsudo -sを使用する必要があります

Ubuntuのバージョンによっては、makeコマンドにsudo -sを使用する必要があります

ネットワーク インターフェイスのドライバーをコンパイルするための Makefile があります。Ubuntu 9.04 インストールで Makefile を呼び出すときは、単に「make」を呼び出す必要があります。ただし、Ubuntu 10.04 インストールで Makefile を呼び出すときは、「sudo -s make」を呼び出す必要があります。

Ubuntu 9.04 では、「sudo -s make」を呼び出すとコンパイルが失敗します。また、Ubuntu 10.04 では、「make」を呼び出すとコンパイルも失敗します。

'sudo -s' ビットを発行するかしないかによって、両方のバージョンの Ubuntu でコンパイルを実行できますが、実行している Ubuntu のバージョンに関係なく、Makefile を正常に呼び出す単一の .sh スクリプトが必要です。9.04 と 10.04 で sudo -s の処理方法に違いはありますか? 違いがある場合、make を呼び出すときに 1 つの .sh スクリプトで両方のバージョンに対応できるようにする最適なソリューションは何ですか?

答え1

このmakeコマンドはソース コードをコンパイルするためのものです。これは管理者権限を必要としないタスクです。システム全体のインストールにはルート権限が必要です。これは、あなたのケースでは makefile が正しくないことを意味します。それが何をするのかはわかりませんが、ルート権限が必要なので、それを行うべきではありません。

次のシナリオを考えてみましょう。ユーザーがソフトウェアをインストールしたいとします。

./configure --prefix=/home/joe/bin/usr && make && make install

コマンドmakeはルートアクセスを必要としません。これにより、どれでもプログラムをインストールするユーザー。おっしゃるとおり、これはネットワーク ドライバーであり、通常は非ルート ユーザーが使用する必要はありませんが、いずれにしてもビルドを修正する必要があります。

関連情報