La gran mayoría de los .deb
paquetes, ya sean provistos o no por repositorios oficiales, se instalan con el prefijo /usr
.
Lo que eso significa es que los ejecutables destinados a ser ejecutados por el usuario entran /usr/bin
o /usr/sbin
(o /usr/games
si es un juego), entran las bibliotecas compartidas, entran los /usr/lib
datos compartidos independientes de la plataforma /usr/share
, entran los archivos de encabezado /usr/include
y entra automáticamente el código fuente instalado /usr/src
.
Un pequeño porcentaje de paquetes se usa /
como prefijo. Por ejemplo, el bash
paquete pone el bash
ejecutable en /bin
, no /usr/bin
. Esto es para paquetes que proporcionan los elementos básicos esenciales para ejecutarse en modo de usuario único (como el modo de recuperación) y para iniciar el modo multiusuario (pero recuerde, eso a menudo incluye funcionalidad para montar algunos tipos de recursos compartidos de red ... en caso de que /usr
sea un sistema de archivos remoto).
Un pequeño porcentaje de .deb
paquetes, en su mayoría aquellos creados con Quickly , crea una carpeta específica de paquete dentro /opt
y coloca todos sus archivos allí. Aparte de eso, la mayoría de las veces /opt
es la ubicación utilizada por el software que se instala desde un instalador ejecutable que no utiliza el administrador de paquetes del sistema pero que no implica la compilación desde la fuente. (Por ejemplo, si instala un programa propietario como MATLAB, es probable que lo instale /opt
).
En contraste con todo esto, cuando descarga un archivo fuente (u obtiene el código fuente de un sistema de control de revisión como Bazaar o git), lo construye e instala, por lo general se instala en el prefijo /usr/local
(a menos que se lo indique) de otra manera). Esto significa que sus ejecutables van en /usr/local/bin
, /usr/local/lib
o /usr/local/games
, en sus bibliotecas /usr/local/lib
, y así sucesivamente.
Hay algunas excepciones a esto: algunos programas, por defecto, se instalan en el /usr
prefijo y, por lo tanto, sobrescriben las instalaciones de los mismos programas de los .deb
paquetes. Por lo general, puede evitar esto ejecutándose en ./configure --prefix=/usr/local
lugar de ./configure
cuando los construye. Nuevamente enfatizo que usualmente esto no es necesario.
(Es por esta razón que tiene mucho sentido poner el código fuente que está creando e instalar para su uso en todo el sistema /usr/local/src
, que existe para ese propósito).
Suponiendo que la versión empaquetada está instalada /usr
y la versión que instaló desde el origen está en /usr/local
:
Los archivos del paquete instalado no se sobrescribirán.
Normalmente, la versión más nueva se ejecutará cuando invoque manualmente el programa desde la línea de comandos (suponiendo que /usr/local/bin
o donde estén instalados los ejecutables esté en su PATH
variable de entorno y aparezca antes del /usr
directorio prefijado correspondiente , como /usr/bin
).
Pero puede haber algunos problemas con los lanzadores que se crean y se hacen accesibles a través de menús o búsquedas. Además, si ha instalado más de una versión de una biblioteca en diferentes lugares, puede ser un poco más complicado determinar qué software utilizará.
Si en realidad no está utilizando ambas versiones del programa o la biblioteca, a menudo debe eliminar la que no está utilizando, aunque en situaciones limitadas es posible que desee mantener un paquete instalado para satisfacer las dependencias.
Sin embargo, si por algún motivo se sobrescriben los archivos (por ejemplo, si el código fuente está instalado en /usr
lugar de /usr/local
):
- El administrador de paquetes no sabrá nada acerca de cómo se modificó el software que instaló. Pensará que la versión anterior está instalada. Se pueden producir problemas graves. Deberías evitar esto. Si ha creado esta situación, debe desinstalar el software que instaló desde el origen (generalmente
sudo make uninstall
en el directorio) y luego desinstalar el paquete o paquetes que proporcionan los archivos que se sobrescribieron (ya que no se restaurarán desinstalando la versión instalada de la fuente). Luego reinstale la versión que desee tener./usr/local/src/program-or-library-name
En cuanto al cumplimiento de dependencias:
Si hay un .deb
paquete que depende del software que instaló desde la fuente y requiere la versión que instaló desde la fuente (o superior), ese paquete no se instalará correctamente. (O, para ser más precisos, es posible que pueda "instalarlo", pero nunca se "configurará", por lo que no podrá usarlo). Las dependencias se resuelven por las versiones de los paquetes instalados, no por qué software tienes realmente.
Del mismo modo, el software al menos intentará instalarse por completo, incluso si ha eliminado manualmente los archivos proporcionados por los paquetes de los que depende el software que se instala. (Por lo general, no debe tratar de aprovechar eso para ningún propósito. El administrador de paquetes que funciona sobre la base de información falsa es casi siempre algo malo).
Por lo tanto, si no puede encontrar un paquete que proporcione la versión del software que necesita, es posible que necesite crear su propio .deb
paquete a partir del software que ha compilado e instalarlo desde ese paquete. Entonces el administrador de paquetes sabrá lo que está sucediendo. Crear un paquete para su propio uso, que no necesita para funcionar bien en las computadoras de otras personas, en realidad no es muy difícil. (Pero creo que puede estar fuera del alcance de su pregunta, ya que está redactado actualmente).