<?xml version="1.0" encoding="UTF-8"?>
<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/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Guax &#187; pacotes</title>
	<atom:link href="http://www.guax.net/tag/pacotes/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.guax.net/blog</link>
	<description>“…is like having your brains smashed out by a slice of lemon wrapped round a large gold brick.”</description>
	<lastBuildDate>Sun, 22 May 2011 14:22:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>Pacotes Debian Por Um Mano Do Slackware</title>
		<link>http://www.guax.net/blog/2010/05/pacotes-debian-por-um-mano-do-slackware-2/</link>
		<comments>http://www.guax.net/blog/2010/05/pacotes-debian-por-um-mano-do-slackware-2/#comments</comments>
		<pubDate>Mon, 24 May 2010 14:22:15 +0000</pubDate>
		<dc:creator>guax</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[empacotamento]]></category>
		<category><![CDATA[pacotes]]></category>
		<category><![CDATA[slackware]]></category>

		<guid isPermaLink="false">http://www.guax.net/?p=360</guid>
		<description><![CDATA[Primeiro vamos aos esclarecimentos para tentar evitar qualquer flame. Sou usuário de Slackware ha 6 anos mais ou menos mas faz 2 anos que convivo diariamente com Debian. Esse ensaio sobre os pacotes desta última distro é feito em cima da minha experiência com as duas e não representa qualquer tipo de preconceito com a [...]]]></description>
			<content:encoded><![CDATA[<p>Primeiro vamos aos esclarecimentos para <del>tentar</del> evitar qualquer flame. Sou usuário de <a href="http://www.slackware.com/">Slackware</a> ha 6 anos mais ou menos mas faz 2 anos que convivo diariamente com <a href="http://www.debian.org/">Debian</a>. Esse ensaio sobre os pacotes desta última distro é feito em cima da minha experiência com as duas e não representa qualquer tipo de preconceito com a distro. Espero que leiam até o final antes de comentar ou expressar uma opinião mais acalorada. Agora vamos ao que interessa.</p>
<h2>Estrutura Do Pacote</h2>
<p>A estrutura de um <a href="http://wiki.debian.org/DebianPackage">pacote .deb</a> pronto é simples e não tem nada complexo. E um <a href="http://slackwiki.org/Building_A_Package">pacote do Slackware</a> não fica atrás. A diferença principal é que os dados do software estão em um tar separado dos arquivos que fazem o controle da instalação. Não são muitos arquivos e em resumo o principal de um pacote .deb é:</p>
<dl>
<dt>debian-binary</dt>
<dd>Arquivo de texto com a versão do binário do pacote.</dd>
<dt>control.tar.gz</dt>
<dd>Meta informação do pacote. Dependências e coisas do tipo.</dd>
<dt>data.tar ou data.tar.gz ou data.tar.bz2 ou ainda data.tar.lzma</dt>
<dd>O diretório que contém os arquivos do programa a ser instalado.</dd>
</dl>
<p>Tudo isso comprimido em um pacote ar. Acho que é o mínimo e o máximo necessário para um controle de pacotes com dependencias como no Debian.</p>
<p>No Slackware a estrutura é semelhante mas é basicamente um pacote tar gzip, bzip ou xz que representa o mesmo que o data.tar no pacote Debian, mas com um sub-diretório install onde estão os arquivos de controle da instalação.</p>
<h2>Geração do Pacote e a Aberração <cite>Debianization</cite></h2>
<p>Ok, aqui o bixo pega. Então vou fazer em forma de comparativo entre Slackware e Debian.</p>
<h3>No Slackware</h3>
<div id="attachment_364" class="wp-caption aligncenter" style="width: 580px"><a href="http://www.guax.net/wp-content/uploads/2010/05/slackware.png"><img class="size-full wp-image-364" title="slackware" src="http://www.guax.net/wp-content/uploads/2010/05/slackware.png" alt="" width="570" height="150" /></a><p class="wp-caption-text">É nois que voa bruxão</p></div>
<p>A geração de pacotes no Slackware é feita usando preferivelmente um script em shell para automatização da compilação e empacotamento chamado SlackBuild Script, é um shell script perfeitamente normal que qualquer pessoa com o mínimo de experiência no mesmo consegue dar manutenção. Em geral o que o slackbuild faz pode ser divido em duas fases:</p>
<ol>
<li>Compilação e instalação do pacote em um diretório temporário</li>
<li>Geração do pacote com o facilitador makepkg</li>
</ol>
<p>A primeira fase é feita usando as ferramentas disponíveis pela aplicação. Pode ser autoconf, ant ou qualquer build system. Até mesmo um chroot se faz necessário em alguns casos. A segunda parte é a normalização do pacote que consiste em compactação de man pages, strip de shared libraries, a inclusão do próprio build script como doc e dos arquivos para o diretório install/ e por fim a compactação do diretório e criação do t?z.</p>
<p>É importante ressaltar que nos pacotes Slackware o código fonte original não é mexido e sequer distribuido junto com os SlackBuilds na maioria dos casos. Alguns casos existem onde patches são necessários para que o pacote funcione corretamente mas estes são aconselhados somente se o programa não puder funcionar sem este ou isso representar um risco grave de segurança e estabilidade. A politica pura e simples é: <strong>Desenvolvimento é papel dos desenvolvedores e não dos empacotadores</strong>.</p>
<h3>No Debian</h3>
<div id="attachment_365" class="wp-caption aligncenter" style="width: 580px"><a href="http://www.guax.net/wp-content/uploads/2010/05/debian.png"><img class="size-full wp-image-365" title="debian" src="http://www.guax.net/wp-content/uploads/2010/05/debian.png" alt="" width="570" height="150" /></a><p class="wp-caption-text">Coididoido esse debian.</p></div>
<p>O documento de política de desenvolvimento do Debian é um monstro de 10 sessões com mais 10 sub-sessões cada e 7 anexos. Recomendo a leitura se quiser confirmar o que eu digo aqui. Vou resumir a forma de criação padrão de pacotes.</p>
<p>A mudança na forma de pensar já começa na nomenclatura do indivíduo que empacota. No Slackware é um empacotador. No Debian é um desenvolvedor.</p>
<p>Primeiro salva-se o código fonte original em um .orig e então pode se começar a <a href="http://www.debian.org/doc/maint-guide/ch-first.en.html#s-dh_make">Debianização</a> do aplicativo. Um pacote é feito geralmente usando de 2 a 4 aplicativos facilitadores e geralmente o autoconf é o responsável pela geração do pacote. Tudo isso fica dentro do código fonte em um diretório debian/. A estrutura é complexa e é necessário um longo periodo e leitura da documentação para a compreensão do sistema de empacotamento e criação de um pacote seguindo todas as guidelines.</p>
<p>Na documentação em vários trechos é recomendado a edição do código fonte original para debianização do aplicativo. O que ao meu ver só maximiza as possibilidades de problema como aquele infame warning no openssl que foi silenciado por um Debian desenvolver e fez com que as chaves de milhares de servidores fossem geradas de forma previsível.</p>
<p>Também há uma preocupação grande mas parcialmente justificável de separar os cabeçalhos de bibliotecas em pacotes adicionais e usar a mesma estrutura para gerar mais de um pacote elevando a complexidade do sistema.</p>
<h3>Pensamentos Finais</h3>
<p>Não muitos, eu não gosto desse sistema e as guidelines do Debian são uma aberração pra mim. Vou tentar criar um DebBuild script para gerar pacotes Debian no estilo Slackware e posto aqui se o fizer.</p>
<p>Meu chefe certo dia falou que o sistema do Slackware dependia do &#8220;artista&#8221; e não era processual o suficiente. Mas lendo a guideline do Debian eu descobri que ele está errado nisso, pois a inversa é verdadeira. O sistema do Debian é justamente isso, um sistema com sub-sistemas e macro-sistemas usados para gerar coisas que no final das contas são simples, uma arquitetura digna de um arteiro e não artista.</p>
<h3>PS IMPORTANTE</h3>
<p>Eu falo aqui da forma de geração de pacotes recomendada e ensinada pelo documento abaixo. <strong>NÃO</strong> estou considerando outras formas, se existirem, de gerar pacotes Debian. Como por exemplo a utilização de um script sh ou CDBS.</p>
<h2>Referências</h2>
<p><a href="http://en.wikipedia.org/wiki/Deb_(file_format)">deb (file format)</a> From <a href="http://en.wikipedia.org/">Wikipedia, the free encyclopedia</a></p>
<p><a href="http://www.debian.org/doc/debian-policy/index.html">Debian Policy Manual</a> From <a href="http://www.debian.org/">Debian.org</a></p>
<p>PS.  gentil correção do caio:</p>
<p><!--StartFragment-->[11:39] &lt;<a href="#caio1982">caio1982</a>&gt; guax: debian-binary nao eh a versao do pacote, seu animal, eh a versao dos binarios do debian (.debs em geral distribuidos em &#8220;formato debian&#8221;, nao sao backward compatible pra sempre)</p>
<p>PS2. adição do caio: <a href="http://build-common.alioth.debian.org/cdbs-doc.html">http://build-common.alioth.debian.org/cdbs-doc.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.guax.net/blog/2010/05/pacotes-debian-por-um-mano-do-slackware-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

