Differenza tra "make install" e "sudo make install"


15

A volte incontro problemi con l'uso make installche mi dà un permission deniederrore quando scrivo in alcune cartelle. Così istintivamente lo uso sudo make install. Ciò introdurrà ulteriori problemi?

Sto usando Debian Etch.

Risposte:


16

Evitare di effettuare installazioni locali in directory di sistema. Le directory di sistema /usr, ad esempio , sono riservate al sistema di gestione dei pacchetti da utilizzare. Per definizione, se lo fai make installsignifica che stai facendo un'installazione locale e se devi farlo sudo make installsignifica che non hai il permesso di scrivere ovunque.

Quindi, se si make installverificano errori di autorizzazione con , controllare e vedere se si sta tentando di installare nelle directory di sistema e installare /usr/localinvece o simili. /usr/localè riservato alle installazioni locali. Potrebbe essere necessario concederti il ​​permesso di scrivere /usr/local, ma di solito è facile farlo. Su Debian questo può essere fatto aggiungendo te stesso al staffgruppo. Meglio ancora, trova o crea un pacchetto binario e installalo invece. In questo modo è possibile tenere facilmente traccia dei pacchetti installati e ottenere gli altri vantaggi della gestione dei pacchetti.

Si noti che al contrario il sistema di gestione dei pacchetti non si installa in /usr/localFHS. Vedere la Sezione 9.1 del Manuale delle politiche di Debian - Gerarchia del file system per una panoramica.


3

Ecco una carrellata di base dei comandi è la domanda:

  • eseguire un comando come root
  • crea uno script da compilare dal sorgente

Poiché il comando sudo esegue il comando passato come root, significa che il comando make ha privilegi di superutente. Ciò significa che se il makefile è dannoso o uno qualsiasi degli script che può chiamare è dannoso, potrebbe compromettere il sistema.

In breve, se non ti fidi del software, non installarlo. Se ti fidi del software, l'esecuzione come root non dovrebbe danneggiare nulla.

Nota:

sudo make installè lo stesso su; make installdella maggior parte dei casi.


3
Avevi ragione a finire con "nella maggior parte dei casi". Ecco un caso d'angolo.
Ederag,

3

Come è stato risposto in precedenza, sudo make installconsente di installare i file in directory che sono altrimenti di sola lettura come utente.

Il problema che posso prevedere è che in un secondo momento potresti voler disinstallare o aggiornare il programma. Se hai ancora l'albero delle directory del codice sorgente, allora make uninstalldisinstallerai il programma per te ma se, come molti altri utenti tipici, hai eliminato l'albero delle directory del codice sorgente, sei sfortunato. E poiché non hai installato il programma utilizzando un sistema di gestione dei pacchetti, potresti anche non essere in grado di disinstallare il programma in quel modo.

Il modo migliore per installare tali programmi potrebbe essere quello di installarli nella tua home directory. Passa l'opzione --prefix=/home/<user>/<some>/<directory>a ./configure. Ciò ti consentirà di utilizzare make installinvece che sudo make installpoiché /home/<user>/<some>/<directory>è scrivibile da te. Anche la disinstallazione è un gioco da ragazzi -rm -rf /home/<user>/<some>/<directory>

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.