você está aqui: Home  → Arquivo de Mensagens

Criando Imagens de DVD do Repositório Ubuntu

Colaboração: Antonio Carlos Braga Machado

Data de Publicação: 26 de Dezembro de 2006

Todo mundo sabe que o debian disponibiliza seu repositório inteiro em imagens de dvd, e isso facilita em muito quem deseja levar para casa ou qualquer outro lugar pacote do repositório para instalação em máquinas sem internet por exemplo, partindo desse princípio sempre pensei porque a distro ubuntu não tem imagens completas do seu repositório, ela somente disponibiliza uma unica imagem de dvd do repositório principal "main", deixando os maiores repositórios universe e multiverse somente acessado opcionalmente na internet pois estes ela não dá suporte.

Requisitos

Então vamos ao que interessa, pacotes que necessitamos para criar nossas imagens:

  • Pacote debpartial
  • Pacote debpartial-mirror
  • Um HD com pelo menos 20GB para universe e multiverse e para gerar o iso, se for fazer um mirror completo será preciso 30GB livre

Construindo um mirror local

Precisamos instalar o pacote debpartial-mirror para baixar o mirror local e só assim depois poder gerar as imagens de dvd, no meu caso eu vou criar dois mirrors, o mirror dos repositórios universe e multiverse que não vem no dvd oficial, e também vou criar o mirror dos repositórios de update e security main, restricted, universe e multiverse, assim poderei sempre está gerando um dvd com atualizações constantemente.

  # apt-get install debpartial-mirror

Agora é preciso modificar o arquivo /etc/debpartial-mirror.conf.

  [mirror]
  # Servidor mirror de origem
  server=http://archive.ubuntu.com/ubuntu/
  
  # Diretório destino do seu mirror
  local_directory=/dados/ubuntu-mirror/dapper/
  
  # Download pacotes sugeridos?
  get_suggests=true
  
  # Download pacotes recomendados?
  get_recomends=true
  
  # Download provided packages?
  get_provides=true
  
  # Qual arquitetura do download?
  archs=i386
  
  # Aqui nós especificamos a versão do repositório a ser baixando.
  [dapper]
  filter= universe:*:* multiverse:*:*
  
  # Caso queria baixar tudo do repositorio comentar a linha acima e descomentar a linha abaixo:
  #filter= main:*:* restricted:*:* universe:*:* multiverse:*:*

Agora para criarmos o segundo repositório das atualizações e segurança, copie o arquivo anterior original:

  # cd /etc/
  # cp debpartial-mirror.conf debpartial-update.conf
  # vi debpartial-update.conf

Altere como abaixo, não se esquecendo de alterar o caminho do diretório do seu mirror local_directory=/dados/ubuntu-mirror/dapper-updates/, se não quando executar o comando debpartial-mirror -c /etc/debpartial-update.conf, ele irá apagar o mirror anterior.

  [mirror]
  # Servidor mirror de origem
  server=http://archive.ubuntu.com/ubuntu/
  
  # Diretório destino do seu mirror
  local_directory=/dados/ubuntu-mirror/dapper-updates/
  
  # Download pacotes sugeridos?
  get_suggests=true
  
  # Download pacotes recomendados?
  get_recomends=true
  
  # Download provided packages?
  get_provides=true
  
  # Qual arquitetura do download?
  archs=i386
  
  # Aqui nós especificamos a versão do repositório a ser baixando, essa é a diferença principal do mirror anterior, dapper-updates e dapper-security.
  
  [dapper-updates]
  filter= main:*:* restricted:*:* universe:*:* multiverse:*:*
  
  [dapper-security]
  filter= main:*:* restricted:*:* universe:*:* multiverse:*:*

Agora vem a parte mais demorada, mas pelo menos um consolo demora somente na primeira vez, depois ele baixa somente as alterações no mirror, é preciso uma internet banda larga, e bota banda larga nisso :).

  # sudo debpartial-mirror  (aqui ele assume o arquivo default /etc/debpartial-mirror.conf)
  # sudo debpartial-mirror -c /etc/debpartial-update.conf (mirror updates e security)

Criando as Imagens

Agora para este passo utilize o script abaixo, mas antes é preciso pegar um arquivo chamado debcopy que vem no pacote debpartial, copie o debcopy para o mesmo diretório do script que será criado a serguir.

  # sudo apt-get install debpartial
  # cp /usr/share/doc/debpartial/examples/debcopy.gz .
  # gzip -d debcopy.gz

Agora crie um scrip com um nome do tipo geradvd.sh para gerar o dvd universe e multiverse. Vou explicar somente as variáveis mais importante. UBUNTU_FULL_REP -> essa variável é o caminho completo que ==Vocabulary Help== especificou ao criar o mirror.

  #!/bin/bash
  
  < A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>#
  # Variables #
  < A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>#
  
  # Mirror of the complete local ubuntu repository (main, universe, multiverse)
  UBUNTU_FULL_REP="/dados/ubuntu-mirror/dapper"
  
  # Directory where the
  ISOS_DIR="/dados/isos"
  
  # DVD sized Repositories
  #MAIN_REP_DVD="/home/ubuntu-dvd/main"
  UNIVERSE_MULTIVERSE_REP_DVD="/dados/ubuntu-mirror/dapper-dvd"
  
  < A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>
  # End of Variables #
  < A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>
  
  echo Removing current dvd-sized repositories...
  echo "$UNIVERSE_MULTIVERSE_REP_DVD/*"
  rm -rf $UNIVERSE_MULTIVERSE_REP_DVD/*
  
  echo
  echo Building universe and multiverse...
  echo
  
  debpartial --nosource --dirprefix=ubuntu --section=universe,multiverse \
  --dist=dapper-updates --size=DVD $UBUNTU_FULL_REP/ $UNIVERSE_MULTIVERSE_REP_DVD
  
  echo
  echo "Making the soft links with universe and multiverse... (debcopy -l)"
  echo
  
  i=0
  for part in $UNIVERSE_MULTIVERSE_REP_DVD/*; do
  echo "Linking $part..."
  ruby debcopy -l $UBUNTU_FULL_REP $part
  (( i++ ))
  
  echo "#define DISKNAME  Ubuntu Universe Multiverse $i" > $part/README.diskdefines
  echo "#define TYPE  binary" >> $part/README.diskdefines
  echo "#define TYPEbinary  $i" >> $part/README.diskdefines
  echo "#define ARCH  i386" >> $part/README.diskdefines
  echo "#define ARCHi386  $i" >> $part/README.diskdefines
  echo "#define DISKNUM  $i" >> $part/README.diskdefines
  echo "#define DISKNUM1  $i" >> $part/README.diskdefines
  echo "#define TOTALNUM  $i" >> $part/README.diskdefines
  echo "#define TOTALNUM1  $i" >> $part/README.diskdefines
  mkdir $part/.disk
  echo "Ubuntu Universe Multiverse $i" > $part/.disk/info
  
  echo "Building iso image: $ISOS_DIR/ubuntu-universe-multiverse-$i.iso"
  mkisofs  -quiet -V "Ubuntu Universe Multiverse $i" -f -J -r -o \
  $ISOS_DIR/ubuntu-universe-multiverse-$i.iso $part
  done

Agora um escript com nome geradvd-update.sh igual ao anterior somente modificando a variável de caminho para o repositorio de atualizações e o nome do iso.

  #!/bin/bash
  
  < A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>#
  # Variables #
  < A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>#
  
  # Mirror of the complete local ubuntu repository (main, universe, multiverse)
  UBUNTU_FULL_REP="/dados/ubuntu-mirror/dapper-updates"
  
  # Directory where the
  ISOS_DIR="/dados/isos"
  
  # DVD sized Repositories
  UPDATES_REP_DVD="/dados/ubuntu-mirror/dapper-updates-dvd"
  
  < A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>
  # End of Variables #
  < A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>
  
  echo Removing current dvd-sized repositories...
  echo "$UPDATES_REP_DVD/*"
  rm -rf $UPDATES_REP_DVD/*
  
  echo
  echo Building Ubuntu Updates...
  echo
  
  debpartial --nosource --dirprefix=ubuntu --section=main,restricted,universe,multiverse --dist=dapper-updates,dapper-security --size=DVD \
  $UBUNTU_FULL_REP/ $UPDATES_REP_DVD/
  
  echo
  echo "Making the soft links with Updates... (debcopy -l)"
  echo
  
  for part in $UPDATES_REP_DVD/*; do
  echo "Linking $part..."
  ruby debcopy -l $UBUNTU_FULL_REP $part
  (( m++ ))
  
  echo "#define DISKNAME  Ubuntu Updates Security $m" > $part/README.diskdefines
  echo "#define TYPE  binary" >> $part/README.diskdefines
  echo "#define TYPEbinary  $m" >> $part/README.diskdefines
  echo "#define ARCH  i386" >> $part/README.diskdefines
  echo "#define ARCHi386  $m" >> $part/README.diskdefines
  echo "#define DISKNUM  $m" >> $part/README.diskdefines
  echo "#define DISKNUM1  $m" >> $part/README.diskdefines
  echo "#define TOTALNUM  $m" >> $part/README.diskdefines
  echo "#define TOTALNUM1  $m" >> $part/README.diskdefines
  mkdir $part/.disk
  echo "Ubuntu Updates Security $m" > $part/.disk/info
  
  echo "Building iso image: $ISOS_DIR/ubuntu-updates-security-$m.iso ..."
  mkisofs  -quiet -V "Ubuntu Updates Security $m" -f -J -r -o $ISOS_DIR/ubuntu-updates-security-$m.iso $part
  
  done

Ao executar os scripts o repositório universe e multiverse irá gerar 3 DVDS, 2 DVDS completos e um terceiro iso em torno de 400MB que pode ser gravado em cd, esses praticamente não sofrerá mais mudanças você pode gravar definitivamente.

Já o iso de update e security ficará com 1,5GB, praticamente todo dia sai atualizações para ubuntu, você pode agendar o debpartial-mirror para baixar as atualizações para seu mirror local e gerar sempre um dvd atualizado.

Deixo aqui minha experiência espero que seja util.

Documentação de referência "Building Ubuntu DVD images" em http://cargol.net/~ramon/ubuntu-dvd-en



 

 

Veja a relação completa dos artigos de Antonio Carlos Braga Machado

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script