-
Notifications
You must be signed in to change notification settings - Fork 59
CondinAPT pt BR
CondinAPT é uma ferramenta versátil para automatizar a instalação de pacotes em qualquer sistema baseado em Debian (Debian, Ubuntu e seus derivados). Seu principal diferencial é a capacidade de definir condições e regras complexas para instalar cada pacote com base em configurações arbitrárias do sistema.
Áreas de Aplicação:
- Sistemas de build de distribuições Linux
- Automação de configuração de servidores e estações de trabalho
- Deploy de diversas configurações de sistema
- Gerenciamento de pacotes em containers Docker
- Pipelines de CI/CD para preparação de ambientes
- Criação de imagens de instalação personalizadas
Principais Recursos:
- Instalação Condicional: Instale pacotes com base em filtros flexíveis (+, -).
- Configuração Externa: Separação completa da lógica (lista de pacotes) dos dados (parâmetros do sistema).
- Filas de Instalação: Divida o processo em etapas sequenciais para resolver dependências.
- Fila de Prioridade: Instalação garantida dos pacotes críticos primeiro.
-
Lógica Complexa: Suporte aos operadores "AND" (
&&), "OR" (||), além de filtros em grupo (+{a|b},-{a&b}). - Legibilidade: Suporte a comentários e linhas em branco para estruturar as listas.
- Compatibilidade Retroativa: Suporta listas simples de pacotes sem condições.
O CondinAPT opera com quatro arquivos principais:
-
Script
condinapt: O núcleo, contendo toda a lógica de processamento. -
Arquivo principal de configuração (
-c): Um arquivo com variáveis bash que descrevem o ambiente atual.Exemplo (
system.conf):DISTRIBUTION="bookworm" SYSTEM_TYPE="server" ENVIRONMENT="production" LOCALE="en_US" FEATURES="web,database"
-
Arquivo de mapeamento de filtros (
-m): Liga prefixos curtos (usados na lista de pacotes) a nomes de variáveis do arquivo principal de configuração. Este arquivo é opcional. Se um filtro não estiver presente no arquivo de mapeamento, será usado como nome de variável do arquivo principal de configuração. Se a variável não for encontrada, o CondinAPT a declara vazia.Exemplo (
filters.map):d=DISTRIBUTION st=SYSTEM_TYPE env=ENVIRONMENT arch=ARCHITECTURE feat=FEATURES -
Arquivo de lista de pacotes (
-l): O arquivo principal que descreve o que instalar e sob quais condições.
Para conhecer rapidamente o CondinAPT, crie um exemplo simples:
1. Crie o arquivo de configuração config.conf:
<a id="basic-system-parameters"></a>
# Basic system parameters
DISTRIBUTION="bookworm"
SYSTEM_TYPE="server"
ENVIRONMENT="production"2. Crie a lista de pacotes 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. Execute a instalação:
bash
./condinapt -l packages.list -c config.conf4. Ou teste no modo simulação:
bash
./condinapt -l packages.list -c config.conf -s./condinapt [OPTIONS]| Flag | Flag Longa | Argumento | Descrição |
|---|---|---|---|
-l |
--package-list |
PATH |
(Obrigatório) Caminho para o arquivo de lista de pacotes. |
-c |
--config |
PATH |
(Obrigatório) Caminho para o arquivo principal de configuração. |
-m |
--filter-mapping |
PATH |
(Opcional) Caminho para o arquivo de mapeamento de filtros. |
-P |
--priority-list |
PATH |
(Opcional) Caminho para um arquivo de filtros de prioridade. O arquivo contém padrões regex para casar pacotes. Os pacotes correspondentes são movidos para a fila de prioridade (mantendo os filtros). |
-s |
--simulation |
Modo simulação. Os pacotes não serão instalados. | |
-C |
--check-only |
Apenas verifica se os pacotes já estão instalados. Retorna código de saída 1 se houver pacotes não instalados. Ao final, exibe um comando para instalar os pacotes ausentes. | |
-v / -vv
|
--verbose / --very-verbose
|
Saída detalhada / muito detalhada. | |
-x |
--xtrace |
Ativa rastreamento de comandos com set -x. |
|
-f |
--force |
Força atualização das listas de pacotes antes da instalação. Por padrão, a atualização é pulada se /var/cache/apt/pkgcache.bin existir. |
|
-h |
--help |
Exibe a ajuda. |
Este é o coração do CondinAPT. Toda a lógica é descrita aqui.
Cada linha no arquivo de lista de pacotes consiste em duas partes principais:
- Nome do pacote com especificação opcional de versão e release
- Filtros de condição – definem as condições sob as quais o pacote será instalado
Base para todos os exemplos abaixo: Para todos os exemplos a seguir, vamos assumir que os arquivos
system.confefilters.mapda seção Como Funciona e Componentes Principais estão sendo usados.
DISTRIBUTION= "bookworm"SYSTEM_TYPE= "server"ENVIRONMENT= "production"
Nome simples:
vim
Versão do pacote:
-
package=version— requisito de versão flexível. Se a versão necessária não estiver disponível, será instalada uma versão disponível.git=2.25.1 -
package==version— requisito estrito. Se a versão não for encontrada, a instalação é abortada com erro.curl==7.68.0
Especificação de release:
O release é especificado usando o símbolo @, que permite vincular a instalação a um branch específico do repositório.
telegram@bookworm-backports
kernel-image-6.5.0@trixie-backports
- Nomes de pacotes: Cada pacote ou condição é escrito em uma nova linha.
-
Comentários: Linhas iniciadas com
#, ou texto após#em uma linha, são completamente ignorados. - Linhas em branco: Ignoradas e servem para separação visual.
#=== Multimedia ===
vlc # Excellent media player
audacious # Another media player
#=== Graphics ===
gimpOs filtros permitem definir condições adicionais para seleção de pacotes. Eles comparam os valores das variáveis do sistema (arquitetura, distribuição, ambiente de trabalho) com os definidos no arquivo de configuração.
-
+(Positivo): A condição é verdadeira se o valor da variável corresponde. Formato:+<prefix>=<valor>-
Linha:
nginx +st=server -
Análise:
SYSTEM_TYPEé igual a "server". A condição é verdadeira. -
Resultado:
nginxserá instalado.
-
Linha:
-
Múltiplos filtros positivos com o mesmo prefixo: Funcionam como condições OR. Formato:
+<prefix>=<valor1> +<prefix>=<valor2>-
Linha:
debug-tools +env=development +env=testing -
Análise:
ENVIRONMENTé igual a "production", que não corresponde a "development" nem "testing". A condição é falsa. -
Resultado:
debug-toolsnão será instalado.
-
Linha:
-
-(Negativo): A condição é verdadeira se o valor da variável não corresponde. Formato:-<prefix>=<valor>-
Linha:
monitoring-tools -st=desktop -
Análise:
SYSTEM_TYPEé igual a "server", que não é igual a "desktop". A condição é verdadeira. -
Resultado:
monitoring-toolsserá instalado.
-
Linha:
-
Múltiplos filtros negativos: O pacote é excluído se QUALQUER condição corresponder. Formato:
-<prefix>=<valor1> -<prefix>=<valor2>-
Linha:
realtek-driver -d=trixie -d=sid -
Análise:
DISTRIBUTIONé igual a "bookworm", que não é igual a "trixie" nem "sid". As condições de exclusão não são acionadas. -
Resultado:
realtek-driverserá instalado.
-
Linha:
-
+{a|b}(OR para inclusão): Verdadeiro se ao menos uma das condições do grupo for verdadeira.-
Linha:
web-server +{st=server|st=web-server} -
Análise:
SYSTEM_TYPEé igual a "server". A primeira condição é verdadeira, o que é suficiente. - Resultado: O pacote será instalado.
-
Linha:
-
+{a&b}(AND para inclusão): Verdadeiro somente se todas as condições do grupo forem verdadeiras.-
Linha:
database-tools +{d=bookworm&st=server} -
Análise:
DISTRIBUTIONé igual a "bookworm" (verdadeiro) ESYSTEM_TYPEé igual a "server" (verdadeiro). - Resultado: O pacote será instalado.
-
Linha:
-
-{a|b}(OR para exclusão): O pacote é excluído se ao menos uma das condições for verdadeira.-
Linha:
debug-tools -{env=production|st=minimal} -
Análise:
ENVIRONMENTé igual a "production". A primeira condição é verdadeira, então o pacote é excluído. - Resultado: O pacote não será instalado.
-
Linha:
-
-{a&b}(AND para exclusão): O pacote é excluído somente se todas as condições forem verdadeiras.-
Linha:
development-tools -{env=production&st=minimal} -
Análise:
ENVIRONMENTé igual a "production" (verdadeiro), masSYSTEM_TYPEnão é igual a "minimal". A segunda condição é falsa. O grupo não aciona a exclusão. - Resultado: O pacote será instalado (se não houver outros filtros).
-
Linha:
Pacotes diferentes podem ser oferecidos para a mesma funcionalidade e instalados dependendo das condições. As alternativas são separadas pelo operador ||.
Importante: Cada alternativa deve conter uma descrição completa — nome do pacote (com versão e release opcionais) e conjunto de filtros.
Exemplo:
postgresql +st=database-server || mysql-server +st=web-server
- Se
SYSTEM_TYPEfordatabase-server, postgresql será selecionado. - Se
SYSTEM_TYPEforweb-server, mysql-server será instalado.
-
||(OR / Fallback): Tenta instalar a parte à esquerda. Se falhar (pacote não encontrado ou filtrado), tenta instalar a parte à direita.-
Linha:
exfatprogs -d=bookworm || exfat-utils -
Análise:
DISTRIBUTIONnão é igual a "bookworm", a parte esquerda é filtrada. O CondinAPT passa para a parte direita.exfat-utilsnão tem filtros, então será instalado. -
Resultado:
exfat-utilsserá instalado.
-
Linha:
-
&&(AND / Conjunção): Todas as partes devem passar nos filtros para serem adicionadas à fila.-
Linha:
nginx +st=web-server && php-fpm -
Análise:
SYSTEM_TYPEé igual a "server", mas a condição exige "web-server". A parte esquerda falha. -
Resultado: Nenhum pacote será instalado.
-
Exemplo complexo:
monitoring-tools +env=production && prometheus +env=production && grafana +env=production -
Resultado: Todos os três pacotes só serão instalados se
ENVIRONMENTforproduction.
-
-
!(Pacote Obrigatório): Se um pacote for marcado com!, mas não for encontrado nos repositórios, o CondinAPT aborta a execução com erro.-
Linha:
!essential-package
-
Linha:
-
@(Especificação de Release): Instala um pacote de um release específico do Debian/Ubuntu (ex:bookworm-backports).-
Linha:
kernel-image-6.5.0 @trixie-backports
-
Linha:
O CondinAPT permite controle preciso sobre as versões dos pacotes instalados.
-
Sintaxe:
-
package=VERSAO: Tenta instalar a versão especificada (VERSAO). Se não estiver disponível nos repositórios, o CondinAPT instalará qualquer versão disponível do pacote.- Exemplo:
my-app=1.2.3(tenta instalar a 1.2.3, se não, instala, por exemplo, a 1.2.4)
- Exemplo:
-
package==VERSAO: Instalação estrita de uma versão específica. Se essa versão não estiver disponível nos repositórios, o pacote não será instalado. Se o pacote também for obrigatório (!), o script encerra com erro.- Exemplo:
another-app==2.0.0(instala apenas a 2.0.0, caso contrário, ignora ou gera erro se obrigatório)
- Exemplo:
-
-
Comportamento:
- O CondinAPT primeiro verifica se a versão requerida do pacote já está instalada no sistema. Se sim, o pacote é considerado instalado e ignorado.
- Depois verifica se a versão especificada está disponível nos repositórios (
apt-cache madison). -
Ao usar
=(versão flexível):- Se a versão especificada não estiver disponível, o CondinAPT emitirá um aviso de que a versão exata não foi encontrada.
- Mesmo assim, tentará instalar qualquer versão disponível do pacote nos repositórios.
-
Ao usar
==(versão estrita):- Se a versão especificada não estiver disponível, o CondinAPT não instalará o pacote.
- Se o pacote for obrigatório (
!), o script aborta a execução com erro.
-
Bloqueio de versão (
apt-mark hold):- Se um pacote for instalado com a versão exata especificada (ou seja, se
package==VERSAOfoi bem-sucedido, oupackage=VERSAOencontrou exatamente aquela versão e a instalou), o CondinAPT aplicará automaticamente o comandoapt-mark holdpara esse pacote. - Isso impede atualizações automáticas do pacote para uma nova versão em operações futuras de
apt upgrade.
- Se um pacote for instalado com a versão exata especificada (ou seja, se
Tarefa: Instalar database-tools para a distribuição bookworm, mas apenas se o tipo de sistema for server ou database-server, e não para o ambiente minimal.
packages.list:
database-tools +d=bookworm +{st=server|st=database-server} -env=minimalAnálise (com nossa configuração):
-
+d=bookworm: Verdadeiro. -
+{st=server|st=database-server}: Verdadeiro, poisSYSTEM_TYPEé "server". -
-env=minimal: Verdadeiro, poisENVIRONMENTé "production". Resultado: Todas as condições são verdadeiras. O pacote será instalado.
Tarefa: Para o Debian trixie, instalar firefox-esr. Para bookworm, instalar firefox. Para todos os outros casos, instalar w3m.
packages.list:
firefox-esr +d=trixie || firefox +d=bookworm || w3mAnálise:
-
firefox-esr +d=trixie: Parte esquerda.DISTRIBUTIONé "bookworm", condição falsa. -
firefox +d=bookworm: Parte do meio.DISTRIBUTIONé "bookworm", condição verdadeira. - Como a segunda parte da cadeia
||funcionou, a terceira (w3m) será ignorada. Resultado:firefoxserá instalado.
Tarefa: dkms é crítico para a construção de módulos; deve ser instalado primeiro. Na lista principal, está marcado como obrigatório, mas com uma condição.
-
priority.list:
^dkms$ ^build-essential$
* **`packages.list`:**
```text
!dkms +pv=standard # Mandatory, but with a condition
vim
Análise:
-
O CondinAPT lê os padrões de prioridade
^dkms$e^build-essential$. -
A linha
!dkms +pv=standardcorresponde ao padrão^dkms$e é movida para a fila de prioridade com todas as suas propriedades: o flag obrigatório (!) e o filtro (+pv=standard). -
Plano de Execução:
-
Fila de Prioridade: Instalar
!dkms +pv=standard(flag obrigatório e filtro mantidos). -
Fila Normal:
vim.
-
Fila de Prioridade: Instalar
Resultado: dkms será instalado primeiro, mas o filtro +pv=standard ainda será avaliado. Se a condição do filtro não for atendida, a instalação falhará por causa do flag obrigatório (!).
O separador --- em uma linha separada divide a lista em grupos (filas). Pacotes de uma fila são instalados juntos em uma única chamada do apt. As filas são executadas estritamente em sequência.
Exemplo:
<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
Pacotes com @release são automaticamente agrupados em filas 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
Esse mecanismo serve para instalação prioritária de pacotes críticos, preservando seus filtros e condições.
-
Princípio: O arquivo especificado pela flag
-Pcontém padrões regex (um por linha, sem filtros). O CondinAPT varre todas as filas, encontra pacotes que correspondem a esses padrões e os move (com todos os seus filtros e condições) para uma "Fila de Prioridade" especial, que é executada primeiro. -
Casamento de Padrões: Utiliza correspondência regex do bash (operador
=~). Os padrões podem ser nomes simples de pacotes ou expressões regex complexas. - Preservação de Contexto: Diferente de listas simples de prioridade, esse mecanismo preserva todas as condições, filtros e especificações de release dos pacotes da lista original.
-
Override: Pacotes correspondentes são automaticamente removidos de suas filas originais (tanto normais quanto de destino com
@release) e movidos para as filas de prioridade. Releases de destino são preservados em filas de prioridade separadas.
Exemplo 1: Casamento simples de nome de pacote
-
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álise:
-
O CondinAPT lê o
priority.liste sabe que pacotes que correspondem aos padrões^gpg$e^git$devem ser instalados primeiro. -
Ele varre o
packages.liste encontra a linhagit +st=full-server. Comogitcorresponde ao padrão, essa linha inteira (com o filtro+st=full-server) é movida para a fila de prioridade. -
Da mesma forma,
gpg -st=minimalé movido para a fila de prioridade com seu filtro-st=minimalpreservado. -
Plano Final:
-
Fila de Prioridade: Instalar
git +st=full-serveregpg -st=minimal(filtros preservados e avaliados). -
Fila Normal:
curl,wget +d=trixie,vim +env=development.
-
Fila de Prioridade: Instalar
-
Exemplo 2: Casamento por padrão 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álise:
-
O padrão
^linux-.*corresponde alinux-image-6.1.0-amd64elinux-headers-6.1.0-amd64. -
O padrão
^firmware-.*corresponde afirmware-linux. -
Plano Final:
-
Fila de Prioridade:
linux-image-6.1.0-amd64 +arch=amd64,linux-headers-6.1.0-amd64 +arch=amd64,firmware-linux. -
Fila Normal:
build-essential,nginx +st=server.
-
Fila de Prioridade:
-
Permite visualizar quais pacotes serão instalados sem realmente instalá-los:
./condinapt -l packages.list -c system.conf -sSaída de Exemplo:
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: No modo simulação, o script sai com código de saída 1.
Verifica quais pacotes da lista já estão instalados no sistema:
./condinapt -l packages.list -c system.conf -CComportamento:
- Exibe erros para pacotes não instalados
- Retorna código de saída 1 se houver pacotes não instalados
- Ao final, exibe um comando para instalar os pacotes ausentes
Saída Detalhada (-v):
- Mostra informações detalhadas sobre as verificações de filtros
- Exibe resultados para cada pacote
Saída Muito Detalhada (-vv):
- Máximo detalhamento do processo
- Mostra todos os passos intermediários
Rastreamento de Comandos (-x):
- Ativa o
set -xpara depuração do script - Mostra cada comando executado
Exemplo com Depuração:
./condinapt -l packages.list -c system.conf -vv -xForça o CondinAPT a executar apt update antes da instalação:
./condinapt -l packages.list -c system.conf -fO CondinAPT pode trabalhar com variáveis do tipo array no arquivo de configuração:
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
O CondinAPT possui suporte interno para pacotes especiais que exigem tratamento diferenciado:
Pacotes Virtuais:
-
qemu-kvm- tratado como pacote virtual
Mecanismo de Tratamento:
- O CondinAPT verifica se o pacote é virtual usando o comando
apt-cache show - Se o pacote for marcado como "puramente virtual", é considerado disponível para instalação
- A lista de pacotes especiais é definida no array
SPECIAL_PACKAGESdentro do script:SPECIAL_PACKAGES=("qemu-kvm")
Estendendo a Lista: Para adicionar novos pacotes especiais, é necessário editar o array SPECIAL_PACKAGES no código do CondinAPT.
Se um pacote for marcado como obrigatório mas não for encontrado nos repositórios, o CondinAPT:
- Exibe uma mensagem de erro
- Aborta a execução (exceto no modo simulação)
- Retorna código de saída 1
Exemplo:
!essential-package +pv=standard
Se essential-package não for encontrado nos repositórios, a execução será abortada.
Versões Flexíveis (=):
- Se a versão exata não estiver disponível, qualquer versão disponível será instalada
- Um aviso será emitido sobre a indisponibilidade da versão solicitada
Versões Estritas (==):
- Se a versão exata não estiver disponível, o pacote será ignorado
- Se o pacote for obrigatório (
!), a execução será abortada
O CondinAPT mantém automaticamente as versões dos pacotes nos seguintes casos:
- Quando a versão solicitada exatamente foi instalada
- Para pacotes com
==VERSÃO, se a versão foi encontrada e instalada - Para pacotes com
=VERSÃO, se exatamente aquela versão foi encontrada e instalada
O CondinAPT se integra facilmente a sistemas de build e scripts de automação. Para mais detalhes sobre a sintaxe do arquivo de pacotes, consulte a seção Sintaxe do Arquivo de Lista de Pacotes.
Em um script de automação (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"Exemplo de arquivo de mapeamento 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
Exemplo de configuração (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
- Agrupamento por funcionalidade:
#=== System ===
systemd
dbus
#=== Network ===
network-manager
wireless-tools
#=== Multimedia ===
pulseaudio
alsa-utils
- Uso de filas para dependências:
<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
- Otimização de condições:
<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}
- Use filas de prioridade para pacotes críticos
- Minimize o número de filas
- Agrupe pacotes relacionados em uma única fila
- Utilize cache do APT para builds grandes
Problema: Pacote não instala mesmo com as condições corretas
Solução: Verifique com a flag -vv para informações detalhadas dos filtros
Problema: CondinAPT aborta em um pacote obrigatório Solução: Verifique a disponibilidade do pacote nos repositórios ou utilize fallback. Veja a seção Tratamento de Erros e Recuperação
Problema: Comportamento inesperado com versões de pacotes
Solução: Utilize o modo de simulação (-s) para verificação
<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
⚙️ Конфигурация
🛡️ Администрирование
🛠️ Разработка