Repositório Programas Livres    CD CD Programas Livres    Wiki Wiki PL    Fóruns Fóruns PL


Oct 02 2006

Como usar o Synaptic (do Ubuntu) offline.

Publicado por Luís Bastos em guias linux
Etiquetas: , , , , , , ,
1 estrela2 estrelas3 estrelas4 estrelas5 estrelas (sem votações)

Como os utilizadores de já devem ter notado, este vem com um utilitario chamado , para gestão de ficheiros . instalados (acho que o é uma shell sobre o apt-get), podendo este ser usado sobre CDs com . (como os install-cds do , agora chamados de alternate), como de repositorios ftp (como o oficial do ), e dizem que também é possivel sobre directórios do disco rígido (ainda não consegui)

Mas lá está, enquanto a de . dos repositorios ftp parece algo de mágico quando o utilizador está online, poode ser uma verdadeira tortura quando sempre se esteve offline (pelo menos o meu caso em casa, e a opção de utilizar o online por conecção dial-up chega a ser completamente inviável, ao nivel do ridiculo… (experimentem com um modem de 56k ou menos, descarregarem . de dezenas ou centenas de megabytes, com suas respectivas dependencias…))

A solução que encontrei: já que o (ou o apt-get) funciona sobre uma base de dados, que pressupostamente deva ser de um formato simples (do genero txt), e que se o reconhece CDs e ftps mais ou menos da mesma forma, parti do principio que se encontram organizados de forma similar.

No install CD do 6.06 (o alternate .iso que cravei da pagina do ) encontrei os seguintes ficheiros em /media/cdrom/:
dists//main/binary-i386/Packages.gz
dists//restricted/binary-i386/Packages.gz
(estou a citar o exemplo do i386 - amd64 ou ppc deve ser qualquer coisa semelhante)

O cd não tem as pastas universe e multiverse, mas estas normalmente existem nos repositorios ftp

Procurei um mirror qualquer, e encontrei os ficheiros (escolhi o .bz2 por estarem mais comprimidos, acho que tambem se encontram sem sufixo (descomprimidos, são .txt puros), ou comprimidos em formato .gz)

- http://.secs.oakland.edu/dists//main/binary-i386/Packages.bz2 (605kb)
- http://.secs.oakland.edu/dists//universe/binary-i386/Packages.bz2 (2.3mb)
- http://.secs.oakland.edu/dists//multiverse/binary-i386/Packages.bz2 (93kb)
- http://.secs.oakland.edu/dists//restricted/binary-i386/Packages.bz2 (4.5kb)
(estes são de binarios i386 - os amd64 e ppc tambem devem andar por aí algures…)

E então descomprimi e renomeei cada ficheiro:
- packages_main.txt
- packages_universe.txt
- packages_multiverse.txt
- packages_restricted.txt

Para juntar estes 4 txt num só podemos utilizar o seguinte script:
juntar.sh:
#!/bin/sh

cat packages_main.txt > packages_dapper.txt
cat packages_universe.txt >> packages_dapper.txt
cat packages_multiverse.txt >> packages_dapper.txt
cat packages_restricted.txt >> packages_dapper.txt
E na consola, no directorio onde estiver este script e os 4 .txt citados acima, entramos:

bash ./juntar.shE confirmem se aparece um ficheiro chamado packages_dapper.txt de quase 17mb, já que é este o ficheiro que deve ser criado

—(
Só para curiosidade, para quem vem do dos/windows, o script acima é equivalente ao .bat (tentei copiar da forma mais parecida para verem mais claramente as diferenças):
juntar.bat:

copy packages_main.txt packages_dapper.txt
copy /b packages_dapper.txt + packages_universe.txt
copy /b packages_dapper.txt + packages_multiverse.txt
copy /b packages_dapper.txt + packages_restricted.txt
(nota: acho que o .bat acima só funciona em dos/windows - em , o
comando copy é capaz de mostrar qualquer coisa como: ‘bash: copy: command
not found’)
(tanto um script como o outro pode-vos fazer jeito para juntarem fragmentos
de ficheiros em outras situações, é uma questão de verem como funcionam)
(quanto ao .bat, o utilitario para windows MasterSpliter gera por opção um
.bat semelhante)
)—a vantagem deste ficheiro .txt, mesmo tendo esses quase 17mb, é que assim como fazemos search no e temos acesso a todas as informações da base de dados, como descrição e dependencias, tambem então poderemos fazer com um simples editor de txt como o Gedit… (e quem diz Gedit diz Notepad (que pode crashar, devido ao tamanho do ficheiro), Editpad, etc.)

E também é incrivel de como só pelo facto de termos alguma curiosidade em ir lendo este documento, ficamos a conhecer programas que de outra forma dificilmente conheceríamos, pelo menos tantos programas em tão curto espaço de tempo…

Proxima tarefa: extrair só os urls de cada ., tendo todos estes urls num só txt.
Lendo o ficheiro packages_dapper.txt ou outro qualquer, todos os campos da base de dados dos . tem sempre a mesma estructura:

- :
- Priority:
- Section:
- Installed-Size:
- Maintainer:
- Architecture:
- Source:
- Version:
- Depends:
- Filename:
- Size:
- MD5sum:
- Description:
- Bugs:
- Origin:

Bem, como só precisei do que estava em ‘Filename:’, fiz o seguinte scriptzinho abaixo:

AptPackageFilenameExtractor.py:

#! /usr/bin/python
# -*- coding: latin-1 -*-
#- usage: 'python AptPackageFilenameExtractor.py .txt > result.txt'
import os,sys
finp_st=sys.argv[1];finp_fl=open(finp_st,”r”)
while True:
text_st=finp_fl.readline()
if len(text_st)==0:break
text_st=text_st.replace(”n”,”")
if text_st[:9]==”Filename:”:
print text_st
finp_fl.close()
(o tamanho e simplicidade deste script pode ser encorajador para aqueles que queiram aprender python! ;-) )
(para quem tiver curiosidade ou necessidade, tenho mais scripts em http://nitrofurano.linuxkafe.com/python )E na consola, no directorio da pasta onde escrevi este script, entrei:

python AptPackageFilenameExtractor.py packages_dapper.txt > packages_dapper_urls.txtE o resultado (packages_dapper_urls.txt) fica com cerca de 1.7mb
E por fim, uso o replace (ctrl+h) do Gedit para substituir ‘Filename: pool/’ para, por exemplo, ‘http://.secs.oakland.edu/pool/’ (este ultimo poderia ser tb um mirror à escolha (ver fim desta mensagem), desde que acabe com ‘/pool/’ (no caso dos mirrors abaixo, ‘/pool/’ teria de ser adicionado após o url - pode fazer jeito vasculhar pelo Firefox os directorios para se perceber como estão organizados))

Ou seja, as linhas da seguinte forma:
Filename: pool/main/i/inkscape/inkscape_0.43-4ubuntu3_i386.
ficaram assim:
http://.secs.oakland.edu/pool/main/i/inkscape/inkscape_0.43-4ubuntu3_i386.

Agora, é só uma questão de vermos quais . queremos, e fazemos uma lista de download (a maioria dos minimamente bons download-managers permite importar .txt com lista de url (para w32 existe DownloadAccelerator, FlashGet, etc. - para acho que o WebDownloaderForX também o faz))

Tendo esta lista pronta, mas se não quisermos procurar e copiar a mão os urls que queremos (como quando precisamos descarregar mais de 100 pacotes, como costuma acontecer comigo), podemos usar um script para obtermos a mesma lista automaticamente.

Para extrairmos desta lista gerada de ficheiros . só aqueles que desejamos, fazemos uma lista como:

lista.txt:

libforms1
libkdeedu3
libforms1
libffcall1-dev
Importante é certificarmos de que cada linha de texto tem só o nome de cada pacote desejado, e que não há nenhum espaço depois, ou linhas em branco antes, entre ou depois das que tem esses nomes (afinal o código abaixo é demasiado simples para dar a volta a estas situações)

E o script abaixo é o que vai fazer toda a triagem da lista com todos os urls do para a lista de urls final desejada, baseada no ficheiro lista.txt acima:

synapticlistextractor.py:
#! /usr/bin/python
# -*- coding: latin-1 -*-
#- List Extractor - 0611261234 - Paulo Silva - GPL licence
#- usage: python synapticlistextractor.py list.txt urlswholesynaptic.txt > final.txt
import os,sys
finp1_st=sys.argv[1];finp1_fl=open(finp1_st,”r”);finp2_st=sys.argv[2]
while True:
text1_st=finp1_fl.readline()
if len(text1_st)==0:break
text1_st=text1_st.replace(”r”,”")
text1_st=text1_st.replace(”n”,”")
finp2_fl=open(finp2_st,”r”)
while True:
text2_st=finp2_fl.readline()
if len(text2_st)==0:break
text1_st=text1_st.replace(”r”,”")
text2_st=text2_st.replace(”n”,”")
if text2_st.find(”/”+text1_st+”_”)>-1:print text2_st;break
finp2_fl.close()
finp1_fl.close()

Teremos então numa pasta os 3 documentos necessarios: o script acima, a lista desejada, e a lista com todos os urls do , e rodamos pela consola, no mesmo directorio da pasta, com:
python synapticlistextractor.py lista.txt urlswholesynaptic.txt > listafinal.txt
E pressupostamente teremos o ficheiro listafinal.txt, bastante semelhante à lista de wget gerada pelo .
Só encontrei um porém: acaba sempre faltando um ou outro . no , mesmo o oficial do , mesmo que estes estejam listados no , como o caso do UAE (emulador de Amiga) ou Quake (devem haver mais . a faltar) - o que tenho encontrado todos os . que dei pela falta encontrei no mirror http://ftp.interlegis.gov.br/pub//archive
Ao trazer os . de volta para o , tendo estes . todos dentro de uma pasta, pela consola acedemos a esta pasta, fiz:

sudo dpkg -i *.

E deixei andar…

Ao acabar tudo, pelo , vi que alguns . foram instalados, mas outros ficaram deram por falta algumas depencencias (os nomes em oblíquo), e lá fui eu listar num txt todos os nomes destes . que faltam, e fui procurando cada um no ficheiro packages_dapper_urls.txt - e com a lista pronta, mais um download dos . que faltam, e por aí consecutivamente…
Mas também há a hipotese de descarregarmos todos os . de packages_dapper_urls.txt , e tudo junto deve ocupar a volta de 12gb (muito alem do limite mensal de muitos provedores de internet nacionais) - mas a vantagem é que praticamente deixa de ser necessario o acesso do a mirrors ftp (excluindo os updates, claro…), para alem de sempre podermos ter à mão todos esses . em 3 dvds dos simples.
Bem, isto tudo pode parecer tarefa de loucos, principalmente no ponto de vista dos novatos, mas acaba sempre sendo melhor este procedimento a nenhum…
A vantagem é que acabei por ter uma pasta com mais de 1gb de . , os quais não vou ter de descarregar outra vez, na eventualidade de ter de reinstalar o (situações como troca de disco, alguma perda de estabilidade por alguma má configuração que eu não consiga dar a volta, utilização desastrosa em modo root ou superutilizador, ou afins…) - de certeza pode fazer muito jeito a muita gente, principalmente com a internet que temos por cá.
Bem, o que falta mesmo à pasta de . é um ficheiro que pudesse ser reconhecido pelo , e a partir desta pasta ou de parecidas, podermos criar os nossos proprios CDs de , que não só bastaria usar só o e deixar de usar o ’sudo dpkg -i *.’ na consola (se alguem souber como se faz apt para gerar o ficheiro ‘packages’, que seja reconhecido pelo …), como esses CDs podem então passar de computador para computador, funcionar como se fosse um cd de extras, que andaria sempre junto com o CD de do para qualquer eventualidade de termos de reinstalar o , ou de copiar estes cds e/ou instala-los em computadores de amigos e afins, em computadores que porventura comprariamos depois de o termos instalado no computador ‘antigo’, etc…
Sei tambem que o (pelo menos o que vem no 6.06) tem o Menu->File->GeneratePackageDownloadScript e o Menu->File->AddDownloadedPackages, mas o problema é que o segundo só funciona depois de ter sido feito o primeiro, para não falar que temos de ter no os packages destes mirrors, coisa de que não faço a minima ideia de como se faz, muito menos de como se edita e que ficheiro é que é lido pelo AddDownloadedPackages (com alguma sorte pode ser um xml algures?) - tenho me comunicado por mail com os autores do , mas alguma coisa me diz que não vai ser nada em breve que eles tenham resolvido esta situação… (e os meus limitados conhecimentos de programação e de como funcionam o ou Apt-get de certeza estão muito aquem daquilo que poderia ser util para eu poder ajudar-lhes…)
———-

apendice: Quanto a mirrors, no site packages do encontrei estes:
South America:

http://ftp.interlegis.gov.br/pub//archive

http://.c3sl.ufpr.br

North America:

http://ftp.cs.umn.edu/pub/

http://mirror.clarkson.edu/pub/distributions/

http://.mirrors.tds.net/

http://itanix.rutgers.edu/

http://www.opensourcemirrors.org/

http://ftp.ale.org/pub/mirrors/

http://.secs.oakland.edu

Asia:

http://archive..org.cn/

http://komo.vlsm.org/

http://kambing.vlsm.org/

http://.csie.ntu.edu.tw/

http://mirror.isp.net.au/ftp/pub/

http://www.planetmirror.com/pub/

Europe:

http://archive..com/

http://.inode.at/

http://.uni-klu.ac.at/

http://gd.tuwien.ac.at/opsys///archive

http://ftp.belnet.be/pub/mirror/.com

http://mirror.freax.be//archive..com

http://archive..cz/

http://mirrors.dk.telia.net/

http://mirrors.dotsrc.org/

http://mir1.ovh.net//

http://ftp.inf.tu-dresden.de/os//dists/

http://www.artfiles.org/.com/archive

http://ftp.rz.tu-bs.de/pub/mirror/-packages

http://ftp.join.uni-muenster.de/pub/mirrors/ftp..com/

http://ftp.kfki.hu//

http://.odg.cc

http://ftp.esat.net/mirrors/archive..com

http://ftp.heanet.ie/pub/

http://na.mirror.garr.it/mirrors/-archive

http://ftp.litnet.lt/pub/

http://.synssans.nl

http://ubuntulinux.mainseek.com/

http://ftp.acc.umu.se/mirror/

http://mirror.switch.ch/ftp/mirror/

http://www.mirrorservice.org/sites/archive..com/
Importante: Este artigo é destinado a de . comuns, como os de aplicações, jogos, bibliotecas, temas, tipos de letra, documentação, exemplos, plugins, etc. - quanto aos . que possam afectar/alterar a configuração do sistema operativo (a ponto do ter de ser reinstalado, como já me aconteceu algumas vezes…), como . de kernel, xorg, grub/lilo, etc., ou que necessitem de configurações em especial, deve se ter obviamente o respectivo cuidado, do genero evitar fazer ’sudo dpkg -i *.’ numa pasta onde esses . estejam presentes (do genero uma pasta onde estão todos os 12gb de . do ftp do , ou todos os 650mb de . do cd installer alternate, ou todos os 3gb de . do dvd ) - resumindo, é importante de que tenhamos uma ideia a principio do tipo de ficheiros . que estamos a instalar.

Autor: Nitrofurano

Partilhar :
  • Digg
  • TwitThis
  • Technorati
  • del.icio.us
  • Facebook
  • StumbleUpon
  • Google
  • Slashdot
  • Mixx
  • BarraPunto
  • blogmarks Como usar o Synaptic (do Ubuntu) offline.
  • Pownce
  • Blogsvine
  • LinkedIn
  • Live
  • Ma.gnolia
  • NewsVine
  • Rec6
  • Furl
  • Reddit
  • Sphinn
  • Propeller
  • Spurl
  • YahooMyWeb
  • De.lirio.us
  • description
  • Sapo Links
  • DoMelhor
  • Fixolas
  • E-mail this story to a friend!
  • Print this article!

Relacionados

Trackback | RSS dos comentários

Comentar