Empacotamento Noosfero Procedimentos Page History


Procedimentos

  1. Clone o repositório aonde estão os specs do pacotes
  2. Para gerar os diretórios necessários para realizar o empacotamento entre no diretório do pacote em questão

    • rpmdev-setuptree. Isso criará um diretório chamado rpmbuild na home do usuário.
  3. Baixar repositório do upstream(source, ex: noosfero)

  4. Instale as dependências necessárias

  5. Gerar tarball(source) a partir de uma tag/branch

    • A partir de uma tag é possível criar um branch apenas com o código da tag. E a partir da ai aplicar códigos de outras branchs na branch da tag, aplicando apenas o que for necessário.
    • git tag (lista as tags)
    • mude para a branch da tag
    • git tag (lista as tags)
    • git checkout {nome da tag}
    • Para atualizar com um commit específico, use o comando git cherry-pick
    • Para mais informações: man git tag.
    • Para atualizar localmente a lista de tags do remote: git fetch --tags
  6. Para gerar a tarball

    • Altere a versão do pacote no arquivo .spec no repositório pkg-rpm e no respectivo projeto.
    • LEMBRE-SE QUE CASO O UPSTREAM MUDE, DEVEMOS ALTERAR A VERSÃO DO PACOTE E COLOCAR A RELEASE COMO 1(ZERAR A RELEASE).
    • CASO APENAS O PACOTE MUDE, A VERSÃO É MANTIDA E A RELEASE É INCREMENTADA.
    • No upstream: git archive --format=tar.gz --prefix={versao do pacote} > noosfero{versão do pacote}.tar.gz.
    • Ex: Se a versão ta tag for 1.2+spb1, então ficará: git archive --format=tar.gz --prefix=1.2+spb1/ {nome da tag} > noosfero-1.2+spb1.tar.gz.
    • Se o comando acima funcionar corretamente a tarball sera gerada no diretório em que o comando foi executado
    • Mova a tarball para o diretório SOURCES dentro de rpmbuild
  7. Gerando o pacote

    • Com as dependências instaladas no ambiente, os diretórios do rpmbuild criados, a versão do spec devidamente atualizada, e a tarball do upstream gerada rode o comando rpmbuild -ba .spec para gerar o pacote final;
    • Se o comando acima funcionar corretamente um pacote será gerado no diretório ~/rpmbuild/RPMS/noarch/
  8. Testando o pacote gerado usando a biblioteca mock

    • Para instalar no centos:
      sudo yum install epel-release
      sudo yum install mock
  9. É preciso instalar as dependencias do pacote que estamos testando, No caso do do noosfero ele depende dos pacotes tango-icon-theme e noosfero-deps. A maneira paleativa que encontramos para instalar as dependências, foi baixando os pacotes e através da flag --install do mock, instalar as dependencias dentro do chroot criado.

Você pode installar as dependencias para o pacote do noosfero colando a referencia do repositório do noosfero dentro do arquivo de configuração do epel-7:

  • vim /etc/mock/epel-7-x86_64.cfg
  • Colar o texto abaixo neste arquivo de configuração.

[isv_spb_v3]

name=Software Publico Brasileiro - release 3 (CentOS_7)

type=rpm-md

baseurl=http://download.opensuse.org/repositories/isv:/spb:/v3/CentOS_7/

gpgcheck=1

gpgkey=http://download.opensuse.org/repositories/isv:/spb:/v3/CentOS_7/repodata/repomd.xml.key

enabled=1

  • Utilizar o comando abaixo no arquivo .src.rpm que se quer testar
  • mock --rebuild --installdeps --no-clean *.src.rpm
  • mock --install [dependência]
  • Obs: Verificar se o mock permite a adição de repositórios, para que não seja necessário baixar a dependência na mão.
  • Após instalar as dependências, testaremos o pacote com o seguinte comando:
  • mock --rebuild --no-clean .src.rpm
  • Obs: A opção --no-clean impede que o chroot seja limpo antes da instalação, mantendo as dependências dentro do chroot.
  1. Para dar privilégio de administrador para um usuário: 1.Fazer login na Social 2.Ir para o diretório do noosfero em /usr/lib/noosfero 3.Abrir um console "sudo su noosfero -c "bundle exec rails c production"

    • Obs: Com o usuário criado de antemão use o comando "Environment.default.add_admin user.person", onde o user será o usuário desejado.
  2. Testando Pacote pelo Converge na Social

Para que alteração no pacote seja instalada pelo converge é necessário que o pacote atualizado esteja disponivel em um repositório .Dessa maneira alternativa utilizada implica em "subir" o pacote para o repositorio do fedora , Fedora copr(https://copr.fedoraproject.org/coprs/ribeiro/athos-spb/)

No copr o upload do pacote só é feito com um endereço com acesso externo.Assim , os arquivos gerados pelo build localmente devem ser colocados no diretório configurado com apache em uma vm com acesso externo.

Obs: passo a passo a seguir presume que o usuário já um usuário no COPR bem como um projeto chamado SPB já criado.

  • Criando um novo Build
    • Selecione o projeto "SPB"
    • Clique na aba new project
    • Coloque o endereço da vm com acesso externo
    • Feito isso o build será gerado ( pode demorar um pouco) , o próximo passo agora é adicionar o endereço do pacote no reposítório no repositório local do servidor SOCIAL.
    • Adicionando repositório no SERVIDOR SOCIAL
    • Ainda no repositório FEDORA copr , após o build ser gerado , clique em "OVERVIEW".Será apresentado o último build estável.
    • Clique em "Repo download". Em seguida copie as informações apresentadas.
    • Localmente no servidor SOCIAL acesse o repositório yum.repo.d e execute wget [endereço copiado em repo download]
    • Altere o arquivo recém baixado pelo wget adicionando o seguitnte valor : cost = 900 . Dessa maneira o repositório copr terá prioridade.
    • Em seguida execute: rake converge:social SPB_ENV=[ambiente_desejado]

Last edited by Paulo Tada