O / S 구축을 위해 로컬 chroot 환경에서 액세스 할 수있는 로컬 저장소를 생성하려면 어떻게해야합니까?

스나이퍼

나만의 커스텀 우분투 리믹스를 만드는 데 관심이 있고 우분투 미니 리믹스 ISO 로 그렇게 해왔습니다 .

이를 위해이 가이드 와 유사한 방식으로 디스크 이미지와 chroot를 마운트합니다 .

내 빌드의 디렉토리 계층 구조는 다음과 같습니다.

home
  |
  \builds
     |
     +build(n)
     |  |
     |  +mnt
     |  +extract-cd
     |  +edit
     |  \&
     |
     +build(n+1)
     |  |
     |  \&
     |
     \sources (various debfiles/ISOs)

각 빌드에는 $ HOME이 ./edit/root로 설정되어 있으므로 상위 계층 (./mnt, ./extract-cd 등)은 chroot 환경에 액세스 할 수 없습니다.

chroot에서 다운로드 한 패키지를 예를 들어 ~ / builds / cache (또는 더 좋게는 ~ / builds / cache / [ubuntu-version]) 디렉터리에 미러링 할 수있는 방법이 있습니까? 다른 빌드의 저장소로 사용됩니까?

이러한 설정은 아직 저장소에 다운로드 / 미러링되지 않은 패키지 만 웹에서 가져와야하기 때문에 많은 대역폭을 절약 할 수 있습니다.

어쨌든, 모든 제안 / 도움에 미리 감사드립니다.

스나이퍼

나는 여기 에서 몇 가지 정보와 함께 user7134의 답변을 사용했습니다 .

그의 대답이 내가 생각했던 것을 완전히 충족시키지 못했기 때문에 나는 내 대답을 쓰고있다. 그럼에도 불구하고 나는 그에게 바운티를 주겠다. 그것이 나를 올바른 길로 향하게했기 때문이다.

문제를 해결하는 방법은 다음과 같습니다. build(n)디렉토리로 cd-ing 한 후 빌드로 chrooting하기 전에 다음을 실행합니다.

`sudo mount --bind /home/[username]/builds/cache edit/var/cache/apt/archives`

이것은 chroot 된 빌드가 다운로드하는 패키지를 효과적으로 캐시합니다.

정상적으로 빌드를 진행하십시오. 아직 리포지토리를 만들 필요가 없습니다.

빌드가 끝나면 마운트를 해제하고 chroot를 청소할 때 다음을 입력합니다.

umount /var/cache/apt/archives

그런 다음 향후 빌드에서 사용할 저장소를 만들 수 있습니다.

이렇게하려면 repobuild.sh,다음과 같은 파일 만듭니다 .

#! /bin/bash
cd /home/[username]/builds/cache
dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz

스크립트를 실행 chmod u+x /home/[username]/repobuild.sh하고 실행하여 스크립트를 실행 가능하게 만듭니다 ./home/[username]/repobuild.sh

새로운 빌드로 chroot 환경에 준비 마운트 확인하고 가야 /home/[username]/builds/cacheedit/var/cache/apt/archives위 그림과 같이.

Chroot edit한 다음 추가

deb file:/var/cache/apt/archives ./

...에 /etc/apt/sources.list

apt-get update를 실행하면 완료됩니다. 이제 apt-get install [packagename],평소처럼 입력하여 캐시 된 패키지를 사용할 수 있습니다 .

패키지가 cache디렉토리에 추가 될 때마다 repobuild.sh캐시 된 패키지를 사용하려면 다시 실행해야합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관