W przypadku oprogramowania, którego potrzebujesz, użyj katalogu domowego zamiast /usr/local
.
Zamiast zmieniać własność /usr/local
lub uruchamiać polecenia jako root, gdy nie chcesz, powinieneś po prostu skonfigurować swoje kompilacje, aby instalowały się w twoim katalogu domowym zamiast /usr/local
. Rozwiązuje to wszystkie potencjalne problemy ze zmianą własności /usr/local
, w tym sposób, w jaki jej bin
i sbin
podkatalogi są na root
drodze.
Jeśli musisz zezwolić innym użytkownikom na uruchamianie twojego oprogramowania, możesz dać im dostęp. W rzeczywistości prawdopodobnie będą już w stanie to zrobić, ponieważ domyślnie twój katalog domowy ma dozwolony dostęp do odczytu i wykonywania . (Jeśli tego nie chcesz, możesz to dość łatwo zmienić, po prostu używając chmod
dowolnych plików lub katalogów, które chcesz ustawić jako prywatne, i ewentualnie również zmieniając swój umask
.)
Po zainstalowaniu oprogramowania w katalogu domowym, pliki binarne, które zostałyby wprowadzone, /usr/local/bin
wejdą zamiast niego . Otrzymasz inne podkatalogi swojego katalogu domowego odpowiadające podkatalogom tego , którego potrzebuje zainstalowane oprogramowanie. Zwykle dzieje się to automatycznie po zainstalowaniu oprogramowania z kodu źródłowego./home/username/bin
/usr/local
Konfigurowanie twoich kompilacji
Większość oprogramowania tworzonego z kodu źródłowego ma jeden etap:
./configure
W zdecydowanej większości oprogramowania dostarczanego ze configure
skryptem, który można uruchomić w ten sposób, domyślnie konfiguruje się kompilację do instalacji wewnątrz, /usr/local
gdy w końcu uruchomisz ją, sudo make install
aby ją zainstalować. Powodem jest to, że jest to domyślnie równoważne z uruchomieniem:
./configure --prefix=/usr/local
Aby skonfigurować kompilację do instalacji w katalogu domowym, użyj tego zamiast:
./configure --prefix="$HOME"
W praktyce w Ubuntu ścieżki do katalogu domowego nie zawierają spacji, innych białych znaków ani innych znaków, które będą traktowane specjalnie przez powłokę, np. *
Chyba że skonfigurujesz konto użytkownika dość dziwnie, możesz po prostu wpisać:
./configure --prefix=$HOME
(Nie polecam jednak przyzwyczaić się do pisania skryptów . Ponadto w niektórych innych systemach operacyjnych - takich jak macOS - rzadziej ścieżki do katalogów domowych użytkowników zawierają spacje).
Lub jeśli wolisz, możesz wpisać pełną ścieżkę do katalogu domowego:
./configure --prefix=/home/username
( username
Oczywiście zamień na swoją rzeczywistą nazwę użytkownika. Jeśli z jakiegoś powodu twojego katalogu domowego nie /home
ma, będziesz musiał odpowiednio dostosować.)
Instalowanie twoich kompilacji
Po uruchomieniu make
możesz być przyzwyczajony do uruchamiania sudo make install
, ale podczas instalacji we własnym katalogu domowym nie musisz uruchamiać go jako root, więc możesz - i powinieneś - usiąść sudo
. Po prostu biegnij:
make install
Podobnie w przypadku oprogramowania obsługującego uninstall
cel:
make uninstall
Właśnie o to prosiłeś ... nie w twoim katalogu domowym /usr/local
.
Uruchamianie programów
Prawdopodobniebin
podkatalogu katalogu domowym jest:
- już w swojej
$PATH
, lub
- będzie w twoim,
$PATH
jeśli wylogujesz się i wrócisz.
Powodem jest to, że .profile
plik w katalogu domowym, który zawiera polecenia uruchamiane podczas logowania, zawiera go domyślnie dla kont użytkowników utworzonych w większości wersji Ubuntu (w tym początkowego konta administratora utworzonego podczas instalacji systemu operacyjnego):
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Ten kod działa, gdy się logujesz (ponieważ jest .profile
) i umieszcza Twój osobisty bin
katalog $PATH
tylko wtedy, gdy istnieje. Dlatego może być konieczne wylogowanie się i ponowne zalogowanie.
Starsze wersje, takie jak Ubuntu 14.04, a także nowsze wersje, takie jak Ubuntu 17.10, mają tę funkcję . Jednak Ubuntu 16.04, które jest prawdopodobnie najpopularniejszą wersją tego pisma, ma to zamiast tego:
# set PATH so it includes user's private bin directories
PATH="$HOME/bin:$HOME/.local/bin:$PATH"
To po prostu dodaje bin
podkatalog twojego katalogu domowego ---, a także .local/bin
podkatalog - do twojego $PATH
, bez sprawdzania, czy te katalogi faktycznie istnieją. Jeśli więc korzystasz z wersji 16.04 lub zaktualizowałeś system z wersji 16.04, kiedy Twoje konto użytkownika zostało utworzone, wtedy bin
podkatalog twojego katalogu domowego jest już prawdopodobnie w twoim katalogu $PATH
.
Twój .profile
plik jest kopiowany z /etc/skel
katalogu podczas tworzenia konta użytkownika. Jeśli twoje konto użytkownika zostało utworzone w starszej wersji Ubuntu, otrzymało tę wersję .profile
i nie zostało zmienione - dla twojego konta użytkownika - przez uaktualnienie do nowszej wersji.
Gdy bin
podkatalog twojego katalogu domowego będzie już w twoim $PATH
, będziesz mógł uruchamiać programy, których pliki wykonywalne są tam instalowane, po prostu wpisując ich nazwy, tak jak w przypadku programów zainstalowanych przez menedżera pakietów Ubuntu lub zainstalowanych wewnątrz /usr/local
.
.local
Option
Być może zauważyłeś, że domyślny .profile
plik dla kont użytkowników utworzonych w niektórych wersjach Ubuntu, w tym w 16.04, jak opisano powyżej, dodaje nie tylko $HOME/bin
twojej ścieżce, ale także $HOME/.local/bin
. Jeśli .profile
nie dodajesz tego, ale chcesz , możesz to po prostu edytować.
Choć często używane do przechowywania ustawień i danych w pamięci podręcznej , można również zainstalować oprogramowanie w .local
podkatalogu katalogu domowego. Powinieneś czuć się nieskrępowany, ponieważ z punktu widzenia użyteczności i bezpieczeństwa --prefix="$HOME/.local"
jest podobny --prefix="$HOME"
.
Pamiętaj, że pliki i katalogi, które zaczynają się od, .
nie są domyślnie wyświetlane w graficznych przeglądarkach plików (użyj Ctrl+, Haby je odkryć i ukryć) lub w ls
poleceniu (przekaż flagę -A
lub, -a
aby je pokazać). To może nie być to, czego chcesz lub może być dokładnie to, czego chcesz. Jest to kwestia osobistych preferencji.
Zauważyłem jednak, że niektóre zautomatyzowane menedżery pakietów oparte na źródłach, które budują i instalują oprogramowanie w swoim katalogu domowym $HOME/.local
. Nie wiem, jak często to się dzieje - mam nadzieję, że zbadam dalej i zaktualizuję tę odpowiedź - ale możesz chcieć używać tylko $HOME
do rzeczy, które kompilujesz ręcznie. W ten sposób będzie jasne, skąd się wzięły rzeczy. A jeśli dojdzie do kolizji, oprogramowanie nadal prawdopodobnie będzie akceptowalnie współistnieć.
Możesz również celowo zainstalować niektóre oprogramowanie $HOME/.local
i inne oprogramowanie w $HOME
. To zależy od Ciebie. Którykolwiek bin
katalog pojawi się jako pierwszy w $PATH
zmiennej środowiskowej, to ten, z którego uruchomione zostanie polecenie, w przypadku, gdy w obu występują polecenia o tej samej nazwie.
Podziękowania należą się Zanna i Videonauth za wskazanie błędów w poprzedniej wersji tej odpowiedzi, dotyczących tego, które wersje Ubuntu mają domyślny kod .profile
, oraz pomoc w ich poprawieniu (patrz także tutaj ).