apt-get에 스크립트를 연결


17

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

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

이 "훅"에 대한 간단한 스크립트 가능할 것이다 있는지 궁금 해서요 apt-get전에 때마다 실행된다, apt-get그리고 다시 마운트 /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

겸손, 당신은 단순히 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.