RPM-build-No such file or directory
Ich will einfach RPM-Datei mit vielen kleinen Dateien.
[root@laptop rpm]# tree
.
├── BUILD
├── BUILDROOT
├── RPMS
├── SOURCES
│ └── some_agent-1.0.tar.gz
├── SPECS
│ ├── kernel.spec
│ └── kernel.spec~
└── SRPMS
6 directories, 3 files
[root@laptop rpm]#
Ich habe diese spec-Datei:
Summary: some_agent
Name: some_agent
Version: 1.0
Release: 1
License: Apache
Group: application
Source0: %{name}-%{version}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
%description
Test
%prep
%setup -q
%build
%install
rm -rf $RPM_BUILD_ROOT
make root=$RPM_BUILD_ROOT install
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root,-)
%doc
agent/*
Aber wenn ich versuche das RPM-Paket bekomme ich diesen Fehler:
[root@laptop ~]$ rpmbuild -bb -v ~/rpm/SPECS/kernel.spec
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.RUwFW5
+ umask 022
+ cd /home/rcbandit/rpm/BUILD
+ LANG=C
+ export LANG
+ unset DISPLAY
+ cd /home/rcbandit/rpm/BUILD
+ rm -rf some_agent-1.0
+ /usr/bin/gzip -dc /home/rcbandit/rpm/SOURCES/some_agent-1.0.tar.gz
+ /bin/tar -xf -
+ STATUS=0
+ '[' 0 -ne 0 ']'
+ cd some_agent-1.0
/var/tmp/rpm-tmp.RUwFW5: line 38: cd: some_agent-1.0: No such file or directory
error: Bad exit status from /var/tmp/rpm-tmp.RUwFW5 (%prep)
RPM build errors:
Bad exit status from /var/tmp/rpm-tmp.RUwFW5 (%prep)
[root@laptop ~]$ ^C
Haben Sie eine Idee, wo liegt mein Fehler?
Ich kopiert die Quell-Datei, aber für einige Grund es nicht gefunden.
Es sieht aus wie rpmbuild hat einige Probleme mit wechselnden Verzeichnis entpackt some_agent-Verzeichnis, überprüfen Sie die Pfade. Vielleicht Ihre Quellen waren nicht komprimierte richtig - ohne 'some_agent-1.0" - Verzeichnis, nur die Dateien? Versuchen, um es zu Dekomprimieren manuell und sehen, was ist das Ergebnis.
Nein, manuell Dekomprimieren von Dateien, ist nicht die Lösung des Problems.
Beim Auspacken des
ja, in welchem Verzeichnis muss ich entpacken? QUELLEN?
Nun kann der generierte U / MIN leer ist. Sieht aus wie wieder bin ich etwas fehlt.
Nein, manuell Dekomprimieren von Dateien, ist nicht die Lösung des Problems.
Beim Auspacken des
some_agent-1.0.tar.gz
tarball herunter, machen Sie am Ende mit einem Verzeichnis namens some_agent-1.0
? Oder etwas anderes?ja, in welchem Verzeichnis muss ich entpacken? QUELLEN?
Nun kann der generierte U / MIN leer ist. Sieht aus wie wieder bin ich etwas fehlt.
InformationsquelleAutor user1285928 | 2015-07-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie angeben, %dir, es wird auch nur das Verzeichnis und sonst nichts. Ohne %dir pragma, wird das Verzeichnis und ALLES darin.
So dass Sie nur kopieren Sie die Dateien in diesem Verzeichnis in der %install-Abschnitt.
Edit:
Lassen Sie uns sagen, dass some-agent-1.0.tar.gz enthält:
dann Ihren Abschnitten werden sollte:
Statt der letzten Zeile können Sie entweder:
aber offensichtlich
ist kürzer und haben die gleiche Bedeutung.
In %install-Abschnitt können Sie beliebige bash-Befehl. Also tun Sie es, was würden Sie normalerweise tun, auf der Kommandozeile. Jeder shell-Erweiterung arbeitet, so verwenden Sie, um Ihre Vorauszahlung.
Ich habe einige Makros, die Sie verwenden sollten Sie eher dann hartcodierten Pfad. Sie können vollständige Liste der verfügbaren Makros von
Bewerten von
welche auf den letzten RHEL und Fedoras evaluato zu
Ich auch wenig trick mit der LIZENZ-Datei. Wenn es vorhanden ist im obersten Verzeichnis des tarfile, dann geben Sie einfach den Namen in %doc makro-und U /min wird es richtig %docdir automatisch.
your_milion_files/*
? Vielleicht ist jede Datei oder ein bestimmtes Verzeichnis?In der %prep-Abschnitt, in dem Sie richtig entpackt some-agent-1.0.tar.gz und am Anfang des %install-Abschnitt werden Sie gewechselt ./agent/ - Verzeichnis, die oberste Verzeichnis Ihres tar. Also im Grunde kopieren Sie diese Dateien an den richtigen Speicherort in %{buildroot}. Ich werde versuchen, mein edit beantworten und geben konkretes Beispiel.
InformationsquelleAutor msuchy
Blick auf die log aus dem build-Prozess. Zuerst
rpmbuild
änderungen in derBUILD
Verzeichnis:Dann untars Ihre Quell-tarball:
Dann versucht es zu
cd
in diesome_agent-1.0
- Verzeichnis, das vermutlich erstellt durch entpacken Sie das Quellcode-Archiv:Diese ausfallen wird. Dies deutet darauf hin, dass dem entpacken des Archivs ist nicht zu erstellen das Verzeichnis RPM sucht. Würden Sie in der Regel lösen diese mit einem argument, um die
%setup
makro. Zum Beispiel, wenn ich ein Archiv mit dem Namensome_agent-1.0.tar.gz
, und es enthält:Ich brauchen würde, um anzuzeigen, dass mit der
-n
argument der%setup
makro:Ich habe einen kleinen Fortschritt. Ich habe eine directory-agent in der tar.gz Datei, die eine Mutter für viele kleine Dateien. Ich schaffte es, zu bauen des RPM, aber es ist leer. keine Ahnung, was mir fehlt?
Ihre .spec-Dateien nur erstellen Sie ein leeres Verzeichnis in $RPM_BUILD_ROOT/opt/agent , würden Sie brauchen, um die Dateien zu kopieren, die Sie möchten installiert werden, in es als gut, und Sie wahrscheinlich benötigen, um entfernen Sie die
%dir
in Ihrem%install
Abschnitt zu.Ja, aber ich habe 1000+ Dateien in das Paket. Ich kann nicht schreiben Sie alle Datei-Namen. Können Sie mir ausführliche Informationen, was muss ich Bearbeiten?
Vielleicht tun Sie einfach
cp -ap agent/* $RPM_BUILD_ROOT/opt/agent/
Oder statt zu tuninstall -m 0755 -d $RPM_BUILD_ROOT/opt/agent
wird , kopieren Sie einfach das gesamte Verzeichnis-Struktur:install -m 0755 -d $RPM_BUILD_ROOT/opt/
undcp -R agent $RPM_BUILD_ROOT/opt/
InformationsquelleAutor larsks