Como dizer ao Ubuntu onde instalar um programa e como saber onde um programa existente foi instalado?

10

Sou totalmente novo no Ubuntu / Linux, usando o Ubuntu Server no momento. Apenas tentando descobrir algo básico.

Como você pode saber onde está instalando um programa. Por exemplo, eu acabei de instalar o mecanismo de pesquisa Sphinx colocando o arquivo que baixei do site deles para o meu:

/home/sphinx

diretório. Eu criei o diretório sphinx para colocar o tarball. Em seguida, executei estes comandos:

tar xvzf sphinx-0.9.8.1.tar.gz
cd sphinx-0.9.8.1/
./configure --with-mysql-includes=/usr/include/mysql --with-mysql-libs=/usr/lib/mysql

e então estes:

make
sudo make install

Agora eu tenho muitos arquivos no diretório em que executei esses comandos. Esta é a minha instalação do Spynx ou instalou em outro lugar?

No Windows, se você executar um instalador (arquivo .exe) em qualquer lugar, o programa ainda será instalado no diretório C: \ Arquivos de Programas. Algo semelhante se aplica ao Linux, onde todos os programas estão instalados em um local central, ou você pode instalar programas em qualquer lugar do sistema.

Questões

  1. Eu preferiria manter todos os meus programas instalados em um só lugar, então qual é o lugar certo para isso em termos de práticas recomendadas. Em outras palavras, qual é o equivalente do Linux a C: \ Arquivos de Programas?

  2. E como se instala sempre neste local, é apenas uma questão de colocar o tarball e executar os comandos de instalação a partir deste local?

  3. E se eu usar o sudo apt-get para instalar um pacote. Como posso apontar para este local para dizer ao apt-get para sempre instalar lá?

JakeRow123
fonte

Respostas:

15

Algo semelhante se aplica ao Linux, onde todos os programas estão instalados em um local central

Equivalentes aproximados de diretórios de instalação do Windows no Linux

  • \Windows = /bin
  • \Windows\System32= /libe/sbin
  • \Program Files= /usr/bine/usr/lib

Eu preferiria manter todos os meus programas instalados em um só lugar, então qual é o lugar certo para isso em termos de práticas recomendadas. Em outras palavras, qual é o equivalente do Linux a C: \ Arquivos de Programas?

Seriam os diretórios abaixo /usr, especificamente /usr/bine /usr/lib.

E como se instala sempre neste local, é apenas uma questão de colocar o tarball e executar os comandos de instalação a partir deste local?

  • Não. Onde você está quando executa os comandos de instalação quase nunca importa.

  • Os programas que você instala via apt-get(ou aptitude) quase sempre terminam adequadamente /usr. MAS os programas que você compila a partir da fonte e make installcom mais freqüência terminam em /usr/local/bin, /usr/local/libetc, e você pode ter problemas com isso, pois o caminho instalado pelo usuário no Debian / Ubuntu é /usre não /usr/local.

  • Ao compilar a partir da fonte, adicione este interruptor para configure: ./configure --prefix=/usr. Dessa forma, quando você make installos arquivos terminarem no diretório certo

  • Também observe o checkinstallprograma, que monitora os arquivos que um pacote compilado a partir da instalação de código-fonte, cria um arquivo deb e permite fácil desinstalação / reinstalação.

E se eu usar o sudo apt-get para instalar um pacote. Como posso apontar para este local para dizer ao apt-get para sempre instalar lá?

apt-get/ dpkgcuido disso automaticamente. Você pode usar dpkg -L name-of-packagepara ver todos os arquivos instalados por um pacote e onde eles foram instalados.

ish
fonte
obrigado pela resposta detalhada, apenas uma pergunta. Como você disse "Não. Onde você está quando executa os comandos de instalação quase nunca importa.", Isso significa que agora que eu instalei o programa, posso excluir com segurança a pasta Sphinx em / home / sphinx / que extraí do tarball e executou a instalação e fez comandos? Agora isso é equivalente a um instalador que eu já executei para instalar um programa e que agora não tem uso?
JakeRow123
1
Sim, você pode excluir a pasta extraída do tarball - é essencialmente como uma pasta "temp" para a qual o instalador foi extraído e agora é inútil. Essa foi uma ótima pergunta. Editarei a resposta para incluir essas informações.
Ish
Você poderia, mas terá problemas para desinstalá-los com 'make uninstall'. No Debian / Ubuntu, você nunca deve instalar seu software no prefixo / ou / usr, você deve usar / usr / local. Porque, porque / usr / local é criado para administradores locais, é você JakeRow123, para instalar seus próprios programas. / e / usr é apenas para pacotes Debian. Se você instalar lá, as chances são grandes de que você terá problemas. Portanto, use a opção '--prefix = / usr / local' para o comando configure quando você compilar. Então faça; sudo make install 'instalará seu programa lá.
Anders
@Anders, make uninstallNÃO é um recurso padrão e não é encontrado em muitas fontes de programa. Além disso, /usr/localgeralmente não está no caminho do Ubuntu e pode causar problemas ao tentar executar programas ou ao compilar (por causa de inclusões no /usr/local).
Ish
Você NÃO deve instalar o software no lugar errado, como em / usr, e não no lugar certo, como / usr / local. Você deve corrigir a falha com o PATH se o ambiente de computador / usuário não estiver configurado corretamente. Instalar sob / ou / usr causará problemas. Acredite em mim. Estive lá e fiz isso. Não foi divertido. Em absoluto. Alguns programas, todos com autoconfig, nos quais você configurou com o comando configure foram desinstalados. Outros que não têm que não é útil, e deve ter um bug relatado ...
Anders
4

Normalmente, os programas são instalados em alguns diretórios em um diretório superior , chamado prefixo . Qual diretório principal usar depende de quem está instalando, para fins de bruxa e quem gerenciará o software.

O prefixo /usré um software usado por sua distribuição. Você deve não instalar qualquer outro software lá, porque vai confundir a distribuição durante a instalação e atualização de software embalado pela distribuição. Portanto , não instale seu próprio software compilado lá. Essa não é uma boa ideia, a menos que você realmente saiba o que faz. E a menos que você seja um desenvolvedor do Debian ou Ubunut, normalmente não. Eu não faria isso de qualquer maneira.

Para software comercial, o prefixo /opté usado. Está reservado para eles interferirem menos nas distribuições e no administrador do sistema local.

Para o software que o administrador do sistema instala para todos os usuários, o prefixo /usr/localé usado. Está fora do caminho tanto da instalação comercial quanto da distribuição e não interferirá com elas. Portanto, como administrador do sistema, você o usa (se você possui privilégios de root, é um administrador do sistema).

Se você é um usuário comum instalando software para si mesmo, pode usar seu diretório pessoal como prefixo, usando a --prefixopção para configurecom o prefixo diretório " ~/" ou $HOME/. Eu usei muito isso quando eu era estudante. :-)

Normalmente, o software faz a coisa certa quando você executa configurecom a opção --prefixcom o valor certo e depois make; make install.

Sob qualquer um desses prefixos, você geralmente encontra esses diretórios em uma instalação padrão.

  • bin - os programas executáveis, binários.
  • sbin - binários do sistema, que geralmente não devem ser executados por usuários comuns.
  • man - páginas de manual para programas, bibliotecas e arquivos de configuração etc.
  • etc - arquivos de configuração com valores padrão para o software.
  • lib - bibliotecas de programas e arquivos de dados que dependem da arquitetura (como a CPU) do seu computador.
  • share - arquivos de dados que não são diferentes em arquiteturas diferentes e podem ser compartilhados entre computadores diferentes.
  • var- diretórios com dados que são alterados durante a execução do programa. Como arquivos de log etc.

A maioria desses diretórios pode ser usada com sistemas de arquivos protegidos contra gravação para aumentar a segurança. O único que os usuários precisam gravar é o var/diretório. Quando o software é atualizado, esses diretórios obviamente (?) Precisam ter privilégios de gravação. Isso pode ser feito com uma remontagem com privilégios de gravação durante a instalação e depois remontada com somente leitura após a instalação. Mas isso é avançado, e eu apenas o cito como um exemplo de gerenciamento avançado de pacotes.

Há também alguns diretórios diretamente sob /(o diretório root) que não existe em qualquer outro prefixo, como /dev, /tmp, /proce /srv(para os diretórios de dados do servidor, mas eles são geralmente sob /var/libou /var/wwwe diretórios assim, então você precisa de configuração mudança use este diretório .. Eu recomendo que você faça isso quando estiver executando um servidor. Use apenas /var/para testar uma instalação padrão).

  1. Linux não é MS Windows. Existem muitos lugares para colocar os programas que você instala. Depende de quem instala e para quem. Leia no meu post. Aviso prévio. O RedHat usa /usrcomo Debian / Ubuntu /usr/local. Aprenda sua distribuição.
  2. Programas diferentes têm métodos de instalação diferentes. --prefixsão úteis para programas usando configure. A melhor maneira de saber é provavelmente ler o README.txtarquivo ou algo parecido, que você provavelmente recebe no arquivo tar. O arquivo tar pode ser extraído em qualquer lugar, como no diretório inicial. Após a conclusão da etapa de instalação, você poderá remover o arquivo tar extraído, se houver pouco armazenamento. Mas não faça isso antes, a menos que você tenha testado sua instalação corretamente.
  3. Programas instalados com apt-getou aptitudesempre instalados no local apropriado para a distribuição. Você não pode mudar esse lugar.
Anders
fonte
2

Quando você instala programas de um repositório usando a instalação normal, ele é instalado no local correto, cria arquivos de configuração no local correto (funcionalmente semelhante ao registro do Windows) e cria entradas de menu automaticamente.

Quando você baixa um arquivo (não preferido, mas geralmente necessário quando o aplicativo não está em um repositório), a primeira coisa que você fez foi executar o tar, equivalente a descompactar no Windows. Isso cria os arquivos que você provavelmente está vendo.

Então, quando você executa o make install, isso geralmente coloca os resultados no lugar certo, talvez crie menus, mas não apaga os arquivos não tarados. Você provavelmente pode fazer isso, mas convém salvá-los temporariamente, apenas por precaução.

Aqui está um artigo interessante sobre a Estrutura de Diretórios Debian .

Marty Fried
fonte
Bom artigo, exceto que ele não tinha nenhuma referência a / usr / local onde você instala seu próprio software para não entrar em conflito com o software instalado pelo sistema e os pacotes de distribuição (como o Ubuntu). Para instalar você próprio software sob / ou / usr é pedir problemas, problemas que provavelmente só sollution é instalar o sistema do zero de novo ...
Anders