подключить скрипт для apt-get

17

У меня /tmpна отдельном разделе и смонтирован с noexec. Я использую Debian.

Установка некоторых пакетов завершается неудачно, так как необходимо запускать сценарии после установки некоторых пакетов /tmp.

Мне было интересно, можно ли будет «привязать» простой скрипт apt-get, который будет запускаться каждый раз до этого apt-get, и перемонтировать /tmpего exec. И аналогично, перемонтируйте его noexecпосле того, apt-getкак закончите.

user1968963
источник

Ответы:

26

Вы можете использовать dpkgсистему ловушек, чтобы перемонтировать ее - поместите это в /etc/apt/apt.conf.d/00exectmp:

DPkg::Pre-Invoke {"mount -o remount,exec /tmp";};
DPkg::Post-Invoke {"mount -o remount /tmp";};  
Крис Даун
источник
-1

Мамбл, ты можешь просто заменить apt-getсвоим сценарием.

Перейдите apt-getк, real-apt-getа затем создайте скрипт, который называется apt-getвот так:

#!/bin/sh

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

В любом случае мне не нравится это решение. Легче изменить переменную среды временного каталога, когда вам это нужно. Что-то вроде (стиль sh):

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

Таким образом, apt-get будет использоваться /root/mytmpкак временный каталог. Не нужно менять систему.

andcoz
источник
3
... пока aptпакет не будет обновлен. Я не рекомендую возиться с файлами, поставляемыми пакетами.
reinierpost
Как и в предыдущем комментарии, перезапись пакетов, поставляемых с двоичными файлами, - это действительно плохая идея ...! Принятый ответ является превосходным, но даже если вы хотите продолжить что-то подобное, вместо этого сохраните сценарий как / usr / local / bin / apt-get (или, что еще лучше, вероятно, ~ / bin / apt-get при условии никто другой не захочет этого, также убедитесь, что он на вашем пути). Затем вместо вызова «real-apt-get» просто используйте полный путь / usr / bin / apt-get. Тогда вы можете получать обновления без проблем, не нарушая ваш скрипт. (Это зависит от того, что / usr / local / bin находится перед / usr / bin в PATH - по умолчанию в Debian).
Джереми Дэвис