Ich verwende Ubuntu 14.04.
Ich habe viele Systembibliotheken von Drittanbietern, die ich für Projekte verwende, aber die Verwaltung der Bibliotheksinstallation ist schwierig. Einige Bibliotheken sind .deb-Dateien, einige werden aus dem Quellcode erstellt (aus dem ich dann eine .deb-Datei erstelle) und einige sind .run-Dateien.
Mein Ziel ist es, ein eigenes persönliches Repository zu haben, das diese Systembibliotheken von Drittanbietern in Form von DEB-Dateien hostet. Mein Problem ist die Konvertierung von RUN-Dateien in DEB-Dateien.
Ich habe versucht, mit checkinstall die .deb-Datei auszuführen (insbesondere die gefundenen UEye-KameratreiberHier), in der Hoffnung, dass checkinstall die Änderungen an meinem Dateisystem erfassen würde, aber das war leider eine Katastrophe.
Gibt es saubere Möglichkeiten, .run-Dateien in .deb-Dateien umzuwandeln?
Antwort1
Es gibt keine einfache oder universelle Methode, dies zu tun. Der erste Teil einer allgemeinen .run
Datei (ich werde die ATI-Treiberinstallationsdatei als Referenz verwenden) ist ein Skript, gefolgt von einem Datenstrom komprimierter Daten, der sofort im Dateisystem gespeichert wird. Um es in eine Deb-Datei umzuwandeln, müssen Sie den Datenstrom in einem Verzeichnis entpacken, das debian/
Verzeichnis erstellen und Ihre rules
Datei bearbeiten, sodass dhmake einfach die Verzeichnisstruktur übernimmt und die Dateien dorthin kopiert, wo sie sein sollten, da Sie kein Makefile
oder ein Äquivalent haben, das das Skript verwendet install
.
Ich empfehle dringend, den Software-Distributor einfach zu bitten, eineDebian-Paketda die meisten dieser Run-Dateien nicht einmalDFSG-kompatibel.
Antwort2
Letztendlich habe ich Folgendes getan:
- Erstellen Sie eine benutzerdefinierte .deb-Datei, die die .run-Datei enthält
- „Installieren“ Sie die .run-Datei in /tmp
- Zum Ausführen der .run-Datei verwenden
postinst
(und anschließend löschen) - Diese spezielle .run-Datei stellt tatsächlich ein eigenes Deinstallationsskript bereit, das die ursprüngliche .run-Datei nicht benötigt. Daher verwende ich es,
postrm
um dieses Skript auszuführen.
Funktioniert alles bestens. Keine Beanstandungen und ganz einfach.