View previous topic :: View next topic |
Author |
Message |
Vanquirius Retired Dev
Joined: 14 Jun 2002 Posts: 1297 Location: Ethereal plains
|
Posted: Sun Nov 21, 2004 9:02 pm Post subject: Reduzindo o tráfego de download em 75% ou mais |
|
|
Este tópico é uma tradução deste tópico, postado no Documentation, Tips & Tricks.
21/11/2004
---
Divulgação: o dynamic deltup server está em versão beta pública
Principalmente usários de modem e ISDN ou usuários que pagam pelo volume de tráfego em suas conexões de Internet irão gostar.
Alguns de vocês devem lembrar-se do deltup, um software para reduzir o tamanho de downloads, através da transferência somente da diferença do arquivo novo para o arquivo antigo. (Obrigado a John Whitney, que nos trouxe o deltup, e a Joshua P. MacDonald que escreveu o xdelta, que serviu como base.)
Infelizmente o deltup foi removido da árvore do Portage algumas semanas atrás, uma vez o número de arquivos delta tem sido pequeno e nenhum deles estava atualizado.
Agora, a situação mudou. Fico feliz de apresentar a vocês o "dynamic deltup server", e o script de downloads getdelta.sh.
O dynamic-deltup-server contém vários arquivos delta atualizados (*.dtu) em seu cache e, a grande notícia, ele cria arquivos dtu novos sob demanda.
Curioso o quanto de tráfego você pode economizar com este método de atualização?
Olhe estas estatísticas:
http://linux01.gwdg.de/~nlissne/
Aqui está como ele funciona:
Faça "emerge deltup" e instale um pequeno script escrito em bash como um wrapper de downloads em seu /etc/make.conf usando a variável FETCHCOMMAND.
Pronto.
Quando você fizer emerge de uma atualização para seus pacotes, o script examina seu DISTDIR se houver uma versão antiga do arquivo fonte e pede que o servidor de deltup providencie o arquivo dtu.
O servidor irá ou mandar o arquivo dtu pedido, ou irá colocá-lo em uma fila de espera e começará a criar o arquivo dtu para você (e outros que quiserem o mesmo arquivo que você).
Uma vez que o script de download obteve o arquivo dtu, ele automaticamente cria uma nova versão do arquivo. Se ele não conseguir obter o arquivo dtu por qualquer motivo, ele fará o download do arquivo inteiro como faria de maneira normal. Então, tudo acontece de maneira transparente para o Portage - não há necessidade de aprender novos comando e não há necessidade de intervenção adicional do usuário.
As funções do script de download podem ser configuradas através de algumas variáveis dentro do script - ou - para sua conveniência - você pode usar as mesmas variáveis em seu /etc/make.conf (prático se você atualizar o script depois e não quiser ajustar todas variáveis novamente). Você pode escolher a verbalidade do output, se o output deve ser colorido, quando dar timeout em um pedido de dtu, se você quer deletar a versão antiga do arquivo fonte após criar o arquivo novo e coisas deste tipo.
Então, por favor, olhe e edite o script e mude as variáveis para estar de acordo com suas necessidades antes de rodá-lo
Todas variáveis estão documentadas nele. Variáveis ajustadas em /etc/make.conf tem prioridade maior.
Espero que seja útil (de fato JÁ É útil para algumas pessoas)
Aproveitem!
blackpenguin (procurem-me no freenode para sugestões ou questões **ATUALIZAÇÃO**: Abri um canal chamado #dynamic-deltup-server para discussões e questões)
Se você está interessado em rodar outro servidor de dynamic-deltup-server (a idéia é uma rede de servidores de deltup que conhecem o cache dos outros) por favor contate-me. _________________ Hello. |
|
Back to top |
|
|
Vanquirius Retired Dev
Joined: 14 Jun 2002 Posts: 1297 Location: Ethereal plains
|
Posted: Sun Nov 21, 2004 9:20 pm Post subject: |
|
|
Instruções:
Use o Portage overlay para guardar os arquivos necessários. Adapte conforme necessário, estou presumindo que em seu /etc/make.conf você tem a seguinte variável: PORTDIR_OVERLAY="/usr/portage/local/".
1. Primeiro, vamos habilitar o uso de pacotes instáveis para o deltup e o getdelta.
Code: | mkdir /etc/portage
echo "app-portage/deltup ~x86" >> /etc/portage/package.keywords
echo "app-portage/getdelta ~x86" >> /etc/portage/package.keywords |
2. Segundo, iremos salvar a ebuild do deltup.
Code: | mkdir -p /usr/portage/local/app-portage/deltup/
cd /usr/portage/local/app-portage/deltup/
nano -w deltup-0.4.0.ebuild |
3. Adicione o conteúdo da ebuild:
Code: | # Copyright 1999-2004 Gentoo Technologies, Inc.
# Distributed under the terms of the GNU General Public License v2
# $Header: /home/cvsroot/gentoo-x86/app-portage/deltup/deltup-0.4.0.ebuild,v 1.5 2004/02/21 10:56:55 ferringb Exp $
S=${WORKDIR}/${P}
DESCRIPTION="Patch system for Gentoo sources. Retains MD5 codes"
HOMEPAGE="http://deltup.sourceforge.net"
SRC_URI="mirror://sourceforge/${PN}/${P}.tar.gz"
SLOT="0"
LICENSE="GPL-2"
KEYWORDS="~x86 ~ppc ~sparc"
DEPEND=">=dev-util/xdelta-1.1.3
>=app-arch/bzip2-1.0.0"
pkg_setup() {
echo
einfo ""
einfo "Please note that deltup will be removed from portage "
einfo "in the near future. Development on deltup has stopped, although "
einfo "patches are being generated in the interim until another distfile "
einfo "patching system is ready for testing."
einfo ""
einfo "further info will be available at "
einfo "http://www.gentoo.org/proj/en/glep/glep-0009.html"
einfo ""
echo -ne "\a" ; sleep 0.1 &>/dev/null ; sleep 0,1 &>/dev/null
echo -ne "\a" ; sleep 1
echo -ne "\a" ; sleep 0.1 &>/dev/null ; sleep 0,1 &>/dev/null
echo -ne "\a" ; sleep 1
sleep 3
}
src_install () {
make DESTDIR=${D} install || die
dodoc README ChangeLog GENTOO
doman deltup.1
} |
Alternativamente, a ebuild pode ser baixada aqui.
4. Salve, baixe os arquivos necessários e faça o digest:
Code: | emerge -f app-portage/deltup
ebuild deltup-0.4.0.ebuild digest |
5. Agora, fazendo o mesmo para o getdelta:
Code: | mkdir -p /usr/portage/local/app-portage/getdelta/
cd /usr/portage/local/app-portage/getdelta/
nano -w getdelta-0.6.4.ebuild |
6. Conteúdo da ebuild:
Code: | # Copyright 2004 Nicolai Lissner <nlissne@linux01.gwdg.de>
# Distributed under the terms of the GNU General Public License v2
#
# revisioned and enhanced by Torsten Veller <torsten@veller.net>
inherit eutils
DESCRIPTION="dynamic deltup client"
RESTRICT="nomirror"
HOMEPAGE="http://linux01.gwdg.de/~nlissne/"
SRC_URI="http://linux01.gwdg.de/~nlissne/${P}.tar.bz2"
SLOT="0"
IUSE=""
LICENSE="GPL-2"
KEYWORDS="~x86 ~ppc ~sparc"
DEPEND="sys-apps/grep"
RDEPEND="app-portage/deltup"
src_install () {
dobin ${WORKDIR}/getdelta.sh
}
pkg_postinst() {
if egrep -q "^[[:space:]]*FETCHCOMMAND=\"(/usr/bin/|)getdelta.sh" /etc/make.conf
then
einfo "You already configured getdelta.sh as your FETCHCOMMAND - good."
else
ewarn "Put"
ewarn "FETCHCOMMAND=\"/usr/bin/getdelta.sh \\\${URI}\""
ewarn "into your /etc/make.conf to make it work."
ebeep
fi
} |
Alternativamente, a ebuild pode ser baixada aqui.
7. Salve, baixe os arquivos necessários e faça o digest:
Code: | emerge -f app-portage/getdelta
ebuild getdelta-0.6.4.ebuild digest |
8. Agora vamos instalar os pacotes necessários:
Code: | emerge app-portage/deltup app-portage/getdelta |
9. Edite seu /etc/make.conf, adicionando/alterando a a seguinte variável:
Code: | FETCHCOMMAND="/usr/bin/getdelta.sh \${URI}" |
10. Pronto! O Portage fará uso do servidor dinâmico de deltup, economizando tempo e banda! _________________ Hello.
Last edited by Vanquirius on Mon Nov 22, 2004 8:35 pm; edited 1 time in total |
|
Back to top |
|
|
BlackFenix n00b
Joined: 10 Nov 2004 Posts: 11
|
Posted: Sun Nov 21, 2004 11:38 pm Post subject: |
|
|
As suas instruções de instalação estã bem melhores que as originais... valew |
|
Back to top |
|
|
fernandotcl Veteran
Joined: 20 Nov 2003 Posts: 1396 Location: Sao Paulo, Brazil
|
Posted: Mon Nov 22, 2004 12:19 am Post subject: |
|
|
A idéia é maravilhosa, mas funciona bem? _________________ RTFM! |
|
Back to top |
|
|
Vanquirius Retired Dev
Joined: 14 Jun 2002 Posts: 1297 Location: Ethereal plains
|
Posted: Mon Nov 22, 2004 1:23 am Post subject: |
|
|
Funciona bem, sim. Dá problemas com arquivos binários (dtu maior que arquivo original), tipo os drivers da nvidia. Fora isso, é uma mão na roda. _________________ Hello. |
|
Back to top |
|
|
To Veteran
Joined: 12 Apr 2003 Posts: 1145 Location: Coimbra, Portugal
|
Posted: Mon Nov 22, 2004 9:05 am Post subject: |
|
|
Isso aqui em Portugal é bem perciso...
Tó _________________
------------------------------------------------
Linux Gandalf 3.2.35-grsec
Gentoo Base System version 2.2
------------------------------------------------ |
|
Back to top |
|
|
klap n00b
Joined: 24 May 2004 Posts: 58
|
Posted: Mon Nov 22, 2004 12:25 pm Post subject: |
|
|
Gostei mesmo, agora que ano que vem vai cobrar 0,10 por mega baixado no speedy isso vai ser bem util. |
|
Back to top |
|
|
BlackFenix n00b
Joined: 10 Nov 2004 Posts: 11
|
Posted: Mon Nov 22, 2004 2:48 pm Post subject: |
|
|
Acho que faltou um detalhe. Eu tive q fazer isso para poder emergir:
Code: |
echo "app-portage/deltup ~x86" >> /etc/portage/package.keywords
echo "app-portage/getdelta ~x86" >> /etc/portage/package.keywords
|
|
|
Back to top |
|
|
Vanquirius Retired Dev
Joined: 14 Jun 2002 Posts: 1297 Location: Ethereal plains
|
Posted: Mon Nov 22, 2004 8:36 pm Post subject: |
|
|
Obrigado BlackFenix, adicionei às instruções... _________________ Hello. |
|
Back to top |
|
|
Kobal Guru
Joined: 12 Feb 2004 Posts: 323 Location: Brasil / Brazil / Brésil / Brasilien / el Brasil
|
Posted: Wed Nov 24, 2004 3:07 am Post subject: |
|
|
Sera que isso e a solucao pra quem usa discada ? |
|
Back to top |
|
|
Vanquirius Retired Dev
Joined: 14 Jun 2002 Posts: 1297 Location: Ethereal plains
|
Posted: Wed Nov 24, 2004 5:35 pm Post subject: |
|
|
Não sei se é "a" solução, é "uma" solução. _________________ Hello. |
|
Back to top |
|
|
Operador Nabla Apprentice
Joined: 06 Feb 2004 Posts: 176 Location: Salesópolis - SP - Brasil
|
Posted: Fri Nov 26, 2004 10:36 am Post subject: |
|
|
Depois de brigar com o getdelta.sh para conseguir baixar o dtu para gerar o pacote do Firefox 1.0 a partir do 1.0PR.1 (provavelmente devido a uma falha no algoritmo de detecção de pacotes na minha ${DISTDIR}: tive de me virar para fazer o download da dtu e aplicar o patch manualmente), estou começando a escrever o meu próprio wrapper para desempenhar as funções do getdelta.sh. No momento, estou interessado em implementar as seguintes características:
- Detectar pacotes existentes na ${DISTDIR} a partir das informações contidas nos ebuilds, em vez de aplicar máscaras no nome do arquivo para detectar diferenças;
- Para isso, optei por escrever o script em Python, para poder empregar diretamente as funções do Portage;
- Dar alguma solução para que este script funcione também no modo resume (a idéia que eu tive é fazer com que ele invoque os antigos ${FETCHCOMMAND} e ${RESUMECOMMAND} para baixar o arquivo inteiro, caso ele falhe em pegar o dtu; atualmente, o getdelta.sh baixa pacotes inteiros com o seu próprio comando ${FETCH} e não funciona no modo resume).
- Ser compatível com os arquivos de configuração do getdelta.sh.
Se for do interesse de alguém, posso informar meus progressos (e/ou disponibilizar o script, depois de pronto) aqui no fórum. Sugestões também são bem-vindas. |
|
Back to top |
|
|
seventhguardian Apprentice
Joined: 10 May 2004 Posts: 261 Location: Portugal
|
Posted: Wed Feb 02, 2005 12:50 pm Post subject: |
|
|
Boas!
Só uma questão: o sevidor do deltup é nacional ou internacional? (em portugal)
É que neste momento estou a usar servidores nacionais sempre que possivel. E como nunca chego sequer aos limites do trafego nacional, não tenho problemas com o método normal. Se o deltup usar trafego nacional, então as coisas melhoram. Se por outro lado usar internacional, não obrigado .. |
|
Back to top |
|
|
nafre Guru
Joined: 27 Dec 2003 Posts: 388
|
Posted: Thu Feb 03, 2005 4:11 pm Post subject: |
|
|
alguem poderia me deescrever como funciona este deltup
grato pela ajuda _________________ Nome- Felipe
Nick- Nafre
Idade- 25
Salvador - Bahia - Brasil |
|
Back to top |
|
|
fernandotcl Veteran
Joined: 20 Nov 2003 Posts: 1396 Location: Sao Paulo, Brazil
|
Posted: Thu Feb 03, 2005 4:27 pm Post subject: |
|
|
nafre wrote: | alguem poderia me deescrever como funciona este deltup |
vanquirius wrote: | deltup, um software para reduzir o tamanho de downloads, através da transferência somente da diferença do arquivo novo para o arquivo antigo. |
Em outras palavras, isso cria patches para sources em um repositório remoto, e você baixa esses patches e aplica automaticamente aos sources já existentes, e depois recompila.
Interpretação de texto... _________________ RTFM! |
|
Back to top |
|
|
nafre Guru
Joined: 27 Dec 2003 Posts: 388
|
Posted: Thu Feb 03, 2005 10:10 pm Post subject: |
|
|
opa infezlimente tenho que dizer que
[quote=vaunuirius]
deltup, um software para reduzir o tamanho de downloads, através da transferência somente da diferença do arquivo novo para o arquivo antigo.
[/quote]
isto fico confuso. nao explica bem como funciona o deltup. Mais pode deixar que ja entendi como he que funciona _________________ Nome- Felipe
Nick- Nafre
Idade- 25
Salvador - Bahia - Brasil |
|
Back to top |
|
|
Matheus Villela Apprentice
Joined: 25 Oct 2003 Posts: 263
|
Posted: Thu Feb 03, 2005 11:54 pm Post subject: |
|
|
Na verdade a descrição "patches pra sources" não é correta...
O "patch" que na verdade aqui é um DTU é semelhante IPS's(quem já se interessou por traduções de jogos de VG sabe do que se trata ). Esse DTU ao ser aplicado vai criar _exatamente_ o mesmo arquivo... com mesmo md5sum, isso não ocorre se você descompactar o arquivo, aplicar patch e recompactar de novo
Tanto é que DTU's do deltup funcionam também pra pacotes binários(Opera por exemplo) só que... a eficiência cai bastante, principalmente se o pacote tiver muito binário e pouca "data"(imagens e sons por exemplo), se for só binário provavelmente dá algo maior que 90% do arquivo pra baixar, provavelmente com algo perto dos 100% |
|
Back to top |
|
|
nafre Guru
Joined: 27 Dec 2003 Posts: 388
|
Posted: Tue Feb 08, 2005 9:06 pm Post subject: |
|
|
acho que ja entendi como isto funciona.
Um servidor ira baixar e procesar uma arquivo e depois enviar para sua box _________________ Nome- Felipe
Nick- Nafre
Idade- 25
Salvador - Bahia - Brasil |
|
Back to top |
|
|
alexandre_parente n00b
Joined: 29 Jun 2003 Posts: 37
|
Posted: Sun Feb 13, 2005 8:23 am Post subject: |
|
|
Qual a diferença entre deltup e xdelta?
O deltup é melhor ?quanto e porque?
O gentoo tem o xdelta em sua arvore e agora possui uma USE kdexdeltas , então acho que é totalmente viável uma USE xdelta ou deltup. |
|
Back to top |
|
|
fernandotcl Veteran
Joined: 20 Nov 2003 Posts: 1396 Location: Sao Paulo, Brazil
|
Posted: Mon Feb 14, 2005 4:46 pm Post subject: |
|
|
alexandre_parente wrote: | Qual a diferença entre deltup e xdelta? |
Pelo que eu entendi, o xdelta é o backend do deltup.
alexandre_parente wrote: | O gentoo tem o xdelta em sua arvore e agora possui uma USE kdexdeltas , então acho que é totalmente viável uma USE xdelta ou deltup. |
Eh? _________________ RTFM! |
|
Back to top |
|
|
Operador Nabla Apprentice
Joined: 06 Feb 2004 Posts: 176 Location: Salesópolis - SP - Brasil
|
Posted: Sun Feb 20, 2005 5:42 pm Post subject: |
|
|
Estou com a impressão de que o Dynamic Deltup Server está começando a ficar saturado (principalmente depois que um servidor FTP deixou de ser utilizado para baixar os dtus).
Antigamente, quase sempre eu encontrava os dtus de meu interesse prontos para download nos servidores e, nas raras ocasiões em que este não constava, o servidor atendia o meu pedido para gerar um dtu na hora.
Agora, grande parte dos dtus que eu quero não estão disponíveis para download e, para pedir que o servidor gere-os para mim, tenho que amargar na fila... |
|
Back to top |
|
|
Operador Nabla Apprentice
Joined: 06 Feb 2004 Posts: 176 Location: Salesópolis - SP - Brasil
|
Posted: Sun Feb 20, 2005 5:51 pm Post subject: |
|
|
No caso dos xdeltas do KDE, a coisa é um pouco trabalhosa. Você tem de:
- 1. Descompactar o arquivo <antigo>.tar.bz2, gerando o arquivo <antigo>.tar
- 2. Aplicar o patch xdelta no arquivo <antigo>.tar, gerando o arquivo <novo>.tar
- 3. Compactar o arquivo <novo>.tar, gerando finalmente o arquivo <novo>.tar.bz2, pronto para ser instalado pelo Portage.
|
|
Back to top |
|
|
|