Recuerda que en las ciencias un error casi siempre tiene diferentes soluciones, pero nosotros aquí te compartimos lo más óptimo y eficiente.
Solución:
Desde la wiki de ayuda de Ubuntu:
Hay 4 pasos para configurar un repositorio simple para usted
1.Instalar
dpkg-dev
2.Ponga los paquetes en un directorio
3.Cree un script que escanee los paquetes y cree un archivo que apt-get update pueda leer
4. Agregue una línea a su sources.list apuntando a su repositorioInstalar dpkg-dev
Escribe una terminal
sudo apt-get install dpkg-dev
El directorio
Cree un directorio donde guardará sus paquetes. Para este ejemplo, usaremos
/usr/local/mydebs.
sudo mkdir -p /usr/local/mydebs
Ahora mueva sus paquetes al directorio que acaba de crear.
Los paquetes descargados previamente generalmente se almacenan en su sistema en el
/var/cache/apt/archives
directorio. Si ha instalado apt-cacher, tendrá paquetes adicionales almacenados en su directorio / packages.El script update-mydebs
Es un simple trazador de líneas de tres:
#! /bin/bash cd /usr/local/mydebs dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz
Corta y pega lo anterior en gedit y guárdalo como update-mydebs en ~ / bin. (la tilde ‘~’ significa su directorio de inicio. Si ~ / bin no existe, créelo: Ubuntu pondrá ese directorio en su RUTA. Es un buen lugar para poner scripts personales). A continuación, haga que el script sea ejecutable:
chmod u+x ~/bin/update-mydebs How the script works:
dpkg-scanpackages examina todos los paquetes en mydebs, y la salida se comprime y se escribe en un archivo (Packages.gz) que apt-get update puede leer (consulte a continuación para obtener una referencia que explica esto con un detalle insoportable). / dev /null es un archivo vacío; es un sustituto de un archivo de anulación que contiene información adicional sobre los paquetes, que en este caso no es realmente necesaria. Consulte deb-override (5) si desea conocerlo.
Sources.list
agrega la línea
deb file:/usr/local/mydebs ./
a su /etc/apt/sources.list, y ya está.
Opción de CD
Puede grabar el directorio que contiene los debs en un CD y usarlo también como repositorio (bueno para compartir entre computadoras). Para usar el CD como repositorio, simplemente ejecute
sudo apt-cdrom add
Usando el repositorio
Siempre que ponga un nuevo deb en el directorio mydebs, ejecute
sudo update-mydebs sudo apt-get update
Ahora sus paquetes locales pueden manipularse con los comandos Synaptic, aptitude y apt: apt-get, apt-cache, etc. Cuando intente instalar apt-get, se resolverán todas las dependencias, siempre que se puedan cumplir .
Los paquetes mal hechos probablemente fallarán, pero no habrás soportado el infierno de dpkg.
*Para hacer un repositorio sin conexión a través de LAN *
Instalar un servidor web Apache local
# apt-get install apache2
De forma predeterminada, el paquete Apache de Debian configurará un sitio web en /var/www
en su sistema. Para nuestros propósitos, está bien, así que no hay razón para hacer nada más. Puede probarlo fácilmente apuntando su navegador favorito a http://localhost
Debería ver la página web predeterminada posterior a la instalación que en realidad está almacenada en /var/www/index.html
Crear un directorio de repositorio de paquetes de Debian
eligió crear un directorio /var/www/debs
para esto. Debajo, debe crear directorios de “arquitectura”, uno para cada arquitectura que necesite admitir. Si está usando solo una computadora (o tipo de computadora), entonces solo necesitará una, generalmente “i386” para sistemas de 32 bits o “amd64” para 64 bits. Si está utilizando alguna otra arquitectura, asumiré que probablemente ya lo sepa. Ahora simplemente copie los archivos del paquete “.deb” para una arquitectura dada en los directorios apropiados. Si ahora apunta su navegador web favorito a http://localhost/debs/amd64
(por ejemplo) verá una lista de los paquetes para sistemas de 64 bits.
Cree un archivo Packages.gz
Ahora necesitamos crear un archivo de catálogo para que lo use APT. Esto se hace con una utilidad llamada “dpkg-scanpackages”. Estos son los comandos que utilizo para actualizar los paquetes AMD64 en mi LAN:
# cd /var/www/debs/
# dpkg-scanpackages amd64 | gzip -9c > amd64/Packages.gz
Dar a conocer el repositorio a APT
Ahora lo único que queda por hacer es informar a APT sobre su repositorio. Para ello, actualice su archivo /etc/apt/sources.list. Necesitará una entrada como esta:
deb http://localhost/debs/ amd64/
Usé el nombre de host real de mi sistema en lugar de localhost; de esta manera, el código es el mismo para todas las computadoras en mi LAN, pero localhost funcionará bien si está ejecutando solo una computadora.
Ahora, actualice APT:
# apt-get update
Creación de un repositorio autenticado
He echado un vistazo a las respuestas aquí y en otros sitios y la mayoría tiene la (en mi humilde opinión, gran) desventaja de que está configurando un repositorio no autenticado. Esto significa que necesitas correr apt-get
con --allow-unauthenticated
para instalar paquetes desde él. Esto puede ser un riesgo para la seguridad, especialmente en scripts donde los paquetes que está instalando pueden no ser todos de su repositorio local.
Tenga en cuenta que no he cubierto aquí cómo hacer que esté disponible a través de la LAN, pero esa es una configuración bastante genérica usando Apache o nginx (vea las otras respuestas aquí).
Configurar el directorio de repositorio
mkdir /home/srv/packages/local-xenial
cd /home/srv/packages/local-xenial
Luego agregue una línea como esta a sources.list
:
deb file:/home/srv/packages/local-xenial/ ./
Agregar y eliminar paquetes
eliminar paquetes
rm /home/srv/packages/local-xenial/some_package_idont_like
agregar paquetes
cp /some/dir/apackage.deb /home/srv/packages/local-xenial
ahora ejecute el siguiente script que genera los archivos Packages, Release e InRelease y los firma con su gpg privado key:
#!/bin/bash
if [ -z "$1" ]; then
echo -e "usage: `basename $0` DISTRO
where DISTRO is the Ubuntu version codename (e.g. 14.04 is trusty)n
The way to use this script is to do the changes to the repo first, i.e. delete or copy in the .deb file to /srv/packages/local-DISTRO, and then run this scriptn
This script can be run as an unprivileged user - root is not needed so long as your user can write to the local repository directory"
else
cd /srv/packages/local-"$1"
# Generate the Packages file
dpkg-scanpackages . /dev/null > Packages
gzip --keep --force -9 Packages
# Generate the Release file
cat conf/distributions > Release
# The Date: field has the same format as the Debian package changelog entries,
# that is, RFC 2822 with time zone +0000
echo -e "Date: `LANG=C date -Ru`" >> Release
# Release must contain MD5 sums of all repository files (in a simple repo just the Packages and Packages.gz files)
echo -e 'MD5Sum:' >> Release
printf ' '$(md5sum Packages.gz | cut --delimiter=' ' --fields=1)' %16d Packages.gz' $(wc --bytes Packages.gz | cut --delimiter=' ' --fields=1) >> Release
printf 'n '$(md5sum Packages | cut --delimiter=' ' --fields=1)' %16d Packages' $(wc --bytes Packages | cut --delimiter=' ' --fields=1) >> Release
# Release must contain SHA256 sums of all repository files (in a simple repo just the Packages and Packages.gz files)
echo -e 'nSHA256:' >> Release
printf ' '$(sha256sum Packages.gz | cut --delimiter=' ' --fields=1)' %16d Packages.gz' $(wc --bytes Packages.gz | cut --delimiter=' ' --fields=1) >> Release
printf 'n '$(sha256sum Packages | cut --delimiter=' ' --fields=1)' %16d Packages' $(wc --bytes Packages | cut --delimiter=' ' --fields=1) >> Release
# Clearsign the Release file (that is, sign it without encrypting it)
gpg --clearsign --digest-algo SHA512 --local-user $USER -o InRelease Release
# Release.gpg only need for older apt versions
# gpg -abs --digest-algo SHA512 --local-user $USER -o Release.gpg Release
# Get apt to see the changes
sudo apt-get update
fi
Contenido de ejemplo del archivo conf / distribuciones
Origin: My_Local_Repo
Label: My_Local_Repo
Codename: xenial
Architectures: i386 amd64
Components: main
Description: My local APT repository
SignWith: 12345ABC
Enlaces
https://wiki.debian.org/RepositoryFormat
http://ubuntuforums.org/showthread.php?t=1090731
https://help.ubuntu.com/community/CreateAuthenticatedRepository