-
Notifications
You must be signed in to change notification settings - Fork 59
CondinAPT es
CondinAPT es una herramienta versátil para automatizar la instalación de paquetes en cualquier sistema basado en Debian (Debian, Ubuntu y sus derivados). Su característica principal es la capacidad de definir condiciones y reglas complejas para instalar cada paquete según configuraciones arbitrarias del sistema.
Áreas de aplicación:
- Sistemas de construcción de distribuciones Linux
- Automatización de la configuración de servidores y estaciones de trabajo
- Despliegue de diversas configuraciones del sistema
- Gestión de paquetes en contenedores Docker
- Pipelines de CI/CD para la preparación de entornos
- Creación de imágenes de instalación personalizadas
- Sintaxis del archivo de lista de paquetes
- Filtros y condiciones
- Colas de instalación
- Cola de prioridad
Características clave:
- Instalación condicional: Instala paquetes según filtros flexibles (+, -).
- Configuración externa: Separación completa de la lógica (lista de paquetes) de los datos (parámetros del sistema).
- Colas de instalación: Divide el proceso en etapas secuenciales para resolver dependencias.
- Cola de prioridad: Garantiza la instalación de paquetes críticos primero.
-
Lógica compleja: Soporta operadores "AND" (
&&), "OR" (||), así como filtros de grupo (+{a|b},-{a&b}). - Legibilidad: Permite comentarios y líneas vacías para estructurar listas.
- Compatibilidad retroactiva: Soporta listas de paquetes simples sin condiciones.
CondinAPT opera con cuatro archivos clave:
-
Script
condinapt: El núcleo, contiene toda la lógica de procesamiento. -
Archivo principal de configuración (
-c): Un archivo con variables bash que describen el entorno actual.Ejemplo (
system.conf):DISTRIBUTION="bookworm" SYSTEM_TYPE="server" ENVIRONMENT="production" LOCALE="en_US" FEATURES="web,database"
-
Archivo de mapeo de filtros (
-m): Relaciona prefijos cortos (usados en la lista de paquetes) con nombres de variables del archivo de configuración principal. Este archivo es opcional. Si un filtro no está presente en el archivo de mapeo, se usará como nombre de variable del archivo de configuración principal. Si la variable no se encuentra, CondinAPT la declarará vacía.Ejemplo (
filters.map):d=DISTRIBUTION st=SYSTEM_TYPE env=ENVIRONMENT arch=ARCHITECTURE feat=FEATURES -
Archivo de lista de paquetes (
-l): El archivo principal que describe qué instalar y bajo qué condiciones.
Para familiarizarte rápidamente con CondinAPT, crea un ejemplo sencillo:
1. Crea el archivo de configuración config.conf:
<a id="basic-system-parameters"></a>
# Basic system parameters
DISTRIBUTION="bookworm"
SYSTEM_TYPE="server"
ENVIRONMENT="production"2. Crea la lista de paquetes packages.list:
<a id="base-packages---always-installed"></a>
# Base packages - always installed
vim
curl
<a id="packages-only-for-servers"></a>
# Packages only for servers
nginx +SYSTEM_TYPE=server
mysql-server +SYSTEM_TYPE=server
<a id="exclude-packages-for-production-environment"></a>
# Exclude packages for production environment
debug-tools -ENVIRONMENT=production
3. Ejecuta la instalación:
bash
./condinapt -l packages.list -c config.conf4. O prueba en modo simulación:
bash
./condinapt -l packages.list -c config.conf -s./condinapt [OPTIONS]| Bandera | Bandera larga | Argumento | Descripción |
|---|---|---|---|
-l |
--package-list |
PATH |
(Obligatorio) Ruta al archivo de lista de paquetes. |
-c |
--config |
PATH |
(Obligatorio) Ruta al archivo principal de configuración. |
-m |
--filter-mapping |
PATH |
(Opcional) Ruta al archivo de mapeo de filtros. |
-P |
--priority-list |
PATH |
(Opcional) Ruta a un archivo de filtros prioritarios. El archivo contiene patrones regex para hacer match con paquetes. Los paquetes coincidentes se mueven a la cola prioritaria (preservando filtros). |
-s |
--simulation |
Modo simulación. No se instalarán paquetes. | |
-C |
--check-only |
Solo verifica si los paquetes ya están instalados. Devuelve código de salida 1 si hay paquetes sin instalar. Al final, muestra un comando para instalar los paquetes faltantes. | |
-v / -vv
|
--verbose / --very-verbose
|
Salida detallada / muy detallada. | |
-x |
--xtrace |
Habilita el rastreo de comandos set -x. |
|
-f |
--force |
Fuerza la actualización de la lista de paquetes antes de instalar. Por defecto, la actualización se omite si existe /var/cache/apt/pkgcache.bin. |
|
-h |
--help |
Muestra la ayuda. |
Este es el corazón de CondinAPT. Toda la lógica se describe aquí.
Cada línea en el archivo de lista de paquetes consta de dos partes principales:
- Nombre del paquete con especificación opcional de versión y release
- Filtros de condición - definen bajo qué condiciones se instalará el paquete
Base para todos los ejemplos siguientes: Para todos los ejemplos posteriores, asumimos que se usan los archivos
system.confyfilters.mapde la sección Cómo funciona y componentes principales.
DISTRIBUTION= "bookworm"SYSTEM_TYPE= "server"ENVIRONMENT= "production"
Nombre simple:
vim
Versión del paquete:
-
package=version— requisito de versión flexible. Si la versión requerida no está disponible, se instala la versión disponible.git=2.25.1 -
package==version— requisito estricto. Si no se encuentra la versión, la instalación se aborta con error.curl==7.68.0
Especificación de release:
El release se especifica usando el símbolo @, lo que permite vincular la instalación a una rama específica del repositorio.
telegram@bookworm-backports
kernel-image-6.5.0@trixie-backports
- Nombres de paquetes: Cada paquete o condición se escribe en una nueva línea.
-
Comentarios: Las líneas que comienzan con
#, o el texto después de#en una línea, se ignoran completamente. - Líneas vacías: Se ignoran y sirven para separar visualmente.
#=== Multimedia ===
vlc # Excellent media player
audacious # Another media player
#=== Graphics ===
gimpLos filtros te permiten establecer condiciones adicionales para la selección de paquetes. Comparan los valores de las variables del sistema (arquitectura, distribución, entorno de trabajo) con los especificados en el archivo de configuración.
-
+(Positivo): La condición es verdadera si el valor de la variable coincide. Formato:+<prefijo>=<valor>-
Línea:
nginx +st=server -
Análisis:
SYSTEM_TYPEes igual a "server". La condición es verdadera. -
Resultado: Se instalará
nginx.
-
Línea:
-
Múltiples filtros positivos con el mismo prefijo: Actúan como condiciones OR. Formato:
+<prefijo>=<valor1> +<prefijo>=<valor2>-
Línea:
debug-tools +env=development +env=testing -
Análisis:
ENVIRONMENTes igual a "production", que no coincide con "development" ni "testing". La condición es falsa. -
Resultado:
debug-toolsno se instalará.
-
Línea:
-
-(Negativo): La condición es verdadera si el valor de la variable no coincide. Formato:-<prefijo>=<valor>-
Línea:
monitoring-tools -st=desktop -
Análisis:
SYSTEM_TYPEes igual a "server", que no es igual a "desktop". La condición es verdadera. -
Resultado: Se instalará
monitoring-tools.
-
Línea:
-
Múltiples filtros negativos: El paquete se excluye si CUALQUIER condición coincide. Formato:
-<prefijo>=<valor1> -<prefijo>=<valor2>-
Línea:
realtek-driver -d=trixie -d=sid -
Análisis:
DISTRIBUTIONes igual a "bookworm", que no es igual a "trixie" ni "sid". Las condiciones de exclusión no se activan. -
Resultado: Se instalará
realtek-driver.
-
Línea:
-
+{a|b}(OR para inclusión): Verdadero si al menos una de las condiciones del grupo es verdadera.-
Línea:
web-server +{st=server|st=web-server} -
Análisis:
SYSTEM_TYPEes igual a "server". La primera condición es verdadera, lo cual es suficiente. - Resultado: El paquete será instalado.
-
Línea:
-
+{a&b}(AND para inclusión): Verdadero solo si todas las condiciones del grupo son verdaderas.-
Línea:
database-tools +{d=bookworm&st=server} -
Análisis:
DISTRIBUTIONes igual a "bookworm" (verdadero) YSYSTEM_TYPEes igual a "server" (verdadero). - Resultado: El paquete será instalado.
-
Línea:
-
-{a|b}(OR para exclusión): El paquete se excluye si al menos una de las condiciones es verdadera.-
Línea:
debug-tools -{env=production|st=minimal} -
Análisis:
ENVIRONMENTes igual a "production". La primera condición es verdadera, por lo que el paquete se excluye. - Resultado: El paquete no será instalado.
-
Línea:
-
-{a&b}(AND para exclusión): El paquete se excluye solo si todas las condiciones son verdaderas.-
Línea:
development-tools -{env=production&st=minimal} -
Análisis:
ENVIRONMENTes igual a "production" (verdadero), peroSYSTEM_TYPEno es igual a "minimal". La segunda condición es falsa. El grupo no se activa para exclusión. - Resultado: El paquete será instalado (si no hay otros filtros).
-
Línea:
Se pueden ofrecer diferentes paquetes para la misma funcionalidad e instalarse según las condiciones. Las opciones alternativas se separan con el operador ||.
Importante: Cada alternativa debe incluir una descripción completa — nombre del paquete (con versión y release opcionales) y un conjunto de filtros.
Ejemplo:
postgresql +st=database-server || mysql-server +st=web-server
- Si
SYSTEM_TYPEesdatabase-server, se selecciona postgresql. - Si
SYSTEM_TYPEesweb-server, se instala mysql-server.
-
||(OR / Fallback): Intenta instalar la parte izquierda. Si falla (paquete no encontrado o filtrado), intenta instalar la parte derecha.-
Línea:
exfatprogs -d=bookworm || exfat-utils -
Análisis:
DISTRIBUTIONno es igual a "bookworm", la parte izquierda es filtrada. CondinAPT pasa a la parte derecha.exfat-utilsno tiene filtros, así que se instalará. -
Resultado: Se instalará
exfat-utils.
-
Línea:
-
&&(AND / Conjunción): Todas las partes deben pasar los filtros para ser agregadas a la cola.-
Línea:
nginx +st=web-server && php-fpm -
Análisis:
SYSTEM_TYPEes igual a "server", pero la condición requiere "web-server". La parte izquierda falla. -
Resultado: No se instalarán paquetes.
-
Ejemplo complejo:
monitoring-tools +env=production && prometheus +env=production && grafana +env=production -
Resultado: Los tres paquetes se instalarán solo si
ENVIRONMENTesproduction.
-
-
!(Paquete obligatorio): Si un paquete está marcado con!, pero no se encuentra en los repositorios, CondinAPT abortará la ejecución con un error.-
Línea:
!essential-package
-
Línea:
-
@(Especificación de release): Instala un paquete de un release específico de Debian/Ubuntu (ejemplo:bookworm-backports).-
Línea:
kernel-image-6.5.0 @trixie-backports
-
Línea:
CondinAPT permite un control preciso sobre las versiones de los paquetes instalados.
-
Sintaxis:
-
package=VERSION: Intenta instalar la versión especificada (VERSION). Si no está disponible en los repositorios, CondinAPT instalará cualquier versión disponible del paquete.- Ejemplo:
my-app=1.2.3(intenta instalar 1.2.3, si no, instala por ejemplo 1.2.4)
- Ejemplo:
-
package==VERSION: Instalación estricta de una versión específica. Si esta versión no está disponible en los repositorios, el paquete no se instalará. Si el paquete también estaba marcado como obligatorio (!), el script terminará con error.- Ejemplo:
another-app==2.0.0(instala solo 2.0.0, de lo contrario lo omite o da error si es obligatorio)
- Ejemplo:
-
-
Comportamiento:
- CondinAPT primero verifica si la versión requerida del paquete ya está instalada en el sistema. Si es así, el paquete se considera instalado y se omite.
- Luego verifica si la versión especificada está disponible en los repositorios (
apt-cache madison). -
Al usar
=(versión flexible):- Si la versión especificada no está disponible, CondinAPT mostrará una advertencia de que no se encontró la versión exacta.
- Aun así, intentará instalar cualquier versión disponible del paquete desde los repositorios.
-
Al usar
==(versión estricta):- Si la versión especificada no está disponible, CondinAPT no instalará el paquete.
- Si el paquete estaba marcado como obligatorio (
!), el script abortará la ejecución con error.
-
Retención de versión (
apt-mark hold):- Si un paquete se instaló correctamente con la versión exacta especificada (es decir, si
package==VERSIONtuvo éxito, opackage=VERSIONencontró exactamente esa versión e instaló), CondinAPT aplicará automáticamente el comandoapt-mark holdpara ese paquete. - Esto evita actualizaciones automáticas del paquete a una nueva versión durante futuras operaciones de
apt upgrade.
- Si un paquete se instaló correctamente con la versión exacta especificada (es decir, si
Tarea: Instalar database-tools para la distribución bookworm, pero solo si el tipo de sistema es server o database-server, y no para el entorno minimal.
packages.list:
database-tools +d=bookworm +{st=server|st=database-server} -env=minimalAnálisis (con nuestra configuración):
-
+d=bookworm: Verdadero. -
+{st=server|st=database-server}: Verdadero, porqueSYSTEM_TYPEes "server". -
-env=minimal: Verdadero, porqueENVIRONMENTes "production". Resultado: Todas las condiciones son verdaderas. El paquete será instalado.
Tarea: Para Debian trixie, instalar firefox-esr. Para bookworm, instalar firefox. Para todos los demás casos, instalar w3m.
packages.list:
firefox-esr +d=trixie || firefox +d=bookworm || w3mAnálisis:
-
firefox-esr +d=trixie: Parte izquierda.DISTRIBUTIONes "bookworm", la condición es falsa. -
firefox +d=bookworm: Parte del medio.DISTRIBUTIONes "bookworm", la condición es verdadera. - Como la segunda parte de la cadena
||funcionó, la tercera (w3m) se ignora. Resultado: Se instalaráfirefox.
Tarea: dkms es crítico para la compilación de módulos; debe instalarse primero. En la lista principal, está marcado como obligatorio, pero con una condición.
-
priority.list:
^dkms$ ^build-essential$
* **`packages.list`:**
```text
!dkms +pv=standard # Mandatory, but with a condition
vim
Análisis:
-
CondinAPT lee los patrones prioritarios
^dkms$y^build-essential$. -
La línea
!dkms +pv=standardcoincide con el patrón^dkms$y se mueve a la cola prioritaria con todas sus propiedades: la bandera obligatoria (!) y el filtro (+pv=standard). -
Plan de ejecución:
-
Cola prioritaria: Instalar
!dkms +pv=standard(se preservan la bandera obligatoria y el filtro). -
Cola normal:
vim.
-
Cola prioritaria: Instalar
Resultado: dkms se instalará primero, pero el filtro +pv=standard aún se evaluará. Si la condición del filtro no se cumple, la instalación fallará por la bandera ! (obligatorio).
El separador --- en una línea separada divide la lista en grupos (colas). Los paquetes de una cola se instalan juntos en una sola llamada a apt. Las colas se ejecutan estrictamente de forma secuencial.
Ejemplo:
<a id="queue-1-base-system"></a>
# Queue 1: Base system
systemd
network-manager
---
<a id="queue-2-web-server"></a>
# Queue 2: Web server
nginx
php-fpm
---
<a id="queue-3-monitoring"></a>
# Queue 3: Monitoring
prometheus
Los paquetes con @release se agrupan automáticamente en colas separadas por release:
<a id="regular-packages"></a>
# Regular packages
vim
git
---
<a id="packages-from-backports-create-a-separate-queue"></a>
# Packages from backports (create a separate queue)
linux-image-amd64 @bookworm-backports
nvidia-driver @bookworm-backports
Este mecanismo sirve para la instalación prioritaria de paquetes críticos, preservando sus filtros y condiciones.
-
Principio: El archivo especificado con la bandera
-Pcontiene patrones regex (uno por línea, sin filtros). CondinAPT escanea todas las colas, encuentra los paquetes que coinciden con estos patrones y los mueve (con todos sus filtros y condiciones) a una "Cola Prioritaria" especial, que se ejecuta primero. -
Coincidencia de patrones: Utiliza coincidencia regex de bash (operador
=~). Los patrones pueden ser nombres simples de paquetes o expresiones regex complejas. - Preservación de contexto: A diferencia de listas prioritarias simples, este mecanismo preserva todas las condiciones, filtros y especificaciones de release del paquete original.
-
Sobrescritura: Los paquetes coincidentes se eliminan automáticamente de sus colas originales (tanto normales como objetivo con
@release) y se mueven a las colas prioritarias. Los releases objetivo se preservan en colas prioritarias separadas.
Ejemplo 1: Coincidencia simple de nombre de paquete
-
packages.list:
git +st=full-server # Will only be installed for full servers gpg -st=minimal # Will be installed in all types except minimal curl # Always installed wget +d=trixie # Only for trixie vim +env=development # Only for development environment
* **`priority.list`:**
```text
^gpg$
^git$
-
Análisis:
-
CondinAPT lee
priority.listy sabe que los paquetes que coincidan con los patrones^gpg$y^git$deben instalarse primero. -
Escanea
packages.listy encuentra la líneagit +st=full-server. Comogitcoincide, toda la línea (con su filtro+st=full-server) se mueve a la cola prioritaria. -
De igual forma,
gpg -st=minimalse mueve a la cola prioritaria con su filtro-st=minimalpreservado. -
Plan final:
-
Cola prioritaria: Instalar
git +st=full-serverygpg -st=minimal(los filtros se preservan y evalúan). -
Cola normal:
curl,wget +d=trixie,vim +env=development.
-
Cola prioritaria: Instalar
-
Ejemplo 2: Coincidencia con patrón regex
-
packages.list:
linux-image-6.1.0-amd64 +arch=amd64 linux-headers-6.1.0-amd64 +arch=amd64 firmware-linux build-essential nginx +st=server
* **`priority.list`:**
```text
^linux-.*
^firmware-.*
-
Análisis:
-
El patrón
^linux-.*coincide conlinux-image-6.1.0-amd64ylinux-headers-6.1.0-amd64. -
El patrón
^firmware-.*coincide confirmware-linux. -
Plan final:
-
Cola prioritaria:
linux-image-6.1.0-amd64 +arch=amd64,linux-headers-6.1.0-amd64 +arch=amd64,firmware-linux. -
Cola normal:
build-essential,nginx +st=server.
-
Cola prioritaria:
-
Permite ver qué paquetes se instalarían sin realizar la instalación:
./condinapt -l packages.list -c system.conf -sEjemplo de salida:
I: Installation Queue #1:
I: Simulation mode ON. These packages would be installed: firefox-esr vlc htop
I: Simulation mode ON. No installation will be performed.
Nota: En modo simulación, el script termina con código de salida 1.
Verifica qué paquetes de la lista ya están instalados en el sistema:
./condinapt -l packages.list -c system.conf -CComportamiento:
- Muestra errores para paquetes no instalados
- Devuelve código de salida 1 si hay paquetes sin instalar
- Al final, muestra un comando para instalar los paquetes faltantes
Salida detallada (-v):
- Muestra información detallada sobre la verificación de filtros
- Muestra resultados para cada paquete
Salida muy detallada (-vv):
- Máximo detalle del proceso
- Muestra todos los pasos intermedios
Rastreo de comandos (-x):
- Habilita
set -xpara depuración del script - Muestra cada comando que se ejecuta
Ejemplo con depuración:
./condinapt -l packages.list -c system.conf -vv -xFuerza a CondinAPT a ejecutar apt update antes de la instalación:
./condinapt -l packages.list -c system.conf -fCondinAPT puede trabajar con variables tipo array en el archivo de configuración:
system.conf:
SUPPORTED_ARCHITECTURES=("amd64" "i386" "arm64")
AVAILABLE_ENVIRONMENTS=("production" "staging" "development")filters.map:
arch=SUPPORTED_ARCHITECTURES
env=AVAILABLE_ENVIRONMENTS
packages.list:
<a id="install-for-any-supported-architecture"></a>
# Install for any supported architecture
multilib-support +arch=amd64
<a id="install-for-any-available-environment"></a>
# Install for any available environment
monitoring-tools +env=production
CondinAPT tiene soporte integrado para paquetes especiales que requieren manejo particular:
Paquetes virtuales:
-
qemu-kvm- tratado como paquete virtual
Mecanismo de manejo:
- CondinAPT verifica si el paquete es virtual usando el comando
apt-cache show - Si el paquete está marcado como "puramente virtual", se considera disponible para instalar
- La lista de paquetes especiales se define en el array
SPECIAL_PACKAGESdentro del script:SPECIAL_PACKAGES=("qemu-kvm")
Extender la lista: Para añadir nuevos paquetes especiales, es necesario editar el array SPECIAL_PACKAGES en el código de CondinAPT.
Si un paquete está marcado como obligatorio pero no se encuentra en los repositorios, CondinAPT:
- Muestra un mensaje de error
- Aborta la ejecución (a menos que esté en modo simulación)
- Devuelve código de salida 1
Ejemplo:
!essential-package +pv=standard
Si essential-package no se encuentra en los repositorios, la ejecución se abortará.
Versiones flexibles (=):
- Si la versión exacta no está disponible, se instala cualquier versión disponible
- Se muestra una advertencia sobre la no disponibilidad de la versión solicitada
Versiones estrictas (==):
- Si la versión exacta no está disponible, el paquete se omite
- Si el paquete es obligatorio (
!), la ejecución se aborta
CondinAPT retiene automáticamente versiones de paquetes en los siguientes casos:
- Cuando se instaló exactamente la versión solicitada
- Para paquetes con
==VERSION, si la versión fue encontrada e instalada - Para paquetes con
=VERSION, si exactamente esa versión fue encontrada e instalada
CondinAPT se integra fácilmente en sistemas de construcción y scripts de automatización. Para más detalles sobre la sintaxis del archivo de paquetes, consulta la sección Sintaxis del archivo de lista de paquetes.
En un script de automatización (install.sh):
#!/bin/bash
set -e
<a id="define-base-paths"></a>
# Define base paths
SCRIPT_DIR="$(dirname "$(readlink -f "$0")")"
CONFIG_DIR="${SCRIPT_DIR}/config"
<a id="install-packages-via-condinapt"></a>
# Install packages via CondinAPT
./condinapt \
-l "${SCRIPT_DIR}/packages.list" \
-c "${CONFIG_DIR}/system.conf" \
-m "${CONFIG_DIR}/filters.map"Ejemplo de archivo de mapeo de filtros (filters.map):
<a id="basic-system-parameters-1"></a>
# Basic system parameters
d=DISTRIBUTION
arch=ARCHITECTURE
st=SYSTEM_TYPE
env=ENVIRONMENT
<a id="additional-features"></a>
# Additional features
feat=FEATURES
locale=LOCALE
version=VERSION
Ejemplo de configuración (system.conf):
<a id="basic-parameters"></a>
# Basic parameters
DISTRIBUTION="bookworm"
ARCHITECTURE="amd64"
SYSTEM_TYPE="server"
ENVIRONMENT="production"
<a id="system-capabilities"></a>
# System capabilities
FEATURES="web,database,monitoring"
LOCALE="en_US"
VERSION="1.0"packages.list:
<a id="basic-multimedia-codecs---always"></a>
# Basic multimedia codecs - always
gstreamer1.0-plugins-base
gstreamer1.0-plugins-good
<a id="additional-codecs---not-for-minimal-installation"></a>
# Additional codecs - not for minimal installation
gstreamer1.0-plugins-bad -st=minimal
gstreamer1.0-plugins-ugly -st=minimal
gstreamer1.0-libav -st=minimal
<a id="professional-tools---only-for-full-configuration"></a>
# Professional tools - only for full configuration
ffmpeg +st=media-server
vlc +st=media-server
---
<a id="distribution-specific-packages-from-backports-for-older-distributions"></a>
# Distribution-specific packages from backports for older distributions
ffmpeg @bookworm-backports +d=bookworm
packages.list:
<a id="basic-web-server-components"></a>
# Basic web server components
nginx
openssl
<a id="database---only-for-full-installations"></a>
# Database - only for full installations
mysql-server +st=full-server -{env=minimal}
postgresql +st=database-server
<a id="php---for-web-servers"></a>
# PHP - for web servers
php-fpm +feat=php
php-mysql +{feat=php&st=full-server}
<a id="monitoring---not-for-development-environment"></a>
# Monitoring - not for development environment
prometheus-node-exporter -env=development
htop +env=production
packages.list:
<a id="basic-containerization-tools"></a>
# Basic containerization tools
docker.io
containerd
<a id="kubernetes---only-for-cluster-installations"></a>
# Kubernetes - only for cluster installations
kubectl +st=k8s-node
kubelet +st=k8s-master
kubeadm +st=k8s-master
<a id="container-monitoring"></a>
# Container monitoring
docker-compose +env=development
portainer +feat=gui
<a id="network-tools---exclude-for-minimal-installations"></a>
# Network tools - exclude for minimal installations
bridge-utils -st=minimal
iptables-persistent -st=minimal
packages.list:
<a id="complex-conditions-for-databases"></a>
# Complex conditions for databases
postgresql +{st=database-server&env=production} +arch=amd64
mysql-server +{st=web-server|st=full-server} -env=minimal
<a id="monitoring-with-exclusions"></a>
# Monitoring with exclusions
prometheus +env=production -st=desktop
grafana +{env=production|env=staging} +feat=monitoring
<a id="alternatives-with-conditions"></a>
# Alternatives with conditions
nginx +st=web-server || apache2 +st=legacy-server || lighttpd -st=full-server
<a id="localization-for-different-environments"></a>
# Localization for different environments
language-pack-en +locale=en_US +env=production
language-pack-ru +locale=ru_RU -{env=minimal&st=embedded}
fonts-dejavu +{locale=ru_RU|locale=de_DE} +feat=gui
- Agrupar por funcionalidad:
#=== System ===
systemd
dbus
#=== Network ===
network-manager
wireless-tools
#=== Multimedia ===
pulseaudio
alsa-utils
- Usar colas para dependencias:
<a id="base-system---first-queue"></a>
# Base system - first queue
build-essential
pkg-config
---
<a id="development-libraries---second-queue"></a>
# Development libraries - second queue
libgtk-3-dev
libqt5-dev
---
<a id="applications---third-queue"></a>
# Applications - third queue
gedit
qtcreator
- Optimizar condiciones:
<a id="inefficient"></a>
# Inefficient
package1 +st=server +env=production
package2 +st=server +env=production
package3 +st=server +env=production
<a id="better-to-group"></a>
# Better to group
package1 +{st=server&env=production}
package2 +{st=server&env=production}
package3 +{st=server&env=production}
- Utiliza colas de prioridad para paquetes críticos
- Minimiza el número de colas
- Agrupa paquetes relacionados en una sola cola
- Usa caché de APT para compilaciones grandes
Problema: El paquete no se instala a pesar de cumplir las condiciones
Solución: Verifica con la opción -vv para información detallada de los filtros
Problema: CondinAPT se detiene en un paquete obligatorio Solución: Revisa la disponibilidad del paquete en los repositorios o utiliza una alternativa. Consulta la sección Manejo de Errores y Recuperación
Problema: Comportamiento inesperado con versiones de paquetes
Solución: Usa el modo simulación (-s) para verificar
<a id="check-a-specific-package"></a>
# Check a specific package
echo "package-name +condition" | ./condinapt -l /dev/stdin -c system.conf -s -vv
<a id="check-the-entire-list-in-simulation-mode"></a>
# Check the entire list in simulation mode
./condinapt -l packages.list -c system.conf -s -vv<a id="check-without-installation"></a>
# Check without installation
./condinapt -l packages.list -c system.conf -C
<a id="view-package-information"></a>
# View package information
apt-cache policy package-name
apt-cache madison package-name🌐 Languages
📋 About MiniOS
🚀 Installation
⚙️ Configuration
🛡️ Administration
🛠️ Development
📋 Über MiniOS
🚀 Installation
- Schnellstartanleitung
- Hardware-Kompatibilität
- MiniOS Installation
- MiniOS Installer
- USB-Erstellungstools
⚙️ Konfiguration
🛡️ Administration
🛠️ Entwicklung
📋 Acerca de MiniOS
🚀 Instalación
- Guía de Inicio Rápido
- Compatibilidad de Hardware
- Instalando MiniOS
- Instalador de MiniOS
- Herramientas para Crear USB
⚙️ Configuración
- Menús de Arranque
- Parámetros de Arranque
- Archivo de Configuración
- Parámetros de live-config
- Gestión de Sesiones
🛡️ Administración
- Lista de Paquetes
- Gestión del Kernel
- Endurecimiento de Seguridad
- Optimización de Rendimiento
- Virtualización
🛠️ Desarrollo
📋 À propos de MiniOS
🚀 Installation
- Guide de démarrage rapide
- Compatibilité matérielle
- Installation de MiniOS
- Programme d’installation MiniOS
- Outils de création USB
⚙️ Configuration
- Menus de démarrage
- Paramètres de démarrage
- Fichier de configuration
- Paramètres live-config
- Gestion de session
🛡️ Administration
- Liste des paquets
- Gestion du noyau
- Renforcement de la sécurité
- Optimisation des performances
- Virtualisation
🛠️ Développement
📋 Tentang MiniOS
🚀 Instalasi
- Panduan Mulai Cepat
- Kompatibilitas Perangkat Keras
- Menginstal MiniOS
- Installer MiniOS
- Alat Pembuatan USB
⚙️ Konfigurasi
🛡️ Administrasi
🛠️ Pengembangan
📋 Informazioni su MiniOS
🚀 Installazione
- Guida Rapida
- Compatibilità Hardware
- Installazione di MiniOS
- Installatore MiniOS
- Strumenti per Creare USB
⚙️ Configurazione
🛡️ Amministrazione
- Elenco Pacchetti
- Gestione Kernel
- Rafforzamento della Sicurezza
- Ottimizzazione Prestazioni
- Virtualizzazione
🛠️ Sviluppo
📋 Sobre o MiniOS
🚀 Instalação
- Guia de Início Rápido
- Compatibilidade de Hardware
- Instalando o MiniOS
- Instalador do MiniOS
- Ferramentas de Criação de USB
⚙️ Configuração
- Menus de Boot
- Parâmetros de Boot
- Arquivo de Configuração
- Parâmetros live-config
- Gerenciamento de Sessão
🛡️ Administração
- Lista de Pacotes
- Gerenciamento de Kernel
- Reforço de Segurança
- Otimização de Desempenho
- Virtualização
🛠️ Desenvolvimento
📋 О MiniOS
🚀 Установка
- Краткое руководство
- Совместимость с оборудованием
- Установка MiniOS
- Установщик MiniOS
- Инструменты для создания USB
⚙️ Конфигурация
🛡️ Администрирование
🛠️ Разработка