¿Cómo hago para que apt-get ignore algunas dependencias? Por ejemplo, quería instalar mailx para poder usarlo para enviar correos electrónicos desde scripts cron / herramientas de generación de informes. Sin embargo, la instalación de mailx también instala exim4 y un montón de dependencias (ya tengo instalado Postfix) que realmente no necesito y que supongo que mailx también puede vivir sin él.
¿Cómo ignoro algunas dependencias pero sigo usando apt-get ya que es una buena herramienta?
APT::Install-Recommends "false";
a suapt.conf
.Respuestas:
Solución simple y fácil: simplemente especifique los paquetes no deseados con un extra
-
después de cada uno de ellos.Ejemplo sin el
-
interruptor:Ejemplo usando el interruptor para evitar la instalación
exim4-base
. Observe el-
al final:Como puede ver,
apt-get
ya no intenta instalar elexim4-base
paquete y no intenta instalar sus diversas dependencias (exim4-config
etc.).Y si te equivocaste y necesitabas esa
exim4-base
dependencia después de todo, ¡puedesapt-get install
hacerlo más tarde!fuente
gnupg2
sinpinentry-gtk2
evitar X deps)Depends: xxx but it is not going to be installed
. Puede omitir todos los paquetes opcionales conapt-get install --no-install-recommends PACKAGE
Puede cambiar las dependencias de un paquete deb como este:
ar x golden-linux.deb
(creará, es decir, tres archivos: debian-binary control.tar.gz data.tar.gz)tar xzf control.tar.gz
(creará: postinst postrm preinst prerm md5sums control)control
(usar un editor de texto)tar --ignore-failed-read -cvzf control.tar.gz {post,pre}{inst,rm} md5sums control
ar rcs newpackage.deb debian-binary control.tar.gz data.tar.gz
(¡orden importante! Ver [Nota])[Nota]: ¡dpkg no podría leer los metadatos de un paquete rápidamente si tuviera que buscar dónde terminó la sección de datos!
fuente
libmng1.so.1
a pesar de que funcionaba perfectamente con un enlace simbólico establecido enlibmng1.so.2
.apt-get
simplemente no podía ser amordazado y seguía molestándome acerca de las dependencias insatisfechas (¡incluso cuando instalo algo totalmente ajeno!). Qué carga de concepto de basura.gnome-settings-daemon
deseadognome-settings-daemon-schemas=3.8.6.1-0ubuntu11
pero ya tengognome-settings-daemon-schemas=3.8.6.1-0ubuntu11.2
(<- observe el ".2" al final). Este procedimiento me permitió editar el paquete y forzarlo a usar la versión más nueva de 11.2. ¡GRACIAS!FILES=$(tar zxvf control.tar.gz)
para almacenar la lista de archivos en una variable. 4.tar zcf control.tar.gz $FILES
- cree el archivo en un solo paso sin canalizaciones o redireccionamientos utilizando la lista de archivos original (después de la modificación).--ignore-failed-read
modo quetar
ignore los archivos que faltan del resto de la línea de comandos. (Por ejemplo,prerm
,postrm
están ausentes en muchos paquetes.) Además, las bolas de alquitrán pueden ser.xz
más que.gz
en las últimas versiones del formato de archivo de Debian (por ejemplodata.tar.xz
).Después de instalar el paquete con la
--ignore-depends
opción, vaya y edite el/var/lib/dpkg/status
archivo, y elimine cualquier dependencia que crea que no es necesaria. Solo ten mucho cuidado. En fin un dep. que se requiere, es más que probable que SER requeridofuente
/var/lib/dpkg/status
, puede ser necesario finalizar la instalación consudo apt-get -f install
(no es necesario especificar un paquete).Puedes probar la
--nodeps
bandera conapt-get
.O descargue el paquete e instálelo
dpkg
con la opción--ignore-depends
.Por ejemplo, si desea instalar el paquete
foo
sin dependenciabar
:fuente
--no-install-recommends
trabajó para mi.Como instaló postfix desde la fuente, debe instalar un paquete "ficticio" que satisfaga la dependencia del agente de transporte de correo de mailx (o bsd-mailx). El paquete "equivs" en debian existe para crear un paquete ficticio que puede instalar para decirle a dpkg "esta dependencia está satisfecha"
La razón por la que decirle a dpkg que simplemente ignore las dependencias no es una buena solución, es que solo le está diciendo a dpkg / apt que lo ignore para una sola transacción, no puede decirle que ignore las dependencias para siempre. Cada vez que usa apt, verifica las dependencias en todos los paquetes
fuente
equivs-control <name>
, editar el archivo producido para proporcionar la dependencia correcta y tener un buen nombre, luego ejecutarequivs-build <name>
y finalmentedpkg -i
el archivo .deb resultante.He estado buscando esta opción en un servidor Ubuntu 12.04 con Xen. En mis dominios utilizo el kernel virtual, y apt trató persistentemente de instalar grub con cada actualización del paquete del kernel. Sin embargo, Grub no es necesario dentro de domU cuando se usa p [yv] grub.
He estado buscando la opción -nodeps para apt-get también, pero no funcionó, así que terminé desinstalando / purgando grub * después de cada actualización del kernel.
Después de todo, leer realmente una página de manual ayuda a veces, parece que una opción similar de apt-get en 12.04 parece ser: no-install-recomendamos, lo que realmente funciona en este caso, ya que grub aparece como 'recomendado' en el información del paquete (supongo que no es una dependencia "real").
Estoy agregando esto aquí porque en mi caso resolvió un problema similar, y la sugerencia para '--no-install-recomendamos' aún no se mencionó.
fuente
Puede descargar el paquete con apt-get y luego instalarlo con dpkg, enumerando manualmente la dependencia que desea ignorar.
Por ejemplo, si quiero descargar mypackage pero depende de libperl5.14 y no quiero instalar libperl5.14 ya que tengo una versión diferente, puedo ignorar esta dependencia de la siguiente manera:
fuente
Una forma alternativa de ajustar manualmente las dependencias es:
fuente
En mi sistema Debian, bsd-mailx realmente depende
default-mta | mail-transport-agent
(puede verificar de qué depende un paqueteapt-cache show <pkg>
para cualquier cosa en el archivo odpkg -s <pkg>
para los paquetes instalados.Puede ser que su paquete postfix no tenga,
Provides: mail-transport-agent
por lo que apt no se da cuenta de que tiene un MTA instalado. Valdría la pena presentar un error si es un paquete oficial.fuente
A los efectos de esto, ¿podría instalar clavo que no creo que tenga estas dependencias?
fuente
Bueno, no lo hagas.
Usar el trabajo de otras personas es muy importante en el camino hacia cualquier éxito. Cuando construyes algún software desde la fuente (tarball), pierdes la oportunidad de usar el trabajo del administrador de paquetes de la distribución.
No recibirá actualizaciones "gratuitas". La mayoría de las veces, ninguno actualiza los paquetes que instalaron desde la fuente. Debido a que necesitan rastrear el software para nuevas versiones, reconstruirlo y todos los programas dependientes (trate de recordarlos).
Tendrá problemas con otros paquetes de los repositorios de su distribución. Este es exactamente el caso indicado en la pregunta: ubuntu tiene un excelente administrador de paquetes y algunas personas muy agradables que mantienen los paquetes. Y han decidido que para que el programa mailx funcione se necesita un MTA. Entonces, si instaló postfix desde las fuentes, ubuntu no le pediría que instale exim.
Si por alguna razón el mantenimiento del servidor pasa a otra persona (por ejemplo, su proyecto se vuelve muy exitoso y decide contratar a otro tipo para que administre los servidores mientras está ocupado con otras cosas), naturalmente esperará correr
dpkg --get-selections
para obtener todo el paquetes instaladosIntente utilizar el software de administración de paquetes de la distribución tanto como sea posible. Aprenda a crear sus propios paquetes si no puede encontrar uno preconstruido y se convertirá en un mejor profesional.
fuente