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.

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";};  

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


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.