Estoy usando un archivo conda.lock para instalar dependencias. Me preguntaba si hay una manera de almacenarlo en caché. Actualmente, parece que el almacenamiento en caché normal no parece funcionar para eso.
Hm ... tengo una ejecución pesada de uso de archivos de bloqueo, y el almacenamiento en caché funciona en linux y osx:
No funciona en Windows y, aunque me entristece, tampoco me sorprende.
Si tiene enlaces al repositorio en cuestión, o registros, o cualquier información adicional que pueda proporcionar que no sea "no funciona", ¡eso ayudaría!
Gracias @bollwyvl por su rápida respuesta.
Perdón por no proporcionar más detalles antes. Estoy experimentando con un repositorio de juguetes, puedes encontrar un registro reciente aquí:
https://github.com/ma-sadeghi/xyztest/runs/1534789528?check_suite_focus=true
Se informa que el tamaño de la caché es de ~ 0 MB.
PD. No estoy usando setup-miniconda
para este repositorio, estaba tratando de hacerlo funcionar con el conda
incorporado en las máquinas de CI.
@bollwyvl
Mirando su archivo yml
con un poco de investigación en setup-miniconda
, resultó que estaba haciendo un montón de cosas mal. La carpeta de caché ( ~/conda_pkgs_dir
) no existía, así que tuve que crearla manualmente, además no estaba configurando la variable de entorno CONDA_PKGS_DIRS
para apuntar a ~/conda_pkgs_dir
. Aquí está la iteración más reciente:
https://github.com/ma-sadeghi/xyztest/runs/1535236467?check_suite_focus=true
lo que parece que el almacenamiento en caché funciona bien y el paso de "instalación de dependencias" ahora es mucho más rápido.
Gracias por la información.
¡Hurra! ¡Caché para todos!
Tenga en cuenta que almacenar en caché toda la carpeta no funcionará tan bien como podría, ya que
el caché contiene tanto los archivos tar _y_ el contenido descomprimido ... En nuestro
post paso paso nosotros (intentamos) limpiar algo de eso.
Siéntete libre de cerrar si no hay nada más roto ... especialmente porque esto
no estaba involucrado en esta acción.
@bollwyvl Lo siento, sé que esto está completamente fuera del alcance de este repositorio, pero ¿puedo preguntar qué es exactamente lo que hace para optimizar el almacenamiento en caché? ¿De qué archivos te deshaces? los contenidos desempaquetados o los tarballs?
Sí, ese es más o menos el tamaño:
https://github.com/conda-incubator/setup-miniconda/blob/master/src/delete.ts
También hay algunas cosas más allí, pero en comparación son cosas insignificantes
a, digamos, mkl o qt desempaquetados.
@bollwyvl Pregunta rápida: mirando delete.ts
, parece que está eliminando las carpetas sin comprimir, en lugar de los archivos comprimidos .tar.bz2
. Probablemente me esté perdiendo algo, pero parece que al hacerlo, conda necesita hacer un paso adicional de "descomprimir", mientras que si .tar.bz2
se eliminan, conda
simplemente puede reutilizar el ya descomprimido carpetas. Lo probé en mi computadora y parecía que este último conducía a instalaciones más rápidas.
Creo que también podrías ejecutar conda clean. @bollwyvl tal vez podríamos usar eso en lugar de delete.ts
, lo hice así porque no estaba al tanto de conda clean en ese momento.
$ conda clean --help
usage: conda clean [-h] [-a] [-i] [-p] [-t] [-f]
[-c TEMPFILES [TEMPFILES ...]] [-d] [--json] [-q] [-v] [-y]
Remove unused packages and caches.
Options:
optional arguments:
-h, --help Show this help message and exit.
Removal Targets:
-a, --all Remove index cache, lock files, unused cache packages,
and tarballs.
-i, --index-cache Remove index cache.
-p, --packages Remove unused packages from writable package caches.
WARNING: This does not check for packages installed
using symlinks back to the package cache.
-t, --tarballs Remove cached package tarballs.
-f, --force-pkgs-dirs
Remove *all* writable package caches. This option is
not included with the --all flag. WARNING: This will
break environments with packages installed using
symlinks back to the package cache.
-c TEMPFILES [TEMPFILES ...], --tempfiles TEMPFILES [TEMPFILES ...]
Remove temporary files that could not be deleted
earlier due to being in-use. Argument is path(s) to
prefix(es) where files should be found and removed.
Output, Prompt, and Flow Control Options:
-d, --dry-run Only display what would have been done.
--json Report all output as json. Suitable for using conda
programmatically.
-q, --quiet Do not display progress bar.
-v, --verbose Can be used multiple times. Once for INFO, twice for
DEBUG, three times for TRACE.
-y, --yes Do not ask for confirmation.
Examples:
conda clean --tarballs
Algunas ideas más para un caché más pequeño: