830f2d34de
Cierra el gap de reproducibilidad entre PCs del proyecto web_scraping: la organizacion de extensiones y el CDP global dejaban de ser pasos manuales con sudo documentados en prosa. - apply_chromium_extension_policy: escribe ExtensionInstallForcelist (whitelist via --keep) en /etc/chromium/policies/managed/extensions.json de forma idempotente, con backup automatico y validacion JSON. --dry-run previsualiza sin tocar el sistema. - apply_chromium_cdp_flag: gestiona /etc/chromium.d/cdp (CDP global). Loopback por defecto, --network para bind 0.0.0.0 (con aviso), --remove para desactivar, --dry-run para previsualizar. Idempotente con backup. Ambas: dominio browser, grupo navegator, impuras (escriben en /etc via sudo), guard de auto-ejecucion (ejecutables con fn run y sourceables). Docs del proyecto (CONVENTIONS.md reglas 8/9, CHROMIUM_SYSTEM.md inventario + tabla accionable) ahora apuntan a 'fn run apply_chromium_*' como metodo canonico en vez de editar los archivos de /etc a mano.
4.0 KiB
4.0 KiB
name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, params, output, tested, tests, test_file_path, file_path
| name | kind | lang | domain | version | purity | signature | description | tags | uses_functions | uses_types | returns | returns_optional | error_type | imports | params | output | tested | tests | test_file_path | file_path | |||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| apply_chromium_extension_policy | function | bash | browser | 1.0.0 | impure | apply_chromium_extension_policy --keep <ext_id> [--keep <ext_id>]... [--policy-path <path>] [--update-url <url>] [--dry-run] | Escribe de forma idempotente la política managed de Chromium (ExtensionInstallForcelist) que fuerza la instalación de un conjunto de extensiones en cualquier perfil del navegador. Crea backup con sufijo de fecha si el archivo preexiste y su contenido difiere. Requiere sudo para escribir en /etc; en modo --dry-run no toca el sistema. |
|
false | error_go_core |
|
Escribe el JSON de política en policy-path y emite a stdout un resumen: extensiones aplicadas, ruta, backup creado y recordatorio de reinicio de Chromium. Sale 0 si la política se aplicó o ya estaba vigente. Sale != 0 en error. | false | bash/functions/browser/apply_chromium_extension_policy.sh |
Ejemplo
# Forzar solo uBlock Origin Lite en todos los perfiles (proyecto web_scraping, regla 9)
source bash/functions/browser/apply_chromium_extension_policy.sh
apply_chromium_extension_policy --keep ddkjiahejlhfcafbddmgiahcphecmpfh
# Previsualizar sin tocar el sistema (sin sudo)
apply_chromium_extension_policy --keep ddkjiahejlhfcafbddmgiahcphecmpfh --dry-run
# Forzar varias extensiones a la vez
apply_chromium_extension_policy \
--keep ddkjiahejlhfcafbddmgiahcphecmpfh \
--keep cjpalhdlnbpafiamejdnhcphjbkeiagm \
--policy-path /etc/chromium/policies/managed/extensions.json
# Usando pass para el sudo no interactivo (setup de este equipo)
# apply_chromium_extension_policy ya usa sudo tee internamente;
# si el entorno requiere pass: ejecutar como root o con SUDO_ASKPASS configurado.
Cuando usarla
Al preparar un PC nuevo o cambiar qué extensiones de Chrome Web Store deben estar presentes en cualquier perfil de Chromium del equipo. Reemplaza el paso manual de editar el JSON de policy con sudo. Indispensable tras un fresh install o cuando se añade o retira una extensión del conjunto obligatorio del proyecto web_scraping.
Gotchas
- Requiere sudo para escribir en
/etc/chromium/policies/managed/. En este equipo se alimenta conpass show claude/sudo | sudo -S <cmd>para operaciones autónomas. - Chrome cachea la política en memoria: hay que cerrar TODOS los procesos Chromium (
pkill -9 chromium) y relanzar para que el cambio surta efecto en runtime. Alternativa sin cerrar:chrome://policy→ botón "Reload policies". - Idempotente: si el archivo de policy ya tiene el mismo contenido, la función detecta el no-op y sale 0 sin escribir nada.
- Backup por día: si el contenido difiere, crea
<policy-path>.bak.YYYYMMDD. Si el backup del día ya existe, no lo sobreescribe. Los backups no se limpian automáticamente. ExtensionInstallForcelistsolo gestiona las extensiones listadas — no elimina extensiones que el usuario haya instalado manualmente; solo garantiza que las listadas estén instaladas.- No aplica a Chrome stable 138+: en Chrome estable la flag
--load-extensionestá desactivada, pero las managed policies siguen siendo el mecanismo correcto para force-install desde Web Store. - Para referencia del sistema completo:
projects/web_scraping/CHROMIUM_SYSTEM.md.