ขอสคริปต์เพื่อรับ


17

ฉันมีในพาร์ทิชันที่แยกต่างหากและติดตั้งที่มี/tmp noexecฉันใช้ Debian

/tmpการติดตั้งแพคเกจบางส่วนล้มเหลวเพราะสคริปต์หลังการติดตั้งแพคเกจบางส่วนต้องหนีจาก

ผมสงสัยว่าถ้ามันจะเป็นไปได้ที่จะเบ็ด "" สคริปต์ง่ายในการapt-getที่จะทำงานทุกครั้งก่อนapt-getและ remount ไป/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

Mumble คุณสามารถแทนที่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เป็น dir ชั่วคราว ไม่จำเป็นต้องเปลี่ยนระบบ


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)
Jeremy Davis
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.