, ,

Repositorio rafex para distribuciones Linux basadas en Debian

Written by

·


He creado un repositorio para distribuciones Linux basadas en Debian, motivado por un debate en un canal de Telegram de la Fundación MxOS (https://mx-os.mx/acerca/general.html) sobre agregar funcionalidades regionales para México. Una de las ideas principales fue validar y generar la CURP.

La CURP (Clave Única de Registro de Población) es una clave alfanumérica de 18 caracteres generada por el gobierno mexicano que busca ser un identificador único para cada persona.

No considero necesario crear una “distro” completa, ya que eso conlleva mucho trabajo y el riesgo de generar solo un respin (una ISO remasterizada con cambios leves) o un reskin/theme pack (que solo cambia la estética visual: temas, íconos, fondos) sin modificar realmente el entorno gráfico.

Motivación

Por eso decidí desarrollar un repositorio con soporte inicial para distribuciones basadas en Debian, es decir, que puedan instalar paquetes .deb. ¿Por qué Debian? Porque me gusta y lo uso desde su versión “Sarge”. En ese entonces, cada vez que actualizaba, tenía que volver a compilar drivers de audio y wifi, lo cual era frustrante.

Este proyecto nace de la idea de que puedo hacerlo y así puedo concentrar herramientas y funcionalidades que uso frecuentemente en mis proyectos, presentándolas de forma más accesible.

Contribución

¿Estoy abierto a contribuciones? Sí, claro.

El código central de la parte pública está disponible en:

Código non-free

¿Existirá código no libre? Seguramente.

Para instalar el repositorio y los paquetes:

# curl -fsSL https://repository.rafex.app/rafex.gpg | sudo gpg --dearmor -o /usr/share/keyrings/rafex-archive-keyring.gpg
# echo "deb [signed-by=/usr/share/keyrings/rafex-archive-keyring.gpg] https://repository.rafex.app/debian stable main" | sudo tee /etc/apt/sources.list.d/rafex.list > /dev/null

# Como opción alternativa si no se quiere usar la firma:
echo "deb [trusted=yes] https://repository.rafex.app/debian stable main" | sudo tee /etc/apt/sources.list.d/rafex.list

sudo apt update
sudo apt install curp-verifier curp-generator

Si quieres saber más sobre CURP y su generación oficial, puedes consultar la página oficial del gobierno mexicano: https://www.gob.mx/curp

Este repositorio busca facilitar el uso de esta funcionalidad en sistemas Linux basados en Debian, integrando soluciones técnicas para México.


Nota irónica: Este código lo escribí desde mi Macbook Air con macOS. Además, el repositorio inicia con soporte para las arquitecturas amd64 y arm64, gracias al uso de Github Actions para la integración continua.

Código de ejemplo:

gcc /app/main.c -L/usr/lib -lcurp_verifier -lcurp_generator -o /app/test
#include <stdio.h>

// Declaración de struct esperada por la función generar_curp_c
typedef struct {
    const char* nombre;
    const char* primer_apellido;
    const char* segundo_apellido;
    char sexo;
    const char* fecha_nacimiento;
    const char* entidad;
} DatosPersonales;

// Declaraciones FFI manuales (sin includes)
extern int verify_curp(const char* curp);
extern char* generar_curp_c(const DatosPersonales* datos);

int main() {
    //const char* prueba = "GOCJ850528HDFRNL08";  // CURP inválida
    const char* prueba = "GOAR881103HDFNRL04";  // CURP válida
    int valido = verify_curp(prueba);
    printf("Resultado: %d\n", valido);

    if (valido == 1) {
        printf("La CURP es válida.\n");
    } else if (valido == 0) {
        printf("La CURP es inválida.\n");
    } else {
        printf("Error al verificar la CURP.\n");
    }

    struct DatosPersonales persona = {
        .nombre = "RAUL EDUARDO",
        .primer_apellido = "GONZALEZ",
        .segundo_apellido = "ARGOTE",
        .sexo = 'H',
        .fecha_nacimiento = "1988-11-03",
        .entidad = "DF"
    };

    char* curp = generar_curp_c(&persona);
    if (curp != NULL) {
        printf("CURP generada: %s\n", curp);
    } else {
        fprintf(stderr, "Error al generar la CURP.\n");
    }

    return 0;
}

Pasos próximos generar wrapper en python y java.

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.