Wo befinden sich bspw. die pre- oder post-install-Skripts bei .deb-Paketen [Gelöst]
Wo befinden sich bspw. die pre- oder post-install-Skripts bei .deb-Paketen [Gelöst]
Hallo zusammen
Wo befinden sich bspw. die pre- oder post-install-Skripts bei .deb-Paketen? Innerhalb des .deb-Pakets hat es ein .tar-File und dort sind jeweils die Verzeichnisstrukturen so wie sie auf den Zielrechner geschrieben werden sollen. Aber ich finden in diesen Dateien NIRGENDWO das "DEBIAN"-Verzeichnis, bspw. mit den Dateien "postinst", "preinst" usw...
Ich kann mir bspw. unmöglich vorstellen, dass z.b. ein Kernel-Paket wie https://packages.debian.org/stretch-bac ... p/download keine Skripts braucht für eine ordentliche Installation?
Ist das "DEBIAN"-Verzeichnis (wie bereits erwähnt z.B. mit "DEBIAN/postinst" oder "DEBIAN/preinst") innerhalb des .deb-Files (welches ja ein Archiv ist und sich bspw. unter Win mit "7Zip" öffnen lässt) irgendwie versteckt/unsichtbar?
Irgendwie ziemlich schräg, was ganze...?
Wo befinden sich bspw. die pre- oder post-install-Skripts bei .deb-Paketen? Innerhalb des .deb-Pakets hat es ein .tar-File und dort sind jeweils die Verzeichnisstrukturen so wie sie auf den Zielrechner geschrieben werden sollen. Aber ich finden in diesen Dateien NIRGENDWO das "DEBIAN"-Verzeichnis, bspw. mit den Dateien "postinst", "preinst" usw...
Ich kann mir bspw. unmöglich vorstellen, dass z.b. ein Kernel-Paket wie https://packages.debian.org/stretch-bac ... p/download keine Skripts braucht für eine ordentliche Installation?
Ist das "DEBIAN"-Verzeichnis (wie bereits erwähnt z.B. mit "DEBIAN/postinst" oder "DEBIAN/preinst") innerhalb des .deb-Files (welches ja ein Archiv ist und sich bspw. unter Win mit "7Zip" öffnen lässt) irgendwie versteckt/unsichtbar?
Irgendwie ziemlich schräg, was ganze...?
Zuletzt geändert von jmar83 am 09.12.2019 16:34:52, insgesamt 1-mal geändert.
Freundliche Grüsse, Jan
Re: Wo befinden sich bspw. die pre- oder post-install-Skripts bei .deb-Paketen
Wie das unter Windows mit 7zip aussieht kann ich nicht sagen, aber das von dir verlinkte Debianpaket ist ein Archiv mit 3 Dateien
1. enthält schließlich die gesuchten Skripte, Prüfsummen und die control-Datei
- control.tar.gz
- data.tar.xz
- debian-binary
1. enthält schließlich die gesuchten Skripte, Prüfsummen und die control-Datei
Re: Wo befinden sich bspw. die pre- oder post-install-Skripts bei .deb-Paketen
Versuch mal "apt-get source paketname", dann hast Du dann alles komplett, sofern die Dateien zum Paket gehören, vieles ist optional.
Ist nen Paket schon auf dem System, findest Du die entsprechenden Dateien in /var/lib/dpkg/info/
Ist nen Paket schon auf dem System, findest Du die entsprechenden Dateien in /var/lib/dpkg/info/
Re: Wo befinden sich bspw. die pre- oder post-install-Skripts bei .deb-Paketen
Überhaupt nicht. Den Inhalt und den Pfad nach der Installation haben meine Vorposter schon genannt.
Das Entpacken mit einem Archivierer nutzt Dir nichts, da die Dateien nur lesbar sind, Du kannst auf diesem Weg also keine Änderungen vornehmen.
Schau Dir "man dpkg-deb" an, damit geht das, falls gewünscht.
Mit
Code: Alles auswählen
dpkg-deb -R >Paket<
Re: Wo befinden sich bspw. die pre- oder post-install-Skripts bei .deb-Paketen
Hallo zusammen
Danke für die Feedbacks!
[image]https://image.ibb.co/f8exB9/Unbertnannt.jpg[/image]
[image]https://image.ibb.co/bR3ePU/Unbenannt.jpg[/image]
Danke für die Feedbacks!
[image]https://image.ibb.co/cE7vyp/Unbegnannt.jpg[/image]"Wie das unter Windows mit 7zip aussieht kann ich nicht sagen, aber das von dir verlinkte Debianpaket ist ein Archiv mit 3 Dateien"
[image]https://image.ibb.co/f8exB9/Unbertnannt.jpg[/image]
[image]https://image.ibb.co/bR3ePU/Unbenannt.jpg[/image]
Freundliche Grüsse, Jan
Re: Wo befinden sich bspw. die pre- oder post-install-Skripts bei .deb-Paketen
Laut Screenshot unterschlägt dir 7zip tatsächlich einen Teil des Inhalts des Archivs.
Re: Wo befinden sich bspw. die pre- oder post-install-Skripts bei .deb-Paketen
Danke fürs Feedback!!
Freundliche Grüsse, Jan
Re: Wo befinden sich bspw. die pre- oder post-install-Skripts bei .deb-Paketen
WinRAR ist auch nicht besser:
Wie schräg ist denn sowas, dermasse "etablierte" Programme wie WinRAR oder 7Zip sind da scheinbar komplett unfähig...?!
Wie schräg ist denn sowas, dermasse "etablierte" Programme wie WinRAR oder 7Zip sind da scheinbar komplett unfähig...?!
Freundliche Grüsse, Jan
Re: Wo befinden sich bspw. die pre- oder post-install-Skripts bei .deb-Paketen
Zum Anzeigen/Auspacken des Inhaltes eines Debian-Paketes nimmt man ar.
7zip und WinRAR sind etablierte Programme, wenn es um die eigenen Dateiformate geht (also *.7z oder *.rar), bei anderen Dateiformaten ist immer Vorsicht geboten bzw. die Unterstützung ggf. mäßig.Wie schräg ist denn sowas, dermasse "etablierte" Programme wie WinRAR oder 7Zip sind da scheinbar komplett unfähig...?!
Code: Alles auswählen
$ ar t linux-image-4.18.0-0.bpo.1-armmp_4.18.6-1~bpo9+1_armhf.deb
debian-binary
control.tar.gz
data.tar.xz
Zuletzt geändert von owl102 am 09.10.2018 21:49:05, insgesamt 1-mal geändert.
Re: Wo befinden sich bspw. die pre- oder post-install-Skripts bei .deb-Paketen
...und WinZIP ist komplett unfähig und wirft von Anfang an einen Fehler.
Meine Screenshots mit der mehr oder weniger neusten Version sprechen aber ne andere Sprache. (?)"Passt doch!"
Freundliche Grüsse, Jan
Re: Wo befinden sich bspw. die pre- oder post-install-Skripts bei .deb-Paketen
Vermutlich ist das sogar eher ein Feature der Windows-Anwendungen als ein Bug. Ich glaube nicht, dass die Windows-Programme unabsichtlich ausgerechnet die Teile eine Paketarchivs verschweigen, die die Metadaten und Installationsskripte des Pakets beinhalten. Unter Umständen genügt es sogar schon die Endung auf ar zu ändern damit die Programme aufhören das Debianpaket als ein besonderes Archiv mit zum Teil „versteckenswerten“ Inhalt behandeln (vielleicht aber auch nicht ☺).
Re: Wo befinden sich bspw. die pre- oder post-install-Skripts bei .deb-Paketen
Hehe... definitiv ein Schelm, wer sich Böses dabei denkt!"Ich glaube nicht, dass die Windows-Programme unabsichtlich ausgerechnet die Teile eine Paketarchivs verschweigen, die die Metadaten und Installationsskripte des Pakets beinhalten."
So macht man das bei Windoof, ein Java-Programm schreiben mithilfe der Apache Commons Compression Library v1.12 mit Java Version 1.6-Compile, damit man das .jar-File anschliessend per IKVM.NET (http://www.ikvm.net/) in eine .NET-exe umwandeln kann. (IKVM.NET unterstützt glaube ich nur Java 1.6 - deshalb auch die Apache Commons Compression Library in der Version 1.12)
Code: Alles auswählen
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.LinkedList;
import java.util.List;
import org.apache.commons.compress.archivers.ArchiveException;
import org.apache.commons.compress.archivers.ArchiveStreamFactory;
import org.apache.commons.compress.archivers.ar.ArArchiveEntry;
import org.apache.commons.compress.archivers.ar.ArArchiveInputStream;
import org.apache.commons.compress.utils.IOUtils;
public class App {
private static String filePath;
private App(final String filePath) {
App.filePath = filePath;
App.expand();
}
private static void expand() {
try {
final File f = new File(App.filePath);
String filenameWithoutPath = App.fileComponent(App.filePath);
filenameWithoutPath = filenameWithoutPath.substring(0, filenameWithoutPath.lastIndexOf('.'));
final String dir = "./" + filenameWithoutPath;
new File(dir).mkdirs();
App.unTar(f, new File(dir));
} catch (final Exception e) {
throw new RuntimeException(e);
}
}
public static String fileComponent(final String filename) {
final int i = filename.lastIndexOf(File.separator);
return (i > -1) ? filename.substring(i + 1) : filename;
}
private static List<File> unTar(final File inputFile, final File outputDir)
throws FileNotFoundException, IOException, ArchiveException {
// System.out.println(
// String.format("Untaring %s to dir %s", inputFile.getAbsolutePath(),
// outputDir.getAbsolutePath()));
final List<File> untaredFiles = new LinkedList<File>();
final InputStream is = new FileInputStream(inputFile);
final ArArchiveInputStream debInputStream = (ArArchiveInputStream) new ArchiveStreamFactory()
.createArchiveInputStream("ar", is);
ArArchiveEntry entry = null;
while ((entry = (ArArchiveEntry) debInputStream.getNextEntry()) != null) {
final File outputFile = new File(outputDir, entry.getName());
if (entry.isDirectory()) {
// System.out.println(
// String.format("Attempting to write output directory %s",
// outputFile.getAbsolutePath()));
if (!outputFile.exists()) {
// System.out.println(
// String.format("Attempting to create output directory %s",
// outputFile.getAbsolutePath()));
if (!outputFile.mkdirs()) {
throw new IllegalStateException(
String.format("Couldn't create directory %s", outputFile.getAbsolutePath()));
}
}
} else {
// System.out.println(String.format("Creating output file %s",
// outputFile.getAbsolutePath()));
final OutputStream outputFileStream = new FileOutputStream(outputFile);
IOUtils.copy(debInputStream, outputFileStream);
outputFileStream.close();
}
untaredFiles.add(outputFile);
}
debInputStream.close();
return untaredFiles;
}
public static void main(final String[] args) {
try {
new App(args[0]);
} catch (final Exception e) {
if (args.length != 1) {
System.out.println("Wrong argument");
return;
}
throw new RuntimeException(e);
}
}
}
Euch allen einen schönen Abend!!
Freundliche Grüsse, Jan