Diferencia entre revisiones de «APT Repos»
(Página creada con «= Introducción = Mis apuntes sobre como crear mis propios repositorios APT. El motivo de esto es el de tener mi pripio repo centralizado para ciertas máquinas que esté c...») |
(→Configurar una distribución nueva) |
||
(3 revisiones intermedias por el mismo usuario no mostrado) | |||
Línea 1: | Línea 1: | ||
− | = Introducción = | + | == Introducción == |
Mis apuntes sobre como crear mis propios repositorios APT. | Mis apuntes sobre como crear mis propios repositorios APT. | ||
El motivo de esto es el de tener mi pripio repo centralizado para ciertas máquinas que esté congelado en el tiempo, que no sea necesario que mis máquinas tengan acceso a inet, y poder meter mis propios paquetes. | El motivo de esto es el de tener mi pripio repo centralizado para ciertas máquinas que esté congelado en el tiempo, que no sea necesario que mis máquinas tengan acceso a inet, y poder meter mis propios paquetes. | ||
Línea 5: | Línea 5: | ||
== Fuentes == | == Fuentes == | ||
[http://vincent.bernat.im/en/blog/2014-local-apt-repositories.html Este enlace] lo explica muy bien, aun así este documento va en plan apuntes. | [http://vincent.bernat.im/en/blog/2014-local-apt-repositories.html Este enlace] lo explica muy bien, aun así este documento va en plan apuntes. | ||
+ | |||
+ | |||
+ | |||
+ | == Tipos de repositorios == | ||
+ | Hay varios tipos de repositorios de APT: | ||
+ | * Distribution Mirror: la copia de uno oficial, normalmente se usa para ahorrar ancho de banda y que las instlaciones vayan más rápidas | ||
+ | * Local Repository: con nuestros propios paquetes, y permite tener una zona de stagin, previa a poner algo en producción | ||
+ | * Mirrors de repositorios no oficiales (como ubuntu ppa): Para evitar cambios no esperados, y poder hacer pruebas antes de pasar lo cabmis de esos repos a nustra produccion | ||
+ | |||
+ | == Estructura del repositorio == | ||
+ | |||
+ | Un repositorio tiene distribuciones que a su vez tiene componentes | ||
+ | |||
+ | Hay varias cosas a tener en cuenta: | ||
+ | - Un repositorio no puede tener dos paquetes identicos: mismo nombre, misma versión y misma arquitectura) | ||
+ | - En un componente solo puede haber una version de un paquete | ||
+ | - Una ditribución suele ser una lista de versiones mientras un componente suele ser una lista de paquetes. | ||
+ | |||
+ | Como ejemplo, el repo de debian tiene la distribucion unstable, con las versiones más recientes de software, pero dentro de unstable hay un componente main, que es un grupo de paquetes. | ||
+ | |||
+ | == Herramientas == | ||
+ | Usaremos reprepro para estas pruebas. Existen otras herramientas más complicadas. Reprepro solo puede manejar un repositorio | ||
+ | |||
+ | |||
+ | == Configuración de un repo == | ||
+ | |||
+ | === Configuracion inicial === | ||
+ | Lo primero es crear un usuario del sistema con el que se trabajará con los repositorios. | ||
+ | <pre> | ||
+ | # Adduser --system --disabled-password --disable-login --home /srv/packages --group reprepro | ||
+ | </pre> | ||
+ | |||
+ | Todas las operaciones se tienen que realizar con este usuario. Cada uno de los repositorios que creemos deberá tener la siguiente estructura: | ||
+ | |||
+ | * ./conf: ficheros de configuracion | ||
+ | * ./gpt: para firmar los repositorios | ||
+ | * ./logs contiene los logs | ||
+ | * ./www: lo que hay que exportar en el servidor web | ||
+ | |||
+ | El contenido del fichero de configuracion, ./conf/options: | ||
+ | |||
+ | <pre> | ||
+ | outdir +b/www | ||
+ | logdir +b/logs | ||
+ | gnupghome +b/gpg | ||
+ | </pre> | ||
+ | |||
+ | Tenemos que crear la clave gpg: | ||
+ | <pre> | ||
+ | $ GNUPGHOME=gpg gpg --gen-key | ||
+ | </pre> | ||
+ | Como ejemplo creamos una clave RSA, expira para 10 años (10y). | ||
+ | |||
+ | Si no ponemos una contraseña a esta clave RSA podremos hacer operaciones desatendidas | ||
+ | |||
+ | === Configurar un mirror de una distro oficial === | ||
+ | |||
+ | Como ejemplo vamos a hacer una copia del repositorio oficial de precise: | ||
+ | |||
+ | ==== Configurar una distribución nueva ==== | ||
+ | Añadimos el siguiente bloque en ./conf/distributions | ||
+ | <pre> | ||
+ | # Ubuntu Precise | ||
+ | Origin: Ubuntu | ||
+ | Label: Ubuntu | ||
+ | Suite: precise | ||
+ | Version: 12.04 | ||
+ | Codename: precise | ||
+ | Architectures: i386 amd64 | ||
+ | Components: main restricted universe multiverse | ||
+ | UDebComponents: main restricted universe multiverse | ||
+ | Description: Ubuntu Precise 12.04 (with updates and security) | ||
+ | Contents: .gz .bz2 | ||
+ | UDebIndices: Packages Release . .gz | ||
+ | Tracking: minimal | ||
+ | Update: - ubuntu-precise ubuntu-precise-updates ubuntu-precise-security | ||
+ | SignWith: yes | ||
+ | </pre> | ||
+ | |||
+ | En la línea update, el guion que ponemos al prinpicio, hace que todo se marque como borrado y de esta forma no mantenemos paquetes antiguos que se han borrado de los origenes. | ||
+ | |||
+ | |||
+ | |||
+ | ==== Configuramos los updates ==== | ||
+ | Y el siguiente bloque en ./conf/updates | ||
+ | <pre> | ||
+ | # Ubuntu Precise | ||
+ | Name: ubuntu-precise | ||
+ | Method: http://fr.archive.ubuntu.com/ubuntu | ||
+ | Fallback: http://de.archive.ubuntu.com/ubuntu | ||
+ | Suite: precise | ||
+ | Components: main main multiverse restricted universe | ||
+ | UDebComponents: main restricted universe multiverse | ||
+ | Architectures: amd64 i386 | ||
+ | VerifyRelease: 437D05B5 | ||
+ | GetInRelease: no | ||
+ | |||
+ | # Ubuntu Precise Updates | ||
+ | Name: ubuntu-precise-updates | ||
+ | Method: http://fr.archive.ubuntu.com/ubuntu | ||
+ | Fallback: http://de.archive.ubuntu.com/ubuntu | ||
+ | Suite: precise-updates | ||
+ | Components: main restricted universe multiverse | ||
+ | UDebComponents: main restricted universe multiverse | ||
+ | Architectures: amd64 i386 | ||
+ | VerifyRelease: 437D05B5 | ||
+ | GetInRelease: no | ||
+ | |||
+ | # Ubuntu Precise Security | ||
+ | Name: ubuntu-precise-security | ||
+ | Method: http://fr.archive.ubuntu.com/ubuntu | ||
+ | Fallback: http://de.archive.ubuntu.com/ubuntu | ||
+ | Suite: precise-security | ||
+ | Components: main restricted universe multiverse | ||
+ | UDebComponents: main restricted universe multiverse | ||
+ | Architectures: amd64 i386 | ||
+ | VerifyRelease: 437D05B5 | ||
+ | GetInRelease: no | ||
+ | </pre> | ||
+ | |||
+ | La línea de '''VerifyRelease''' indica el key fingerprint para usar con el repositorio remoto. La clave tiene que ser importada en el keyring local: | ||
+ | |||
+ | <pre> | ||
+ | gpg --keyring /usr/share/keyrings/ubuntu-archive-keyring.gpg --export 437D05B5 | GNUPGHOME=gpg gpg --import | ||
+ | </pre> |
Última revisión de 10:05 27 nov 2014
Contenido
Introducción
Mis apuntes sobre como crear mis propios repositorios APT. El motivo de esto es el de tener mi pripio repo centralizado para ciertas máquinas que esté congelado en el tiempo, que no sea necesario que mis máquinas tengan acceso a inet, y poder meter mis propios paquetes.
Fuentes
Este enlace lo explica muy bien, aun así este documento va en plan apuntes.
Tipos de repositorios
Hay varios tipos de repositorios de APT:
- Distribution Mirror: la copia de uno oficial, normalmente se usa para ahorrar ancho de banda y que las instlaciones vayan más rápidas
- Local Repository: con nuestros propios paquetes, y permite tener una zona de stagin, previa a poner algo en producción
- Mirrors de repositorios no oficiales (como ubuntu ppa): Para evitar cambios no esperados, y poder hacer pruebas antes de pasar lo cabmis de esos repos a nustra produccion
Estructura del repositorio
Un repositorio tiene distribuciones que a su vez tiene componentes
Hay varias cosas a tener en cuenta: - Un repositorio no puede tener dos paquetes identicos: mismo nombre, misma versión y misma arquitectura) - En un componente solo puede haber una version de un paquete - Una ditribución suele ser una lista de versiones mientras un componente suele ser una lista de paquetes.
Como ejemplo, el repo de debian tiene la distribucion unstable, con las versiones más recientes de software, pero dentro de unstable hay un componente main, que es un grupo de paquetes.
Herramientas
Usaremos reprepro para estas pruebas. Existen otras herramientas más complicadas. Reprepro solo puede manejar un repositorio
Configuración de un repo
Configuracion inicial
Lo primero es crear un usuario del sistema con el que se trabajará con los repositorios.
# Adduser --system --disabled-password --disable-login --home /srv/packages --group reprepro
Todas las operaciones se tienen que realizar con este usuario. Cada uno de los repositorios que creemos deberá tener la siguiente estructura:
- ./conf: ficheros de configuracion
- ./gpt: para firmar los repositorios
- ./logs contiene los logs
- ./www: lo que hay que exportar en el servidor web
El contenido del fichero de configuracion, ./conf/options:
outdir +b/www logdir +b/logs gnupghome +b/gpg
Tenemos que crear la clave gpg:
$ GNUPGHOME=gpg gpg --gen-key
Como ejemplo creamos una clave RSA, expira para 10 años (10y).
Si no ponemos una contraseña a esta clave RSA podremos hacer operaciones desatendidas
Configurar un mirror de una distro oficial
Como ejemplo vamos a hacer una copia del repositorio oficial de precise:
Configurar una distribución nueva
Añadimos el siguiente bloque en ./conf/distributions
# Ubuntu Precise Origin: Ubuntu Label: Ubuntu Suite: precise Version: 12.04 Codename: precise Architectures: i386 amd64 Components: main restricted universe multiverse UDebComponents: main restricted universe multiverse Description: Ubuntu Precise 12.04 (with updates and security) Contents: .gz .bz2 UDebIndices: Packages Release . .gz Tracking: minimal Update: - ubuntu-precise ubuntu-precise-updates ubuntu-precise-security SignWith: yes
En la línea update, el guion que ponemos al prinpicio, hace que todo se marque como borrado y de esta forma no mantenemos paquetes antiguos que se han borrado de los origenes.
Configuramos los updates
Y el siguiente bloque en ./conf/updates
# Ubuntu Precise Name: ubuntu-precise Method: http://fr.archive.ubuntu.com/ubuntu Fallback: http://de.archive.ubuntu.com/ubuntu Suite: precise Components: main main multiverse restricted universe UDebComponents: main restricted universe multiverse Architectures: amd64 i386 VerifyRelease: 437D05B5 GetInRelease: no # Ubuntu Precise Updates Name: ubuntu-precise-updates Method: http://fr.archive.ubuntu.com/ubuntu Fallback: http://de.archive.ubuntu.com/ubuntu Suite: precise-updates Components: main restricted universe multiverse UDebComponents: main restricted universe multiverse Architectures: amd64 i386 VerifyRelease: 437D05B5 GetInRelease: no # Ubuntu Precise Security Name: ubuntu-precise-security Method: http://fr.archive.ubuntu.com/ubuntu Fallback: http://de.archive.ubuntu.com/ubuntu Suite: precise-security Components: main restricted universe multiverse UDebComponents: main restricted universe multiverse Architectures: amd64 i386 VerifyRelease: 437D05B5 GetInRelease: no
La línea de VerifyRelease indica el key fingerprint para usar con el repositorio remoto. La clave tiene que ser importada en el keyring local:
gpg --keyring /usr/share/keyrings/ubuntu-archive-keyring.gpg --export 437D05B5 | GNUPGHOME=gpg gpg --import