Cada vez que se instala un programa a través de MacPorts, se pone y se instala un montón de dependencias. Cuando desinstalación he dicho programa, ¿cómo puedo hacer DarwinPorts eliminar de forma recursiva todas las dependencias no utilizadas con ella?
Respuestas
¿Demasiados anuncios?MacPorts 1.9.0 añadido la sqlite
portdbformat
y MacPorts 2.0.0 abandonó el antiguo flat
formato. El sqlite
puerto formato de base de datos es el valor predeterminado para las nuevas instalaciones; instalaciones antiguas que se han actualizado a 1.9.x va a continuar el uso de la flat
formato1. Usted puede convertir un 1.9.x flat
sistema a la sqlite
formato por medio de la actualización MacPorts 2.0 o cambiando el portdbformat
valor en /opt/local/etc/macports/macports.conf
y, a continuación, la emisión de un puerto de comando como root (por ejemplo sudo port installed
).
Una de las características de este nuevo formato es que se realiza un seguimiento de "solicitada" versus "no solicitadas" en las instalaciones portuarias. Un no solicitadas que puerto es el que se instala sólo porque un puerto depende de ello. El leaves
pseudo-portname se expande a todos los no solicitadas puertos en los que ningún otro puerto instaladas depende. Usted puede usar esto para "limpiar" innecesarios puertos, incluso si usted no originalmente desinstalar con sudo port uninstall --follow-dependencies portname
(que va a hacer lo que quiera, pero sólo si te acuerdas de usarlo cada vez que desinstalar algo).
Usted debe examinar su actual hojas antes de desinstalar alguno de ellos.
port echo leaves
Algunas hojas (automake
, gperf
, libtool
, pkgconfig
) son dependencias en tiempo de construcción de los puertos comunes, por lo que puede "solicitar" (sudo port setrequested port1 port2 port3 …
) para evitar la desinstalación de ellos sólo para tener que volver a instalar más tarde.
Puede desinstalar cualquier resto deja bastante fácil:
sudo port uninstall leaves
Nota: Antes de la poda de las hojas, puede que también desee desinstalar las versiones antiguas de los puertos que no son "activos". Esto puede revelar un par de hojas más (es decir, los puertos que son dependencias de los puertos que están instalados, pero inactivo):
sudo port uninstall inactive
Hay varias secciones en el MacPorts Guía que también describir el proceso de utilización leaves
a desinstalar innecesarios puertos.
La desinstalación de acción desinstalar un instalado puerto.
%% sudo port uninstall vile Note
También de forma recursiva desinstalar el los puertos que el puerto depende, el uso de la
‑‑follow‑dependencies
bandera. Esto no va a desinstalar las dependencias que están marcados como solicitado o que han de otras personas dependientes.Para desinstalar de forma recursiva todos los puertos que dependen de el puerto antes de desinstalar el puerto en sí, el uso de la
‑‑follow‑dependents flag
.Si un puerto es una dependencia de otro instalado puerto, desinstalar no quitar a menos que quite la dependiente de puerto(s) en primer lugar. Para anular este comportamiento, utilice la opción-f (fuerza) el interruptor. Obviamente, esto va a romper el los dependientes. No forzar la desinstalación los puertos a menos que usted sepa lo que usted está haciendo.
%% sudo port -f uninstall vile
Nota de la importante salvedad de que en el último párrafo. Las dependencias son exactamente eso-dependencias-y las diferentes aplicaciones, se puede (se) requiere las mismas dependencias.
También hay un script en el directorio llamado 'contrib port_cutleaves macports puede ejecutar para eliminar las dependencias que no sean necesarios: http://trac.macports.org/browser/contrib/ . Se te pedirá que para cada puerto a-ser desinstalado y permite mantener alguna, en caso de que desee.
El comando para eliminar un puerto y sus dependientes es:
sudo port uninstall foo --follow-dependents
Sin embargo, si el puerto está desinstalando tiene dependientes que no se desinstala sin el -f
(fuerza) de la bandera.
Por supuesto, usted debe comenzar por la lectura a través de la Guía de MacPorts buscando específicamente en la sección de guía de desinstalación.