Różnica między „make install” a „sudo make install”


15

Czasami mam problemy z używaniem, make installco powoduje permission deniedbłąd podczas pisania do niektórych folderów. Tak instynktownie używam sudo make install. Czy spowoduje to dodatkowe problemy?

Używam Debian Etch.

Odpowiedzi:


16

Unikaj tworzenia lokalnych instalacji w katalogach systemowych. Katalogi systemowe, na przykład /usr, są zarezerwowane dla systemu zarządzania pakietami. Z definicji, jeśli to robisz make install, oznacza to, że robisz instalację lokalną, a jeśli musisz to zrobić sudo make install, oznacza to, że nie masz pozwolenia na to, gdzie piszesz.

Tak więc, jeśli otrzymujesz błędy uprawnień make install, sprawdź i sprawdź, czy próbujesz zainstalować w katalogach systemowych, a /usr/localzamiast tego zainstalować w lub w podobny sposób. /usr/localjest zarezerwowany dla instalacji lokalnych. Być może będziesz musiał wyrazić zgodę na pisanie /usr/local, ale zwykle jest to łatwe. W Debianie można to zrobić, dodając się do staffgrupy. Jeszcze lepiej, znajdź lub utwórz pakiet binarny i zainstaluj go zamiast tego. W ten sposób możesz łatwo śledzić zainstalowane pakiety i uzyskać inne korzyści z zarządzania pakietami.

Należy zauważyć, że system zarządzania pakietami nie instaluje się /usr/local, zgodnie z FHS. Przegląd znajduje się w Rozdziale 9.1 Podręcznika Polityki Debiana - Hierarchia systemu plików .


3

Oto podstawowe podsumowanie poleceń to pytanie:

  • sudo uruchom polecenie jako root
  • make - uruchom skrypt, aby skompilować ze źródła

Ponieważ polecenie sudo uruchamia polecenie, które przekazujesz jako root, oznacza to, że polecenie make ma uprawnienia superużytkownika. Oznacza to, że jeśli plik makefile jest złośliwy lub którykolwiek z wywoływanych przez niego skryptów jest złośliwy, może to zagrozić Twojemu systemowi.

Krótko mówiąc, jeśli nie ufasz oprogramowaniu, nie instaluj go. Jeśli ufasz oprogramowaniu, uruchomienie jako root nie powinno nic zaszkodzić.

Uwaga:

sudo make installjest taki sam jak su; make installw większości przypadków.


3
Miałeś rację, kończąc na „w większości przypadków”. Oto skrzynka narożna.
ederag

3

Jak już wspomniano powyżej, sudo make installpozwala instalować pliki w katalogach, które w innym przypadku są tylko do odczytu jako użytkownik.

Problem, który mogę przewidzieć, polega na tym, że w późniejszym czasie możesz chcieć odinstalować lub zaktualizować program. Jeśli nadal masz drzewo katalogu kodu źródłowego, to a make uninstallodinstaluje program dla ciebie, ale jeśli, jak wielu innych typowych użytkowników, usunąłeś drzewo katalogu kodu źródłowego, to nie masz szczęścia. A ponieważ program nie został zainstalowany za pomocą systemu zarządzania pakietami, odinstalowanie programu w ten sposób może być niemożliwe.

Najlepszym sposobem na zainstalowanie takich programów może być ich instalacja w katalogu domowym. Przekaż opcję --prefix=/home/<user>/<some>/<directory>do ./configure. Pozwoli ci to używać make installzamiast tego, sudo make installponieważ /home/<user>/<some>/<directory>możesz zapisać. Również odinstalowanie jest bardzo proste -rm -rf /home/<user>/<some>/<directory>

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.