apt를 사용하여 다양한 배포판용 소프트웨어 패키지 다운로드

apt를 사용하여 다양한 배포판용 소프트웨어 패키지 다운로드

.deb다양한 배포판에 대한 종속성을 포함하는 패키지를 다운로드하고 싶습니다 .

우리 회사에는 Ubuntu 11.04, 11.10, 12.10, Debian 5 및 6 등 많은 Linux 시스템이 있습니다.

전체 종속성 트리를 다운로드하는 명령은 입니다 apt-get -d install package.

저는 현재 Debian 6(squeeze)을 사용하고 있으며 동일한 배포판에 대한 패키지 다운로드가 잘 작동합니다. 다운로드하려고 합니다(아니요sources.list내 소스를 Debian 5(lenny) 소스) 패키지 트리로 변경하여 설치했습니다.

하지만 다음과 같은 오류가 발생합니다.

# apt-get -d install python-lxml
...
The following packages have unmet dependencies:
 python-lxml : Depends: python (< 2.6) but 2.6.6-3+squeeze7 is to be installed
E: Broken packages

각 배포판에 대해 서로 다른 운영 체제를 실행하면 12개 이상의 머신이 생성됩니다. 나는 더 명확한 해결책을 찾고 있습니다.

어떤 제안이 있으십니까?

답변1

APT의 핵심 작업은 종속성을 해결하는 것입니다. 따라서 종속성에 대해 불평한다고 해서 이를 비난할 수는 없습니다.

패키지 데이터베이스가 혼합되지 않도록 다른 구성으로 호출해야 합니다. 각 배포판에 대해 별도 apt.conf의 파일을 보관하십시오 sources.list.

apt-get -o Dir::Etc::Main=/path/to/precise/apt.conf -d …

그리고 apt.conf적어도 포함

Dig::State::status "/path/to/precise/status";
APT::Get::Download-Only "true";

/etc/apt디렉토리 의 일부 파일을 심볼릭 링크하거나 복사해야 할 수도 있습니다 /path/to/precise(그 내용에 따라 다름).

대기 데이터베이스를 전달할 때 apt-get을 루트로 실행하지 마십시오. 시스템을 수정할 수 있는 액세스 권한이 있는 경우 apt-get실수로 무언가를 잘못 구성하거나 시스템을 종료하면 -d시스템이 심각하게 엉망이 될 수 있습니다 . apt-get루트가 포함되지 않은 콘텐츠만 다운로드하는 한, 필요한 권한으로만 실행하세요 . 캐시 디렉토리 /var/cache/apt와 그 내용에 쓰기 위해서는 충분한 권한이 필요합니다. 이를 위해 그룹을 만들고 addgroup aptcache; chgrp -R aptcache /var/cache/apt; chmod -R g+w /var/cache/apt여기에 자신을 추가하는 것이 좋습니다.

답변2

이러한 패키지를 다운로드한 후에는 이 패키지로 무엇을 하려는지 알기가 어렵다는 점이 정말 도움이 됩니다.

나중에 다른 컴퓨터에 설치하기 위해 이러한 패키지를 다운로드하고 로컬로 유지하려면 다음 명령을 사용하여 각 배포에 대해 부분 적절한 저장소를 생성하는 것이 좋습니다.레플리카. 회사에 데비안/우분투 시스템이 많다면 어쨌든 이 작업을 수행하고 싶을 수도 있습니다.

내 환경에는 저장소에 python xmlrpc 서버가 있고 클라이언트는 dpkg --get-selections저장소의 부분 패키지 목록과 병합할 출력을 보내 로컬 저장소를 동기화 상태로 유지하는 데 도움을 줍니다. 매우 간단한 스크립트이므로 시간이 나면 github에 게시하겠습니다.

다운로드 후 로컬 컴퓨터에서 이러한 패키지를 사용해야 하는데 해당 패키지가 사용 중인 시스템용으로 빌드되지 않은 경우 다음을 사용할 수 있습니다.슈루트. 이 schroot패키지를 사용하면 각 배포판을 실행하여 chroot코드나 기타 필요한 작업을 테스트할 수 있습니다.

답변3

모든 시스템을 최신 상태로 유지하고 보안 문제를 패치하는 데 5배의 시간과 노력을 쏟는 것을 특별히 좋아하지 않는 한 하나의 배포판을 선택하여 네트워크에 강제 적용하기로 결정하는 것이 정말 정말 권장됩니다.

적어도 데비안 Lenny는 죽은 것으로 선언되었습니다.거의 1년 전--없을 것이다추가 보안 업데이트. 계속 실행하는 것이 얼마나 나쁜 생각인지 말할 필요는 없습니다.

나는 우분투 수명주기에 대해 잘 알지 못하지만 04/11 변형도 더 이상 최신 상태가 아닐 것이라고 확신합니다.

더욱이, 요청한 작업을 수행하더라도 한 번의 실수로 시스템을 끔찍한 혼란에 빠뜨릴 수 있는 너무 많은 내부 보호 기능을 의도적으로 비활성화했습니다.

실제로 이러한 배포판을 모두 실행해야 한다면 각 적절한 캐싱 http 프록시를 사용하도록 지시하는 것이 좋습니다.오징어대역폭 사용량을 최소화하고 외부 세계와의 접촉을 최소화하기 위해 중앙 서버에 설정합니다.

답변4

패키지를 다운로드하고 거기에서 가져오려는 배포판의 도커 이미지를 사용할 수 있습니다. 종속성에 대한 답변 얻기여기에서.

# Get the distro image of choice
docker pull debian:stretch-slim

# Run the image binding the current (host) directory to container
docker run -it --mount type=bind,source="$(pwd)",target=/packages debian:stretch-slim bash

도커 프롬프트에서

# Change to the packages directory
cd packages

# Update your packages list
apt update

# Define what packages (and their dependencies) you want to download
PACKAGES="wget unzip"

# Downloads to `/packages` i.e. your PWS on host
apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests \
  --no-conflicts --no-breaks --no-replaces --no-enhances \
  --no-pre-depends ${PACKAGES} | grep "^\w")
exit

관련 정보