3.2.3. Modificando um arquivo SPEC original para criar RPMs
O procedimento a seguir mostra como modificar o arquivo SPEC de saída fornecido por rpmdev-newspec para a criação das RPMs.
Pré-requisitos
Certifique-se disso:
-
O código fonte do programa em particular foi colocado no diretório
~/rpmbuild/SOURCES/. -
O arquivo não-povoado da SPEC
~/rpmbuild/SPECS/<name>.specfoi criado pelo utilitáriorpmdev-newspec.
Procedimento
-
Abra o modelo de saída do arquivo
~/rpmbuild/SPECS/<name>.specfornecido pelo utilitáriorpmdev-newspec: Povoar a primeira seção do arquivo da SPEC:
A primeira seção inclui estas diretrizes que foram agrupadas em
rpmdev-newspec:-
Name -
Version -
Release SummaryO
Namejá foi especificado como um argumento pararpmdev-newspec.Defina o
Versionpara combinar com a versão de lançamento upstream do código fonte.O
Releaseé automaticamente ajustado para1%{?dist}, que é inicialmente1. Aumente o valor inicial sempre que atualizar o pacote sem uma mudança no lançamento a montanteVersion- como quando se inclui um patch. RedefinirReleasepara1quando um novo lançamento upstream acontecer.O
Summaryé uma breve explicação de uma linha do que é este software.
-
Popular as diretrizes
License,URL, eSource0:O campo
Licenseé a Licença de Software associada com o código fonte da versão upstream. O formato exato de como rotular oLicenseem seu arquivo SPEC variará dependendo de quais diretrizes específicas de distribuição Linux baseadas em RPM você está seguindo.Por exemplo, você pode usar a GPLv3 .
O campo
URLfornece o URL para o site do software upstream. Para maior consistência, utilize a macro variável RPM de%{name}, e use o campohttps://example.com/%{name}.O campo
Source0fornece o URL para o código fonte do software upstream. Ele deve ser ligado diretamente à versão específica do software que está sendo empacotado. Note que as URLs de exemplo dadas nesta documentação incluem valores codificados que são possíveis sujeitos a mudanças no futuro. Da mesma forma, a versão de lançamento também pode mudar. Para simplificar estas possíveis mudanças futuras, use as macros%{name}e%{version}. Ao usá-las, você precisa atualizar apenas um campo no arquivo SPEC.Povoar as diretrizes
BuildRequires,RequireseBuildArch:BuildRequiresespecifica as dependências de tempo de construção para o pacote.Requiresespecifica as dependências de tempo de execução para o pacote.Este é um software escrito em uma linguagem de programação interpretada, sem extensões compiladas nativamente. Portanto, acrescente a diretiva
BuildArchcom o valornoarch. Isto diz ao RPM que este pacote não precisa estar vinculado à arquitetura do processador sobre o qual é construído.Povoar as diretrizes
%description,%prep,%build,%install,%files, e%license:Essas diretrizes podem ser consideradas como títulos de seção, pois são diretrizes que podem definir tarefas de múltiplas linhas, multi-instrução ou tarefas com scripts a serem realizadas.
O
scriptioné uma descrição mais longa e completa do software do queSummary, contendo um ou mais parágrafos.A seção
%prepespecifica como preparar o ambiente de construção. Isto geralmente envolve a expansão de arquivos comprimidos do código fonte, aplicação de correções e, potencialmente, análise das informações fornecidas no código fonte para uso em uma parte posterior do arquivo SPEC. Nesta seção, você pode usar a macro%setup -qembutida.A seção
%buildespecifica como construir o software.A seção
%installcontém instruções pararpmbuildsobre como instalar o software, uma vez que tenha sido construído, no diretórioBUILDROOT.Este diretório é um diretório de base chroot vazio, que se assemelha ao diretório raiz do usuário final. Aqui você pode criar quaisquer diretórios que contenham os arquivos instalados. Para criar tais diretórios, você pode usar as macros RPM sem ter que codificar os caminhos de forma rígida.
A seção
%filesespecifica a lista de arquivos fornecidos por esta RPM e sua localização completa no sistema do usuário final.Dentro desta seção, você pode indicar o papel de vários arquivos usando macros embutidos. Isto é útil para consultar os metadados do manifesto do arquivo de pacotes usando o comando[]
rpm. Por exemplo, para indicar que o arquivo LICENSE é um arquivo de licença de software, use a macro%license.A última seção,
%changelog, é uma lista de entradas marcadas com dados para cada Versão-Release do pacote. Eles registram as mudanças de embalagem, não as mudanças de software. Exemplos de mudanças de embalagem: adicionar um patch, mudar o procedimento de construção na seção%build.Siga este formato para a primeira linha:
Comece com um caracter
*seguido porDay-of-Week Month Day Year Name Surname <email> - Version-ReleaseSiga este formato para a entrada da mudança propriamente dita:
- Cada entrada de mudança pode conter vários itens, um para cada mudança.
- Cada item começa em uma nova linha.
-
Cada item começa com um caracter
-.
Agora você escreveu um arquivo completo da SPEC para o programa necessário.
Para exemplos de arquivos SPEC escritos em diferentes linguagens de programação, veja:
A construção do RPM a partir do arquivo da SPEC está descrita em Seção 3.3, “RPMs de construção”.