Compilar darktable

Llevaba tiempo intentando compilar darktable y hasta ahora no lo habia conseguido con éxito. Había seguido las indicaciones de nuestro compañero @criadoperez en sus artículos, pero supongo que mi desconocimiento del lenguaje y de la complejidad de GNU/Linux, habian hecho fracasar en los intentos; en diversas distribuciones.

Últimamente he visonado un video de Aurelien Pierre sobre la optimización de darktable y siguiendo sus pasos (que es lo que pone en la pagina de github de darktable) he conseguido mi objetivo.

Vista mi dificultad y ver que lo que conseguido, dejo las instrucciones en su totalidad de la web de Github por si alguien más quiere probar. Segun Aurelien, la compilación es la mejor manera para optimizar darktable con nuestro hardware.

Tabla de contenido

(estos enlaces van a la web de Github, V.O.)

  1. Documentación
  2. Sitio web
  3. Requisitos
  1. Instalando
  1. Actualización desde versiones anteriores
  2. Obtención de extensiones
  3. Edificio
  1. Utilizando
  1. contribuyendo
  2. Preguntas más frecuentes
  1. wiki
  2. Listas de correo

Documentación

El manual de usuario de darktable se mantiene en el repositorio de dtdocs .

La documentación de la API de Lua se mantiene en el repositorio de luadocs .

Sitio web

El sitio web ( https://www.darktable.org/ ) se mantiene en el repositorio dtorg .

Requisitos

Plataformas compatibles

  • Linux (64 bits)
  • BSD gratuito (64 bits)
  • Windows 8 (64 bits), Windows 10 (64 bits)
  • Mac OS

Las plataformas de 32 bits no son oficialmente compatibles; es posible que funcionen o no.

El soporte de Windows aún es joven y sufre de errores que no afectan a Linux. Si es posible, prefiera usar darktable en Linux.

Hardware

(mínimo viable / mínimo recomendado ):

  • RAM: 4GB / 8GB
  • Procesador: Intel Pentium 4 / Intel Core i5 4 × 2,4 GHz
  • GPU: ninguna / Nvidia con 1024 núcleos CUDA, 4 GB, compatible con OpenCL 1.2
  • espacio libre en disco: 250 MB / 1 GB

darktable puede ejecutarse en configuraciones livianas (incluso en una Raspberry Pi), pero espera que módulos como reducción de ruido, contraste local, ecualizador de contraste, retoque o licuar sean más lentos que utilizables.

Una GPU no es obligatoria, pero se recomienda encarecidamente para una experiencia más fluida. Las GPU Nvidia se recomiendan por seguridad porque algunos controladores AMD se comportan de manera poco confiable con algunos módulos (por ejemplo, contraste local).

Instalando

Si la última versión aún no está disponible como un paquete prediseñado para su distribución, puede compilar el software usted mismo siguiendo las instrucciones a continuación .

Último lanzamiento

3.8.1 (estable)

Cuando utilice un paquete prediseñado, asegúrese de que se haya creado con compatibilidad con Lua, OpenCL, OpenMP y Colord. Estos son opcionales y no evitarán que darktable se ejecute si faltan, pero su ausencia degradará la experiencia del usuario. En particular, algunos paquetes Flatpak, Snap y Appimage carecen de compatibilidad con OpenCL y Lua.

Instantánea de desarrollo

La instantánea de desarrollo refleja el estado actual de la rama principal. Está diseñado para pruebas y generalmente no es seguro. Consulte las notas a continuación para conocer las advertencias y precauciones sobre el uso de la rama principal.

Actualización desde versiones anteriores

Al actualizar darktable desde una versión anterior, solo necesita instalar la versión más reciente. Los archivos existentes se conservarán.

Sin embargo, las versiones más recientes ocasionalmente necesitan cambiar la estructura de la base de datos de la biblioteca (que contiene la lista completa de imágenes conocidas por darktable, con su historial de edición). Si esto sucede, se le pedirá que actualice la base de datos o que cierre el software.

La migración a una estructura de base de datos más nueva/versión más nueva significa que sus ediciones (tanto nuevas como antiguas) ya no serán compatibles con versiones anteriores de darktable. Las actualizaciones son definitivas. Las versiones más nuevas siempre son compatibles con las ediciones anteriores, pero las ediciones más recientes generalmente no son compatibles con las versiones anteriores.

darktable automáticamente realiza una copia de seguridad de la base de datos de la biblioteca cuando una nueva versión hace que se actualice ( ~/.config/darktable/library.db-pre-3.0.0por ejemplo), para que pueda volver a la versión anterior restaurando esta copia de seguridad si es necesario (simplemente cámbiele el nombre a library.db).

Si intenta abrir una base de datos más nueva con una versión anterior del software, se descartarán todas las partes de sus ediciones que se realizaron con nuevas funciones y las perderá. Esto también se aplica a los archivos XMP sidecar.

Si planea cambiar regularmente entre dos versiones (nueva/inestable y antigua/estable), consulte a continuación los detalles sobre cómo hacerlo de manera segura.

Obtención de extensiones

Las extensiones y complementos utilizan el lenguaje de secuencias de comandos Lua y se pueden descargar aquí . El soporte de Lua es opcional en darktable, así que asegúrese de tener el lua intérprete y sus archivos de desarrollo (paquete lua-devo lua-devel, dependiendo de las distribuciones) instalados en su sistema mientras construye o asegúrese de que el paquete que está usando haya sido construido con esta biblioteca.

Las extensiones permiten exportar para varios medios y sitios web, fusionar/apilar/combinar HDR, panoramas o horquillado de enfoque, aplicar reconocimiento facial basado en IA, administrar etiquetas y datos de GPS, etc.

Edificio

dependencias

Compiladores compatibles:

  • Sonido: 8, 9, 10
  • CCG: 8, 9, 10
  • Mingw64: 6, 7

Dependencias requeridas (versión mínima):

  • CMake 3.10
  • GTK 3.22
  • simplista 2.40
  • SQLite 3.15 (pero 3.24 muy recomendable)

Dependencias opcionales (versión mínima):

  • OpenMP 4.5 (para subprocesos múltiples de CPU y vectorización SIMD)
  • LLVM 3.9 (para comprobaciones de OpenCL en tiempo de compilación)
  • OpenCL 1.2 (para computación acelerada por GPU)
  • Lua 5.4 (para complementos y secuencias de comandos de extensión)
  • libavif 0.7.2 (para importación/exportación AVIF)
  • WebP 0.3.0 (para exportaciones WebP)

Dependencias opcionales (sin requisito de versión):

  • Gphoto2 (para conexión de cámara)
  • Lensfun (para la corrección automática de lentes)
  • OpenEXR (para importación y exportación EXR)
  • OpenJPEG (para exportación Jpeg2000)
  • Colord, Xatom (para obtener el perfil de color de la pantalla del sistema)
  • G’Mic (para compatibilidad con gmz lut comprimido)
  • PortMidi (para soporte de entrada MIDI)
  • SDL2 (para soporte de entrada de gamepad)

Para instalar todas las dependencias en sistemas Linux, puede utilizar los repositorios fuente de su distribución (siempre y cuando estén actualizados):

Fedora y RHEL

sudo dnf builddep darktable

abrirSuse

sudo zypper si -d darktable

ubuntu

sed -e ‘/^#\sdeb-src /s/^# *//;t;d’ “/etc/apt/sources.list”
| sudo tee /etc/apt/sources.list.d/darktable-sources-tmp.list > /dev/null
&& (
sudo apt-get update
sudo apt-get build-dep darktable
)
sudo rm /etc/apt/sources.list.d/darktable-sources-tmp.list

Debian

sudo apt-get build-dep darktable

Instalar las dependencias que faltan

Si faltan dependencias obligatorias en su sistema, la compilación del software fallará con errores como Package XXX has not been foundo Command YYY has no provider on this system. Si ve uno de estos errores, debe averiguar qué paquete proporciona el paquete/comando faltante en su distribución y luego instalarlo. Por lo general, esto se puede hacer en su administrador de paquetes (no en el administrador de aplicaciones que se proporciona habitualmente de forma predeterminada en su distribución) o desde Internet con un motor de búsqueda. Es posible que primero deba instalar un administrador de paquetes (como Synaptic en Debian/Ubuntu o DNF Dragora en Fedora/RHEL).

Este proceso puede ser tedioso, pero solo necesita hacerlo una vez. Consulte esta página sobre la creación de darktable para ver los comandos de una línea que instalarán la mayoría de las dependencias en las distribuciones de Linux más comunes.

Obtener la fuente

Rama maestra (inestable)

La rama maestra contiene la última versión del código fuente y está destinada a:

  • como base de trabajo para los desarrolladores,
  • para que los probadores beta persigan errores,
  • para usuarios dispuestos a sacrificar la estabilidad por nuevas funciones sin esperar la próxima versión.

La rama maestra viene sin garantía de estabilidad y puede corromper su base de datos y archivos XMP, provocar la pérdida de datos e historial de edición o interrumpir temporalmente la compatibilidad con versiones y confirmaciones anteriores.

¿Qué tan peligroso es? La mayor parte del tiempo, es bastante estable. Al igual que con cualquier tipo de implementación de lanzamiento continuo, los errores aparecen con más frecuencia, pero también se solucionan más rápido. A veces, sin embargo, estos errores pueden provocar pérdidas o inconsistencias en el historial de edición de sus imágenes. Esto está bien si no necesita volver a abrir sus ediciones en el futuro, pero tal vez no si administra un patrimonio.

Después de hacer una copia de seguridad de su ~/.config/darktabledirectorio y los archivos .XMP de sidecar de cualquier imagen que pretenda abrir con la rama maestra, puede obtener la fuente de la siguiente manera:

git clone --recurse-submodules --depth 1 https://github.com/darktable-org/darktable.git
cd darktable

Vea a continuación (en “Uso”) cómo iniciar una instalación de prueba de la versión inestable sin dañar su instalación y archivos estables habituales.

Última versión estable

3.8.1

El proyecto darktable lanza dos versiones principales cada año, a mediados de verano y en Navidad, etiquetadas con números pares (por ejemplo, 3.0, 3.2, 3.4, 3.6). Las revisiones menores se etiquetan con un tercer dígito (por ejemplo, 3.0.1, 3.0.2) y en su mayoría proporcionan correcciones de errores y compatibilidad con la cámara. Es posible que desee compilar estas versiones estables usted mismo para obtener un mejor rendimiento para su computadora en particular:

git clone --recurse-submodules --depth 1 https://github.com/darktable-org/darktable.git
cd darktable
git fetch --tags
git checkout tags/release-3.8.1

Obtener submódulos

Tenga en cuenta que LibXCF , OpenCL , rawspeed , whereami y LibRaw se rastrean a través de submódulos de git, por lo que después de revisar darktable, también debe actualizar/revisar los submódulos:

git submodule update --init

Compilar

Camino fácil

ADVERTENCIA: si ha compilado darktable anteriormente, no olvide eliminar completamente ( rm -R) los directorios buildy /opt/darktablepara evitar archivos en conflicto de diferentes versiones. Se han informado muchos comportamientos extraños y errores transitorios que se pueden rastrear hasta el caché de compilación que no invalida correctamente las dependencias modificadas, por lo que la forma más segura es eliminar por completo los archivos binarios compilados previamente y comenzar de nuevo desde cero.

darktable proporciona un script de shell que automáticamente se encarga de compilar en Linux y macOS para casos clásicos en un solo comando.

./build.sh --prefix /opt/darktable --build-type Release --install --sudo

Si desea instalar una versión de prueba junto con su versión regular/estable, cambie el prefijo de instalación:

./build.sh --prefix /opt/darktable-test --build-type Release --install --sudo

Esto crea el software solo para su arquitectura, con:

  • -O3nivel de optimización,
  • Compatibilidad con SSE/AVX si se detecta,
  • Compatibilidad con OpenMP (multihilo y vectorización) si se detecta,
  • Compatibilidad con OpenCL (descarga de GPU) si se detecta,
  • Soporte de secuencias de comandos Lua si se detecta.

Si desea que se muestre dartkable junto con sus otras aplicaciones, solo necesita agregar un enlace simbólico:

ln -s /opt/darktable/share/applications/darktable.desktop /usr/share/applications/darktable.desktop

Ahora, su darktable personalizada está lista para usarse como cualquier software preempaquetado.

forma manual

Alternativamente, puede usar una compilación manual para pasar argumentos personalizados.

Linux/mac OS

mkdir build/
cd build/
cmake -DCMAKE_INSTALL_PREFIX=/opt/darktable/ …
make
sudo make install

ventanas

Consulte https://github.com/darktable-org/darktable/blob/master/packaging/windows/BUILD.md

Utilizando

Versión de prueba/inestable

Para usar una versión de prueba de darktable sin dañar los archivos y la base de datos de su versión regular/estable, inicie darktable en una terminal con:

/opt/darktable-test/bin/darktable --configdir “~/.config/darktable-test”

y asegúrese de configurar la opción “escribir archivo sidecar para cada imagen” en “nunca” en preferencias → almacenamiento → XMP. De esta manera, su versión regular/estable guardará sus archivos de configuración en ~/.config/darktable, como de costumbre, la versión de prueba/inestable guardará en ~/.config/darktable-test, y las dos versiones no producirán conflictos en la base de datos.

Versión normal/estable

Simplemente inícielo desde el menú de su aplicación de escritorio o, desde una terminal, ejecute darktable o /opt/darktable/bin/darktable. Si la instalación no creó un lanzador en su menú de aplicaciones, ejecute:

sudo ln -s /opt/darktable/share/applications/darktable.desktop /usr/share/applications/darktable.desktop

Puede encontrar archivos de configuración de darktable en formato ~/.config/darktable. Si experimenta bloqueos al inicio, intente iniciar darktable sin OpenCL, desde una terminal, con darktable --conf opencl=FALSE.

Otras lecturas

Hay una lista completa de instrucciones de compilación para distribuciones relacionadas con Ubuntu/Debian o para Fedora y distribuciones relacionadas . Estas instrucciones de compilación se pueden adaptar fácilmente a muchas otras distribuciones de Linux.

contribuyendo

Hay muchas maneras de contribuir al proyecto darktable:

Preguntas más frecuentes

¿Por qué no se detecta mi cámara cuando está enchufada?

Compruebe que tiene instalada la biblioteca gphoto2 más reciente para admitir las cámaras más nuevas.

¿Por qué mi lente no es detectada/corregida en el cuarto oscuro?

Los perfiles de corrección de lentes son proporcionados por Lensfun, que consta de 2 partes: un programa y una base de datos. La mayoría de las distribuciones de Linux brindan una versión lo suficientemente reciente del programa, pero brindan una versión obsoleta de la base de datos. Si Lensfun está correctamente instalado, actualice su base de datos en una terminal ejecutando:

lensfun-update-data

o alternativamente

/usr/bin/g-lensfun-update-data

¿Por qué las miniaturas en la vista de la mesa de luz se ven diferentes a la vista previa en la vista del cuarto oscuro?

Para los archivos RAW que nunca se han editado en darktable (cuando acaba de importarlos), la vista de lighttable, de manera predeterminada, muestra la vista previa JPEG colocada en el archivo RAW por su cámara. La carga de este archivo JPEG es más rápida y hace que la vista de la mesa de luz responda mejor al importar grandes colecciones de imágenes.

Sin embargo, esta miniatura JPEG es procesada por el firmware de la cámara, con algoritmos patentados y colores, nitidez y contraste que pueden no tener el mismo aspecto que el procesamiento de mesa oscura (que es lo que ve al abrir la imagen en la vista del cuarto oscuro). Los fabricantes de cámaras no publican los detalles del procesamiento de píxeles que realizan en su firmware, por lo que su aspecto no se puede reproducir de forma exacta o sencilla con otro software.

Sin embargo, una vez que las imágenes RAW se han editado en la mesa oscura, la miniatura de la mesa de luz debe coincidir exactamente con la vista previa del cuarto oscuro, ya que se procesan de la misma manera.

Si nunca desea ver la miniatura JPEG incrustada en la vista de mesa de luz, para archivos RAW, debe configurar la opción “usar archivo sin formato en lugar de JPEG incrustado del tamaño” a “nunca” en preferencias → mesa de luz.

P.D. Para completar este articulo os dejo el video sobre la optimización de darktable (está en inglés, sí)

4 Me gusta

Espectacular !!! :star_struck:
Muchas gracias @jordicarsan por este estupendo artículo, por tú tiempo para realizarlo y sobretodo por compartirlo.
Mí opinión es que es muy útil y necesario.
Un saludo.

Si alguien lo prueba y no le funciona, podeis contactar conmigo y miramos de solucionarlo. Ahora me veo capaz hasta de dar soporte en el tema, jajajajaja
Suerte!
Gracias @Oscar

1 me gusta

¡Gran aportación @jordicarsan! :+1: :grinning:

Yo hace tiempo que deje de compilar. Concretamente Darktable desde la version 3.6. Por las dificultades y lo laborioso, admiro a los que tenéis el valor de seguir al pie del compilador.

Gracias por el gran trabajo. Otro enlace que va a mis preferidos.

Saludos.

1 me gusta

Excelente explicación y tutorial paso a paso, destinado a personas de habla hispana. Algo que hace tiempo estaba necesitando esta comunidad. Muchísimas gracias por este fundamental aporte al conocimiento de este excepcional programa.