Standardowa lokalizacja do przechowywania plików źródłowych oprogramowania

16

Czy w Linuksie jest standardowa lokalizacja do przechowywania plików źródłowych, na przykład OpenSSL . Buduję Nginx ze źródła z domyślną wersją OpenSSL. Muszę pobrać i rozpakować OpenSSL i zrobiłem to w katalogu domowym. Zastanawiam się, czy może istnieje standardowa lokalizacja w systemie Linux /opt?

użytkownik3448600
źródło
1
Jak napisał terdon, / usr / src jest standardową lokalizacją i możesz tutaj znaleźć katalogi dla źródła jądra (/ usr / src / linux połączone z / usr / src / linux-version) i na przykład X11. Kod źródłowy pakietów instalowanych lokalnie (/ usr / local) lepiej pasuje do / usr / local / src. Jeśli chcesz samodzielnie tworzyć pakiety ręcznie, utworzenie katalogu src w swoim katalogu domowym jest prawdopodobnie dobrym pomysłem ... Pamiętaj, że nie należy pobierać, rozpakowywać ani kompilować jako root - instaluj tylko jako! Jeśli budujesz pakiety deb / rpm, zwykle używane są tymczasowe katalogi kompilacji (np. W / var / tmp). TBC
Baard Kopperud
Jeśli budujesz i instalujesz pakiet - lub tworzysz pakiet (rpm / dem) - samodzielnie, zwykle nie potrzebujesz już kodu źródłowego po jego zainstalowaniu. Powodem, dla którego możesz mieć kod źródłowy dla niektórych pakietów - takich jak jądro lub X11 - w / usr / src (lub / usr / local / src, jeśli został on utworzony lokalnie), jest głównie dlatego, że możesz ich potrzebować, jeśli „ ponownie buduj (lub pisz) jakiś pakiet oprogramowania (np. niektóre niejasne pliki nagłówkowe z jądra, pasujące do faktycznej konfiguracji systemu). (Oczywiście będziesz go potrzebować, jeśli chcesz zbudować własne jądro ...) Ale dotyczy to kilku pakietów.
Baard Kopperud

Odpowiedzi:

20

Ilekroć zadajesz sobie takie pytanie, sprawdź Standard systemu plików Hierarchy Standard (FHS). Tam znajdziesz następujący wpis:

usr / src: kod źródłowy (opcjonalnie)

Cel, powód

Kod źródłowy może być umieszczony w tym podkatalogu, wyłącznie w celach informacyjnych

Możesz więc umieścić swoje pliki źródłowe w podkatalogach /usr/src. To powiedziawszy, jest to opcjonalny katalog, więc możesz naprawdę przechowywać je gdziekolwiek chcesz. Kod źródłowy nie jest istotny po skompilowaniu go w plik wykonywalny, więc system nigdy nie będzie wymagał, aby źródło czegoś było dostępne w określonej lokalizacji.

Podsumowując: /usr/srcjest to dość standardowa lokalizacja, ale możesz wybrać własną, jeśli wolisz.

terdon
źródło
6
Wystarczy mieć świadomość, że naprawdę nie chce być bawiących się /usr/srcna brak systemu -linux. BSD domyślnie przechowują tam swoje podstawowe źródła systemowe i nie chcesz ich mieszać z oprogramowaniem innych firm. Po prostu $HOME
wbuduj
1
To samo dotyczy niektórych podkatalogów /usr/srcpochodnych Debiana, jeśli masz zainstalowane pewne pakiety ( gcc-6-source, binutils-sourcepakiety DKMS, nagłówki jądra itp.). Na Debianie jest miła funkcja, w której możesz dodać siebie do srcgrupy, która jest jej właścicielem /usr/src, a następnie po prostu napisać ją jako siebie (bez potrzeby sudolub czegokolwiek).
Stephen Kitt
A w Fedorze nie powinieneś dotykać /usr/src/debugi /usr/src/kernels(AFAICS).
Stephen Kitt
„Kod źródłowy może być umieszczony na miejscu”. Czy „place place” jest literówką, czy coś mi brakuje?
Faheem Mitha
3
Pójdę dalej i powiem, że tak naprawdę nie powinieneś dotykać /usrżadnego systemu. Powinieneś wkładać różne rzeczy /usr/local. Czy używasz BSD /usr/local/src?
Muzer
13

/usr/local/srcjest bezpiecznym miejscem do przechowywania kodu źródłowego i jego tworzenia. FHS mówi :

Directory   Description  
src         Local source code

i również

Hierarchia / usr / local jest używana przez administratora systemu podczas lokalnej instalacji oprogramowania. Przed aktualizacją oprogramowania systemowego należy zabezpieczyć go przed nadpisaniem.

Nie jest jasne, co oznacza „lokalny kod źródłowy”, ale jasne jest, że system nie będzie próbował niczego umieszczać, w /usr/local/srcprzeciwieństwie do tego /usr/src, więc wydaje się, że umieszczenie kodu jest niewielkie.

W rzeczywistości mam mój w osobnym systemie plików:

Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/data-local_src     79G   46G   30G  61% /usr/local/src

Uwaga: przynajmniej w Debianie użytkownik musi zostać dodany do staffgrupy, aby móc pisać /usr/local.

Faheem Mitha
źródło
+1 za wskazanie, /usr/local/srcpodczas gdy inne odpowiedzi tylko dyskutują/usr/src
MattSturgeon
Co do tego, co oznacza „lokalny kod źródłowy”, ogólnie oznacza, że ​​jest kontrolowany przez lokalnego administratora systemu, a nie przez dystrybucję . Tak samo jak wszystko inne w /usr/local(teoretycznie). Zasadniczo oznacza to dokładnie to, co opisałeś.
MattSturgeon,
9

Jeśli przez „standardowy” masz na myśli konwencjonalny, to miejscem do rozpakowania i zbudowania kodu źródłowego jest katalog domowy. Oczekuje się, że takie pliki będą przejściowe, usunięte po zakończeniu lub przechowywane, jeśli chcesz, uporządkowane według własnego uznania. Twój katalog domowy to Twój obszar do zabawy z tego rodzaju rzeczami.

Jeśli chcesz, aby zachować je potem, dla odniesienia , w „ Filesystem Hierarchy Standard ” zaleca /usr/src. Jest to jednak przewodnik, a nie prawo; a jeśli nauczysz się tego nawyku, a następnie zaryzykujesz na systemie innym niż Linux, możesz spowodować problemy, postępując zgodnie z nim. Na przykład w systemie BSD przechowywane są tam podstawowe źródła systemowe i naprawdę nie chcesz z nimi zadzierać. Nawet w systemie Linux może wystąpić ryzyko zmieszania się z dowolnym źródłem przechowywanym przez menedżerów pakietów, co nie jest pożądane.

Polecam unikanie /usr/srcogólnie. Nie ma żadnych oczywistych korzyści z trzymania czegokolwiek i potencjalne ryzyko, jeśli pomylisz jego zamierzone znaczenie.

Lekkość Wyścigi z Moniką
źródło
5

Możesz użyć, /usr/srcponieważ to miejsce brzmi rozsądnie, a dystrybucje oparte na rpm używają go do przechowywania zawartości pakietów srpm. Ale jak każde inne miejsce /opt, /usr/local, ~/srcjest dobre

Romeo Ninov
źródło
„Dystrybucje oparte na rpm używają go do przechowywania zawartości pakietów srpm”. Właśnie dlatego nie powinieneś przechowywać tam własnych źródeł non-distro, a raczej używać / usr / local. - „To musi być dobre miejsce do przechowywania rzeczy, z tymi wszystkimi wózkami widłowymi, które wydają się mieć tę samą opinię ...”
rackandboneman