> On Nov 19, 2014, at 14:29, Márcio Luciano Donada <mdon...@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

-------------------------
Histórico: http://www.fug.com.br/historico/html/freebsd/
Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd

Responder a