A grande maioria dos .debpacotes, 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/binou /usr/sbin(ou /usr/gamesse é um jogo), as bibliotecas compartilhadas entram /usr/lib, os dados compartilhados independentes da plataforma entram /usr/share, os arquivos de cabeçalho entram /usr/includee o código fonte instalado entra automaticamente /usr/src.
Uma pequena porcentagem de pacotes usa /como prefixo. Por exemplo, o bashpacote coloca o bashexecutá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 /usrseja um sistema de arquivos remoto).
Uma pequena porcentagem de .debpacotes, principalmente aqueles criados com o Quickly , cria uma pasta específica do pacote /opte 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/libou /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 /usrprefixo e, portanto, substituem as instalações dos mesmos programas nos .debpacotes. Normalmente, você pode evitar isso executando, em ./configure --prefix=/usr/localvez de ./configurequando 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 /usre 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/binou onde os executáveis estejam instalados esteja em sua PATHvariável de ambiente e apareça antes do /usrdiretó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 /usrvez 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 uninstallno 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 .debpacote 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 .debpacote 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.)