Wo befinden sich bspw. die pre- oder post-install-Skripts bei .deb-Paketen [Gelöst]

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
jmar83
Beiträge: 962
Registriert: 20.06.2013 20:20:15
Wohnort: CH
Kontaktdaten:

Wo befinden sich bspw. die pre- oder post-install-Skripts bei .deb-Paketen [Gelöst]

Beitrag von jmar83 » 09.10.2018 12:10:17

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...? :?
Zuletzt geändert von jmar83 am 09.12.2019 16:34:52, insgesamt 1-mal geändert.
Freundliche Grüsse, Jan

Benutzeravatar
smutbert
Moderator
Beiträge: 8313
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Wo befinden sich bspw. die pre- oder post-install-Skripts bei .deb-Paketen

Beitrag von smutbert » 09.10.2018 12:26:30

Wie das unter Windows mit 7zip aussieht kann ich nicht sagen, aber das von dir verlinkte Debianpaket ist ein Archiv mit 3 Dateien
  1. control.tar.gz
  2. data.tar.xz
  3. debian-binary
3. ist eine einfache Textdatei, in der nur "2.0" steht, vermutlich die Version des Paketstandards. Die anderen beiden sind wieder Archive wobei 2. die Daten enthält wie sie beim Installieren auf dem System landen.
1. enthält schließlich die gesuchten Skripte, Prüfsummen und die control-Datei

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: Wo befinden sich bspw. die pre- oder post-install-Skripts bei .deb-Paketen

Beitrag von eggy » 09.10.2018 12:42:45

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/

KP97
Beiträge: 3403
Registriert: 01.02.2013 15:07:36

Re: Wo befinden sich bspw. die pre- oder post-install-Skripts bei .deb-Paketen

Beitrag von KP97 » 09.10.2018 13:11:56

jmar83 hat geschrieben: ↑ zum Beitrag ↑
09.10.2018 12:10:17
Irgendwie ziemlich schräg, was ganze...? :?
Ü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<
erscheint auch das Verzeichnis DEBIAN.

jmar83
Beiträge: 962
Registriert: 20.06.2013 20:20:15
Wohnort: CH
Kontaktdaten:

Re: Wo befinden sich bspw. die pre- oder post-install-Skripts bei .deb-Paketen

Beitrag von jmar83 » 09.10.2018 17:04:25

Hallo zusammen

Danke für die Feedbacks!
"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/cE7vyp/Unbegnannt.jpg[/image]

[image]https://image.ibb.co/f8exB9/Unbertnannt.jpg[/image]

[image]https://image.ibb.co/bR3ePU/Unbenannt.jpg[/image]
Freundliche Grüsse, Jan

Benutzeravatar
smutbert
Moderator
Beiträge: 8313
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Wo befinden sich bspw. die pre- oder post-install-Skripts bei .deb-Paketen

Beitrag von smutbert » 09.10.2018 17:19:14

Laut Screenshot unterschlägt dir 7zip tatsächlich einen Teil des Inhalts des Archivs.

jmar83
Beiträge: 962
Registriert: 20.06.2013 20:20:15
Wohnort: CH
Kontaktdaten:

Re: Wo befinden sich bspw. die pre- oder post-install-Skripts bei .deb-Paketen

Beitrag von jmar83 » 09.10.2018 20:55:52

Danke fürs Feedback!! :?
Freundliche Grüsse, Jan

jmar83
Beiträge: 962
Registriert: 20.06.2013 20:20:15
Wohnort: CH
Kontaktdaten:

Re: Wo befinden sich bspw. die pre- oder post-install-Skripts bei .deb-Paketen

Beitrag von jmar83 » 09.10.2018 21:04:21

WinRAR ist auch nicht besser:

Bild
Bild


Wie schräg ist denn sowas, dermasse "etablierte" Programme wie WinRAR oder 7Zip sind da scheinbar komplett unfähig...?!
Freundliche Grüsse, Jan

owl102

Re: Wo befinden sich bspw. die pre- oder post-install-Skripts bei .deb-Paketen

Beitrag von owl102 » 09.10.2018 21:23:13

jmar83 hat geschrieben: ↑ zum Beitrag ↑
09.10.2018 21:04:21
WinRAR ist auch nicht besser:
Zum Anzeigen/Auspacken des Inhaltes eines Debian-Paketes nimmt man ar.
Wie schräg ist denn sowas, dermasse "etablierte" Programme wie WinRAR oder 7Zip sind da scheinbar komplett unfähig...?!
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.

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
Passt doch! :mrgreen:
Zuletzt geändert von owl102 am 09.10.2018 21:49:05, insgesamt 1-mal geändert.

jmar83
Beiträge: 962
Registriert: 20.06.2013 20:20:15
Wohnort: CH
Kontaktdaten:

Re: Wo befinden sich bspw. die pre- oder post-install-Skripts bei .deb-Paketen

Beitrag von jmar83 » 09.10.2018 21:24:20

...und WinZIP ist komplett unfähig und wirft von Anfang an einen Fehler.
"Passt doch!"
Meine Screenshots mit der mehr oder weniger neusten Version sprechen aber ne andere Sprache. (?)
Freundliche Grüsse, Jan

owl102

Re: Wo befinden sich bspw. die pre- oder post-install-Skripts bei .deb-Paketen

Beitrag von owl102 » 09.10.2018 21:28:21

Du merkst schon, daß du dich gerade in einem Debian-Forum über MS-Windows-Anwendungen auskotzt?

BTW: Nicht nur ar zeigt unter Debian den Inhalt korrekt an, sondern auch das Standard-Archiv-GUI-Tool von Gnome, wie ich gerade ausprobiert habe:
1872

Benutzeravatar
smutbert
Moderator
Beiträge: 8313
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Wo befinden sich bspw. die pre- oder post-install-Skripts bei .deb-Paketen

Beitrag von smutbert » 09.10.2018 22:21:19

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 ☺).

jmar83
Beiträge: 962
Registriert: 20.06.2013 20:20:15
Wohnort: CH
Kontaktdaten:

Re: Wo befinden sich bspw. die pre- oder post-install-Skripts bei .deb-Paketen

Beitrag von jmar83 » 09.10.2018 22:39:22

"Ich glaube nicht, dass die Windows-Programme unabsichtlich ausgerechnet die Teile eine Paketarchivs verschweigen, die die Metadaten und Installationsskripte des Pakets beinhalten."
Hehe... definitiv ein Schelm, wer sich Böses dabei denkt! ;-)


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);
		}
	}
}
<spass>...was 7zip, WinRAR und WinZIP in über 10 Jahren nicht geschafft haben, schaffe ich in 1/2 Stunde. *bluff-bluff*, *stolz-auf-mich-sei*</spass>
;-)

Euch allen einen schönen Abend!! :-)
Freundliche Grüsse, Jan

Antworten