사용자 정의된 ISO를 사용하여 패키지를 특정 디렉터리에 복사

사용자 정의된 ISO를 사용하여 패키지를 특정 디렉터리에 복사

나는맞춤형필요한 모든 패키지가 디렉토리에서 설치되는 Ubuntu ISO입니다 /pool/extras/. 이제 나는 할 수 있기를 원한다복사.deb이 디렉터리의 패키지( ) 중 하나를 선택 /pool/extras하여 다음 위치에 저장합니다.다른 위치, 내가 알고 있는 사용자의 홈 디렉터리( /home/myuser/)를 말해보세요. 나는 이것을미리 설정

d-i   preseed/late_command string if [ -f /media/cdrom/pool/extras/mypkg.deb ]; then cp -f /media/cdrom/pool/extras/mypkg.deb /home/myuser; fi

그러나 이것은 작동하지 않는 것 같습니다. 이 접근 방식이 맞습니까? 아니면 (나중에) 패키지를 얻을 수 있는 다른 방법이 있나요 /pool/extras?

답변1

나는 당신에게 적어도 제안이 있습니다. 저는 Ubuntu 14.4를 사용하여 프로젝트를 진행하고 있고 이 메커니즘이 저에게 효과적이기 때문에 이것이 작동한다는 것을 알고 있습니다.

먼저 preesed.cfg preseed-lat 명령

d-i preseed/late_command string \
cd /target; \
wget http://sub.webserver.domain/directory/script; \
chmod +x ./script; \
chroot ./ ./script; \
rm -f ./script

여기서 스크립트라고 부르는 파일에는
설치 중에 gats가 실행한 코드가 포함되어 있습니다.

같은 것

wget http://sub.webserver.tdl/dir/run -O /etc/profile.d/run.sh
chmod +x /etc/profile.d/run.sh

보시다시피 이 접근 방식에는 웹 서버가 필요합니다. 귀하의 경우 ISO가 있는 경우 ju는 ISO 루트에 두 파일을 모두 저장하고 다음을 사용할 수 있습니다.

  d-i preseed/run string script

이 경우 스크립트는 preseed.cfg와 동일한 디렉토리에 있어야 합니다.

위의 예에서 스크립트 파일은 사용자가 로그인할 때 모든 sh 파일이 실행되는 profile.d 디렉토리에 run.sh를 복사합니다.

수행하려는 작업에 따라 스크립트 파일 자체를 사용하여 sh-shell 명령으로 파일을 복사하거나 사용자가 로그인한 후 bash와 함께 profile.d의 sh 파일을 사용하고 작업이 완료되면 삭제할 수 있습니다.

답변2

마지막으로 ISO 방식이 나에게 적합하지 않았기 때문에 내가 사용한 해결 방법은 다음과 같습니다 dpkg.

.deb패키지 의 postinst스크립트( bash)에 다음과 같은 섹션을 추가했습니다.

MYPKG=$(find $PWD -name mypkg.deb)
cp -f $MYPKG /home/myuser

놀랍게도 경로를 기록했을 때 실제로는 /media/cdrom/pool/extras/mypkg.deb (문자열에 사용된 것과 같습니다 late_command!) :(

왜 작동하지 않았는지 잘 모르겠습니다.d-i preseed/late_command

관련 정보