A grande maioria dos .deb
pacotes, fornecidos ou não por repositórios oficiais, é instalada com o prefixo /usr
.
O que isso significa é que os executáveis que devem ser executados pelo usuário entram /usr/bin
ou /usr/sbin
(ou /usr/games
se é um jogo), as bibliotecas compartilhadas entram /usr/lib
, os dados compartilhados independentes da plataforma entram /usr/share
, os arquivos de cabeçalho entram /usr/include
e o código fonte instalado entra automaticamente /usr/src
.
Uma pequena porcentagem de pacotes usa /
como prefixo. Por exemplo, o bash
pacote coloca o bash
executável em /bin
, não /usr/bin
. Isso é para pacotes que fornecem o essencial para executar no modo de usuário único (como o modo de recuperação) e iniciar o modo de usuário múltiplo (mas lembre-se, isso geralmente inclui funcionalidade para montar alguns tipos de compartilhamentos de rede ... caso /usr
seja um sistema de arquivos remoto).
Uma pequena porcentagem de .deb
pacotes, principalmente aqueles criados com o Quickly , cria uma pasta específica do pacote /opt
e coloca todos os seus arquivos lá. Fora isso, na maioria das vezes /opt
é o local usado pelo software instalado a partir de um instalador executável que não usa o gerenciador de pacotes do sistema, mas não envolve a compilação a partir do código-fonte. (Por exemplo, se você instalar um programa proprietário como o MATLAB, provavelmente o incluirá /opt
.)
Ao contrário de tudo isso, quando você baixa um arquivo fonte (ou obtém o código fonte de um sistema de controle de revisão como o Bazaar ou o git), constrói e instala, ele geralmente é instalado no prefixo /usr/local
(a menos que você o solicite) de outra forma). Isso significa que seus executáveis ir /usr/local/bin
, /usr/local/lib
ou /usr/local/games
, suas bibliotecas /usr/local/lib
, e assim por diante.
Existem algumas exceções - alguns programas, por padrão, são instalados no /usr
prefixo e, portanto, substituem as instalações dos mesmos programas nos .deb
pacotes. Normalmente, você pode evitar isso executando, em ./configure --prefix=/usr/local
vez de ./configure
quando criá-los. Mais uma vez enfatizo que geralmente isso não é necessário.
(É por esse motivo que faz muito sentido colocar o código-fonte que você está construindo e instalará para uso em todo o sistema /usr/local/src
, o que existe para esse fim.)
Supondo que a versão empacotada esteja instalada /usr
e a versão que você instalou da fonte esteja em /usr/local
:
Os arquivos do pacote instalado não serão substituídos.
Normalmente, a versão mais recente será executada quando você invocar o programa manualmente a partir da linha de comando (supondo que /usr/local/bin
ou onde os executáveis estejam instalados esteja em sua PATH
variável de ambiente e apareça antes do /usr
diretório com prefixo correspondente , como /usr/bin
).
Mas pode haver alguns problemas com o que os lançadores são criados e disponibilizados através de menus ou pesquisa. Além disso, se você instalou mais de uma versão de uma biblioteca em locais diferentes, pode ser um pouco mais complicado determinar qual será usado por qual software.
Se você não está realmente usando as duas versões do programa ou da biblioteca, geralmente deve remover a que não está usando, embora em situações limitadas você queira manter um pacote instalado para satisfazer as dependências.
No entanto, se por algum motivo os arquivos forem substituídos (por exemplo, se o código-fonte estiver instalado em /usr
vez de /usr/local
):
- O gerenciador de pacotes não saberá nada sobre como o software instalado foi alterado. Ele pensará que a versão antiga está instalada. Problemas ruins podem resultar. Você deve evitar isso. Se você criou essa situação, desinstale o software que instalou da origem (geralmente
sudo make uninstall
no diretório) e desinstale o pacote ou pacotes que fornecem os arquivos que foram substituídos (pois eles não serão restaurados com a desinstalação da versão instalada da fonte). Em seguida, reinstale a versão que você deseja ter./usr/local/src/program-or-library-name
Quanto ao cumprimento de dependências:
Se houver um .deb
pacote que dependa do software que você instalou da fonte e exija a versão que você instalou da fonte (ou superior), esse pacote não será instalado com êxito. (Ou, para ser mais preciso, você poderá "instalá-lo", mas ele nunca será "configurado" para não poder usá-lo.) Dependências são resolvidas de acordo com as versões dos pacotes instaladas, e não qual software você realmente tem.
Da mesma forma, pelo menos o software tentará instalar completamente, mesmo se você tiver excluído manualmente os arquivos fornecidos pelos pacotes dos quais o software que está sendo instalado depende. (Geralmente, você não deve tentar aproveitar isso para qualquer finalidade. O gerenciador de pacotes que opera com base em informações falsas é quase sempre uma coisa ruim.)
Portanto, se você não conseguir encontrar um pacote que forneça a versão do software necessária, poderá ser necessário criar seu próprio .deb
pacote a partir do software compilado e instalar a partir desse pacote. Então, o gerenciador de pacotes saberá o que está acontecendo. Criar um pacote para seu próprio uso, que você não precisa funcionar bem nos computadores de outras pessoas, na verdade não é muito difícil. (Mas acho que isso pode estar fora do escopo da sua pergunta, como está atualmente redigida.)