Como sei onde colocar as coisas no linux?

58

Instalar algo no Windows leva um clique de um botão. Mas toda vez que tento instalar algo no linux, que não é encontrado no APT, fico muito confuso.

Você baixa uma pasta compactada, e depois? Se você tiver sorte, existe um README, consultando alguma documentação que pode ajudá-lo, se você tiver sorte.

Qual é o truque mágico ao "instalar" extensões e aplicativos que não são encontrados no APT?

Eu amo o Linux, mas esse problema me assombra todos os dias.

Marcus Johansson
fonte
8
Fora do assunto. Mas o truque simples é nunca instalar nada fora do sistema de gerenciamento de pacotes.
Let_Me_Be 23/02
11
Se não é do APT, provavelmente não é algo que você pode instalar - você precisará compilar e instalar você mesmo. E então começará a ficar confuso com os pacotes baseados em APT. É mais simples encontrar o APT / .debs para o que você precisa, tanto quanto possível.
Rup
2
@Rup Plus se um software não possui um pacote deb, você provavelmente não deve instalá-lo, pois é algo obsoleto ou de ponta ou incompatível com distribuições baseadas em apt.
Let_Me_Be 23/02
3
Depois de obter experiência suficiente na criação / instalação de software, você pode apenas criar seus próprios pacotes. Certifique-se de fornecer feedback ao fornecedor upstream!
Jsbillings

Respostas:

32

Se é um software que obedece o Filesystem Hierarchy Standard que você deve colocá-lo em /usr/locale os subdiretórios apropriados (como bin, lib, share, ...).

Outro software deve ser colocado em seu próprio diretório em /opt. Em seguida, defina sua PATHvariável para incluir o bindiretório ou qualquer diretório que contenha os executáveis ​​ou crie links simbólicos para /usr/local/bin.

Martin Scharrer
fonte
11
Boa resposta, realmente, mas não se deve fazer isso todos os dias.
## phrehehe #
11
@phunehehe - Você tem que fazer isso todos os dias?
23411 Rob
3
Não, eu estava me referindo ao OP "este problema me assombra todos os dias".
## phrehehe #
11
Além do link da Wikipedia para a FHS, leia este também: pathname.com/fhs/pub/fhs-2.3.html . Leia a seção que diz "Finalidade".
yasouser
27

Não há uma resposta simples para esta pergunta, mas posso fornecer um esboço geral de como ela funciona:

A maioria dos softwares Linux é fornecida pelos autores (o "upstream") no formato de código-fonte. Isso permite que todos os que possuem um compilador para sua plataforma específica e configuração do sistema baixem o código-fonte e os compilem. Infelizmente para você, muitos programas dependem de funções fornecidas por outros programas e bibliotecas de software (dependências).

O software Windows geralmente vem na forma pré-compilada. Isso significa que há um arquivo executável genérico para todos os computadores Windows, e as dependências costumam acompanhá-lo no pacote de instalação.

As distribuições Linux pegam o código-fonte, pré-compilam para você e oferecem-no como um pacote também. O pacote não inclui as dependências, mas se refere a elas e força o sistema de pacotes a instalá-las também (o que às vezes pode levar a confusões que você provavelmente já experimentou).

Se não houver um pacote pré-compilado, você sempre poderá fazer o download do código-fonte e compilá-lo. Na maioria das vezes, o seguinte funcionará:

./configure
make
(sudo) make install (or sudo checkinstall)

A linha ./configure define o cenário para o processo de compilação (e cospe erros se as dependências não forem atendidas). A linha make executará o Makefile, um script que compila todas as partes do programa.

Tradicionalmente, você usaria o make install para instalar o software. Isso geralmente coloca os executáveis ​​em / usr / local / bin.

Como você está usando o apt, recomendo a instalação do checkinstall. Você pode usá-lo no lugar do make install, e ele irá gerar um pacote .deb para você. Isso facilita muito a remoção limpa do software posteriormente.

Observe que existem vários outros sistemas de compilação, por exemplo cmake; e algum software vem pré-compilado, mas não empacotado (nesse caso, você pode iniciá-lo diretamente da pasta descompactada); e alguns softwares vêm como uma coleção de scripts que você precisa executar sozinho. Às vezes, um código novo do SVN vem sem scripts de configuração, então você precisa primeiro executar o conjunto de ferramentas autoconf ... etc, etc ... você vê que há muitas exceções à regra, mas com um pouco de experiência, você poderá diga o que fazer com a maioria desses downloads misteriosos. Configure-Make-Checkinstall é um bom primeiro começo.

PS. Passe um fim de semana ou dois para aprender como se programar, e as coisas se tornarão muito óbvias :-)

PPS. Você pode se perguntar por que os autores de software Linux não fornecem apenas pacotes pré-compilados em vez do código-fonte. Bem, às vezes eles fazem. Porém, diferentes plataformas e distribuições Linux têm seus próprios formatos de pacote e regras de sistema de arquivos; portanto, como desenvolvedor, você deve fornecer pacotes para todas as configurações possíveis - o que é um problema. Porém, os pacotes Ubuntu geralmente são os mais fáceis de encontrar - você deve descobrir o que é um PPA e como ele funciona!

sebastian_k
fonte
11
"PS. Passe um fim de semana ou dois para aprender como se programar, e as coisas se tornarão muito óbvias :-)". Maus conselhos em uma resposta excelente. Pedir às pessoas que programam para entender o Linux é como os passageiros das companhias aéreas para consertar aviões.
Apoorv020
em vez de programação apenas alterá-lo para compilar seu próprio linux, como LFS (Linux From Scratch) linuxfromscratch.org
jsolarski
@apoorv, ponto tomado. :)
sebastian_k
4

Você deve verificar checkinstall . Ao invés de

./configure
make
sudo make install

Você faz

./configure
make
sudo make checkinstall

e você poderá gerenciar esse pacote como se o tivesse instalado através do apt.

mgalgs
fonte
Opa, acabei de notar que @sebastian_k já mencionou checkinstall ... Oh, bem!
mgalgs
1

Há uma razão válida e sensata para isso ser tão confuso (também há uma razão de artefato irritante) ...

O Unix tem um histórico de ser multiusuário e a maioria dos usuários não tem acesso para instalar aplicativos fora de áreas às quais eles receberam acesso específico.

Portanto, a teoria seria que você criaria algo em seu diretório pessoal e depois o copiaria para uma área que você tinha controle (sua própria área de projeto ou uma área compartilhada).

Os PCs com Windows geralmente são sistemas de usuário único e não têm essa restrição, tudo fica em Arquivos de Programas, não importa o quê.

Depois, há o estúpido e irritante fato de que toda vez que uma nova versão do Unix era lançada, os criadores sentiam a necessidade de mudar de local, mas as antigas ainda precisavam estar lá para scripts automatizados. Isso fornece vários diretórios vinculados que atendem ao mesmo objetivo.

O sistema init é ainda pior.

Bill K
fonte