Para una actualización sin problemas de 10.04 a 10.10, me gustaría eliminar todos los paquetes que no están en los repositorios predeterminados (por ejemplo, cromo PPA y repositorios de terceros). ¿Cuál es la forma más fácil (preferiblemente CLI) para encontrar y eliminar estos paquetes?
Editar: esta pregunta no está restringida a PPA, también tengo un repositorio x2go, así que estoy buscando un comando genérico para eliminar los paquetes que pertenecen a un determinado repositorio. Para los PPA, la pregunta ¿Cómo se pueden eliminar los PPA? Tiene excelentes respuestas.
package-management
Lekensteyn
fuente
fuente
Respuestas:
Este script puede enumerar todos los paquetes de un servidor / rama en particular (modificando las dos variables declaradas):
Si necesita enumerar todos los paquetes que no provienen de un servidor en particular, independientemente de la sucursal, reemplace la penúltima línea con:
fuente
$2 == server && $3 == branch
por$2 != server
, mi pregunta es respondida. Ponga eso en su respuesta :) (labranch=
línea se puede eliminar) Nota: se supone que todos los paquetes provienen de un único servidor de repositorio.libvpx0
paquete existía tanto en el repositorio principal como en el PPA de cromo diario. Después de la eliminación de los depósitos de/etc/apt/sources.list.d
, todavía tenía un paquete sobrante:libvpx0
. I "reparado" de la forma siguiente: eliminar la biblioteca con dpkg, haciendo caso omiso de las dependencias:sudo dpkg --ignore-depends=libvpx0 --remove libvpx0
. A continuación, volverlo a instalar desde el repositorio principal:sudo apt-get install libvpx0
.sudo apt-get install libvpx0=$version_string
, suponiendo que los dos paquetes disponibles tengan cadenas de versión diferentes.apt-cache policy $(dpkg -l | awk '/^ii/{print $2}') > policy.txt; awk '!/^ /{pkg=$1}check{print pkg, $2;check=0}/\*\*\*/{check=1} ' policy.txt | grep -v archive.ubuntu
es un buen comienzo (agregue másgrep -v
para excluir ciertos PPA). Las versiones de paquetes que no se conocen en ningún repositorio aparecen como/var/lib/dpkg/status
.Echa un vistazo a ppa-purge .
Uso:
El servidor de host está predeterminado
ppa.launchpad.net
.Aquí está el enlace a la página de manual para el
ppa-purge
comando de referencia.fuente
Superar
aptitude
el error multiarch parappa-purge
Normalmente, como Vadim Rutkovski y Takkat han explicado , corriendo
ppa-purge
con la sintaxis predeterminada es una forma efectiva de eliminar todos los paquetes proporcionados por un PPA, ellos degradar correctamente a las versiones proporcionadas en otras fuentes de software configuradas siempre que sea posible.Sin embargo, como ha señalado Takkat, el error 831768 impide que
ppa-purge
funcione correctamente para eliminar paquetes multiarch (como los paquetes de 32 bits instalados en sistemas de 64 bits). Esto se debe aaptitude
que no puede manejar dependencias conflictivas en paquetes multiarch (de eso se trata el error), y el comportamiento predeterminado deppa-purge
es usaraptitude
para degradar paquetes.Afortunadamente,
ppa-purge
acepta la-i
bandera que hace que se prefieraapt-get
aaptitude
como motor. Como se documenta en el informe de error, el usoapt-get
es una alternativa efectiva a la invocación manualaptitude
, por lo que ejecutarppa-purge
con el-i
indicador debería ser una solución efectiva para eliminar / degradar todos los paquetes proporcionados por un PPA, incluidos los paquetes multiarch .Cómo hacerlo
Aquí está la sintaxis:
Como de costumbre (igual que cuando
-i
no se usa la bandera):ppaowner
se reemplaza con el dueño del PPA./ppaname
es opcional. Si está presente,ppaname
se reemplaza con el nombre del PPA. Si no, por defecto esppa
.Por ejemplo , supongamos que tengo instalado el PPA para compilaciones inestables de qBittorrent y quiero eliminarlo por completo, degradando automáticamente qBittorrent a cualquier versión disponible a través de mis otras fuentes de software que se utilizan
apt-get
detrás de escenaaptitude
. Entonces correría:Donde está documentado
Por alguna razón, algunas opciones útiles para
ppa-purge
no están documentadas en su página de manual , incluyendo-i
. Pero puede obtener información sobre ellos ejecutandoppa-purge -h
(o simplementeppa-purge
sin argumentos):La "preferencia inversa de apt-get upon aptitude" es un poco críptica. Al observar la pieza relevante del código fuente (
ppa-purge
es sólo un script de shell, después de todo), podemos ver que esto significa que el comportamiento por defecto es preferiraptitude
aapt-get
, y la-i
señal revierte esta preferencia.fuente
ppa-purge
se no eliminar o degradar los paquetes que ya no son proporcionados por el PPA siendo "purgado". Sin embargo, es posible que desee publicar una pregunta por separado sobre esto, para obtener una respuesta más autorizada o bien documentada.ppa:username/path
. Además, el PPA debe estar HABILITADO antes de intentar purgarlo, aunque el script se deshabilita inmediatamente después de actualizar la lista de paquetes para eliminar, no "encontrará" PPA ya deshabilitados.aptitude search ~o
para encontrar paquetes huérfanos sin fuente de instalación si necesita purgar algo que se eliminó de un PPA (o se instaló como una vía únicadpkg -i
).Aquí hay formas GUI para hacerlo. Espero que ayude a aquellos que no prefieren CLI. Los pasos son simples y fáciles de seguir.
Abra el administrador de paquetes sinápticos . Si no está instalado, instálelo de la siguiente manera:
Cuando se abre, haga clic en el botón Origen en la parte inferior izquierda. Enumerará todos los repositorios en el lado superior izquierdo. Seleccione el repositorio particular para el que se eliminarán los paquetes. Enumerará todos los paquetes en ese repositorio. Haga clic en el primer campo i, e S o en el campo Versión instalada para mostrar primero los paquetes instalados.
Ahora seleccione todos los paquetes para eliminar.
Consejos para marcar para la eliminación:
Seleccione el primer paquete, luego mantenga presionada la Shifttecla y nuevamente seleccione el último paquete para seleccionar todo. Luego haga clic derecho en el cuadro cuadrado y seleccione marcar para eliminar o marcar para eliminar por completo .
o Seleccione cualquier paquete y presione Ctrl+ Apara seleccionar todo. Luego haga clic derecho en el cuadro cuadrado y elija marcar para eliminar o marcar para eliminar por completo.
Eso es. Se eliminará sin ningún problema. También adjunté la imagen para que quede más clara. Espero que ayude. :)
fuente
Para al menos encontrarlos, comience deshabilitando los PPA y ejecute
apt-get update
. Luego instalarapt-show-versions
. La ejecuciónapt-show-versions | grep 'No available'
le dará una lista de todos sus paquetes instalados que no se pueden encontrar en sus repositorios configurados. Con algo de magia en la línea de comandos, probablemente pueda eliminar solo los nombres de los paquetes y pasarlos aapt-get remove
:Tenga en cuenta que esto irá a través de la lista devuelta
apt-show-versions
y los eliminará uno por uno. Dependiendo de lo que encuentre, esto podría desinstalar algo no deseado debido a dependencias, así que verifíquelo primero.fuente
libvpx0
paquete del PPA de cromo diario. La respuesta de @ enzotib mostró este paquete.apt-show-versions
como no root, necesitasudo apt-show-versions -i
actualizar su caché y ver los cambios de los repositorios / PPA recién eliminados (de lo contrario, solo se actualiza a través de un trabajo cron.daily)Encontré el uso de ppa-purge difícil.
Abra Synaptic Package Manager en Sistema, luego seleccione Configuración, Repositorios.
Elimina los que no quieres.
¡Hecho!
fuente