Local padrão para armazenar arquivos de origem de software

16

Existe um local padrão no Linux para armazenar arquivos de origem, por exemplo, OpenSSL . Estou construindo o Nginx a partir do código-fonte com a versão não padrão do OpenSSL. Preciso fazer o download e descompactar o OpenSSL e o fiz no diretório inicial. Agora, gostaria de saber se existe um local padrão no Linux, talvez /opt?

user3448600
fonte
11
Como terdon escreveu / usr / src é o local padrão, e você pode encontrar diretórios para a fonte do kernel (/ usr / src / linux vinculado a / usr / src / linux-version) e, por exemplo, o X11. O código fonte para pacotes instalados localmente (/ usr / local) se encaixa melhor em / usr / local / src. Se você deseja construir pacotes "manualmente", criar um diretório src em seu homedir provavelmente é uma boa idéia ... Lembre-se de que você não deve baixar, descompactar ou construir como root - apenas instale como! Se você constrói deb / rpm-packages, diretórios de construção temporários (por exemplo, em / var / tmp) são normalmente usados. TBC
Baard Kopperud
Se você constrói e instala um pacote - ou cria um pacote (rpm / dem) - você mesmo, normalmente não precisa mais do código-fonte depois de instalado. A razão pela qual você pode ter o código-fonte para alguns pacotes - como o kernel ou o X11 - em / usr / src (ou / usr / local / src se ele foi criado localmente) é principalmente porque você pode precisar deles se precisar ' você mesmo (a) construindo (ou escrevendo) algum pacote de software (por exemplo, alguns arquivos de cabeçalho obscuros do kernel, que correspondem à configuração atual do sistema). (Obviamente, você precisará dele se quiser criar seu próprio kernel também ...) Mas isso se aplica a poucos pacotes.
Baard Kopperud

Respostas:

20

Sempre que você se perguntar algo assim, consulte o FHS ( Filesystem Hierarchy Standard ). Lá, você encontrará a seguinte entrada:

usr / src: código fonte (opcional)

Objetivo

O código-fonte pode ser colocado neste subdiretório, apenas para fins de referência

Então você pode colocar seus arquivos de origem em subdiretórios de /usr/src. Dito isto, este é um diretório opcional para que você possa realmente mantê-los onde quiser. O código-fonte não é relevante depois que você o compila em um executável, para que o sistema nunca exija que a fonte de algo esteja acessível em um local específico.

Em conclusão: /usr/srcé um local bastante padrão, mas fique à vontade para escolher o seu, se preferir.

terdon
fonte
6
Esteja ciente de que você realmente não deseja mexer /usr/srcem um sistema não- Linux. Os BSDs mantêm suas fontes de sistema básicas lá por padrão e você não deseja misturá-las com software de terceiros. Basta construir em seu $HOMElugar ...
Kusalananda
11
O mesmo se aplica a alguns subdiretórios dos /usr/srcderivados Debian, se você tiver certos pacotes instalados ( gcc-6-source, binutils-sourcepacotes DKMS, cabeçalhos do kernel etc.). No Debian, há um recurso interessante no qual você pode se adicionar ao srcgrupo que possui /usr/srce, em seguida, apenas escrever lá como você mesmo (sem precisar sudoou o que seja).
Stephen Kitt
E no Fedora, você não deve tocar /usr/src/debuge /usr/src/kernels(AFAICS).
Stephen Kitt
"O código fonte pode ser colocado no local". "Place place" é um erro de digitação ou estou perdendo alguma coisa?
Faheem Mitha
3
Vou mais longe e digo que você realmente não deveria estar tocando /usrem nenhum sistema. Você deve colocar as coisas em /usr/local. Os BSDs se importam com você /usr/local/src?
Muzer 03/05
13

/usr/local/srcé um local seguro para manter o código fonte e construí-lo também. A ESF diz :

Directory   Description  
src         Local source code

e também

A hierarquia / usr / local é para ser usada pelo administrador do sistema ao instalar o software localmente. Ele deve ser protegido contra substituição quando o software do sistema for atualizado.

Não está claro o que significa "código fonte local", mas está claro que o sistema não tentará colocar nada /usr/local/src, ao contrário /usr/src, então parece haver pouca desvantagem em colocar o código lá.

Na verdade, eu tenho o meu em um sistema de arquivos separado:

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

Nota: pelo menos no Debian, seu usuário precisa ser adicionado ao staffgrupo para escrever /usr/local.

Faheem Mitha
fonte
+1 por apontar /usr/local/srcenquanto as outras respostas só discutir/usr/src
MattSturgeon
Quanto ao que significa "código-fonte local", geralmente significa controlado pelo administrador do sistema local e não por uma distribuição . O mesmo que tudo o mais abaixo /usr/local(em teoria). Então, basicamente, significa exatamente o que você descreveu.
MattSturgeon
9

Se por "padrão" você quer dizer convencional, o local para descompactar e criar o código-fonte é o seu diretório pessoal. Espera-se que esses arquivos sejam transitórios, excluídos quando você terminar ou sejam mantidos, se desejar, organizados da maneira que desejar. Seu diretório pessoal é a sua área para brincar com todo esse tipo de coisa.

Se você deseja mantê-los posteriormente, para referência , o " Padrão de hierarquia do sistema de arquivos " recomenda /usr/src. No entanto, este é um guia, não uma lei; e, se você aderir a esse hábito, em seguida, se aventurar em um sistema não-Linux, poderá causar problemas ao segui-lo. Por exemplo, em um sistema BSD, as fontes básicas do sistema são mantidas lá e você realmente não quer mexer com elas. Mesmo no Linux, você pode correr o risco de se misturar com qualquer fonte armazenada pelos gerenciadores de pacotes, o que não é desejável.

Eu recomendaria evitar /usr/srcgeral. Não há benefício óbvio em manter tudo lá, e risco potencial se você confundir o significado pretendido.

Corridas de leveza com Monica
fonte
5

Você pode usar /usr/srccomo este local é razoável e distribuições baseadas em rpm o usam para armazenar o conteúdo dos pacotes srpm. Mas qualquer outro lugar como /opt, /usr/local, ~/srcé bom

Romeo Ninov
fonte
"distribuições baseadas em rpm usam para armazenar lá o conteúdo de pacotes srpm." É exatamente por isso que você não deve armazenar suas próprias fontes não-distro lá e usar / usr / local. - "Isso deve ser um bom lugar para coisas loja, com todas essas empilhadeiras redor que parecem ser da mesma opinião ...."
rackandboneman