agganciare uno script a apt-get


17

Ho /tmpsu una partizione separata e montato con noexec. Sto usando Debian.

L'installazione di alcuni pacchetti non riesce, poiché è necessario eseguire gli script post-installazione di alcuni pacchetti /tmp.

Mi chiedevo se sarebbe stato possibile "agganciare" un semplice script per apt-get, che sarebbe eseguito ogni volta prima apt-get, e rimontare /tmpa exec. Allo stesso modo, rimontarlo noexecdopo che apt-getè terminato.

Risposte:


26

È possibile utilizzare dpkgil sistema di aggancio per rimontarlo - inserirlo in /etc/apt/apt.conf.d/00exectmp:

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

-1

Mumble, puoi semplicemente sostituirlo apt-getcon una tua sceneggiatura.

Passa apt-geta real-apt-gete, quindi, crea uno script chiamato apt-getcome questo:

#!/bin/sh

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

In ogni caso, questa soluzione non mi piace. È più facile cambiare la variabile di ambiente della directory temporanea quando ne hai bisogno. Qualcosa di simile (stile sh):

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

In questo modo apt-get userà /root/mytmpcome dir temporaneo. Non è necessario cambiare il sistema.


3
... fino a quando il aptpacchetto non viene aggiornato, ovvero. Non consiglio di fare scherzi con i file forniti dai pacchetti.
reinierpost,

Come da commento precedente, sovrascrivere i binari forniti dal pacchetto è una pessima idea ...! La risposta accettata è superiore, ma anche se volessi andare avanti con qualcosa del genere, invece, salva lo script come / usr / local / bin / apt-get (o meglio, probabilmente ~ / bin / apt-get assumendo nessun altro utente lo vorrà; assicurati anche che sia nel tuo percorso). Quindi invece di chiamare "real-apt-get" basta usare il percorso completo / usr / bin / apt-get. Quindi puoi ottenere aggiornamenti senza problemi, senza interrompere lo script. (Questo si basa sul fatto che / usr / local / bin sia prima / usr / bin in PATH - impostazione predefinita in Debian).
Jeremy Davis,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.