підключити сценарій до apt-get


17

Я маю /tmpна окремій перегородці і змонтований с noexec. Я використовую Debian.

Установка деяких пакетів не вдається, тому що сценарії після встановлення деяких пакунків потрібно запускати /tmp.

Мені було цікаво, чи вдасться "підключити" простий скрипт apt-get, який би виконувався щоразу раніше apt-get, і перераховувався /tmpдо exec. І аналогічно, перегляньте його noexecпісля apt-getзакінчення.

Відповіді:


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як тимчасовий реж. Не потрібно міняти систему.


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).
Джеремі Девіс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.