Tutorials - Fedora RPM-Pakete patchen

Sprachenübersicht/Betriebssysteme/Linux/Fedora

Fedora RPM-Pakete patchen

Diese Seite wurde 863 mal aufgerufen.

Dieser Artikel wurde in einem Wikiweb System geschrieben, das heißt, Sie können die Artikel jederzeit editieren, wenn Sie einen Fehler gefunden haben, oder etwas hinzufügen wollen.

Editieren Versionen Linkpartnerschaft Bottom Printversion

Keywords: patch fedora rpm packages pakete howto tutorial

Einleitung Top


Aufgrund eines Fehlers in kaddressbook, der verhindert, dass die Kontakt-Felder für Homepage und Blog-URL beschreibbar sind, möchte ich hier demonstrieren, wie das Paket mit dem entsprechenden vorhandenen Patch neugebaut werden kann.

Vorbereitung Top


User anlegen und Buildtree vorbereiten:

Code:


su -
# yum install rpmdevtools
# adduser -m makerpm
su - makerpm
$ rpmdev-setuptree
$ ls ~
rpmbuild
$ ls rpmbuild
BUILD  RPMS  SOURCES  SPECS  SRPMS



Als zweiten Schritt laden wir ein bestehendes Source-Packages herunter und entpacken es anschließend.

Code:


$ yumdownloader --source kdepim
$ ls
kdepim-4.2.0-2.fc10.src.rpm rpmbuild
$ rpmdev-extract kdepim-4.2.0-2.fc10.src.rpm
$ ls kdepim-4.2.0-2.fc10.src
kdepim-4.1.80-libqgpgme-link-fix.patch  kdepim-4.2.0-kpilot.patch  kdepim-4.2.0.tar.bz2  kdepim.spec
$ mv kdepim-4.2.0-2.fc10.src/kdepim-4.* rpmbuild/SOURCES/
$ mv kdepim-4.2.0-2.fc10.src/kdepim.spec rpmbuild/SPECS/
$ cd rpmbuild/SOURCES/



Nun fehlt noch der Patch, den wir hier bei einem Klick auf Patch erhalten:

Code:


$ wget http://websvn.kde.org/trunk/KDE/kdepim/kaddressbook/addresseeeditorwidget.cpp?r1=923394&r2=923393&pathrev=923394&view=patch
$ mv addresseeeditorwidget.cpp\?r1\=923394\&r2\=923393\&pathrev\=923394\&view\=patch kdepim-4.2.0-addresseeeditorwidget.patch
$ cd ../SPECS/



Nun wird die kdepim.specs in einem Editor geöffnet und nach der letzten Patch-Zeile eine weitere hinzugefügt, in diesem Beispiel:

rpmbuild/SPECS/kdepim.spec:


%ifnarch s390 s390x
%define _with_pilot_link 1
%endif

Name:    kdepim
Summary: PIM (Personal Information Manager) applications
Epoch:   6
Version: 4.2.0
# Release-Nummer um eins erhöhen:
Release: 7%{?dist}

License: GPLv2
Group:   Applications/Productivity
URL:       http://www.kde.org/
Source0: ftp://ftp.kde.org/pub/kde/stable/%{version}/src/%{name}-%{version}.tar.bz2
Patch0:  kdepim-4.1.80-libqgpgme-link-fix.patch
# unser Patch:
Patch1:  kdepim-4.2.0-addresseeeditorwidget.patch
# upstream patches
Patch100: kdepim-4.2.0-kpilot.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)

Provides: kdepim4 = %{version}-%{release}

Requires: %{name}-libs = %{?epoch:%{epoch}:}%{version}-%{release}

Requires(post): xdg-utils
Requires(postun): xdg-utils
[.....]

%prep
%setup -q
%patch0 -p1 -b .libqgpgme-link-fix
# unser Patch:
%patch1 -p3 -b .addresseeeditorwidget

# upstream patches
%patch100 -p1 -b .kpilot

[......]

# Changelog aktualisieren:
%changelog
* Fri Feb 27 2009 Julian G. <glua@4-xxx.net> - 4.2.0-7
- upstream patch, fix kaddressbook fields for homepage and blog

* Tue Jan 27 2009 Than Ngo <than@redhat.com> - 4.2.0-2
- upstream patch, fix data corruption problems in KPilot

* Thu Jan 22 2009 Than Ngo <than@redhat.com> - 4.2.0-1
- 4.2.0
[.....]



Kompilieren Top



Nun können wir kdepim kompilieren versuchen:

Code:


$ pwd
~/rpmbuild/SPECS
$ rpmbuild -ba kdepim.spec
error: Failed build dependencies:
        akonadi-devel is needed by kdepim-6:4.2.0-7.fc10.src
        bison is needed by kdepim-6:4.2.0-7.fc10.src
        flex is needed by kdepim-6:4.2.0-7.fc10.src
        boost-devel is needed by kdepim-6:4.2.0-7.fc10.src
        cyrus-sasl-devel is needed by kdepim-6:4.2.0-7.fc10.src
        gnokii-devel is needed by kdepim-6:4.2.0-7.fc10.src
        gpgme-devel is needed by kdepim-6:4.2.0-7.fc10.src
        kdepimlibs-devel >= 4.2.0 is needed by kdepim-6:4.2.0-7.fc10.src
        libassuan-devel is needed by kdepim-6:4.2.0-7.fc10.src
        lockdev-devel is needed by kdepim-6:4.2.0-7.fc10.src
        pilot-link-devel >= 0.12 is needed by kdepim-6:4.2.0-7.fc10.src
        libmal-devel >= 0.40 is needed by kdepim-6:4.2.0-7.fc10.src
        soprano-devel is needed by kdepim-6:4.2.0-7.fc10.src
        qca2-devel is needed by kdepim-6:4.2.0-7.fc10.src
        giflib-devel is needed by kdepim-6:4.2.0-7.fc10.src
        openldap-devel is needed by kdepim-6:4.2.0-7.fc10.src
        pcre-devel is needed by kdepim-6:4.2.0-7.fc10.src
        libical-devel is needed by kdepim-6:4.2.0-7.fc10.src



Die fehlenden Abhängigkeiten installieren wir als Root nach:

Code:


$ su -
# yum install libical-devel pcre-devel openldap-devel giflib-devel qca2-devel soprano-devel libmal-devel pilot-link-devel lockdev-devel libassuan-devel kdepimlibs-devel gpgme-devel gnokii-devel cyrus-sasl-devel boost-devel flex bison akonadi-devel
# exit



Nun der zweite Versuch:

Code:


$ cd rpmbuild/SPECS/
$ rpmbuild -ba kdepim.spec



Wenn alles gut gegangen ist, finden wir nun das fertige RPM in ~/rpmbuild/RPMS und ein aktuelles Source-RPM in ~/rpmbuild/SRPMS.

Gibt es noch irgendwelche Fragen, oder wollen Sie über den Artikel diskutieren?

Editieren Versionen Linkpartnerschaft Top Printversion

Haben Sie einen Fehler gefunden? Dann klicken Sie doch auf Editieren, und beheben den Fehler, keine Angst, Sie können nichts zerstören, das Tutorial kann wiederhergestellt werden

Sprachenübersicht/Betriebssysteme/Linux/Fedora/Fedora RPM-Pakete patchen