móc một đoạn script để apt-get


17

Tôi có /tmptrên một phân vùng riêng biệt, và gắn kết với noexec. Tôi đang sử dụng Debian.

Việc cài đặt một số gói không thành công, vì các kịch bản sau cài đặt của một số gói cần phải chạy từ đó /tmp.

Tôi đã tự hỏi nếu nó sẽ có thể để "móc" một kịch bản đơn giản để apt-get, mà sẽ được chạy mỗi lần trước khi apt-get, và đi ngược lại /tmpđến exec. Và tương tự, kể lại noexecsau khi apt-getđã kết thúc.

Câu trả lời:


26

Bạn có thể sử dụng dpkghệ thống hook của nó để kết nối lại - đặt cái này vào /etc/apt/apt.conf.d/00exectmp:

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

-1

Lẩm bẩm, bạn có thể chỉ cần thay thế apt-getbằng một kịch bản của bạn.

Di chuyển apt-getđến real-apt-getvà, sau đó, tạo một tập lệnh có tên apt-getnhư thế này:

#!/bin/sh

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

Trong mọi trường hợp, tôi không thích giải pháp này. Dễ dàng thay đổi biến môi trường thư mục tạm thời khi bạn cần. Một cái gì đó như (phong cách sh):

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

Cách này apt-get sẽ sử dụng /root/mytmpnhư thư mục tạm thời. Không cần thay đổi hệ thống.


3
... cho đến khi aptgói được nâng cấp, đó là. Tôi không khuyên bạn nên làm rối với các tập tin được cung cấp bởi các gói.
Revierpost

Theo nhận xét trước đó, gói ghi đè cung cấp nhị phân là một ý tưởng thực sự tồi tệ ...! Câu trả lời được chấp nhận là vượt trội, nhưng ngay cả khi bạn đã muốn tiếp tục với một cái gì đó như thế này, thay vào đó, hãy lưu tập lệnh dưới dạng / usr / local / bin / apt-get (hoặc tốt hơn, có thể là ~ / bin / apt-get không người dùng nào khác muốn nó, cũng đảm bảo rằng nó nằm trong đường dẫn của bạn). Sau đó, thay vì gọi "real-apt-get", chỉ cần sử dụng đường dẫn đầy đủ / usr / bin / apt-get. Sau đó, bạn có thể nhận được cập nhật không có vấn đề, mà không phá vỡ tập lệnh của bạn. (Điều này phụ thuộc vào / usr / local / bin là trước / usr / bin trong PATH - mặc định trong Debian).
Jeremy Davis
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.