Introducción

Introducción

Este artículo es la continuación lógica de nuestro artículo PXE, porque después de leer esto podrá arrancar en red e instalar la distribución de su elección. Pero hay otros usos de crear su propio repositorio. Por ejemplo, ancho de banda. Si administra una red y todos los sistemas (o algunos) están ejecutando la misma distribución, es más fácil para usted simplemente RSYNC junto con un espejo cercano y servir actualizaciones usted mismo. A continuación, tal vez tenga algunos paquetes creados por usted que su distribución no aceptará en el árbol principal, pero los usuarios los encuentran útiles. Obtenga un nombre de dominio, configure un servidor web y haya. No detallaremos la configuración de un servidor web aquí, solo tareas de instalación básicas y la configuración básica de un repositorio para Fedora o Debian Systems. Por lo tanto, se espera que tenga el hardware necesario (el servidor y el equipo de red necesario, dependiendo de la situación) y algunos conocimientos sobre Linux y los servidores web. Entonces, comencemos.

NOTA:Este artículo fue trasladado de nuestro dominio anterior LinuxCareer.comunicarse.

Creación de un repositorio en sistemas Fedora

Instalación de las herramientas

Fedora tiene una herramienta llamada creador que simplifica la tarea en cuestión. Entonces, todo lo que necesitamos instalar es eso y httpd como servidor web:

 # yum install createepo httpd 

Configuración de los repositorios

Ahora, después de configurar su servidor web, asumiremos que el directorio raíz es AR /var /www. Tenemos que crear los directorios necesarios en una materia organizada (siéntase libre de ajustar al gusto si es necesario o simplemente seguir el diseño oficial):

 # cd/var/www/html # mkdir -p fedora/15/x86_64/base # mkdir fedora/15/x86_64/actualizaciones 

Eso es todo por ahora. Todo lo que tenemos que hacer es RSYNC a las carpetas creadas y asegúrese de tener mucho espacio disponible:

 # rsync -avrt rsync: // ftp.Heanet.IE/PUB/Fedora/Linux/Lotess/15/Everything \/x86_64/OS/Packages//Var/www/html/Fedora/15/x86_64/base 

Ahora use CreaterPo para la carpeta base:

 # creeaterpo/var/www/html/fedora/15/x86_64/base 

Esto es obligatorio, ya que creará el directorio de Repodata que YUM necesita al usar su repositorio. Ahora repitamos el mismo paso que el anterior, pero esta vez recibiremos las actualizaciones:

 # rsync -avrt rsync: // ftp.Heanet.IE/PUB/Fedora/Linux/\ Updations/15/x86_64//var/www/html/fedora/15/x86_64/actualizaciones 

Al final, le recomendamos que verifique si HTTPD está configurado para comenzar en el arranque y también use CRON para obtener actualizaciones de forma regular:

 # SystemCTL Habilitar httpd.servicio # crontab -e 

Recuerde que el comando RSYNC que se agregará es el segundo, el relacionado con las actualizaciones y que SystemCTL solo está disponible en Fedora 15 o superior. Use NTSYSV o Chkconfig en sistemas Fedora más antiguos.

Configuración del cliente

Debe decirle a las máquinas que obtendrán actualizaciones de su servidor dónde encontrarlas, por lo que comenzamos creando el .Archivos de repositorio:

# Esto será Base-Lan.Repo [Base -Lan] Nombre = Fedora $ Releasever - $ Basearch WaaloverMethod = Priority BaseUrl = http: // 192.168.1.2/Fedora/$ Releasever/$ Basearch/Base habilitado = 1 # Asegúrese de deshabilitar el oficial .Archivos de repo con habilitado = 0 gpgcheck = 0 # Esto será actualizaciones-lan.Repo [Actualations -Lan] Nombre = Fedora $ Releasever - $ Basearch - Actualations WaaloverMethod = Priority BaseUrl = http: // 192.168.1.2/Fedora/$ Releasever/$ Basearch/actualizaciones gpgcheck = 0 

Ahora, solo haz un

 # Actualización de Yum 

y estás listo para ir.

Firma de paquetes

Como lo señaló uno de nuestros lectores, uno debe tener en cuenta los problemas de seguridad al instalar paquetes. El software se puede descargar de servidores comprometidos y puede contener ejecutables maliciosos. Yum (y Apt, Zypper y otros sistemas de gestión de paquetes) supera este problema mediante el uso de claves GPG. Hablamos de reflejar un repositorio de Fedora. Estos paquetes ya están firmados, y las claves se pueden encontrar en/etc/pki/rpm-gpg. Si alguna vez usó un repositorio oficial de Fedora como cliente antes de habilitar sus repositorios locales, ese directorio ya contendrá las claves necesarias. Si no, las teclas se pueden descargar desde getfedora.org/llaves/. Ahora tenemos que alterar nuestro .Archivos de repo para habilitar gpgcheck y decirle a yum dónde están las teclas.

# Estas son las únicas líneas que deben cambiarse gpgcheck = 1 gpgkey = file: /// etc/pki/rpm-gpg/rpm-gpg-key-fedora 

Si está utilizando un repositorio local de paquetes personalizados, YUM se quejará de que sus paquetes personalizados no están firmados. Puede usar la bandera YUM -nogpgCheck si es el mantenedor de espejo/repositorio y solo sirve paquetes para su organización, o, de la manera segura, firme los paquetes personalizados también. Esto se debe a que el servidor que contiene el repositorio personalizado/local también puede estar comprometido. Por lo tanto, tendrá que crear una tecla GPG en el servidor y usar RPM para firmar el paquete personalizado:

$ GPG--Gen-Key $ GPG --list-SIGS

Como puede ver, el ID de usuario está en nuestro caso "Linux Carrera". Ahora para hacer que la clave sea pública:

 $ gpg --armor --export "userid"> mi.llave.archivo.ASC $ GPG -Keyserver PGP.MIT.EDU--Send-Key "UserId" 

Por supuesto, su ID de usuario diferirá, así que altere la información en consecuencia. Tenga en cuenta que en Fedora 16, en el que probamos esto, el ejecutable se llama GPG2 en lugar de GPG.

Solo necesitamos crear un .archivo rpmmacros en el directorio de inicio del usuario que firmará los paquetes y pondrá lo siguiente allí:

%_Signature GPG %_GPG_NAME UserId %_gpgbin/usr/bin/gpg2 

El comando para firmar un paquete, ahora que todo está configurado, estará

 $ rpm --addsign name_of_package.rpm

Ahora la descarga del cliente desde su repositorio personalizado utilizará 'RPM -Mepport $ Key' para poder descargar esos paquetes personalizados.

Creación de un repositorio en los sistemas Debian

Instalación

Dado que la estructura del repositorio de Debian es más complicada, verá que se necesita un poco más de trabajo en el lado del servidor, pero menos en el lado del cliente. En todo momento, habrá tres secciones: estables, pruebas e inestables (no contando experimentales) que tienen tres componentes dependiendo de cómo los paquetes tengan licencia: principal, contribuy y no libre. Es su decisión tomar qué parte de la distribución que desea reflejar, pero es nuestro deber advertirle: Debian tiene muchos más paquetes para ofrecer que Fedora, por lo que los requisitos de espacio en disco crecerán significativamente. Hay muchas herramientas que puede usar para crear un repositorio personalizado con sus propios paquetes personalizados, pero nos quedaremos con paquetes oficiales por ahora. Entonces, volveremos a nuestra configuración para el artículo PXE y crearemos un repositorio local para la instalación. Necesitaremos un servidor web, así que vamos a instalarlo:

 # Aptitud instalar apache2 

Asegúrese de que Apache esté configurado y iniciado antes de continuar.

Configuración del servidor

El directorio raíz predeterminado, al igual que en Fedora, es /var /www, así que creemos un directorio de Debian allí:

 # mkdir/var/www/Debian 

La gente de Debian recomienda ftpsync, una colección de guiones de Perl destinado a ayudarlo a obtener lo que necesita en su espejo local. De especial interés es el --excluir Opción, ya que no desea obtener todo el contenido de un archivo de Debian (solo AMD64, solo principal y contribuye, solo aprieta, sin CD, etc.). Si desea crear un repositorio para usar después de la instalación, solo apunte a su/etc/apt/fuentes.Lista en el directorio que contiene los paquetes (ya tiene un modelo de trabajo allí) y eso es todo. Por ejemplo:

 Deb http: // 192.168.1.2/Debian Squeeze Main Contrib 

Pero veamos en detalle lo que necesita descargar si no te apetece usar ftpsync. Debian (y Ubuntu, y probablemente otros derivados de Debian) tienen un paquete llamado apt-utils, que ofrece, entre otros, el apt-ftparchive programa que utilizaremos para nuestro repositorio personalizado. Entonces…

 # Aptitud instalar Apt-Utils 

obtendrá la herramienta necesaria instalada en su sistema. Ya tenemos el directorio base creado en nuestro servidor web, por lo que necesitaremos subdirectorios personalizados para nuestras necesidades:

 # cd/var/www/debian # mkdir -p piscina/main # mkdir piscina/contribras # mkdir -p dists/squeeze/main/binary -amd64 # mkdir -p dists/squeeze/contrib/binary -amd64 # mkdir .cache 

Ahora que tenemos la estructura del directorio en su lugar, creemos los archivos de configuración necesarios para ayudar a apt-ftparchive a encontrar e indexar nuestro software. Tenga en cuenta que puede usar esta configuración para reflejar los paquetes de Debian oficiales o crear un repositorio con sus propios paquetes, ya que los pasos son los mismos.

El primer archivo de los dos necesitaremos crear (ambos vivirán en/var/www/Debian) se denomina apt-libease.confusión.

 # CD/var/www/Debian # $ editor apt-libe.confusión 

El contenido, relacionado con nuestras necesidades como se muestra arriba, sería así:

Apt :: ftParchive :: Release :: CodeName "Squeeze"; Apt :: ftParchive :: Release :: Origin "LinuxCareer.com "; apt :: ftParchive :: Release :: Components" Main Contrib "; Apt :: FtParchive :: Release :: Label" LinuxCareer.com Debian Repo "; Apt :: FtParchive :: Release :: Architectures" AMD64 "; Apt :: FtParchive :: Release :: Suite" Squeeze "; 

También puede usar apt-ftparchive para generar archivos de configuración basados ​​en los argumentos de la línea de comandos. Use cualquier enfoque que prefiera.

El segundo archivo de configuración se llama apt-ftparchive.conf y su contenido se vería así:

 Dir Archivedir "."; Cachedir"./.Cache ";; predeterminado paquetes :: compress". GZIP BZIP2 "; Contenido :: Compress". GZIP BZIP2 ";; paquetes de Treedefault Bincachedb"-$ (sección)-$ (Arch).DB "; directorio" Pool/$ (sección) "; paquetes" $ (dist)/$ (sección)/binario-$ (arco)/paquetes "; contenido" $ (dist)/contenido-$ (arco) "; ; Árbol "dists/exprime" secciones "contribución principal"; arquitecturas "amd64"; 

Como puede ver, la sintaxis se explica por sí misma con respecto a ambos archivos.

En aras del ejemplo, ahora descargaremos un .Deb de un espejo Debian para ilustrar adecuadamente nuestra idea.

 # CD/VAR/www/Debian/Pool/Main # wget -c ftp: // ftp.Heanet.es decir/espejos/ftp.debian.org/Debian/Pool/Main/\ P/Patch/Patch_2.6.1.85-423D-3_AMD64.debutante 

Ahora generemos el contenido (esto tendrá que repetirse cada vez que agregue o elimine los paquetes).

 # cd/var/www/Debian # apt-ftparchive generar apt-ftparchive.conf # apt-ftparchive -c apt-libe.Conf Releance Dists/Squeeze> \ Dists/Squeeze/Release 

Estas acciones hicieron lo que se llama "construir el repositorio". Ahora, como se indicó anteriormente, agregue una línea a sus fuentes.Lista y puede tener acceso a su repositorio de software. Si necesitas convertirte en un espejo de Debian y aún así no te apetece ftpsync, usa rsync con el directorio remoto llamado piscina/$. Además, use un espejo, no sobrecargue FTP.debian.org, por favor.

Firma de paquetes

Si desea usar una imagen CD/DVD/Blu-ray para servir contenido a sus clientes, el archivo de lanzamiento en las imágenes de medios ópticos no está firmado de forma predeterminada. Pero si sirves por rsync'ing el contenido de un espejo, es probable que no tengas que hacer nada. Si tiene un repositorio personalizado, aquí le mostramos cómo hacerlo. Primero, como en el ejemplo de Fedora, genere la clave GPG:

 $ GPG-Gen-Key 

Ahora, debido al error #639204 en DeBsign (última actualización de este agosto), parece que tendremos que tomar una ruta alternativa. Dado que los paquetes de Debian son básicamente solo archivos AR, utilizaremos la forma de nivel inferior para firmar nuestros paquetes:

 $ ar x paquete_name.Deb $ Cat Debian-Binary Control.alquitrán.Datos de GZ.alquitrán.gz> tempfile $ gpg -abs -o _gpgorigin tempfile $ ar rc paquete_name.Deb _gpgorigin Control Debian-Binary.alquitrán.Datos de GZ.alquitrán.GZ 

Entonces, lo que hicimos aquí fue extraer el .archivo deb con AR, concatene su 'contenido a un archivo temporal (mente el pedido), firme ese archivo y luego recompone el .Deb a su 'estado original. Ahora necesitamos exportar la clave GPG (como puede ver, el proceso no es tan diferente del aplicado en Fedora).

 $ GPG --export -a> mydebsign.asc 

Ahora extraemos la clave para un uso adicional:

 $ GPG -Fingerprint 

Recuerde los últimos cuatro grupos en la huella digital clave (como se ve a continuación), ya que esos serán la ID de clave, que usaremos más adelante.

En la máquina del cliente, asegúrese de tener instalado DeBsig-Verify, luego puede crear un lugar para la clave:

 # mkdir/usr/share/defsig/keyrings/$ key_id 

Como puede ver en la captura de pantalla, nuestra ID de clave de ejemplo es 8760C540B4FC5C21. Ahora importemos la clave:

 # GPG--No-default-keyring-Keyring \/usr/share/deBsig/Keyrings/$ Key_id/DeBsign.GPG -Import MyDebsign.asc 

Ahora, aquí viene la parte difícil: necesitaremos un archivo de política para las claves. El lenguaje utilizado es XML, pero no es necesario preocuparse: en/usr/share/doc/debisg-verify/ejemplos encontrará un archivo llamado genérico.Pol que se puede copiar en algún lugar para ser editado y renombrado. Un ejemplo de dicho archivo podría parecer así:

 xmlns = "http: // www.debian.org/sebsig/1.0/">  Name = "Linux Carrera" Descripción = "Paquete ofrecido por Linux Carrera"/>   Type = "Origin" File = "DeBsign.GPG "/>   Minoctional = "0">  Type = "Origin" File = "DeBsign.GPG "/>  

Lo que ves anteriormente es solo la parte esencial del archivo de política. Después de verificar con el ejemplo y realizar las alteraciones necesarias, guarde este archivo en/etc/deBsig/Politicies/$ Key_id/$ Policy_Name.polla. Después de este paso, si siguió correctamente los pasos, puede usar DeBsig-Verify con el nombre del paquete como argumento para verificar sus paquetes descargados. Gracias a Purplefloyd por su útil artículo sobre este.

Configuración del cliente

Entonces, iniciemos nuestra máquina cliente, asegurándose de que esté configurada para arrancar desde la red y, cuando se le pide que elija un espejo, seleccione "Ingrese la información manualmente". Ingrese la IP de su servidor, luego la ubicación relativa a /var /www (Debian, en nuestro caso) y debe estar listo para instalar.

Conclusión

Uno nunca puede enfatizar lo suficiente la importancia de ahorrar el ancho de banda, incluso en una pequeña red. Por supuesto, hay otras ventajas para un enfoque de espejo local, como servir software personalizado para su empresa (parches especiales aplicados o simplemente cambios para adaptarse mejor a las necesidades de la empresa) o servir su pieza de software empaquetado para su distribución favorita.

Tutoriales de Linux relacionados:

  • Cómo configurar un Raspberry Pi como servidor de arranque PXE
  • Espejos de ubuntu
  • Ejemplos de RSYNC en Linux
  • Una introducción a la automatización, herramientas y técnicas de Linux
  • Cosas para instalar en Ubuntu 20.04
  • Cosas que hacer después de instalar Ubuntu 20.04 fossa focal Linux
  • Cómo imprimir el árbol de directorio usando Linux
  • Cosas que hacer después de instalar Ubuntu 22.04 Jellyfish de Jammy ..
  • Mastering Bash Script Loops
  • Ubuntu 20.04 Guía