Jak zbudować aplikację bez uprawnień sudo?

15

Co muszę skonfigurować na serwerze Ubuntu 9.10, aby użytkownik mógł budować aplikacje do wyboru (np ./configure, make && make install) bez potrzeby korzystania z uprawnień sudo / admin.

Po prostu czuję, że trochę ryzykowne jest zapewnienie użytkownikowi dostępu do części systemu, których mogą nie potrzebować do zbudowania aplikacji.

RC1140
źródło

Odpowiedzi:

40

Jeśli twoi użytkownicy używają

./configure --prefix=/home/user/opt/

Lub dla projektów cmake

cmake -D CMAKE_INSTALL_PREFIX:PATH=/home/user/opt/ ../source/

Spowoduje to zainstalowanie programu z tym prefiksem (zamiast domyślnego / usr / local /), a użytkownicy powinni móc uruchomić program w następujący sposób:

/home/user/opt/bin/program

Jeśli chcesz, aby mogły uruchamiać programy po prostu używając nazwy (bez pełnej ścieżki), musisz dodać /home/user/opt/bindo zmiennej środowiskowej ścieżki, edytować .profile użytkowników i dodać następujący wiersz:

export PATH=/home/user/opt/bin:$PATH

Pamiętaj, że programy zainstalowane w ten sposób będą prywatne dla konkretnego użytkownika, ale jest to sposób na zrobienie tego

LassePoulsen
źródło
Inni użytkownicy będą mogli korzystać z zainstalowanych programów w ten sposób, jeśli podadzą pełną ścieżkę, a uprawnienia zostaną odpowiednio ustawione; i wygląda na to, że domyślny umask pozwala na to na mojej instalacji na komputerze.
Alistair Buxton
Baza kodu, którą skompilowałem, nie miała Makefilekonfiguracji, po prostu weszłam do niej i zmieniłam prefix = /some/pathwiersz na własny katalog domowy (bez końcowego ukośnika), a następnie uruchomiłam make installbez sudo - wszystko działa teraz, więc dziękuję.
Big Rich
8

Użytkownicy mogą budować aplikacje bez uprawnień sudo. Jedyne, kiedy potrzebujesz uprawnień sudo, to kiedy chcesz zainstalować coś w katalogach systemowych.

./configurei makepracuj zawsze bez uprawnień sudo. make installzwykle potrzebuje praw sudo, ponieważ zainstaluje aplikację na ( /usr/locallub /usrczasami /opt).

Jeśli jednak zmienisz prefiks ścieżki instalacyjnej (tj. ./configure --prefix=~/usr/local) W taki sposób, że instalacja zostanie przeprowadzona w drzewie katalogu domowego użytkownika, nie będą potrzebne żadne prawa sudo make install.

txwikinger
źródło
Nadal uważam, że twoja odpowiedź nie jest całkowicie poparta. Dlaczego ./configurei makepraca zawsze bez sudo? Jak powinienem to uzasadnić komuś, kto sudo make installna przykład wykonuje egzekucję ?
Nikos Alexandris
0

Dodając do tego, co powiedział txwikinger , możesz również chcieć sprawdzić fakeroot, co daje możliwość budowania pakietów .deb dpkgbez konieczności zwiększania uprawnień. Oczywiście ich instalacja będzie wymagać dostępu sudo.

żrący umysł
źródło