kaitkan skrip untuk apt-get

17

Saya miliki /tmpdi partisi yang terpisah, dan dipasang dengan noexec. Saya menggunakan Debian.

Instalasi beberapa paket gagal, karena skrip pasca-instalasi dari beberapa paket perlu dijalankan /tmp.

Aku bertanya-tanya apakah itu akan mungkin untuk "hook" script sederhana untuk apt-get, yang akan dijalankan setiap kali sebelum apt-get, dan remount /tmpuntuk exec. Dan demikian pula, remount ke noexecsetelah apt-getselesai.

pengguna1968963
sumber

Jawaban:

26

Anda dapat menggunakan dpkgsistem kait untuk mengirim ulang - masukkan ini ke /etc/apt/apt.conf.d/00exectmp:

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

Bergumam, Anda dapat dengan mudah mengganti apt-getdengan skrip Anda.

Pindah apt-getke real-apt-getdan, kemudian, buat skrip yang disebut apt-getseperti ini:

#!/bin/sh

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

Bagaimanapun, saya tidak suka solusi ini. Lebih mudah mengubah variabel lingkungan direktori sementara ketika Anda membutuhkannya. Sesuatu seperti (gaya sh):

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

Dengan cara ini apt-get akan digunakan /root/mytmpsebagai dir sementara. Tidak perlu mengubah sistem.

andcoz
sumber
3
... sampai aptpaket ditingkatkan, yaitu. Saya tidak merekomendasikan mengacaukan file yang disediakan oleh paket.
reinierpost
Sesuai komentar sebelumnya, paket overwriting yang disediakan binari adalah ide yang sangat buruk ...! Jawaban yang diterima lebih unggul, tetapi bahkan jika Anda memang ingin melanjutkan dengan sesuatu seperti ini, simpan skrip sebagai / usr / local / bin / apt-get (atau lebih baik lagi, mungkin ~ / bin / apt-get dengan asumsi tidak ada pengguna lain yang menginginkannya, juga pastikan itu ada di jalur Anda). Maka alih-alih memanggil "real-apt-get" gunakan saja path lengkap / usr / bin / apt-get. Maka Anda bisa mendapatkan pembaruan tanpa masalah, tanpa merusak skrip Anda. (Ini bergantung pada / usr / local / bin sebelum / usr / bin di PATH - default dalam Debian).
Jeremy Davis