|
|
Software version |
|
Operating System |
Red Hat 6.3 |
Website |
Website |
Last Update |
02/08/2012 |
Others |
|
1 Introduction
Pour créer des packages, on trouve pleins de méthodes sur le web, beaucoup d'entre elles sont obsolètes et ne permettent pas la plus part du temps de faire quelque chose de simple. C'est pourquoi je vais vous montrer une technique pour faire un package en 5 min.
2 Installation
Nous allons installer le nécessaire pour la création de packages :
yum
|
|
3 Création du tar
Imaginons que je souhaites packager une librairie ruby que j'ai installé via les gems. Tout est installé dans certains répertoires, je vais donc créer une archive de ce qui m'intéresse :
tar
|
tar -czvPf rubygemsysproctable-0.9.tar.gz /usr/lib/ruby/gems/1.8/doc/sys-proctable-0.9.0-x86-linux /usr/lib/ruby/gems/1.8/gems/sys-proctable-0.9.0-x86-linux
|
4 Création du RPM
Pour cette script là, j'utilise un script que j'ai pu trouver sur ce site, qui me créer automatiquement un .spec avec les informations principales. Adaptez le début avec les informations souhaitées :
tgz2rpm.sh
|
#!/bin/bash
# This script creates an RPM from a tar file.
# $1 : tar file
NAME=$(echo ${1%%-*} | sed 's/^.*\///')
VERSION=$(echo ${1##*-} | sed 's/[^0-9]*$//')
RELEASE=0
VENDOR="Deimos"
EMAIL="<deimos@deimos.fr>"
SUMMARY="Summary"
LICENSE="GPL"
GROUP="System"
ARCH="noarch"
DESCRIPTION="Ma description"
######################################################
# users should not change the script below this line.#
######################################################
# This function prints the usage help and exits the program.
usage(){
/bin/cat << USAGE
This script has been released under BSD license. Copyright (C) 2010 Reiner Rottmann <rei..rATrottmann.it>
$0 creates a simple RPM spec file from the contents of a tarball. The output may be used as starting point to create more complex RPM spec files.
The contents of the tarball should reflect the final directory structure where you want your files to be deployed. As the name and version get parsed
from the tarball filename, it has to follow the naming convention "<name>-<ver.si.on>.tar.gz". The name may only contain characters from the range
[A-Z] and [a-z]. The version string may only include numbers seperated by dots.
Usage: $0 [TARBALL]
Example:
$ $0 sample-1.0.0.tar.gz
$ /usr/bin/rpmbuild -ba /tmp/sample-1.0.0.spec
USAGE
exit 1
}
if echo "${1##*/}" | sed 's/[^0-9]*$//' | /bin/grep -q '^[a-zA-Z]\+-[0-9.]\+$'; then
if /usr/bin/file -ib "$1" | /bin/grep -q "application/x-gzip"; then
echo "INFO: Valid input file '$1' detected."
else
usage
fi
else
usage
fi
OUTPUT=/tmp/${NAME}-${VERSION}.spec
FILES=$(/bin/tar -tzf $1 | /bin/grep -v '^.*/$' | sed 's/^/\//')
/bin/cat > $OUTPUT << EOF
Name: $NAME
Version: $VERSION
Release: $RELEASE
Vendor: $VENDOR
Summary: $SUMMARY
License: $LICENSE
Group: $GROUP
Source0: %{name}-%{version}.tar.gz
BuildRoot: /var/tmp/%{name}-buildroot
BuildArch: $ARCH
%description
$DESCRIPTION
%prep
%setup -c -n %{name}-%{version}
%build
%install
[ -d \${RPM_BUILD_ROOT} ] && rm -rf \${RPM_BUILD_ROOT}
/bin/mkdir -p \${RPM_BUILD_ROOT}
/bin/cp -axv \${RPM_BUILD_DIR}/%{name}-%{version}/* \${RPM_BUILD_ROOT}/
%post
%postun
%clean
%files
%defattr(-,root,root)
$FILES
%define date %(echo \`LC_ALL="C" date +"%a %b %d %Y"\`)
%changelog
* %{date} User $EMAIL
- first Version
EOF
echo "INFO: Spec file has been saved as '$OUTPUT':"
echo "----------%<----------------------------------------------------------------------"
/bin/cat $OUTPUT
echo "----------%<----------------------------------------------------------------------"
|
Il suffit donc de lancer ce script sur votre tar.gz :
tgz2rpm.sh
|
chmod 755 tgz2rpm.sh
./tgz2rpm.sh rubygemsysproctable-0.9.tar.gz
|
Puis de lancer la construction du RPM :
rpmbuild
|
rpmbuild -ba /tmp/rubygemsysproctable-0.9.spec
|
Le rpm est maintenant créé dans ~/rpmbuild/RPMS/noarch :-)
5 Vérification
Je vais maintenant vérifier mon rpm :
rpm
|
> rpm -qip ~/rpmbuild/RPMS/noarch/rubygemsysproctable-0.9-0.noarch.rpm
Name : rubygem-sysproctable Relocations: (not relocatable)
Version : 0.9 Vendor: Deimos
Release : 0 Build Date: Thu 02 Aug 2012 01:19:08 PM CEST
Install Date: (not installed) Build Host: server1.deimos.fr
Group : System Environment/Libraries Source RPM: rubygem-sysproctable-0.9-0.src.rpm
Size : 159304 License: GPL
Signature : (none)
Packager : Ruby sys-proctable
Summary : Ruby sys-proctable library
Description :
Ruby sys-proctable library
|
6 References
http://fedoraproject.org/wiki/How_to_create_an_RPM_package
http://www.mindtwist.de/main/linux/3-linux-tipps/32-how-to-convert-tar-gz-archive-to-rpm-.html