Necesito usar apt-get download
para buscar una versión específica de un .deb
archivo, pero no necesariamente la versión exacta. .deb
las dependencias pueden usar expresiones como >=0.3.0
y me gustaría apt-get download
obtener la misma versión que la que se descargaría usando dicha dependencia.
En resumen, lo que quiero trabajar es esto:
$ apt-get download package='>=0.3.0'
¿Alguna idea de cómo podría obtener esa funcionalidad?
Respuestas:
Puede hacer esto descubriendo primero qué versión es la versión más nueva que también es mayor o igual que la versión mínima deseada. Luego, descarga exactamente esa versión usando
apt-get download
. Aquí hay un script que hace esto (es un poco feo, pero se entiende la idea):Tendría que agregar la comprobación de errores en caso de que el paquete no exista, etc., pero esto contiene la solución principal. Además, he asumido aquí que desea el paquete más nuevo disponible que sea al menos una versión determinada. Si, en cambio, desea el paquete más antiguo disponible que tenga al menos una versión determinada, debe ajustar el script para dejar de buscar una vez que encuentre algo que sea al menos su versión deseada.
fuente
Dado que desea exactamente lo que
apt-get install
le daría, podría valer la pena ejecutarapt-get install
en 'modo de solo descarga' usando un directorio de archivos personalizado:¿Cómo cambiar el directorio de archivos? Esta es una opción de configuración:
Esos se pueden cambiar temporalmente con el
--option
parámetro:Para resumir:
Este comando descarga (y única descarga, lo instale) los correspondientes
.deb
archivos de<package>
a/some/cache/dir
. El directorio contendrá los.deb
archivos para el paquete, sus dependencias, un archivo de bloqueo y un directorio 'parcial' (que debe estar vacío). Filtrar el.deb
archivo exacto que necesita debe ser trivial.fuente
apt-get install
requiere acceso de superusuario.apt-get download
También le permite establecer la liberación de destino. ¿No ayudaría?Comentario al # 1 (no se puede utilizar comentarios) - añadiendo el parámetro
--print-uris
aapt-get install
no requiere derechos de root (pero hay que descargarlo en sí - mejor con wget -i lista_de_archivos).fuente
Sin SU privs, aún puede ejecutar apt-cache y combinarlo con el filtrado para obtener esa información. Use algo como:
En Debian 5:
En 6 puedes usar:
Apt-cache parece haber cambiado el comportamiento en el orden de la lista entre 5 y 6, de modo que en 6 el último llega último.
Una advertencia es que si está utilizando esta salida como dice "para obtener la misma versión que la que se descargaría usando dicha dependencia", la versión del paquete disponible puede cambiar si ejecuta apt-get update (con su privs, por supuesto), o si se ha configurado para ejecutarse automáticamente y sucede entre el momento en que reunió la versión, y cuando ejecuta el script que instala las cosas esperando que esa sea la versión.
fuente