Como criar um pacote RPM do GNU Hello World em Fedora

Como criar um pacote RPM do GNU Hello World em Fedora

RPM (um acrônimo recursivo para RPM Package Manager) é um sistema de gerenciamento de pacotes de código aberto e de código aberto para Linux. Embora tenha sido criado originalmente para uso em Red Hat Linux, agora é usado em muitas distribuições Linux, como CENTOS, Fedora, e OpenSuse. É importante ressaltar que o nome RPM refere -se ao programa Gerenciador de pacotes e ao .RPM é um formato de arquivo.

Neste artigo, explicaremos a gravação de arquivos RPM, mostrando como criar facilmente uma fonte simples e pacotes de software binário, por exemplo, GNU “Hello World” Pacote de rpm em Fedora Linux distribuição. Assumimos que você tem algum entendimento básico dos pacotes de RPM pré-fabricados e com o processo de criação de software de código aberto gratuito.

Instale ferramentas de desenvolvimento no Fedora

Vamos começar configurando o ambiente de desenvolvimento em Fedora Linux Ao executar o comando seguinte para instalar as ferramentas necessárias para a criação de RPMs.

$ sudo dnf install fedora-packager @desenvolvimento de desenvolvimento 
Instale ferramentas de desenvolvimento no Fedora

Em seguida, adicione sua conta não privilegiada ao 'zombar'Grupo da seguinte forma (substitua Tecmint com seu nome de usuário real). Isso permitirá que você teste o procedimento de construção em um chroot limpo.

$ sudo usermod -a -g simulado tecmint 

Agora, crie uma construção de rpm em seu ~/rpMbuild diretório e verifique a construção usando os seguintes comandos. Ele mostrará uma lista de subdiretos, que contém código-fonte do projeto, arquivos de configuração do RPM e pacotes binários.

$ rpmdev-setuptree $ árvore ~/rpmbuild/ 
Criar ambiente de construção

Aqui está para o que cada diretório é para:

  1. CONSTRUIR - armazena vários diretórios de Buildroot %quando os pacotes são construídos.
  2. Rpms - conterão RPMs binários em subdiretos da arquitetura.
  3. FONTES - Arquivos de origem compactados para lojas e quaisquer patches, é aqui que o comando rpmbuild os procurará.
  4. Especificações - armazena os arquivos de especificações.
  5. Srpms - Armazra a RPM de origem em vez de um RPM binário.

Construindo um RPM "Hello World"

Nesta etapa, você precisa baixar o código -fonte (também conhecido como o “Upstream”Fonte) do projeto Hello World, estamos empacotando, no ~/rpmbuild/fonte diretório com o seguinte comando wget.

$ cd ~/rpmbuild/fontes $ wget http: // ftp.gnu.org/gnu/hello/hello-2.10.alcatrão.gz -p ~/rpmbuild/fontes 

Em seguida, vamos configurar o pacote RPM usando um .espec arquivo (vamos nomear olá.espec neste caso) no ~/rpmbuild/especificações diretório, usando o RPMDEV-NEWSPEC programa.

$ cd ~/rpmbuild/specs $ rpmdev-newspec hello $ ls 
Crie Hello Spec File

Em seguida, abra o olá.espec Arquivo usando seu editor favorito.

$ vim Olá.espec 

O modelo padrão deve ficar assim:

Nome: Hello Version: Release: 1%?Dist Resumo: Licença: URL: Fonte0: BuildRequises: Requer: %Descrição %Prep %AUTOSETUP %Build %Configurar %make_build %install rm -rf $ rpm_build_root %make_install arquivos %de licença de licença add-license-file-here %docum Docs-here %Changelog * Ter 28 de maio de 2019 Aaron Kili 

Vamos explicar brevemente os parâmetros padrão em um .espec arquivo:

  • Nome - usado para definir um nome para o pacote.
  • Versão - deve espelhar a montante.
  • Liberar - números que você trabalha no fedora.
  • Resumo - é uma breve descrição de uma linha do pacote, a primeira letra deve ser manchada para evitar reclamações de rpmlint.
  • Licença - Verifique o status da licença do software inspecionando os arquivos de origem e/ou seus arquivos de licença e/ou conversando com os autores.
  • Url - Especifica a página inicial do pacote de software.
  • Fonte0 - Especifica os arquivos de origem. Pode ser um URL direto ou um caminho do código -fonte compactado do software.
  • BuildRequires - Especifica as dependências necessárias para construir o software.
  • Requer - Especifica as dependências necessárias para executar o software.
  • %preparação - é usado para criar o ambiente para a criação do pacote RPM.
  • %construir - é usado para compilar e construir os códigos de origem.
  • %instalar - Isso é usado para instalar os programas. Ele lista os comando (s) para copiar o arquivo resultante do processo de compilação para o diretório BuildRoot.
  • %arquivos - Esta seção lista os arquivos fornecidos pelo pacote, que serão instalados no sistema.
  • %changelog - Se armazenar o trabalho na preparação do RPM, especialmente se houver patches de segurança e bugs incluídos na parte superior da fonte a montante da fonte. É gerado automaticamente ao criar o olá.arquivo de especificações. Os dados do Changelog são geralmente exibidos por RPM --CHANGELOG -Q .

Agora edite o seu .espec Arquive e faça alterações como mostrado.

Nome: Hello Version: 2.10 liberação: 1%?Dist Resumo: O Programa "Hello World" da GNU License: GPLV3+ URL: http: // ftp.gnu.org/gnu/%nome fonte0: http: // ftp.gnu.org/gnu/%name/%name-%versão.alcatrão.GZ BuildReQuires: getText requer (post): informações requer (preun): info %descrição o pacote do programa "Hello World" %Prep %AUTOSETUP %Build %Configure make %make_build %install %make_install %find_lang %nome rm - rm - rm - f %Buildroot/ %_ infodir/dir %post/sbin/install-info %_ infodir/ %name.info %_ infodir/dir || : %preun if [$ 1 = 0]; então/sbin/install-info--Delete %_ infodir/ %name.info %_ infodir/dir || : FI %arquivos -f %nome.lang %_ mandir/man1/olá.1.* %_ infodir/hello.informações.* %_ bindir/hello %Doc Authors Changelog News ReadMe graças ao TODO %Licença Copying %Changelog * Ter 28 de maio de 2019 Aaron Kili 

Você notará que usamos alguns novos parâmetros no arquivo acima que não foram explicados. Estes são chamados macros, Usado para criar invocações do sistema definidas pelo RPM para definir caminhos de instalação para pacotes. Portanto, geralmente é preferível também não codificar esses caminhos em arquivos de especificações, mas use as mesmas macros para consistência.

A seguir, as macros de construção e diretório de RPM, juntamente com suas definições e valores de inadimplência:

  • %make_build - é usado no %construir Seção do arquivo SPEC, ele executa o comando make.
  • %nome - Define o nome do pacote ou diretório.
  • %Buildroot - %_ Buildrootdir/%name-%versão-%release.%_ Arch, o mesmo que $ Buildroot
  • %_ Infodir - %_ dataarootdir/info, padrão:/usr/share/info
  • %_ mandir - %_ DataRootdir/man, padrão:/usr/share/man
  • %_ bindir - %_ Exec_prefix/bin, padrão:/usr/bin

Observe que você pode encontrar os valores para estes macros no /usr/lib/rpm/plataform/*/macros ou consulte as diretrizes de embalagem: RPM Macros.

Construindo o pacote RPM

Para construir os pacotes de origem, binário e depuração, execute o seguinte comando rpmbuild.

$ rpmbuild -ba Olá.espec 

Após o processo de construção, os RPMs de origem e as desejos binários de RPMs serão criados no … /Srpms / e … /Rpms / diretórios respectivamente. Você pode usar o programa RPMLint para verificar e garantir que o arquivo de especificações e os arquivos RPM criados em conformidade com as regras de design do RPM:

$ rpmlint Olá.Spec…/srpms/hello*…/rpms/*/hello* 
Verifique os pacotes para erros

Se houver algum erro, conforme mostrado na captura de tela acima, conserte -os antes que você possa prosseguir.

Por último, mas não menos importante, use Programa de simulação Para verificar se a construção do pacote terá sucesso no ambiente de construção restrito do Fedora.

$ mock --verbose… /srpms /hello-2.10-1.FC29.src.RPM 
Verifique a construção do pacote RPM

Para mais informações, consulte a documentação do Fedora: Criando pacotes de RPM.

Isso é tudo! Neste artigo, explicamos como intensificar seu sistema de fedora para criar uma fonte simples e um pacote de software binário. Também mostramos como criar um pacote RPM de hello word de pistola. Use o formulário de feedback abaixo para alcançar qualquer dúvida ou comentário.