Distinción entre apt-cache y dpkg -l

9

Uso apt-cache pkgname para recuperar los paquetes como

me@host:~$ apt-cache pkgnames | wc -l
62803

obtener 62803 resultados

pero

me@host:~$ dpkg -l | wc -l
2336

¿Cuáles son las razones que llevan a una gran distinción? Supongo que dpkg es super que apto.

Alicia
fuente
2
Posible duplicado de dpkg-query vs apt-cache
Olorin
@Olorin He votado para dejar esta pregunta abierta. Son duplicados, pero quiero que se invierta la dirección de la duplicación y que dpkg-query vs apt-cache se cierre como un duplicado de esta pregunta.
karel

Respuestas:

16

aptes para administrar repositorios remotos, dpkg- para paquetes instalados localmente. Están relacionados aptes front end para dpkg. Cuando lo ejecuta apt-get install package, obtiene el .debarchivo y lo instala a través de dpkg. Por lo tanto, los números difieren porque hay muchos paquetes disponibles, pero solo una fracción se instala localmente en su sistema.

apt-cachepuede mostrar tanto los paquetes instalados como los no instalados, porque consulta la aptmemoria caché: una lista de lo que está disponible en repositorios remotos (esa memoria caché es lo que obtienes cuando lo haces apt-get update). Por ejemplo,

$ apt-cache policy terminator
terminator:
  Installed: (none)
  Candidate: 1.91-1


$ dpkg -l terminator
dpkg-query: no packages found matching terminator

Tenga en cuenta que existe otra herramienta que puede consultar la lista de paquetes locales instalados / eliminados, y eso es todo dpkg-query. Por ejemplo,

$ dpkg-query -l 'libc6'
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                 Version         Architecture    Description
+++-====================-===============-===============-=============================================
ii  libc6:amd64          2.27-3          amd64           GNU C Library: Shared libraries
ii  libc6:i386           2.27-3          i386            GNU C Library: Shared libraries

$ dpkg -l libc6
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                 Version         Architecture    Description
+++-====================-===============-===============-=============================================
ii  libc6:amd64          2.27-3          amd64           GNU C Library: Shared libraries
ii  libc6:i386           2.27-3          i386            GNU C Library: Shared libraries

Según el manual dpkg

dpkg también se puede usar como interfaz para dpkg-deb (1) y dpkg-query (1). La lista de acciones compatibles se puede encontrar más adelante en la sección ACCIONES. Si se encuentra alguna acción de este tipo, dpkg solo ejecuta dpkg-deb o dpkg-query con los parámetros que se le han dado, pero actualmente no se les pasa ninguna opción específica, para usar dicha opción, se debe llamar directamente al back-end.

En lo que respecta dpkg-query, debe tenerse en cuenta que esta herramienta se centra en consultar la base de datos de paquetes instalados y puede generar información en un formato particular ( -fopción más -Wacción). Por ejemplo,

$ dpkg-query -W -f='PACK:${Package}\nARCH:${Architecture}\nSTAT:${Status}\n---\n' libc6
PACK:libc6
ARCH:amd64
STAT:install ok installed
---
PACK:libc6
ARCH:i386
STAT:install ok installed
---

Curiosamente, la base de datos dpkg mantiene una lista de los paquetes seleccionados para su eliminación o que se eliminaron en algún momento . dpkg-queryTambién puede tomar el patrón global como argumento, y dependiendo de la presencia de ausencia de él , solo se muestran los paquetes instalados / configurados o todos los paquetes.

Sergiy Kolodyazhnyy
fuente
2

dpkg -l muestra las versiones de paquete instaladas (comenzando con ii), las eliminadas (rc) y algunas otras (por ejemplo, instaladas pero no configuradas, consulte la página de manual).

apt-cache pkgnames le muestra todos los nombres de paquetes disponibles (pero no las versiones del mismo paquete) en los repositorios agregados.

Nyos
fuente