Empacotamento Noosfero Procedimentos Page History
Procedimentos
- Clone o repositório aonde estão os specs do pacotes
- https://portal.softwarepublico.gov.br/gitlab/softwarepublico/softwarepublico
- Diretório: softwarepublico/src/pkg-rpm
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.
Baixar repositório do upstream(source, ex: noosfero)
Instale as dependências necessárias
- noosfero-deps
- tango_icon theme
- [nosfero_theme(?)]
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
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
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/
Testando o pacote gerado usando a biblioteca mock
- Para instalar no centos:
sudo yum install epel-release
sudo yum install mock
- Para instalar no centos:
É 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.
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.
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]