¿Cómo comprobar si se utiliza un repositorio de Ubuntu en particular?

¿Cómo comprobar si se utiliza un repositorio de Ubuntu en particular?

Estamos usando nuestro propio repositorio para paquetes de Ubuntu y necesito una forma de verificar si el repositorio realmente se usa en cada estación de trabajo. Puedo usarlo apt-cache policy|grep 'our-repository-address', pero a algunos de mis colegas no les gusta debido al "grep". Les parece un truco poco confiable... ¿Hay otra forma de realizar esta verificación o apt-cache policy|grep 'our-repository-address'es bastante estándar?

Respuesta1

Debe verificar cada paquete proporcionado por el repositorio individualmente.
Si el paquete es solo una reconstrucción local y la cadena de versión es la misma que en otro repositorio, debe verificar manualmente md5sums en/var/lib/dpkg/info/PACKAGE.md5sums(si el paquete no compila nada y las estructuras del repositorio no difieren, no hay forma de aclarar el origen).

Si las cadenas de versión difieren, puede utilizar el siguiente fragmento de código:

#!/usr/bin/python
# Check original repository of installed packages from list.
# Usage: script PACKAGELIST

import apt
import sys
import re

# set values for local repository
component = "main"
archive = "experimental"
origin = "Debian"
label = "Debian"
site = "ftp.debian.org"

def main():
  try:
    pkglist = []
    f = open(sys.argv[1], "r")
    for line in f:
      if re.match('^Package: ', line):
        pkglist.append(re.sub('^Package: ', '', line).rstrip('\n'))
    f.close()

    cache = apt.Cache()
    for package in pkglist:
      pkg = cache[package]

      # check if package is installed
      if not pkg.installed:
        continue

      if pkg.installed.origins[0].component != component or \
          pkg.installed.origins[0].archive != archive or \
          pkg.installed.origins[0].origin != origin or \
          pkg.installed.origins[0].label != label or \
          pkg.installed.origins[0].site != site:
        print package
        #continue
      #else:
      #  print package + " is in repo."

  except KeyboardInterrupt:
    print "\nShutdown requested...exiting"
  except Exception, e:
    sys.stderr.write("An unecpected exeption was encountered: %s" % str(e) + "\n")
    sys.exit(1)

if __name__ == "__main__":
  main()

El uso es script PACKAGELIST, por ejemplo:

script /var/lib/apt/lists/ftp.debian.org_debian_dists_experimental_main_binary-amd64_Packages

También debe ajustar el componente, el archivo, etc. para su archivo local (consulte el archivo de versión relacionado en /var/lib/apt/lists).

Si el paquete está instalado pero no desde su repositorio, obtendrá el nombre del paquete; si no, todo está bien.

Respuesta2

Supongo que ya sabe el hecho de que, si desea que se utilice su repositorio en lugar del repositorio predeterminado de Ubuntu, debe colocar su línea de repositorio en la parte superior del /etc/sources.listarchivo.Aquí hay una pregunta y una respuesta.sobre ese tema.

Si ya colocó su repositorio en la parte superior del archivo "sources.list", puede verificar si la instalación de un paquete está usando --print-urisel interruptor en el apt-getcomando, como se muestra a continuación

sudo apt-get install scribes --print-uris 

Este comando devuelve el siguiente resultado en mi máquina(También tengo un pequeño repositorio local)

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  python-gtksourceview2
Suggested packages:
  libgtksourceview2.0-dev
The following NEW packages will be installed:
  python-gtksourceview2 scribes
0 upgraded, 2 newly installed, 0 to remove and 634 not upgraded.
Need to get 0 B/1,191 kB of archives.
After this operation, 8,954 kB of additional disk space will be used.
Do you want to continue [Y/n]? y
'file:/media/Main/Linux-Software/Ubuntu/Precise/./precise-debs/python-gtksourceview2_2.10.1-2build1_i386.deb' python-gtksourceview2_2.10.1-2build1_i386.deb 90224 MD5Sum:3db673894b791f8843c3b0dcd8958e38
'file:/media/Main/Linux-Software/Ubuntu/Natty/natty/./scribes_0.4~r910-0ubuntu2_all.deb' scribes_0.4~r910-0ubuntu2_all.deb 1100712 MD5Sum:6555b7060ecd662fe1597724e9846b9c

Las dos últimas líneas indican claramente el repositorio que se utiliza para los dos archivos necesarios.

Espero que esto pueda ayudar en su problema.

información relacionada