Como criar ou construir pacotes RPM
Introdução —
Ferramenta * “rpmbuild” é usado para construir tanto …
1) Pacote binário ~ usada para instalar o software e suporte scripts. Ele contém os arquivos que compõem o pedido, juntamente com todas as informações adicionais necessárias para instalar e apagá-la.
Source Package 2) ~ contém o arquivo tar compactados originais do código-fonte, patches e especificação de arquivo.
* Qual é o RPM & gerenciador de pacotes rpm?
O RPM Package Manager (RPM) é uma poderosa linha de comando do sistema de gerenciamento de pacotes capazes de instalar, desinstalar, verificando, consulta e atualização de pacotes de software.
RPM pacote consiste de um repositório de arquivos e meta-dados usados para instalar e apagar os ficheiros de arquivo. A meta-dados inclui scripts auxiliares, os atributos do arquivo, e informações descritivas sobre o pacote.
* Para construir o pacote RPM que você precisa especificar três coisas ~
1) Fonte de aplicação – Em qualquer caso, você não deve modificar as fontes utilizadas no processo de construção do pacote.
2) Patches – RPM lhe dá a capacidade para aplicar automaticamente patches para eles. O patch corrige um problema específico para o sistema alvo. Isto pode incluir mudanças makefiles para instalar o aplicativo para o apropriado diretórios, ou resolução de conflitos plataforma. Patches criar o ambiente necessário para a compilação adequada.
3) Especificação do Arquivo – A especificação é no coração do processo de construção de pacotes RPM. Ele contém informações exigidas pela RPM para construir o pacote, bem como instruções dizendo RPM como construí-lo. O arquivo de especificação também dita exatamente quais arquivos são uma parte do pacote, e onde deve ser instalado.
** Especificação do arquivo ~ é dividido em 8 seções conforme mostrado abaixo
a) Preâmbulo ~ contém informações que serão exibidas quando os usuários solicitarem informações sobre o pacote. Isso pode incluir uma descrição da função do pacote, o número de versão do software, etc
b) Preparação ~ onde o trabalho real de construção de um pacote é iniciado. Como o nome indica, esta seção é onde os preparativos necessários sejam feitos antes de o edifício atual do software. Em geral, se algo precisa ser feito para as fontes antes de construir o software, ele precisa acontecer na seção de preparação. O conteúdo desta secção é um shell script comum. No entanto, RPM prevê duas macros para tornar a vida mais fácil. Uma macro pode descompactar um arquivo tar compactado e CD para o diretório de origem. A macro outros patches facilmente se aplica às fontes de descompactado.
c) Construir ~ Esta secção é constituída por um shell script. Ele é usado para executar qualquer comandos são realmente necessário para compilar os fontes como único comando make, ou ser mais complexo se o processo de criação exige. Não existem macros disponíveis nesta seção.
d) Instalar ~ Esta seção também contém um shell script, a seção de instalação é usada para executar os comandos necessários para realmente instalar o software.
e) Instalar e desinstalar scripts ~ É constituída de scripts que serão executados, no sistema do usuário, quando o pacote é realmente instalados ou removidos. RPM pode executar um script pré / pós-instalação / remoção do pacote.
f) Verificar Script ~ script que é executado no sistema do usuário. É executado quando RPM verifica a instalação correta do pacote.
g) Limpeza Seção ~ script que pode limpar as coisas após a compilação. Este script é raramente usada, desde RPM normalmente faz um bom trabalho de limpeza na maioria dos ambientes de criação.
h) Lista de arquivos ~ consiste de uma lista de arquivos que compõem o pacote. Além disso, um número de macros podem ser usadas para controlar atributos de ficheiro, quando instalado, bem como para indicar quais arquivos são a documentação, e que contêm informações de configuração. A lista de arquivos é muito importante.
Requisito *** RPM’s para ambiente de construção ~
A] RPM requer um conjunto de diretórios para executar a construção. Enquanto os diretórios locais e nomes podem ser mudados. Layout padrão é mostrado abaixo —
root @ arunsb: ~ # ls-l / usr / src / redhat /
drwxr-xr-x 2 root root 4096 Aug 25 2007 Fontes => contém as fontes originais, patches e arquivos de ícone
drwxr-xr-x 2 root root 4096 Aug 25 2007 SPECS => Contém os arquivos de especificação
drwxr-xr-x 2 root root 4096 Aug 25 2007 Build => Directory em que as fontes são descompactados, e software é construído
drwxr-xr-x 8 root root 4096 28 de maio de 2008 RPMS => Contém o pacote binário arquivos criados pelo processo de construção
drwxr-xr-x 2 root root 4096 Aug 25 2007 SRPMS => contém o pacote de fonte de arquivos criados pelo processo de construção
root @ arunsb: ~ #
B] precisa exportar algumas variáveis globais utilizadas por RPM —
root @ arunsb: ~ # export RPM_BUILD_DIR = /usr/src/redhat/BUILD/
root @ arunsb: ~ # export RPM_SOURCE_DIR =/usr/src/redhat/SOURCES/
Passo 1] Criar especificação (spec) Arquivo ~
root@arunsb:~# head -n 50 /usr/src/redhat/SPECS/openlsm.spec
# Authority: Arun Bagul
#RPM_BUILD_DIR /usr/src/redhat/BUILD/
#RPM_SOURCE_DIR /usr/src/redhat/SOURCES/
%define MY_PREFIX /usr/local/openlsm/
## Preamble Section-
Name: openlsm
Version: 0.99
Vendor: IndianGNU.org & openlsm
Release: r45
Group: System Environment/Daemons
Packager: IndianGNU.org (http://www.indiangnu.org)
URL: http://openlsm.sourceforge.net/
Summary: openlsm Admin Server
License: GPL
%description
openlsm Admin Server is free & open source web based control panel for Linux,Unix systems.
## Preparation Section-
%prep
rm -rf ${RPM_BUILD_DIR}/openlsm-0.99-r45/
tar xvfz ${RPM_SOURCE_DIR}/openlsm-0.99-r45.tar.gz -C ${RPM_BUILD_DIR}
## Build Section-
%build
cd ./openlsm-0.99-r45/
./configure –prefix=/usr/local/openlsm –with-mysql=/usr/bin/mysql_config –enable-internal-pcre –with-geoip=/usr –with-ldap=/usr –enable-trace
make
## Install Section-
%install
cd ./openlsm-0.99-r45/
make install
## Files Section-
%files
/usr/local/openlsm
/usr/local/openlsm/etc/openlsm/openlsm.conf
/usr/local/openlsm/etc/openlsm/openlsm.conf.perf_sample
/usr/local/openlsm/etc/openlsm/ssl/
/usr/local/openlsm/bin/openlsm-config
….
…..
….. list of files installed by pkg
root@arunsb:~#
* Como você criar a lista de arquivos?
Criando a lista de arquivos processo é manual. O que eu fiz é que eu peguei a lista de arquivos do meu diretório prefixo manual instalado com o comando find, como mostrado abaixo …
root@arunsb:~# find /usr/local/openlsm/ -type f -or -type d
Etapa 2] A partir do Build ~
root@arunsb:~# cd /usr/src/redhat/SPECS
root@arunsb:/usr/src/redhat/SPECS# ls -l openlsm.spec
-rw-r–r– 1 root root 12938 Dec 2 17:21 openlsm.spec
root@arunsb:/usr/src/redhat/SPECS#
root@arunsb:/usr/src/redhat/SPECS# rpmbuild -ba openlsm.spec
…
….
… ..
Verificação de arquivo não embalados (s): / usr / lib / rpm / check-files% (buildroot)
Escreveu: / usr/src/redhat/SRPMS/openlsm-0.99-r45.src.rpm
Escreveu: / usr/src/redhat/RPMS/i386/openlsm-0.99-r45.i386.rpm
root @ arunsb: / usr / src / redhat / SPECS # echo $?
0
root @ arunsb: / usr / src / redhat / SPECS # ls-l / usr/src/redhat/SRPMS/openlsm-0.99-r45.src.rpm
-rw-r-r-1 root root 3206 2 de dezembro 17:50 / usr/src/redhat/SRPMS/openlsm-0.99-r45.src.rpm
root @ arunsb: / usr / src / redhat / SPECS # ls-l / usr/src/redhat/RPMS/i386/openlsm-0.99-r45.i386.rpm
-rw-r-r-1 root root 3052868 2 de dezembro 17:50 / usr/src/redhat/RPMS/i386/openlsm-0.99-r45.i386.rpm
root @ arunsb: / usr / src / redhat / SPECS #
* Fonte e pacote binário criado!
** Vamos ver o que aconteceu em “/ usr / src / redhat / directory”
root @ arunsb: / usr / src / redhat # pwd
/ usr / src / redhat
root @ arunsb: / usr / src / redhat # ls
BUILD RPMS SOURCES SPECS SRPMS
root @ arunsb: / usr / src / redhat # ls BUILD /
openlsm-0,99-r45 <== Fonte extraída aqui como parte de construir as instruções do arquivo de especificação ou seja, “openlsm.spec”
root @ arunsb: / usr / src / redhat # ls FONTES /
openlsm-0,99-r45.tar.gz <openlsm == original “-0,99-fonte r45.tar.gz ‘arquivo copiado por mim
root @ arunsb: / usr / src / redhat # ls RPMS /
athlon i386 i486 i586 i686 noarch
root @ arunsb: / usr / src / redhat # ls RPMS/i386 /
openlsm-0,99 r45.i386.rpm-<== pacote rpm Binário criado!
root @ arunsb: / usr / src / redhat # ls / SRPMS
openlsm-0,99-r45.src.rpm <== pacote fonte RPM criado!
root @ arunsb: / usr / src / redhat #
Etapa 3] Agora instale o pacote e testá-lo ~
root @ arunsb: / usr / src / redhat # cp RPMS/i386/openlsm-0.99-r45.i386.rpm / home / arunsb /
root @ arunsb: / usr / src / redhat # cd / home arunsb / /
root @ arunsb: ~ # ls
openlsm-0,99-r45.i386.rpm
root @ arunsb: ~ # rpm-openlsm ivh-0,99-r45.i386.rpm
Preparando … ########################################### [100%]
1: ########################################### openlsm [100%]
root @ arunsb: ~ # ls / usr / local / openlsm /
etc contrib bin incluir partes var / lib sbin scripts
root @ arunsb: ~ #
** Iniciando o servidor openlsm ~
root @ arunsb: ~ # / usr / local / openlsm / contrib / start-openlsm redhat
* Iniciando openlsm Server Admin: openlsm
. [OK]
root @ arunsb: ~ #
root @ arunsb: ~ # / usr / local / openlsm / contrib / openlsm estatuto de redhat
openlsm (pid 21607) is running …
root @ arunsb: ~ #
root @ arunsb: ~ # rpm-q openlsm-0,99-R45
openlsm-0,99-R45
root @ arunsb: ~ #
root @ arunsb: ~ # rpm-openlsm QL-0,99-R45
..
…
root @ arunsb: ~ # rpm-openlsm qiv-0,99-R45
Nome: Relocations openlsm: (not relocatable)
Version: 0.99 Vendor: IndianGNU.org & openlsm
Lançamento: R45 Build Date: Qua 02 de dezembro de 2009 05:50:54 EST
Instale Data: Wed 02 de dezembro de 2009 06:06:23 IST Build Host: alongseveral-dr.eglbp.corp.yahoo.com
Grupo: System Environment / Daemons Source RPM: openlsm-0,99-r45.src.rpm
Tamanho: 14877918 Licença: GP
Signature: (none)
Packager: IndianGNU.org (http://www.indiangnu.org)
URL: http://openlsm.sourceforge.net/
Resumo: openlsm Admin Server
Descrição:
painel de controle openlsm Admin Server é gratuita e web de código aberto baseado em Linux, Unix.
root @ arunsb: ~ #
** NOTA ~ Este artigo não contém informações sobre como definir micros, como cópia de documentos, páginas de manual para o padrão local, como definir permision e de apropriação vou cobrir esta tópicos no próximo artigo sobre RPM.
** Por favor, consulte o artigo Inglês ~ http://www.indiangnu.org/2009/how-to-create-or-build-rpm-package/
Atenciosamente,
Arun Bagul