home » search tags
Die Suche tag = rpm ergab 3 Treffer:

November
28
Im Zuge einer Umstellung von RedHat Satellite auf Spacewalk bin ich auf zwei tools gestoßen die das spiegeln von RPM-repos ermöglicht. Da wäre zum einen mrepo und zum anderen Pulp. Leider konnte ich mit mrepo keine repos aus dem RHN syncen, daher viel meine Wahl auf Pulp.

Die Installation verläuft relativ einfach, lediglich unter EL kommt es zu Problemen mit dem Paket qpid, dies lässt sich aber leicht lösen (dazu später mehr).

Diese Anleitung basiert auf einem EL6-System, sollte sich aber 1:1 auf ein EL7 übertragen lassen.

Pulp repo aktivieren
cd /etc/yum.repos.d/ && \
wget https://repos.fedorapeople.org/repos/pulp/pulp/rhel-pulp.repo


EPEL repo aktivieren
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm  && \
yum clean all && \
yum update


mongodb installieren
yum install mongodb-server


Installation qpid

wie oben bereits beschrieben schlägt die Installation von qpid schlägt aufgrund fehlender Abhängigkeiten fehl, dieses kann man durch die Installation einer alten Version lösen.
wget https://kojipkgs.fedoraproject.org//packages/qpid-proton/0.9/3.el6/x86_64/qpid-proton-c-0.9-3.el6.x86_64.rpm && \
yum localinstall qpid-proton-c-0.9-3.el6.x86_64.rpm

anschließend kann man qpid installieren
yum install qpid-cpp-server qpid-cpp-server-store


Installation Pulp

Die eigentlich Installation von Pulp kann man nun starten
yum groupinstall pulp-server-qpid

Bevor Pulp genutzt werden kann, muss dessen interne DB initialisiert werden
sudo -u apache pulp-manage-db



Nun sollten (falls nicht bereits geschehen) alle Services gestartet und aktiviert werden.
service httpd restart && \
chkconfig httpd on && \
service pulp_resource_manager restart && \
chkconfig pulp_resource_manager on && \
service pulp_workers restart && \
chkconfig pulp_workers on && \
service pulp_celerybeat restart && \
chkconfig pulp_celerybeat on

November
22
Hier und da arbeite ich mit RPM-basierenden Systemen in Verbindung mit Spacewalk, dabei muss ich öfters die Signaturen von RPMs anzeigen editieren... daher hier eine kleine Merkliste:

Installierte Schlüssel anzeigen
rpm -q gpg-pubkey --qf '%{name}-%{version}-%{release} --> %{summary}\n'


Fingerprint einer Schlüsseldatei anzeigen
gpg --with-fingerprint /etc/pki/rpm-gpg/RPM-GPG-KEY


Schlüssel eines RPMs anzeigen
rpm -K /path/to/RPM

Dezember
6
janitor » #useless #code #RPM
Auch wenn ich bekennender Debianer bin, komme ich beruflich oft mit RPM-basierenden Distributionen wie CentOS und Red Hat in Kontakt.

Daher war es nur eine Frage der Zeit bis zum bau meines ersten RPM, in diesem Falle durfte es eine neue Version (1.7.7) von Nginx sein, da es CentOS bis heute nicht geschafft hat es zu integrieren (die Installation über das EPEL-Repo schied ebenfalls aus, da hier nur Version 1.0.2 liegt). Desweiteren musste das Module upload-progress-module Bestandteil des Servers sein.

Nun aber der Reihe nach...

benötigte Pakete installieren und Benutzer erstellen

Zuerst müssen die nötigen Pakete für die build-Umgebung mit
yum install -y git rpm-build rpmdevtools redhat-rpm-config make gcc

installiert werden.

Zusätzlich wird für den Bau von Nginx noch folgende Pakete installiert
yum install -y pcre-devel zlib-devel openssl-devel


Da ein build niemals als Benutzer root durchgeführt werden sollten, erstellen wir uns gleich noch einen passenden Benutzer crafter
useradd -s /bin/bash -m -d /home/crafter crafter

den wir für alle weiteren Schritte nutzen werden.

build-Umgebung einrichten

Die benötigte Verzeichnisstruktur
rpmbuild/
├── BUILD
├── RPMS
├── SOURCES
├── SPECS
└── SRPMS

kann mit dem Befehl
rpmdev-setuptree

erzeugt werden.

Abschließen kann man das setup durch das erstellen einer Macrosdatei
echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros

.

spec-Datei erstellen

Im Verzeichniss ~/rpmbuild/SPECS/ kann nun die entsprechende nginx.spec erstellt werden
Name:		nginx
Version: 1.7.7
Release: 1%{?dist}
Summary: nginx 1.7.7 with upload module

Group: System Environment/Daemons
License: BSD
URL: http://nginx.org/
Source0: http://nginx.org/download/nginx-%{version}.tar.gz
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)

BuildRequires: pcre-devel
BuildRequires: zlib-devel
BuildRequires: openssl-devel
Requires: pcre
Requires: zlib
Requires: openssl

%description
nginx version %{version}


#-- prepare build
%prep


#--
%setup -q


#-- build
%build
./configure \
--prefix= \
--conf-path=/etc/nginx/nginx.conf \
--pid-path=/var/run/nginx.pid \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--lock-path=/var/lock/subsys/nginx/lock \
--with-http_ssl_module \
--user=apache \
--group=apache \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--http-scgi-temp-path=/var/run/nginx/scgi/ \
--http-uwsgi-temp-path=/var/run/nginx/uwsgi/ \
--add-module=/home/crafter/rpmbuild/SOURCES/nginx-upload-progress-module \
make %{?_smp_mflags}

#-- make installation
%install
rm -rf $RPM_BUILD_ROOT
make install DESTDIR=$RPM_BUILD_ROOT

rm -rf $RPM_BUILD_ROOT/html
mkdir -p $RPM_BUILD_ROOT/etc/init.d/
mkdir -p $RPM_BUILD_ROOT/etc/nginx/
mkdir -p $RPM_BUILD_ROOT/etc/logrotate.d
mkdir -p $RPM_BUILD_ROOT/etc/init.d/

#-- clean up
%clean
rm -rf $RPM_BUILD_ROOT


#-- files
%files
%defattr(-,root,root,-)
%doc
/etc/nginx/*
/etc/logrotate.d/*
/sbin/nginx
/etc/init.d/nginx
%changelog

#-- before install
%pre
getent group apache >/dev/null || groupadd -r apache
getent passwd apache >/dev/null || \
useradd -r -g apache -d /var/www -s /sbin/nologin \
-c "webserver user" apache
exit 0

#-- after install
%post
mkdir -p /var/log/nginx
mkdir -p /var/run/nginx
chmod o+x /etc/init.d/nginx
service nginx start

#-- before uninstall
%preun
service nginx stop

#-- after uninstall
%postun


RPM bauen

Nun kann das RPM mit
rpmbuild -v -bb rpmbuild/SPECS/nginx-1.7.7.spec

erstellt werden.