Crear un repositorio local de DVDs cos repositorios de Trisquel

De que se trata?

Este manual trata a forma de crear uns DVDs (ou CDs) que conteñan todos os paquetes dispoñibles nos repositorios e que sirvan de repositorio local, tanto para ti ou calquera outra persoa que os necesite. Tamén se pode facer sen empregar DVDs, como se indica nas Notas complementarias ó final deste tutorial.

Para que facer tal cousa?

Isto pode resultar moi útil para xente que non teña acceso a internet ou teña unha conexión moi lenta, xa que mediante estes DVDs poderá ter acceso a todos os programas do repositorio.

É sinxelo de facer?

Se chegaches aquí, é porque xa sabes o que son os repositorios, así que xa estás preparado. Tratareino de explicar polo miúdo, e se tes algunha dúbida, pregunta no foro.

0. Requisitos

Antes de nada, hai que ter en conta que para poder descargar todos os paquetes .deb dispoñibles nos repositorios hai que ter unha capacidade mínima no disco duro. Esta capacidade mínima podería ser 45GB, xa que, por exemplo a versión 5.5 de Trisquel ten ó redor de 43 GB. Isto é só para a descarga, porque despois para crear as imaxes ISO faría falla outro tanto de espazo (aínda que se podería ir facendo de unha en unha, grabar a ISO no dvd e depois borrala por se non chegara o espazo). Para ir con tranquilidade, recomendo unha capacidade libre no disco duro de 90 GB como mínimo.

Neste tutorial empregarase a última versión de Trisquel, a 5.5 Brigantia, como exemplo, pero serve calquera, así como a arquitectura que queiramos, 32 ou 64 bits.

1. Instalar as ferramentas necesarias

Primeiramente instalaremos as ferramentas necesarias para poder realizar os pasos seguintes. Copiamos a seguinte liña completa e pegámola nunha terminal (con Ctrl+Shift+V ou premendo na roda do rato):
sudo apt-get install debmirror genisoimage liblockfile-simple-perl liblog-agent-perl ruby dpkg-dev libdigest-sha1-perl libruby
Prememos Enter e despois dun rato xa teremos os paquetes instalados. Unha ferramenta que non está nos repositorios e tamén fai falla é Debpartial, que se pode descargar dende aquí. Ollo, non confundir con debartial-mirror que si que está nos repositorios pero non serve. Unha vez descargado, descomprimimos o ficheiro no directorio no que vaiamos a traballar, neste caso no directorio home do usuario. Para facelo todo dende unha liña, copiamos na terminal o seguinte:
wget http://ftp.gnome.org/mirror/cdimage/snapshot/Debian/pool/main/d/debpartial/debpartial_0+20030508.1.tar.gz && tar -xvf debpartial_0+20030508.1.tar.gz -C /home/`whoami` && mv /home/`whoami`/debpartial-0+20030508/* ~  && rm -rf /home/`whoami`/debpartial-0+20030508
Que fai o seguinte: con wget descarga o paquete, con tar descomprime o paquete, con mv move os ficheiros ó directorio home do usuario e con rm borra o cartafol baleiro que quedou de descomprimir o programa. Este paquete contén tamén debcopy, o cal tamén se vai ser necesario.

2. Descarga dos repositorios

Este será o paso que nos leve máis tempo, e que dependerá da velocidade da nosa conexión, para facernos unha idea, descargar os repositorios levaríanos o seguinte tempo (tendo en conta unha descarga de 43GB):
   Velocidade - Tempo
   5 MB/s     - 2 h e media aprox.
   2 MB/s     - 6 h aprox.
   1 MB/s     - 12 h
   100kb      - 5 días aprox.
   15kb       - 33 días arpox.
Para a descarga utilizarase debmirror coa seguinte orde:
debmirror --nosource -m --host=archive.trisquel.info --root=trisquel/ --method=http --progress --dist=brigantia,brigantia-security,brigantia-updates,brigantia-backports --section=main --arch=amd64 ~/TrisquelRepos --ignore-release-gpg
A explicación das ordes do comando:
   --nosource -> para que non inclúa o código fonte, se se quere incluir hai que quitar esta orde ou poñer --source
   -m -> 
   --host=archive.trisquel.info -> a páxina web onde están os ficheiros, podes usar outro mirror máis cercano ou que che vaia máis rápido ().
   --root=trisquel/ -> o cartafol raíz onde están os ficheiros.
   --method=http -> Método para descargar os ficheiros, soporta ftp, http e rsync.
   --progress -> amosa o progreso da descarga de cada ficheiro.
   --dist=brigantia,brigantia-security,brigantia-updates,brigantia-backports -> A versión de Trisquel da que se queren descargar os repositorios, para outras versións, substituír brigantia por ''taranis'', ''dagda'', ''slaine''... segundo corresponda.
   --section=main -> é a única sección que ten Trisquel, 100% software libre.
   --arch=amd64 -> aquí especefícase a arquitectura que se quere dos paquetes, i386 (procesadores de 32bits) ou amd64 (procesadores de 64bits)
   ~/TrisquelRepos -> directorio onde se vai descargar todo, podes poñer o directorio que desexes, tendo en conta que ten que ter espacio libre suficiente.
   --ignore-release-gpg -> ignora os erros debido as comprobacións das claves gpg.
  • Esta descarga pódese parar e continuar cando se queira, para parala Ctrl+C e para continuala, executar o mesmo comando.
  • Se se quere seguir actualizando estes repositorios decargados, non fai falla volver a descargar todo, execútase o comando sobre o mesmo cartafol e tardará moito menos que da primeira vez, descargando só os paquetes novos. Despois teríamos que seguir a partir do paso 3 para crear outros DVDs máis actualizados.
  • Outras opcións que poden ser interesantes é --dry-run para simular a descarga, que descargará a un directorio temporal e non reemplazará datos e ficheiros anteriores, e só simulará a limpeza do mirror. A outra é --timeout=seconds -t xxx que serve para se hai desconexións frecuentes, que se volva a reconectar cada xxx segundos.

3. Dividir en partes de tamaño DVD ou CD

3.1 Debpartial

Unha vez feita a descarga completa, empregaremos debpartial para que divida e estableza os paquetes que van para cada DVD/CD. Sería como segue:
ruby debpartial --nosource --dirprefix=trisquel --section=main --dist=brigantia,brigantia-security,brigantia-updates,brigantia-backports --arch=amd64 --size=DVD ~/TrisquelRepos ~/TrisquelDVDs
As opcións son as mesmas que debmirror máis:
   --dirprefix=trisquel -> o nome que recibirá o cartafol para cada DVD seguido dun número (trisquel0, trisquel1...)
   --size=DVD -> onde se especifica o tamaño, para CD poñer --size=CD74 (CDs de 650 MB) ou --size=CD80 (CDs de 700MB), tendo en conta que DVDs poden ser 10, e CDs 50-60.
   ~/TrisquelDVDs directorio onde vai crear os índices cos paquetes e tamaño que lle corresponden a cada DVD, pódese poñer o directorio que desexes.
  • Ollo, con este comando non se van crear os DVDs nin ocupar GB de espazo, tan só vai crear os índices cos datos para a posterior creación dos DVDs.
  • "ruby debpartial" execútase tendo en conta que no 1º paso descomprimimos o programa na carpeta na que traballamos, no home do usuario. Se o tivésemos noutro directorio, espcificaríamolo: "ruby /directorio/ata/debpartial"

3.2 Debcopy

O seguinte paso é saber cantos DVDs (ou CDs) vamos a necesitar, que o sabemos fixándonos na saída do comando debpartial ou entrando no cartafol "TrisquelDVDs" e contando o número de cartafoles. Para sabelo cunha liña (onde pon tris poñemos o que lle puxeramos na opción --dirprefix):
ls -l ~/TrisquelDVDs | grep tris | wc -l
E isto daranos o número de DVDs/CDs. O cartafol 0 será o 1º DVD. Agora pasaremos a empregar a ferramenta debcopy (obtida no paso 1), que creará ligazóns simbólicos dos paquetes .deb contidos en ~/TrisquelRepos en ~/TrisquelDVDs, para a posterior creación dos DVDs/CDs.
for f in ~/TrisquelDVDs/*; do ruby debcopy -l ~/TrisquelRepos $f; done
ou
ruby ~/debcopy -l ~/TrisquelRepos ~/TrisquelDVDs/trisquel#
Substituíndo # polo número que corresponda. O primeiro comando creará para todos os DVDs dunha vez, e o segundo e para facelo un a un.

4. Crear as imaxes ISO

Agora toca crear as imaxes ISO que serviran para gravar nos DVDs/CDs, e farase coa orde seguinte:
genisoimage -f -J -r -V "Trisquel 5.5 1_11" -o trisquel-5.5-$(date -I)-complete-amd64-dvd1.iso ~/TrisquelDVDs/trisquel0
Explicada:
   -f -> indícalle ó programa que ten que seguir as ligazóns simbólicas, imprescindible xa que é o que fixo debcopy. Está opción non é 100% efectiva, pero non soe fallar.
   -J -> para temas de compatibilidade con sistemas Windows, opcional.
   -r -> difícil de explicar, mirar a páxina man.
   -V -> especifica o nome que terá o DVD, entre comillas se conten espazos.
   -o -> especifica o nome final da imaxe ISO. Podemóslle poñer o que desexemos, no exemplo cambiariamos 5.5 pola versión que fagamos, así como a arquitectura e dvd por cd se fose o caso.
   ~/TrisquelDVDs/trisquel0 -> directorio que vai gravar na imaxe ISO, variaremos o número segundo o DVD que sexa.
   Para unhas explicacións máis detalladas das opcións ou para engadir máis, botarlle unha ollada á paxina man ("man genisoimage").
Creando as imaxes pode que de algúns erros como que non encontra un paquete, e ignorao, ou que lle teña que cambiar o nome a algún directorio, aínda que eso non é ningún problema. Tamén pode que haxe que engadir a opción -joliet-long ó comando se da algún erro relacionado co Joliet. O comando tamén se pode simplificar como o de debcpoy:
for f in 1 2 3 4 5 6 7 8 9 10 11; do genisoimage -f -J -r -V "Trisquel 5.5 $f_11" -o trisquel-5.5-$(date -I)-complete-amd64-dvd$f.iso ~/TrisquelDVDs/trisquel$f; done

5. Gravando as imaxes ISO

Trisquel por defecto trae o programa Brasero para gravacións, imos ó Menú>Accesorios>Gravador de discos Brasero, eleximos a opción de gravar imaxe, seleccionamos a imaxe, insertamos o DVD, podemos seleccionar a velocidade de gravación, e gravámos a imaxe, así para cada unha delas. Sobra dicir que isto pódese facer con calquera ferramenta que empreguedes para gravación.

6. Empregando os DVDs como repositorios

Unha vez chegados aquí, xa podemos gozar (ou facer gozar a alguén) do traballo que fixemos. Para engadir os DVDs como repositorios empregaremos o comando apt-cdrom. So temos que insertar o primeiro dos DVDs, e escribir na terminal:
sudo apt-cdrom add
Despois dun tempo no que lerá os índices de paquetes e pediranos un nome para ese dvd-repositorio, e xa terá engadido o dvd ó sources.list, con algo parecido a isto:
   deb cdrom:[Trisquel 5.5 D1]/ brigantia main
   deb cdrom:[Trisquel 5.5 D1]/ brigantia-backports main
   deb cdrom:[Trisquel 5.5 D1]/ brigantia-security main
   deb cdrom:[Trisquel 5.5 D1]/ brigantia-updates main
Unha vez listo o 1º DVD, repetimos o proceso para o resto dos DVDs. Cando xa acabes con todos, actualiza os repositorios (ollo, se só se van empregar os dvds como repositorios, hai que comentar con unha almohadilla (#) as liñas de repositorios que teñamos de internet):
sudo apt-get update
Evidentemente para poder instalar paquetes teremos que insertar o DVD correspondente (xa nos di cal necesitamos), e poderemólo facer pola liña de comandos ou dende Synaptic. Listo, xa temos un montón de GB listos para instalar en calquera momento a un simple click e sen conexión a internet, marabilloso!!

NOTAS COMPLEMENTARIAS

Repositorio local sen empregar DVDs

Neste caso só faremos ata o paso 2 do tutorial, e temos dúas opcións:
  1. Os paquetes .deb descargados tamén se poderían copiar ó directorio /var/cache/apt/archives/ e así prescindir dos DVDs, xa que Synaptic e apt recorren a ese directorio para a instalación, pero hai que ter en conta que teríamos que ter na partición / (raíz) un espazo moi grande (45 GB para os ficheiros máis o espazo necesario para as instalacións dos programas).
  2. Outra opción de non empregar DVDs é aproveitar o repositorio descargado en TrisquelRepos para empregalo tal cual. Teriamos que engadir ó sources.list (sudo gedit /etc/apt/sources.list) o seguinte:
       deb   file:///home/usuario/TrisquelRepos/   brigantia main
       deb   file:///home/usuario/TrisquelRepos/   brigantia-security    main
       deb   file:///home/usuario/TrisquelRepos/   brigantia-updates     main
       deb   file:///home/usuario/TrisquelRepos/   brigantia-backports   main
    
    Substituíndo, claro está usuario polo noso nome de usuario ou cambiando o directorio a onde descargáramos os repositorios no paso 2 e tamén brigantia pola nome da versión de Trisquel correspondente (taranis,dagda...). Logo, tamén comentar ou eliminar as liñas de repositorios online. Para actualizar estes repositorios locais, empregaríamos o comando do paso 2, como xa se dixo alí. A partir de aquí poderíamos empregar os comandos de actualización e instalación coma sempre, ou empregando Synaptic para instalar os paquetes.
  • Sobra dicir que tamén se podería empregar un disco duro externo, só habería que especificar a ruta correspondente, pero hai que ter en conta que pode desconectarse e ter problemas, ademais de conectalo sempre no mesmo directorio de montaxe para poder empregalo de repositorio local.
  • Este tutorial serve para levar a cabo o obxectivo proposto, pero segue en construción e sempre aberto a máis aportacións e correccións.
  • Este manual está baseado nestoutro: http://ubuntuforums.org/showthread.php?t=352460

Revisión

06/21/2012 - 12:38
Khany