• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[per RPM gelöst] tar.gz aus "make install" erzeugen

A

Anonymous

Gast
Hi,
ich habe das Programm "me-tv" selbst übersetzt und möchte daraus ein tar.gz erzeugen. me-tv soll auf einem anderen PC installiert werden, ohne dass alle devel-Pakete neu installiert und die Dateien von me-tv neu kompiliert werden müssen. (./configure, make, make install).

Probiert habe ich schon eine Pipe, aber das klappt leider nicht.
Code:
 make install | tar cvzf /home/jane/me-tv.1.3.6.tar.gz -
tar: -: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors
Kann mir da jemand vielleicht weiterhelfen?
 

abgdf

Guru
Äh, .tar.gz ist aber dafür, daß neu kompiliert wird.
Code:
tar -czvf mytar.tar.gz mydir
packt ein Verzeichnis.

Wenn beide Rechner dieselbe Architektur haben und rpm unterstützen (z.B. OpenSuSE), solltest Du "checkinstall" verwenden und damit ein rpm bauen.
Also nochmal kompilieren, diesmal aber mit "./configure, make, checkinstall", dann solltest Du ein rpm erhalten.
Ggf. ist dieser Bug in checkinstall zu beachten und zu beheben.
 

josef-wien

Ultimate Guru
Vereinfacht gesagt kopiert make install nur die bereits vorhandenen Dateien an die richtigen Stellen.

Lesestoff zu rpmbuild (das die bessere Lösung ist):
https://fedoraproject.org/wiki/How_to_create_an_RPM_package
http://www.rpm.org/max-rpm/index.html
http://www.tldp.org/HOWTO/RPM-HOWTO/build.html
http://www.tc-world.de/RPM-build-HOWTO-german.htm

P. S. https://software.opensuse.org/package/me-tv?search_term=me-tv oder http://packman.links2linux.de/package/me-tv wird Dich wohl weniger interessieren.
 

abgdf

Guru
josef-wien schrieb:
Lesestoff zu rpmbuild (das die bessere Lösung ist):
"checkinstall" benutzt "rpmbuild" unter der Haube. Ist also sozusagen ein Frontend, um sich mit den Details von "rpmbuild" nicht auseinandersetzen zu müssen.
Durch "checkinstall" konnte ich mich bisher davor immer drücken. ;)
 
OP
A

Anonymous

Gast
josef-wien schrieb:
Vereinfacht gesagt kopiert make install nur die bereits vorhandenen Dateien an die richtigen Stellen.
Müsste solch ein Algorithmus ins Makefile geschrieben werden, der dann ein tar.gz erzeugt?
Vielleicht ist das beim me-tv-Makefile sogar vorhanden. Nur ich kenne diese Option nach make leider nicht.
Das hier habe ich im Makefile gesehen:
Code:
DIST_ARCHIVES = $(distdir).tar.gz
Soll ich mal alles posten?

Lesestoff zu rpmbuild (das die bessere Lösung ist):
Es soll ja nur für "mich" sein. Im Moment fehlt mir leider die Zeit mich in rpmbuild einzuarbeiten.

P. S. https://software.opensuse.org/package/me-tv?search_term=me-tv oder http://packman.links2linux.de/package/me-tv wird Dich wohl weniger interessieren.
Das ist Version 1.4.0 die als Server/Client per Netzwerk funktioniert. me-tv 1.3.6 gibt es nicht mehr als rpm für openSUSE.
 

marce

Guru
Du kannst auch einfach nach dem configure und make das komplette src-Verzeichnis in ein tar.gz packen, auf dem Zielsystem wieder entpacken und dort das make install ausführen.
 
OP
A

Anonymous

Gast
marce schrieb:
Du kannst auch einfach nach dem configure und make das komplette src-Verzeichnis in ein tar.gz packen
Das wäre in der Tat der einfachste Weg, wenn es nicht anderes als rpmbuild gibt.
 

josef-wien

Ultimate Guru
Wenn ich mir ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/multimedia:/apps/openSUSE_Factory/x86_64/me-tv-1.3.6-1.125.x86_64.rpm anschaue, besteht das Ding ja nicht gerade aus vielen Dateien:
Code:
find .
.
./usr
./usr/share
./usr/share/pixmaps
./usr/share/pixmaps/me-tv.xpm
./usr/share/pixmaps/me-tv.png
./usr/share/pixmaps/me-tv-recording.xpm
./usr/share/pixmaps/me-tv-recording.png
./usr/share/me-tv
./usr/share/me-tv/glade
./usr/share/me-tv/glade/me-tv.xpm
./usr/share/me-tv/glade/me-tv.ui
./usr/share/man
./usr/share/man/man1
./usr/share/man/man1/me-tv.1.gz
./usr/share/man/man1/me-tv-player.1.gz
./usr/share/doc
./usr/share/doc/packages
./usr/share/doc/packages/me-tv
./usr/share/doc/packages/me-tv/README
./usr/share/doc/packages/me-tv/COPYING
./usr/share/doc/packages/me-tv/AUTHORS
./usr/share/applications
./usr/share/applications/me-tv.desktop
./usr/share/GConf
./usr/share/GConf/schemas
./usr/share/GConf/schemas/me-tv.schemas
./usr/bin
./usr/bin/me-tv-player
./usr/bin/me-tv
Und dann natürlich noch aus Installations-Skripten:
Code:
rpm -qp --scripts --triggers me-tv-1.3.6-1.125.x86_64.rpm
preinstall scriptlet (using /bin/sh):
mkdir -p /usr/share/GConf/schemas/outdated
if test -f usr/share/GConf/schemas/me-tv.schemas ; then
    cp -f usr/share/GConf/schemas/me-tv.schemas /usr/share/GConf/schemas/outdated/
elif test -f /usr/share/gconf/schemas/me-tv.schemas ; then
    # Migration from /usr/share/gconf/schemas to /usr/share/GConf/schemas. Can be removed for openSUSE 11.4+3
    cp -f /usr/share/gconf/schemas/me-tv.schemas /usr/share/GConf/schemas/outdated/
elif test -f /etc/gconf/schemas/me-tv.schemas ; then
    # Migration from /etc/gconf/schemas to /usr/share/GConf/schemas. Can be removed for openSUSE 12.2
    cp -f /etc/gconf/schemas/me-tv.schemas /usr/share/GConf/schemas/outdated/
fi

preuninstall scriptlet (using /bin/sh):
if test "$1" == "0"; then
    if test -x /usr/bin/gconftool-2 ; then
        export GCONF_CONFIG_SOURCE=`/usr/bin/gconftool-2 --get-default-source`
    fi
    if test -x /usr/bin/gconftool-2 ; then
        if test -f /usr/share/GConf/schemas/outdated/me-tv.schemas ; then
            /usr/bin/gconftool-2 --makefile-uninstall-rule /usr/share/GConf/schemas/outdated/me-tv.schemas >/dev/null
        elif test -f usr/share/GConf/schemas/me-tv.schemas ; then
            /usr/bin/gconftool-2 --makefile-uninstall-rule usr/share/GConf/schemas/me-tv.schemas >/dev/null
        fi
    fi
    rm -f /usr/share/GConf/schemas/outdated/me-tv.schemas
    rmdir /usr/share/GConf/schemas/outdated 2>/dev/null || true
fi

posttrans scriptlet (using /bin/sh):
export GCONF_CONFIG_SOURCE=`/usr/bin/gconftool-2 --get-default-source`
INSTALL_SCHEMA_FILES=
UNINSTALL_SCHEMA_FILES=
if test -f /usr/share/GConf/schemas/outdated/me-tv.schemas; then
    cmp --quiet /usr/share/GConf/schemas/outdated/me-tv.schemas usr/share/GConf/schemas/me-tv.schemas
    if test $? != 0; then
        UNINSTALL_SCHEMA_FILES="$UNINSTALL_SCHEMA_FILES /usr/share/GConf/schemas/outdated/me-tv.schemas"
        INSTALL_SCHEMA_FILES="$INSTALL_SCHEMA_FILES usr/share/GConf/schemas/me-tv.schemas"
    else
        rm -f /usr/share/GConf/schemas/outdated/me-tv.schemas
    fi
else
  INSTALL_SCHEMA_FILES="$INSTALL_SCHEMA_FILES usr/share/GConf/schemas/me-tv.schemas"
fi
if test "x$UNINSTALL_SCHEMA_FILES" != "x"; then
    /usr/bin/gconftool-2 --makefile-uninstall-rule $UNINSTALL_SCHEMA_FILES >/dev/null
    rm -f $UNINSTALL_SCHEMA_FILES
fi
if test "x$INSTALL_SCHEMA_FILES" != "x"; then
    /usr/bin/gconftool-2 --makefile-install-rule $INSTALL_SCHEMA_FILES >/dev/null
fi
rmdir /usr/share/GConf/schemas/outdated 2>/dev/null || true
Das Quellpaket dazu gibt es auch: ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/multimedia%3A/apps/openSUSE_Factory/src/me-tv-1.3.6-1.125.src.rpm (herunterladen, als Benutzer mit rpm -i dateiname installieren und in ~/rpmbuild betrachten)
 
OP
A

Anonymous

Gast
Für openSUSE Tumbleweed gibt es noch me-tv 1.3.6 aus einem home-Repo.
https://software.opensuse.org/package/me-tv?search_term=me-tv
http://download.opensuse.org/reposi...penSUSE_Factory/src/me-tv-1.3.6-3.381.src.rpm
Aber keine Ahnung, warum die Versionsnummer hinten etwas höher ist als beim src.rpm vom 24.08.2013 von Factory.

Kann ich mir denn aus solch einem src.rpm ein x86_64 rpm für openSUSE 13.2 und Leap 42.1 zusammenbauen?
Vielleicht kann mir jemand der sowas häufiger macht gleich die nötigen Extra-Pakete und Kommandos sagen. Wäre echt nett und hilfreich.
Im "Kofler 2016" gibt es gleich mehrere Kapitel dazu, aber das müsste ich etwas verschieben (Zeit).
 
OP
A

Anonymous

Gast
Das ist die neue 1.4 (1.4.0.54) mit Server/Client per Netzwerk. Mit der komme ich nicht so richtig klar. Es ist vieles anders.
Zum Beenden muss ich me-tv-server killen. Beim Umschalten von Sendern geht die Lautstärke (Mixereinstellung) immer auf 100%. Ich habe was gelesen, dass irgendwie VLC als Player benutzt wird. Aber nirgends finde ich eine Dokumentation oder ein Einstellungsmenü.
ME-TV 1.4 braucht auch einen neuen Programmierer.

Was aus ME-TV 1.3.7 geworden ist, weiß ich leider auch nicht. Ich habe 1.3.6 genommen.
 

josef-wien

Ultimate Guru
Ich hätte zum Paket aus multimedia:/apps mehr Zutrauen:
Code:
rpmbuild --rebuild me-tv-1.3.6-1.125.src.rpm
Das Ergebnis findest Du in ~/rpmbuild/RPMS/x86_64. Auf den ersten Blick sehe ich übrigens keinen Grund, der gegen die Installation des "normalen" Pakets me-tv-1.3.6-1.125.x86_64.rpm (auf 13.1 bis Tumbleweed) spricht.
 
OP
A

Anonymous

Gast
Vielen Dank!
Ich musste noch ein paar Pakete nachinstallieren.
z.B. libgnomeuimm-devel
Aber das gibt es gar nicht für Leap 42.1! Nur: libgnomeui-devel und libgnomemm-devel

Ich musste letztlich für den Build die Abhängigkeiten abstellen.
Code:
rpmbuild --rebuild --nodeps me-tv-1.3.6-1.125.src.rpm
Dann die "alten" Dateien entfernen: make uninstall und die beiden erstellten Binär-RPMs (Me-TV, Me-TV-lang) installieren.
Jetzt läuft Me-TV 1.3.6. Die EPG-Vorschau wird nun auch in voller Breite dargestellt. :)
Das war bei der Übersetzung aus der Quelle von der Projektseite leider nicht so.
https://launchpad.net/me-tv/+download

Ich habe also mit den beiden RPM-Dateien sogar eine bessere Lösung.
 

josef-wien

Ultimate Guru
Da weiß wieder einmal die Linke nicht, was die Rechte tut. Im Änderungslog, das natürlich auch im spec file enthalten ist, steht bereits bei der Version 1.1.4:
Code:
* Removed deprecated libgnome/ui dependency (LP: #503219)
"libgnome" kommt im gesamten Quellcode nicht vor, trotzdem gibt es immer noch die Zeile:
Code:
BuildRequires:  libgnomeuimm-devel
Falls Du irgendwann das Paket wieder übersetzen willst, installierst Du zuerst das src.rpm wie am 23. Juni 2016 beschrieben und entfernst diese Zeile aus der Datei ~/rpmbuild/SPECS/me-tv.spec. Danach führst Du in diesem Verzeichnis
Code:
rpmbuild -bb me-tv.spec
aus.
 
OP
A

Anonymous

Gast
abgdf schrieb:
Seit wann und in wie vielen Source-Codes gibt's denn ein funktionierendes "make uninstall"???
Im Hauptverzeichnis von me-tv-1.3.6.tar.gz in der Datei INSTALL steht es so geschrieben. Und funktioniert hat es auch. Die Info-Ausgabe im Terminal war kein Fake.

@josef-wien
Vielen Dank nochmals!
Im "Kofler 2016" steht zu rpmbuild leider nur eine kleine Anmerkung. Die Kapitel zu RPM erklären nur die Paketverwaltung, nicht den Bau, soweit ich gesehen habe.
Aber oben hast Du mir ja die vier Links mit "Lesestoff" gegeben.
Wenn ich noch Fragen habe, melde ich mich nochmal.
 

josef-wien

Ultimate Guru
OP
A

Anonymous

Gast
Eine Frage hätte ich doch noch.
Wenn jemand den Quellcode (z.B. Me-TV 1.3.6) hernimmt und in ein src.rpm verpackt, hat er dann den Quellcode 1:1 übernommen oder verändert?
Bzw. wo dokumentiert man sowas normalerweise innerhalb eines src.rpm?

Hinter den verschiedenen Endnummern z.B. me-tv-1.3.6-3.381.src.rpm oder me-tv-1.3.6-1.125.src.rpm müsste doch eine Logik oder Historie stecken. Oder ist das Willkür?
 
Oben