Hängen Sie ein Skript an apt-get

17

Ich habe /tmpauf einer separaten Partition gemountet und mit noexec. Ich benutze Debian.

Die Installation einiger Pakete schlägt fehl, da die Nachinstallationsskripte einiger Pakete ausgeführt werden müssen /tmp.

Ich frage mich , ob es zu „Haken“ ein einfaches Skript möglich wäre apt-get, die vor jedes Mal laufen würden apt-get, und remount /tmpzu exec. Und in ähnlicher Weise können Sie es wieder einhängen, noexecnachdem apt-getes fertig ist.

user1968963
quelle

Antworten:

26

Sie können dpkgdas Hakensystem verwenden, um es wieder anzubringen - geben Sie dies ein /etc/apt/apt.conf.d/00exectmp:

DPkg::Pre-Invoke {"mount -o remount,exec /tmp";};
DPkg::Post-Invoke {"mount -o remount /tmp";};  
Chris Down
quelle
-1

Murmeln Sie, Sie können es einfach durch apt-getein Skript ersetzen .

Gehen Sie apt-getzu real-apt-getund erstellen Sie dann ein Skript mit dem Namen apt-get:

#!/bin/sh

mount -o remount -o ... /tmp
real-apt-get "$@"
mount -o remount -o ... -o noexec /tmp

Auf jeden Fall mag ich diese Lösung nicht. Es ist einfacher, die Umgebungsvariable des temporären Verzeichnisses bei Bedarf zu ändern. So etwas wie (sh-Stil):

mkdir /root/mytmp
TMPDIR=/root/mytmp
export TMPDIR
apt-get ...
rm -rf /root/mytmp

Auf diese Weise wird apt-get /root/mytmpals temporäres Verzeichnis verwendet. Das System muss nicht gewechselt werden.

andcoz
quelle
3
... bis das aptPaket aktualisiert ist. Ich empfehle nicht, mit Dateien zu experimentieren, die von Paketen geliefert werden.
Reinierpost
Nach dem vorherigen Kommentar ist das Überschreiben der im Paket enthaltenen Binärdateien eine wirklich schlechte Idee ...! Die akzeptierte Antwort ist überlegen, aber auch wenn Sie mit so etwas weitermachen möchten, speichern Sie das Skript stattdessen unter dem Namen / usr / local / bin / apt-get (oder besser noch, wahrscheinlich unter der Annahme ~ / bin / apt-get) keine anderen Benutzer werden es wollen; stellen Sie auch sicher, dass es in Ihrem Pfad ist). Verwenden Sie dann anstelle von "real-apt-get" den vollständigen Pfad / usr / bin / apt-get. Dann können Sie ohne Probleme Updates bekommen, ohne Ihr Skript zu brechen. (Dies setzt voraus, dass / usr / local / bin vor / usr / bin in PATH steht - Standard in Debian).
Jeremy Davis