apt-get에 스크립트를 연결


17

내가 가진 /tmp별도의 파티션에, 그리고 장착 noexec. 데비안을 사용하고 있습니다.

일부 패키지의 설치 후 스크립트는에서 실행해야하므로 일부 패키지 설치에 실패합니다 /tmp.

이 "훅"에 대한 간단한 스크립트 가능할 것이다 있는지 궁금 해서요 apt-get전에 때마다 실행된다, apt-get그리고 다시 마운트 /tmpexec. 마찬가지로 마침 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을 사용하십시오. 그러면 스크립트를 깨지 않고도 문제없이 업데이트를받을 수 있습니다. (이것은 PATH에서 / usr / bin 앞에있는 / usr / local / bin에 의존합니다-데비안에서는 기본값입니다).
Jeremy Davis
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.