Me gustaría configurar un repositorio APT en un servidor que proporcione un par de paquetes.
¿Hay alguna manera de configurar uno sin instalar ningún software en el servidor?
¿Cómo deben organizarse los archivos?
Editar: Debo estar haciendo algo mal ... ¿alguien puede ayudarme? Tengo el repositorio en http://quickmediasolutions.com/apt/dists
No estoy seguro de dónde o qué, pero algo está mal configurado. Actualmente solo tengo un paquete y es para todas las arquitecturas.
Esto es lo que se ha agregado a mi /etc/apt/sources.list
:
deb http://quickmediasolutions.com/apt stable main
apt
package-management
repository
Nathan Osman
fuente
fuente
Respuestas:
Configurar un repositorio trivial es muy fácil usando dpkg-scanpackages. Esta página explica cómo configurar un repositorio trivial, y este explica cómo usarlo (desplácese hacia abajo hasta el ejemplo 4).
fuente
deb http://quickmediasolutions.com/apt binary/
.Simplemente configure un repositorio simple pero firmado en un servidor web. Como la mayoría de los otros tutoriales son algo anticuados o engorrosos, intentaré replicar el procedimiento aquí. La configuración inicial requiere un poco de esfuerzo, pero el script de compilación simple lo hace fácil de administrar. Y simplemente puede colocar nuevos
*.deb
archivos, luego actualizar o dejar que un trabajo cron se encargue de eso.Generar algunas claves de firma
Primero debe crear una
gpg
clave de firma para los paquetes y su repositorio. Conviértalo en una (4) clave de firma RSA, sin contraseña, y dele una única$KEYNAME
cuando se le solicite. (Otros ejemplos suponen "dpkg1
" como nombre clave).Le dije que no tenía contraseña, porque su servidor web no tiene un mono incorporado para escribirlo repetidamente. Y los paquetes y el repositorio firmados solo están destinados a satisfacer las quejas de los administradores de actualizaciones al respecto. Simplemente cargue ambas claves en el nuevo
/apt/
directorio del repositorio en su servidor web, pero elimine lasecret.gpg
clave después de la inicialización.Actualizar script CGI
Este es el script simple de shell / CGI de actualización para él:
Las tres
gpg
líneas solo necesitan ejecutarse una vez, para inicializar la configuración de GPG en algún directorio$GNUPGHOME
(arriba de la raíz del documento). Eliminar solo elsecret.gpg
después del éxito.Una característica única de este pequeño script de shell es que acepta cualquier
*.deb
archivo que coloque, pero también busca de forma recursiva (a partir de un nivel superior) para otros, y los vincula simbólicamente. (Necesita .htaccessOptions FollowSymLinks
eventualmente).Puede ejecutar este script manualmente como CGI o por cron-job. Pero escóndelo, o mejor aún, muévelo fuera de la raíz del documento.
Debido a que es un repositorio apt "trivial", necesita la siguiente
apt-sources.list
entrada:Eso es adecuado para repositorios de arquitectura única, y si no espera cientos de paquetes.
Firma del paquete
Firmar sus paquetes individuales también es trivial, una vez que haya configurado sus claves gpg:
(Esto debe hacerse en la estación de trabajo donde se crean los paquetes, no en el servidor web del repositorio).
Repositorio sin firmar
Si no necesita paquetes firmados, puede reducir el script de actualización a solo:
Que aún pueden usar los usuarios promedio, pero necesita un indicador personalizado para
apt.sources
:Pero no use la
trusted=yes
bandera habitualmente para todo, o si no está seguro del origen del paquete.Por usabilidad
Para los usuarios finales, simplemente suelte un
HEADER.html
en el directorio del repositorio. Apachesmod_auto_index
antepondrá esa nota:Alternativas
Hay algunas herramientas para automatizar la gestión de repositorios en estos días. E incluso hay repositorios en línea y servicios de creación de paquetes ( gemfury , packagecloud , bintray , etc.)
Una alternativa bastante conveniente es prm . Es un script Ruby, que construye complejos APT y YUM repos. (Pero esperemos que RPM finalmente desaparezca pronto ...) - Se instala mejor por
gem install prm
.Y también he escrito un pequeño script para automatizar esto de manera similar: http://apt.include-once.org/apt-phparchive - Por favor, no es que no sea demasiado robusto y esté escrito en PHP (por una vez, esto es una coincidencia), y originalmente estaba destinado a DEB y RPM-over-APT y Phar.
Dado que esto está estrechamente relacionado con la pregunta original, también hay herramientas para construir paquetes Debian más fácilmente. Algo anticuado: EPM . Mucho más contemporáneo: FPM . Y mi bifurcación personal: XPM (enfoque más vago para empaquetar aplicaciones de lenguaje de scripting).
fuente
wget …/public.gpg -O- | apt-key add -
dpkg-scanpackages -m
podría ser suficiente. Enumerará todas las arquitecturas en el mismo archivo de lanzamiento. Pero siempre que cada .deb tenga un nombre único / o esté almacenado en subdirecciones distintas (amd64 /, all /) debería funcionar. De lo contrario, elija una de las herramientas de repositorio más complejas.Si. Puedes hacerlo. Solo necesita organizar los archivos de la manera correcta y crear los archivos de índice. Si coloca la estructura del directorio dentro de la raíz del documento de su servidor web, se puede acceder a los paquetes a través del servidor web.
Aquí hay una descripción detallada de cómo deben organizarse los archivos y cómo se crean los archivos de índice.
También puede usar una herramienta llamada reprepro si está dispuesto a instalar ese paquete. Esto hará que la administración sea un poco más conveniente.
fuente
Quizás también pueda considerar un PPA Launchpad
fuente
Para cualquiera que se enfrente a este error después de seguir la respuesta de Mario:
Haz lo siguiente:
Puse mis
*.deb
archivos en ladebs
carpeta.fuente