2014-01-22 18 views
6

Ich habe eine Python-Anwendung erstellt, in der ich .so und einige Binärdateien im endgültigen RPM-Paket versenden möchte. Nach langem Lesen habe ich eine Möglichkeit gefunden, Binärdateien/Bilder und andere Dateien in setup.py hinzuzufügen. Nun, wenn ich eine RPM mit python setup.py bdist_rpm Befehl bauen, klagt er über Architektur Abhängigkeit:Versand * .so und Binärdateien beim Erstellen von RPM-Paket

Arch dependent binaries in noarch package 
error: command 'rpmbuild' failed with exit status 1 

Nach Googeln fand ich, dass wir hinzufügen:

#%define _binaries_in_noarch_packages_terminate_build 0 

oder Entfernen der Linie BuildArch: noarch in der packagename.spec-Datei überwinde den rpmbuild Fehler. Jedes Mal, wenn ich eine Zeile aus build/bdist.linux-i686/rpm/SPECS/packagename.spec hinzufüge oder entferne, überschreibt der Befehl python setup.py bdist_rpm jedoch immer die Datei .spe.

Gibt es eine Möglichkeit, Arch dependent binaries zu vermeiden und * .so und andere Binärdateien in U/min zu versenden?

Antwort

1

Das Verhalten von bdist_rpm wird durch eine Reihe von Einstellungen in definierten existiert auf Ihrem System. Das ist normal.

Also, um die „Arch abhängigen Binärdateien in noarch Paket“ Fehler zu verhindern, würden Sie /etc/rpm/macros oder ~/.rpmmacros erstellen und fügen Sie den folgenden:

%_unpackaged_files_terminate_build  0 
%_binaries_in_noarch_packages_terminate_build 0 

nicht /usr/lib/rpm/macros ändern, weil diese Datei durch die überschrieben werden System, wenn das RPM-Build-Paket aktualisiert, heruntergestuft oder erneut installiert wird.

Wenn Sie das Verhalten für alle auf dem System überschreiben möchten, setzen Sie die Einstellungen in /etc/rpm/macros. Wenn Sie das Verhalten für einen bestimmten Benutzer überschreiben möchten, fügen Sie die Einstellungen zu $HOME/.rpmmacros hinzu.

.rpmmacros trumps /etc/rpm/macros die trumps /usr/lib/rpm/macros.

Hinweis: Es ist nützlich, /usr/lib/rpm/macros zu untersuchen, um zu sehen, welche Einstellungen verfügbar sind und für Syntaxbeispiele.

Als eine Randnotiz verhindert %_unpackaged_files_terminate_build 0 Einstellung error: Installed (but unpackaged) file(s) found: Fehler.

+0

Sie können Ihrer Spezifikationsdatei auch Folgendes hinzufügen: % define _binaries_in_noarch_packages_terminate_build 0 –

4

.so Dateien sind, soweit ich weiß, immer bogenabhängig.

In Ihrem Fall zu vermeiden, die Specs-Datei die ganze Zeit bearbeiten Sie --force-arch=<your_arch> unseren setup.py bdist_rpm

zum Beispiel hinzufügen

  • /usr/lib/rpm/macros
  • /etc/rpm/macros
  • $HOME/.rpmmacros/usr/lib/rpm/macros dass nur Wette

Ich bin bereit:

python setup.py bdist_rpm --force-arch=x86_64