Hallo, ich vesuche (versuchte) hier gerade, von apache und php neue rpm's mit zusätzlichen Optionen zu bauen. Das hat nach einem Haufen Schwierigkeiten auch funktioniert. Mir ist dabei allerdings aufgefallen, daß beim bauen der rpm's auch immer gleich der install-Zweig durchlaufen wird. Kann man auf einer Maschine nicht einfach ein rpm bauen, ohne das gleich was installiert wird? Wie kann ich sonst mal ein rpm für eine andere Maschine erstellen, wo ich z.B. ein paar Optionen an/abschalten will, die ich hier nicht nutzen will. (Der Zielrechner ist meine Firewall. Da läuft nicht mal ein C-Compiler drauf) Andreas
On Mit, 11 Jul 2001, Andreas Kyek wrote:
Das hat nach einem Haufen Schwierigkeiten auch funktioniert. Mir ist dabei allerdings aufgefallen, daß beim bauen der rpm's auch immer gleich der install-Zweig durchlaufen wird.
Falls beim Ausfuehren von %install nicht in $RPM_BUILD_ROOT, sondern direkt im System installiert wird, dann ist entweder das .spec mies (bzw. schlecht an das Makefile angepasst) oder das Makefile ist schlecht. Ohne Details laesst sich da erstmal nix zu sagen... Dass installiert wird (make install) ist normal, aber eben nicht "ins System", sondern nach $RPM_BUILD_ROOT, was normal (unter SuSE) unter /var/tmp/rpm/ liegt... -dnh --
Zusatzfrage: Wo ist der Urschleim, dem das WoKo seine Existenz zu verdanken hat? ||| Der bildet sich allwinterlich in seinen eigenen Bronchien. Das Woko ist also ein biologisches Perpetuum-Mobile. [Dieter Bruegmann und Jürgen Bödecker in dag°]
On 11 Jul 2001, at 14:58, David Haller wrote:
On Mit, 11 Jul 2001, Andreas Kyek wrote:
Das hat nach einem Haufen Schwierigkeiten auch funktioniert. Mir ist dabei allerdings aufgefallen, daß beim bauen der rpm's auch immer gleich der install-Zweig durchlaufen wird.
Falls beim Ausfuehren von %install nicht in $RPM_BUILD_ROOT, sondern direkt im System installiert wird, dann ist entweder das .spec mies (bzw. schlecht an das Makefile angepasst) oder das Makefile ist schlecht.
Ohne Details laesst sich da erstmal nix zu sagen...
Dass installiert wird (make install) ist normal, aber eben nicht "ins System", sondern nach $RPM_BUILD_ROOT, was normal (unter SuSE) unter /var/tmp/rpm/ liegt...
OK, erst mal danke für alle Antworten. Dann mal ans eingemachte: Aufgefallen ist es mir beim notwendigen neukompilieren des Apache für unseren Server. Der Install-Zweig im Original SuSE Source rpm sieht so aus: %install touch .timestamp export SSL_BASE=%{ssl_location} export DOC_ROOT=%{datadir} rm -f %{sysconfdir}/httpd.conf make install ... strip %{_sbindir}/httpd strip %{_libdir}/%{name}/*.so # # patch httpd.conf generated by mod_ssl # cat %{sysconfdir}/httpd.conf | \ sed -e 's+var/logs+var/log+' \ -e 's+SSLEngine on+SSLEngine off+' \ ... u.s.w. sysconfdir wird am Anfang des SPEC-Files auf /etc/httpd gesetzt. Für mich sieht das so aus, als ob in diesem SPEC File _gar_ _nix_ davon steht, daß er nicht sofort eine scharfe Installation macht, oder? Jedesmal beim RPM Erstellen hat er mir unter anderem unsere conf Datei gnadenlos überbügelt. (Ja, wir haben ein Backup) Ist das nun ein Fehler/eine Unsauberkeit im SuSE spec-File oder habe ich das was nicht verstanden? Das File ist das Original srpm von der 7.0 (Apache 1.3.12). Komischerweise läßt sich der SuSE Update auf die 1.3.19 zwar installieren, aber danach antwortet der Server auf keine Anfrage mehr (die anderen Module etc. wurden natürlich mit installiert). Ich wollte nun testweise den apache1.3.20 mit php4.0.6, mod_ssl2.8.4, mod_perl1.25 und Oracle support als rpm bauen, aber das kann ich mir nur leisten, wenn beim rpm-Erstellen NICHT scharf installiert wird. Also: Muß ich das SuSE spec-file großartig anpassen für ein "nur rpm erstellen" oder geht das einfach? Andreas PS: Sorry, aber rpm ist bisher nicht mein Schwerpunkt, daher kenne ich mich hier nur sehr wenig aus!
On Don, 12 Jul 2001, Andreas Kyek wrote:
On 11 Jul 2001, at 14:58, David Haller wrote: [..]
Dass installiert wird (make install) ist normal, aber eben nicht "ins System", sondern nach $RPM_BUILD_ROOT, was normal (unter SuSE) unter /var/tmp/rpm/ liegt...
[..]
rm -f %{sysconfdir}/httpd.conf
UAAAARRRRRRRRRRRRRRRRRGGGGGGGGGGGGGGGGGGGGGGGGGGG!!!!!!!!
make install
RAAAAAHHHHHHHHHHHH!
... strip %{_sbindir}/httpd strip %{_libdir}/%{name}/*.so [..]
Da hat wohl jemand den Sinn von RPM ziemlich missverstanden... Bitte, wer ist der Packager? Dem gehoert das .spec an einem Blauwal befestigt um die Ohren gehauen... *scnr*
Für mich sieht das so aus, als ob in diesem SPEC File _gar_ _nix_ davon steht, daß er nicht sofort eine scharfe Installation macht, oder?
Ja. Das hast du voellig richtig erkannt. Und du hast alle Gruende, sauer zu sein!
Jedesmal beim RPM Erstellen hat er mir unter anderem unsere conf Datei gnadenlos überbügelt. (Ja, wir haben ein Backup)
Ja. *ARGGGG!*
Ist das nun ein Fehler/eine Unsauberkeit im SuSE spec-File oder habe ich das was nicht verstanden? Das File ist das Original srpm von der 7.0 (Apache 1.3.12).
Das ist eindeutig ein sowas von kaputtes .spec, ich krieg mich schier nicht mehr ein!
Also: Muß ich das SuSE spec-file großartig anpassen für ein "nur rpm erstellen" oder geht das einfach?
Es ist wohl ein wenig fitzel-Arbeit... Maile mir doch einfach mal das .spec und das Makefile... So auf die schnelle ist das ein wenig viel, zumal wohl noch einiges mehr anzupassen ist, als das bisschen, das du gemailt hast... Das rm .... httpd.conf _DARF NIE UND NIMMER NICHT VORKOMMEN!_ Das gehoert ueber einen %config %{sysconfdir}/httpd.conf Eintrag in der %files-Sektion geregelt... Wobei %sysconfdir sowieso nicht auf /etc/httpd sondern auf /etc/ gesetzt werden sollte... *SCHNAUF* *AECHZ* *langsam wieder beruhig* *brrr* -dnh -- "Don't put off 'till tomorrow, responsibilities. They'll just come back to haunt you. (Ignore them totally)" -- TISM
On 12 Jul 2001, at 11:46, David Haller wrote:
On Don, 12 Jul 2001, Andreas Kyek wrote:
On 11 Jul 2001, at 14:58, David Haller wrote: [..]
Dass installiert wird (make install) ist normal, aber eben nicht "ins System", sondern nach $RPM_BUILD_ROOT, was normal (unter SuSE) unter /var/tmp/rpm/ liegt...
[..]
rm -f %{sysconfdir}/httpd.conf
UAAAARRRRRRRRRRRRRRRRRGGGGGGGGGGGGGGGGGGGGGGGGGGG!!!!!!!!
[...]
Da hat wohl jemand den Sinn von RPM ziemlich missverstanden...
Bitte, wer ist der Packager? Dem gehoert das .spec an einem Blauwal befestigt um die Ohren gehauen... *scnr*
PPPPPPPSSSSSSSSTTTTTTT! Das ist aus dem Original SPEC File, das ich nach der Installation des Apache srpm's der SuSE 7.0 erhalten habe. Vielleicht ist da ja doch alles gut drin und ich habe nur zu wenig ausgeschnitten und gepostet. Aber vielleicht hast du das Original SuSE SPEC File ja da und kannst Da mal einen kurzen Blick drauf werfen!
Das gehoert ueber einen
%config %{sysconfdir}/httpd.conf
Eintrag in der %files-Sektion geregelt...
Na ja, da steht schon 'ne Files Sektion. Aber wie gesagt: Ich kenne mich da bisher nicht aus.
Wobei %sysconfdir sowieso nicht auf /etc/httpd sondern auf /etc/ gesetzt werden sollte...
*SCHNAUF* *AECHZ* *langsam wieder beruhig*
*brrr*
Falls das deinem Herzschrittmacher nicht zu sehr zusetzt: könntest Du Dir das SPEC-File mal ansehen, wenn Du es hast? (Ich kann es Dir natürlich auch schicken, aber 'ne SuSE CD wirst Du haben, oder? Andreas PS: Wo lernt man am einfachsten/schnellsten/übersichtlichsten die Systax im SPEC-File?
On Don, 12 Jul 2001, Andreas Kyek wrote:
On 12 Jul 2001, at 11:46, David Haller wrote:
On Don, 12 Jul 2001, Andreas Kyek wrote:
On 11 Jul 2001, at 14:58, David Haller wrote: [..]
Dass installiert wird (make install) ist normal, aber eben nicht "ins System", sondern nach $RPM_BUILD_ROOT, was normal (unter SuSE) unter /var/tmp/rpm/ liegt...
[..]
rm -f %{sysconfdir}/httpd.conf
UAAAARRRRRRRRRRRRRRRRRGGGGGGGGGGGGGGGGGGGGGGGGGGG!!!!!!!!
[...]
Da hat wohl jemand den Sinn von RPM ziemlich missverstanden...
Bitte, wer ist der Packager? Dem gehoert das .spec an einem Blauwal befestigt um die Ohren gehauen... *scnr*
PPPPPPPSSSSSSSSTTTTTTT! Das ist aus dem Original SPEC File, das ich nach der Installation des Apache srpm's der SuSE 7.0 erhalten habe.
Ja und? Dass es von SuSE ist und dass es, wenn man das _binary_ dann verwendet keine Probleme gibt, heisst noch lange nix... Ich hatte das gleiche Problem schon mehr als einmal...
Vielleicht ist da ja doch alles gut drin und ich habe nur zu wenig ausgeschnitten und gepostet.
Nene, der Auschnitt war aussagekraeftig genug...
Aber vielleicht hast du das Original SuSE SPEC File ja da und kannst Da mal einen kurzen Blick drauf werfen!
Ne, nur das der SuSE 6.2 (Apache/1.3.6)...
Das gehoert ueber einen
%config %{sysconfdir}/httpd.conf
Eintrag in der %files-Sektion geregelt...
Na ja, da steht schon 'ne Files Sektion. Aber wie gesagt: Ich kenne mich da bisher nicht aus.
Ja, natuerlich muss da ne %files-Sektion sein, was ich meinte war, dass das Ersetzen der config-dateien (hier eben die httpd.conf) per %config-Makro in %files, und nicht per rm -f der _aktuellen_, meist wohl angepassten Datei des laufenden Systems zu geschehen hat. Das rm -f der httpd.conf schlaegt dem Fass echt den Boden aus, das 'make install' an sich waere ja schon schlimm genug gewesen (es sei den ./configure hat ein falsches --prefix bekommen, aber das wuerde die Sache auch nicht sonderlich verbessern).
Wobei %sysconfdir sowieso nicht auf /etc/httpd sondern auf /etc/ gesetzt werden sollte...
*SCHNAUF* *AECHZ* *langsam wieder beruhig*
*brrr*
Falls das deinem Herzschrittmacher nicht zu sehr zusetzt: könntest Du Dir das SPEC-File mal ansehen, wenn Du es hast? (Ich kann es Dir natürlich auch schicken,
Ja (per PM, samt Makefile, als tar.gz oder tar.bz2).
aber 'ne SuSE CD wirst Du haben, oder?
Nein. Ein apache.src.rpm hab ich nur von 6.2 (s.o.)...
PS: Wo lernt man am einfachsten/schnellsten/übersichtlichsten die Systax im SPEC-File?
Es gibt zwar einiges an Doku, die einzig brauchbare, die ich bisher gefunden habe ist das "Maximum-RPM" Buch (gibt's irgendwo auf http://www.rpm.org zum DL, nennt sich IIRC auch einfach "rpmbook"). -dnh -- 279: Die fünf Sinne des C++-Programmierers Der Schwachsinn, der Blödsinn, der Wahnsinn, der Unsinn und der Stumpfsinn. (Holger Veit)
On Thu, Jul 12, 2001 at 01:58:17PM +0200, Andreas Kyek wrote:
PS: Wo lernt man am einfachsten/schnellsten/übersichtlichsten die Systax im SPEC-File?
Das Buch Maximum RPM würde ich da empfehlen. Gibt es als Hardware und zum download irgendwo bei RedHat in deren Bereich über rpm... HTH Frank
* David Haller [Thu, 12 Jul 2001 11:46:34 +0200]:
UAAAARRRRRRRRRRRRRRRRRGGGGGGGGGGGGGGGGGGGGGGGGGGG!!!!!!!!
make install
RAAAAAHHHHHHHHHHHH!
Immer mit der Ruhe ;-)
Bitte, wer ist der Packager? Dem gehoert das .spec an einem Blauwal befestigt um die Ohren gehauen... *scnr*
Für mich sieht das so aus, als ob in diesem SPEC File _gar_ _nix_ davon steht, daß er nicht sofort eine scharfe Installation macht, oder?
Ja. Das hast du voellig richtig erkannt. Und du hast alle Gruende, sauer zu sein!
Unsere Pakete werden in einer chroot Umgebung gebaut, denn nur so kann sichergestellt werden, dass die Pakete in einer definierten Umgebung und passend zu der jeweiligen Distribution gebaut werden. Aus diesen Grund braucht kein Buildroot verwendet zu werden, denn es wird ja niemals in das laufende System installiert. Das ist für den Maintainer einfach, aber für normale Anwender natürlich nicht so prickelnd. Daher bemühen wir uns seit einiger Zeit, möglichst alle Pakete mit BuildRoot zu bauen, eben um es dem normalen Anwender einfach zu machen. Nun ist gerade die Verwendung von BuildRoot bei Apache alles andere als trivial und erfordert einiges Tricksen. Aber zumindest das Apache-Specfile der 7.2 verwendet BuildRoot, also kann man sich dieses ja als Vorbild nehmen, um das 7.0 Specfile anzupassen. Philipp -- Pinguine sollen die Dinosaurier retten -- Handelsblatt über Linux auf S/390
On Sam, 14 Jul 2001, Philipp Thomas wrote:
* David Haller [Thu, 12 Jul 2001 11:46:34 +0200]: [im apache.spec]
make install
RAAAAAHHHHHHHHHHHH!
Immer mit der Ruhe ;-)
Ja. Ich hab mich wieder beruhigt :) [..]
Unsere Pakete werden in einer chroot Umgebung gebaut, denn nur so kann sichergestellt werden, dass die Pakete in einer definierten Umgebung und passend zu der jeweiligen Distribution gebaut werden. Aus diesen Grund braucht kein Buildroot verwendet zu werden, denn es wird ja niemals in das laufende System installiert.
Hm. Das leuchtet ein, aber wer das src.rpm selber backen will hat da natuerlich Probleme, wenn ins System installiert wird, und wie beim apache ein rm -f %{sysconfdir}/httpd.conf drinsteht, das sowieso ueberfluessig ist, da spaeter in der %files Sektion ganz korrekt dann drinsteht: %config(noreplace) %{sysconfdir}/httpd.conf
Das ist für den Maintainer einfach, aber für normale Anwender natürlich nicht so prickelnd.
So kann man's auch sagen...
Daher bemühen wir uns seit einiger Zeit, möglichst alle Pakete mit BuildRoot zu bauen, eben um es dem normalen Anwender einfach zu machen.
Auch eine gesetze BuildRoot hilft in dem Falle nicht, da sie nicht verwendet wird...
Nun ist gerade die Verwendung von BuildRoot bei Apache alles andere als trivial und erfordert einiges Tricksen.
Nein! make root="${RPM_BUILD_ROOT}" install reicht fuer apache selbst. Es wird eben nur nicht das uebliche DESTDIR= verwendet... (und das tricksen mit prefix ist ja auch nur, weil die Makefiles DESTDIR gerne ignorieren). Nix fuer ungut, aber da war der/die Packager wirklich nicht sehr sorgfaeltig beim Lesen des Makefiles: # installation root # (overrideable by package maintainers for # rolling packages without bristling the system) root = Den Rest von %install anzupassen ist dann eine Geduldsaufgabe ;)
Aber zumindest das Apache-Specfile der 7.2 verwendet BuildRoot, also kann man sich dieses ja als Vorbild nehmen, um das 7.0 Specfile anzupassen.
Naja. Dazu braeuchte man erstmal das src.rpm... Das letzte das ich hab ist von der SuSE 6.2... ;) -dnh -- Never knock on Death's door. Ring the bell & run. He *hates* that -- sig stolen from The Flying Hamster
* David Haller [Sat, 14 Jul 2001 13:05:49 +0200]:
Naja. Dazu braeuchte man erstmal das src.rpm... Das letzte das ich hab ist von der SuSE 6.2... ;)
Ich hab' dir das Specfile gerade mal per PM geschickt. Mit 42 KB fand ich es für die Liste zu gross. Philipp -- Pinguine sollen die Dinosaurier retten -- Handelsblatt über Linux auf S/390
On Sat, 14 Jul 2001 03:41:21 +0200, Philipp Thomas wrote:
Unsere Pakete werden in einer chroot Umgebung gebaut, denn nur so kann sichergestellt werden, dass die Pakete in einer definierten Umgebung und passend zu der jeweiligen Distribution gebaut werden. Aus diesen Grund braucht kein Buildroot verwendet zu werden, denn es wird ja niemals in das laufende System installiert.
Es ist mir aber schon mehrfach passiert das ich selbst die Originalsouren nicht kompiliert bekommen habe, das dürfte eigentlich dann erst recht nicht passieren. It's time to close windows !!! with best regards from Dortmund Matthias Popp 49-163-4289 455 PGP Public Key Fingerprint = 71 13 E9 4B 89 E5 88 6C 66 1D B8 E8 32 3A AE AB
* Andreas Kyek [Thu, 12 Jul 2001 09:05:10 +0200]:
Für mich sieht das so aus, als ob in diesem SPEC File _gar_ _nix_ davon steht, daß er nicht sofort eine scharfe Installation macht, oder?
Hmm, zumindest das apache.spec für 7.2 enthält BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root Und wenn ich mir den %build Teil ansehe, dann wird auch fleissig RPM_BUILD_ROOT verwendet. Ausserdem muss das funktionieren, denn wenn BuildRoot definiert ist, such RPM auch nur dort nach den einzupackenden Dateien. Philipp -- Pinguine sollen die Dinosaurier retten -- Handelsblatt über Linux auf S/390
Andreas Kyek wrote:
Hallo,
ich vesuche (versuchte) hier gerade, von apache und php neue rpm's mit zusätzlichen Optionen zu bauen.
Das hat nach einem Haufen Schwierigkeiten auch funktioniert. Mir ist dabei allerdings aufgefallen, daß beim bauen der rpm's auch immer gleich der install-Zweig durchlaufen wird.
Kann man auf einer Maschine nicht einfach ein rpm bauen, ohne das gleich was installiert wird?
Wenn du eine Buildroot angibt, wird auch alles in diese Buildroot installiert und nicht über dies laufende Installation. -- Markus Kossmann markus.kossmann@inka.de
Markus Kossmann wrote:
Andreas Kyek wrote:
Hallo,
ich vesuche (versuchte) hier gerade, von apache und php neue rpm's mit zusätzlichen Optionen zu bauen.
Das hat nach einem Haufen Schwierigkeiten auch funktioniert. Mir ist dabei allerdings aufgefallen, daß beim bauen der rpm's auch immer gleich der install-Zweig durchlaufen wird.
Kann man auf einer Maschine nicht einfach ein rpm bauen, ohne das gleich was installiert wird?
Wenn du eine Buildroot angibt, wird auch alles in diese Buildroot installiert und nicht über dies laufende Installation.
Nein. Automatisch passiert da in der Regel nicht viel. Du musst schon explizit dafür sorgen, dass RPM_BUILD_ROOT schon irgendwie an make/configure usw. übergeben und verarbeitet werden. Bei guten Konfigurationen genügt dazu ein %install make DESTDIR=$RPM_BUILD_ROOT install oder %makeinstall Im Einzelfall können aber auch weitere, manchmal auch recht komplizierte Schritte erforderlich sein. Ralf
Hallo Andreas, Hallo Markus, * Markus Kossmann schrieb:
Andreas Kyek wrote:
Hallo,
ich vesuche (versuchte) hier gerade, von apache und php neue rpm's mit zusätzlichen Optionen zu bauen.
Das hat nach einem Haufen Schwierigkeiten auch funktioniert. Mir ist dabei allerdings aufgefallen, daß beim bauen der rpm's auch immer gleich der install-Zweig durchlaufen wird.
Kann man auf einer Maschine nicht einfach ein rpm bauen, ohne das gleich was installiert wird?
Wenn du eine Buildroot angibt, wird auch alles in diese Buildroot installiert und nicht über dies laufende Installation.
Und wenn du die RPM's als User baust, kann es auch nicht passieren das aus Versehen eine Anweisung in irgendeinem Makefile, Dateien ins System installiert. .rpmmacros im Home des Users %_topdir /home/waldemar/devel %_fixowner %{__chown_Rhf} `id -u` %_fixgroup %{__chgrp_Rhf} `id -g` unterhalb von devel die Verzeichnisse: RPMS,SRPMS,SOURCES,SPECS,BUILD anlegen und schon kann es losgehen ohne "Gefährdung" des lokalen Systems. bye Waldemar -- "The PROPER way to handle HTML postings is to cancel the article, then hire a hitman to kill the poster, his wife and kids, and fuck his dog and smash his computer into little bits. Anything more is just extremism." -- Paul Tomblin
Am Mittwoch, 11. Juli 2001 10:43 schrieb Andreas Kyek:
Kann man auf einer Maschine nicht einfach ein rpm bauen, ohne das gleich was installiert wird? Wie kann ich sonst mal ein rpm für
RPM braucht die Daten so, wie sie bei einer erfolgreichen Installation stehen würden, deshalb wird eine Installation in ein temporäres Verzeichnis installiert, ins RPM gepackt und aus dem temporären Verzeichnis gelöscht. Sollte ins reale verzeichnis installiert worden sein, ist das ein Fehler im spec File. -- Machs gut | http://www.iiv.de/schwinde/buerger/tremmel/ | http://www.knightsoft.de Manfred | http://www.knightsoft-net.de
participants (9)
-
Andreas Kyek
-
David Haller
-
Frank Derichsweiler
-
Manfred Tremmel
-
Markus Kossmann
-
Matthias Popp
-
Philipp Thomas
-
Ralf Corsepius
-
Waldemar Brodkorb