<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.3.2" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>andrelop's blog &#187; dpkgshlibdeps</title>
	<link>http://www.andrelop.org/blog</link>
	<description>andrelop's personal weblog</description>
	<pubDate>Wed, 07 May 2008 17:57:16 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.2</generator>
	<language>en</language>
			<item>
		<title>Idéias malucas e suas aplicações práticas úteis</title>
		<link>http://www.andrelop.org/blog/2006/10/01/ideias-malucas-e-suas-aplicacoes-praticas-uteis/</link>
		<comments>http://www.andrelop.org/blog/2006/10/01/ideias-malucas-e-suas-aplicacoes-praticas-uteis/#comments</comments>
		<pubDate>Sun, 01 Oct 2006 01:17:38 +0000</pubDate>
		<dc:creator>andrelop</dc:creator>
		
		<category><![CDATA[DebianBR]]></category>

		<category><![CDATA[Portuguese]]></category>

		<category><![CDATA[dpkgshlibdeps]]></category>

		<category><![CDATA[tech]]></category>

		<category><![CDATA[wackyideas]]></category>

		<guid isPermaLink="false">http://www.andrelop.org/blog/2006/10/01/ideias-malucas-e-suas-aplicacoes-praticas-uteis/</guid>
		<description><![CDATA[Dia desses estava eu contente lendo o Planet Debian e me deparei com uma série de artigos entitulados &#8220;Wacky ideas&#8220;, onde o autor, o desenvolvedor Debian Simon Richter, tornava públicas algumas de suas idéias, mas todas com alguma plausibilidade de aplicação real.
Me interessei especialmente pela idéia número 4, chamada pelo autor de &#8220;using symbol versioning [...]]]></description>
			<content:encoded><![CDATA[<p>Dia desses estava eu contente lendo o <a href="http://planet.debian.org/">Planet Debian</a> e me deparei com uma série de artigos entitulados &#8220;<em>Wacky ideas</em>&#8220;, onde o autor, o desenvolvedor Debian <strong>Simon Richter</strong>, tornava públicas algumas de suas idéias, mas todas com alguma plausibilidade de aplicação real.</p>
<p>Me interessei especialmente pela idéia número 4, chamada pelo autor de &#8220;<a href="http://www.hogyros.de/?q=node/176"><em>using symbol versioning information in dpkg-shlibdeps</em></a>&#8220;, ou, abrasileirando, &#8220;utilizando informações de versionamento de símbolos no dpkg-shlibdeps&#8221;. Com a leitura da idéia básica percebi que tratava-se de algo realmente interessante e poderia ajudar versões novas de softwares empacotados serem instaladas em versõe antigas do Debian sem precisar de backport algum, mas queria confirmar minha suspeita.</p>
<p>Enviei um e-mail ao autor do post, perguntando se o mesmo tinha mais alguma informação sobre o assunto ou alguma referência sobre o mesmo para me indicar. Ele respondeu e deu uma explicação rápida sobre o assunto, em inglês, mas vou traduzí-la abaixo e espero não fazer feio :</p>
<blockquote><p>Olá,</p>
<p>Você perguntou sobre a idéia &#8220;utilizando informações de versionamento de símbolos no dpkg-sh libdeps&#8221;.</p>
<p>Bom, eu acho que você já está familiar com o gerenciamento atual, que é obter uma lista de bibliotecas referenciadas de objetos em um pacote executando-se objdump no mesmo, extraíndo as entradas NEEDED e procurando nos arquivos shlibs que estão instalados (e também aqueles do pacote atual).</p>
<p>Até agora, se você referencia libc.so.6, o mecanismo shlibs procura por uma entrada na forma</p>
<p>&#8220;libc 6 &#8230;&#8221;</p>
<p>e insere a parte &#8220;&#8230;&#8221; na variável &#8220;shlibs:Depends&#8221; para o pacote.</p>
<p>Versões de símbolos por sua vez permitem que uma biblioteca declare que existem diversas versões de um símbolo e qualquer coisa que se lige contra o mesmo especifique a qual versão se referem. Normalmente, essas versões são obtidas no contexto de toda a biblioteca. Por exemplo, a glibc possui versões para releases maiores (major) e menores (minor) (GLIBC_2_0, GLIBC_2_1 e assim por diante). Caso um símbolo não mude, você não precisa mudar a informação de versionamento também quando lançando uma nova versão de um pacote. Na verdade, a maioria dos símbolos possuem uma versão bastante antiga anexada aos mesmos.</p>
<p>Todos os binários que foram ligados contra a glibc desde a introdução de versões de símbolos possuem uma lista de quais símbolos são necessários (isso é basicamente um atalho para que o ligador (linker) possa decidir procurar nas versões dos símbolos para saber se todos os símbolos necessários estão presentes) de cada biblioteca.</p>
<p>Agora, o que o formorer está implementando é uma maneira de especificar, por exemplo</p>
<p>GLIBC_2_0: libc 6 libc6 (>= 2.0.0)<br />
GLIBC_2_1: libc 6 libc6 (>= 2.1.0)</p>
<p>e assim por diante. Esse formato é compatível com as ferramentas atuais (essas entradas são então ignoradas). Nós geramos uma lista de dependências que precisamos para mesclar para a mais estrita. Caso um binário dependa dos símbolos GLIBC_2_0 e GLIBC_2_1, o resultado seria &#8220;libc6 (>= 2.1.0)&#8221;, que é uma versão bem antiga. Os binários serão executados normalmente, uma vez que eles não precisam de nada novo, portanto, a especificação de dependência está correta.</p>
<p>O resultado final é que binários compilados dessa forma não precisarão ser backportados, uma vez que eles já podem ser instalados sem problemas em releases mais antigos.</p>
<p>Caso você tenha mais perguntas, pergunte.</p>
<p>Simon</p></blockquote>
<p>Entenderam a idéia ? Se isso realmente funcionar, esqueça o trabalho que sempre temos ao precisar recompilar pacotes mais novos em um release antigo somente para que as versões corretas sejam substituídas corretamente em &#8220;<em>shlibs:Depends</em>&#8220;.</p>
<p>Como ele exemplificou, o caso da glibc é clássico. Eu mesmo já cansei de me deparar com casos em que eu precisava de uma versão mais nova de um software já empacotada na unstable e só não consegui simplesmente pegar o pacote da unstable e simplesmente instalá-lo na stable porque as informações de dependência estavam infladas, visto que o pacote havia sido gerado em um ambiente de compilação unstable.<br />
Com o sistema de shlibs realmente indo a fundo e cavando exatamente qual versão de cada símbolo é necessária, as chances de podermos utilizar pacotes Debian feitos para um release (entenda-se distribuição, nesse caso) mais novo em um release mais antigo são bastante altas.</p>
<p>Isso iria diminuir muito o trabalho do pessoal do <a href="http://www.backports.org/">backports.org</a>, por exemplo, e facilitar a vida de muitos administradores de sistema. Ah ! E sabe o <em>formorer</em> que ele citou ? É mais um desenvolvedor Debian, <strong>Alexander Wirt</strong>, que, segundo ele, já está trabalhando em uma reescrita do dpkg-shlibdeps que vai trazer essa nova funcionalidade ao utilitário.</p>
<p>Ok, isso seria um bom banho de água fria diretamente na cabeça daqueles que dizem que o Debian não inova. Talvez não tenhamos as versões mais novas de todos os softwares sempre (mas mesmo isso é questionável), mas mudanças profundas e realmente úteis como essas são uma prova de que o Debian está interessado em fazer as coisas da forma correta e não criar retalhos.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andrelop.org/blog/2006/10/01/ideias-malucas-e-suas-aplicacoes-praticas-uteis/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
