enganchar un script para apt-get

17

Tengo /tmpen una partición separada, y montado con noexec. Estoy usando Debian

La instalación de algunos paquetes falla porque los scripts posteriores a la instalación de algunos paquetes deben ejecutarse desde /tmp.

Me preguntaba si sería posible "enganchar" una secuencia de comandos simple apt-get, que se ejecutaría cada vez antes apt-gety volver /tmpa montar exec. Y de manera similar, vuelva a montarlo noexecdespués de que apt-gethaya terminado.

usuario1968963
fuente

Respuestas:

26

Puede usar dpkgel sistema de enganche para volver a montarlo. Ponga esto en /etc/apt/apt.conf.d/00exectmp:

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

Mumble, simplemente puedes reemplazarlo apt-getcon un script tuyo.

Vaya apt-geta real-apt-get, y luego, cree un script llamado apt-getcomo este:

#!/bin/sh

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

En cualquier caso, no me gusta esta solución. Es más fácil cambiar la variable de entorno del directorio temporal cuando lo necesite. Algo como (estilo sh):

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

De esta manera, apt-get lo usará /root/mytmpcomo directorio temporal. No es necesario cambiar el sistema.

andcoz
fuente
3
... hasta que el aptpaquete se actualice, eso es. No recomiendo jugar con archivos suministrados por paquetes.
reinierpost
Según el comentario anterior, sobrescribir los binarios proporcionados por el paquete es una muy mala idea ...! La respuesta aceptada es superior, pero incluso si desea seguir adelante con algo como esto, guarde el script como / usr / local / bin / apt-get (o mejor aún, probablemente ~ / bin / apt-get suponiendo ningún otro usuario lo querrá; también asegúrese de que esté en su camino). Luego, en lugar de llamar a "real-apt-get", simplemente use la ruta completa / usr / bin / apt-get. Entonces puede obtener actualizaciones sin problemas, sin romper su script. (Esto se basa en que / usr / local / bin es anterior a / usr / bin en PATH, por defecto en Debian).
Jeremy Davis