debootstrap을 오프라인으로 실행하는 방법은 무엇입니까?

debootstrap을 오프라인으로 실행하는 방법은 무엇입니까?

동일한 대상에 대해 debootstrap을 여러 번 실행하고 싶습니다.

인터넷 접속 없이 이동하는 경우가 많아 오프라인으로 실행하고 싶습니다.

인터넷 액세스로 프로세스를 실행한 다음 인터넷 액세스 없이 프로세스를 여러 번 실행하려면 어떻게 해야 합니까?

나는 멀티스트랩과 같은 래퍼/대안을 사용하고 apt-cacher-ng 또는 squid와 같은 캐싱 옵션을 사용하는 데 열려 있습니다.

핵심 요구 사항은 완전히 오프라인으로 실행할 수 있다는 것입니다.

답변1

동일한 구성으로 Linux를 여러 번 설치하려면 --foreign설치 시 시스템을 먼저 부팅하는 옵션을 사용하세요. 예를 들어, 다음 명령은 Ubuntu zesty를 "deboot" 디렉터리로 부팅합니다.

sudo debootstrap --foreign zesty deboot

그런 다음 시작 디렉터리를 참조로 유지하고 second-stage다시 사용하고 해당 옵션을 사용할 때마다 새 작업 디렉터리에 복사할 수 있습니다.

mkdir work
cd work
sudo cp -r ../deboot .
sudo DEBOOTSTRAP_DIR=deboot/debootstrap/ debootstrap --second-stage --second-stage-target $(readlink -f deboot)

여기서 주목해야 할 두 가지 사항은 스크립트에서 사용하는 DEBOOTSTRAP_DIR환경 변수 (잘 문서화되지 않음)와 옵션에 전체 경로가 필요하다는 debootstrap사실입니다 .second-stage-target

--make-tarball=[file]또 다른 옵션은 패키지를 다운로드할 수 있는 매개변수를 사용하는 것입니다 . 그런 다음 --unpack-tarball=[file]해당 패키지를 대상 디렉터리에 배치하는 데 사용할 수 있습니다.

다른 소스 또는 공유 폴더의 캐시를 재사용하려면 apt-proxy 또는 cp -a packages /var/cache/apt/archives/를 사용하십시오. 그러나 debootstrap여전히 연결 시도가 있으므로 완전히 오프라인이 아닙니다. InRelease원격 저장소에서 파일 가져오기를 통해 인터넷을 사용 하세요.

노트:이 솔루션은 debootstrap v1.0.105(2018-07-01) 및 이전 버전에서만 작동합니다.. 내부 환경 변수를 재정의하기 때문에 debootstrap이 "/usr/share/debootstrap/functions" 라이브러리(2007년 커밋을 처음 가져온 이후 debootstrap의 일부였던 함수 정의 집합)를 얻는 것을 방지합니다.v1.0.106(2018-07-05)부터 'Detect_container' 함수가 호출됩니다.이 라이브러리에 정의되어 있습니다. 이로 인해 debootstrap이 "/usr/sbin/debootstrap: 54: /usr/sbin/debootstrap: detector_container: not find"와 함께 실패하게 됩니다.

답변2

squid-deb-proxy를 있는 그대로 사용하여 오프라인으로 실행할 수 있습니다(파일 포함 InRelease). 하지만 debootstrap을 오프라인으로 실행하려면 온라인인 경우에도 약간 수정해야 합니다.

squid-deb-proxy.conf 파일을 수정해야 하므로 복사본을 만들어 프로젝트에 넣으세요.

conf 파일에는 절대 경로가 있으므로 /etc시스템 /var에서 분리하려면 상대 경로로 수정해야 합니다.

온라인 상태에서 프록시를 계속 사용하려면 이를 conf 파일에 추가해야 합니다.

#Use cached values when offline
offline_mode on

그런 다음 다음과 같이 시작할 수 있습니다.

mkdir -p squid/var/log/squid-deb-proxy
mkdir -p squid/var/run/

echo "Starting an instance of squid using the working dir for caches and logs instead of the system dirs"
squid -Nf squid/squid-deb-proxy.conf

그럼 시작하기 전에debootstrap

#Use a caching proxy to save bandwidth
export http_proxy=http://127.0.0.1:8000

관련 정보