[FUG-BR] Update ports

Renato Botelho rbgarga em gmail.com
Quarta Novembro 19 14:39:41 BRST 2014


> On Nov 19, 2014, at 14:29, Márcio Luciano Donada <mdonada at gmail.com> wrote:
> 
> Senhores,
> como o cvs já não é mais suporte, estou usando o portsnap para atualizar o
> ports, até ai tudo ok. Quando aos pacotes, utilizava o pkg_version -vL=
> para reportar o que deveria ser atualizado e sempre utiliza também o
> portaudit -F para acompanhar os boletins de segurança.
> 
> O problema agora é que com o pkg version eu consigo saber também o que é
> necessário atualizar, porém o meu problema ainda é as atualizações de
> pacotes. Em alguns casos, como por exemplo o ejabberd, aplico um patch no
> mesmo, antes de compilar, então o que eu fazia era:
> 
> # make extract
> aplicava o devido patch, roda um make
> 
> e posterior um portupgrade -fw no ejabberd que apenas realizava a
> instalação. Essa documentação não consegui localizar, ou até mesmo para dar
> um simples update em um pacote instalado, mas isso é um exemplo, pois em
> muitos casos você acaba aplicando algum patch ou outro em algum pacote.
> Alguém pode me passar uma doc que não seja essa [1] do handbook?
> 
> [1]. https://www.freebsd.org/doc/handbook/pkgng-intro.html

Oi Márcio,

Existem várias maneiras de fazer o que você precisa, vou tentar colocar umas ideias e você vê se te atende.

Agora antes de começar vale a pena perguntar uma coisa, esse patch que você aplica no ejabberd, é algo muito específico? Não é algo que pode ser útil pra outras pessoas? Se for, você poderia tentar convencer o mantenedor a colocar o seu patch no port do ejabberd, e assim você se veria livre da obrigação de manter um pacote custom.

Dito isso, vamos ao que interessa. A estrutura de compilação de um port não mudou, então o ‘make extract’ seguido de um patch custom pode ser feito normalmente. O parâmetro -w do portupgrade faz com que ele não execute um ‘make clean’ antes de começar a compilar, o que vai fazer com que seu patch continue lá antes de a compilação acontecer. Então teoricamente isso deveria continuar funcionando.

O pkg fornece uma ferramenta que pode te ajudar a não ter o ejabberd atualizado por engano e seu patch perdido, é o lock/unlock, então se você fizer ‘pkg lock ejabberd’ ele nunca vai ser removido ou atualizado em nenhum processo automático. Aí você faz um ‘pkg unlock ejabberd’ quando for mexer nele.

Com o csup você podia deixar o seu patch lá dentro do pacote do ejbberd, em files/patch-CUSTOM, e ele era sempre aplicado automaticamente, isso com portsnap não vai rolar, ele vai apagar. Então se você quer manter o seu port sempre com o patch pronto, você pode fazer um checkout da árvore do ports usando svn (svn co http://svn.freebsd.org/ports/head /usr/ports) e usar ‘svn up’ pra trazer novos updates, a única perda nesse caso é que o INDEX não será atualizado automaticamente, então um ‘make index’ vai ter que ser executado toda vez que atualizar a árvore.

Com o auxílio do pkg lock/unlock, dependendo da sua necessidade, você pode usar tudo com pkg e atualizar de forma binária, exceto o ejabberd.

[]s
--
Renato Botelho



Mais detalhes sobre a lista de discussão freebsd