conectar um script ao apt-get

17

Eu tenho /tmpem uma partição separada, e montado com noexec. Estou usando o Debian.

A instalação de alguns pacotes falha, porque os scripts de pós-instalação de alguns pacotes precisam ser executados /tmp.

Fiquei me perguntando se seria possível "gancho" um script simples para apt-get, que seria executado todas as vezes antes apt-get, e remontar /tmpa exec. E da mesma forma, remonte-o para noexecdepois apt-getque terminar.

user1968963
fonte

Respostas:

26

Você pode usar dpkgo sistema de gancho para remontá-lo - coloque isto em /etc/apt/apt.conf.d/00exectmp:

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

Mumble, você pode simplesmente substituir apt-getpor um script seu.

apt-getpara real-apt-gete, em seguida, crie um script chamado apt-getcomo este:

#!/bin/sh

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

De qualquer forma, não gosto desta solução. É mais fácil alterar a variável de ambiente de diretório temporário quando você precisar. Algo como (estilo sh):

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

Dessa forma, o apt-get usará /root/mytmpcomo diretório temporário. Não há necessidade de mudar o sistema.

andcoz
fonte
3
... até que o aptpacote seja atualizado, é isso. Eu não recomendo mexer com os arquivos fornecidos pelos pacotes.
reinierpost
Como no comentário anterior, substituir os binários fornecidos pelo pacote é uma péssima ideia ...! A resposta aceita é superior, mas mesmo que você queira prosseguir com algo assim, salve o script como / usr / local / bin / apt-get (ou melhor ainda, provavelmente ~ / bin / apt-get assumindo nenhum outro usuário o desejará; verifique também se ele está no seu caminho). Então, ao invés de chamar "real-apt-get", use o caminho completo / usr / bin / apt-get. Então você pode obter atualizações sem problemas, sem quebrar seu script. (Isso depende de / usr / local / bin estar antes de / usr / bin no PATH - padrão no Debian).
Jeremy Davis