데비안 기반 리눅스 배포판을 사용하여 무작위 패키지를위한 로컬 apt 저장소를 빠르게 만드는 방법은 무엇입니까?


20

일부 상황에서는을 사용하여 로컬 패키지를 수동으로 설치해야합니다 dpkg -i <packagename>. 때로는 apt해당 패키지 의 기능을 활용하는 것이 더 유용 하므로 질문은 다음과 같습니다.

Xubuntu 13.04 / Ubuntu와 같은 데비안 기반 리눅스 배포판을 사용하여 무작위 패키지를위한 로컬 리포지토리를 어떻게 빠르게 만들 수 있습니까?


참고로 보통 일이 따르는 것입니다 dpkg -i <packagename>apt-get -f install필요한 패키지 당깁니다. 또한 데비안을위한 적절한 저장소를 만드는 일반적인 방법은 reprepro입니다.
Faheem Mitha

나는 reprepro가 도움이되었다
Gilles 'SO-stop

귀하의 의견에 감사드립니다. @Faheem Mitha : 로컬 패키지를 설치 한 후 aptwith with를 실행 --fix-broken해야하는 이유를 간단히 확장 할 수 dpkg -i있습니까? dpkg가 처리하지 않습니까? 나는 읽기 가 실행되는 경향이 처음 요구 될 수있다? @ FM & Gilles : reprepro 정보 . 작동시킬 수 있다면 유용합니다 (dir 구조체, 3 개의 파일 내용 또는 런타임시 매개 변수에 대해 확실하지 않음). 다시 시도하고 전체 질문을 업데이트하거나 게시합니다.

1
@ illuminÉ : dpkg의존성을 해결하지는 않지만 해결 apt합니다. dpkg종속성이 손상되었음을 경고하지만 레벨이 낮으므로이를 수정하려고 시도하지 않습니다. 그 dpkg -i *.deb다음에 apt-get -f install표준 절차가 있습니다. apt로컬 패키지 설치의 경우 자체를 처리 하는 위시리스트 버그가 있으며 패치도 있다고 생각하지만 아직 구현되지 않았습니다. apt-get install 에서 원래 1999 년에 제출 한 로컬 패키지 파일도 설치할 수 있음을 참조하십시오 .
Faheem Mitha

@ illuminÉ이 기능에 관심을 표명해도 아프지 않습니다. 나는 (정치적으로) 관심을 표명하는 사람들이 많을수록 그것이 시행 될 가능성이 더 높다고 생각합니다. 버그 보고서에 언급 된 바와 같이 gdebi는 대안입니다. 그것이 구현되지 않은 이유의 일부라고 생각합니다. apt의 핵심 기능을 다른 패키지의 일부로 사용하는 것보다 apt의 핵심 기능을 사용하는 것이 좋습니다.
Faheem Mitha

답변:


29

공식 저장소에서 전체 패키지 트리복제하고 소스 우선 순위를 미세 조정 하려는 상황과 구별해야합니다 . 랜덤 패키지는 테스트를 위해 로컬로 컴파일되거나 단편적으로 복사되는 가상 패키지를 의미합니다. 이제 더 이상 사용되지 않는 문서를 기반으로 한 간단한 설정이 있습니다 .

먼저 패키지를 호스팅 할 디렉토리를 만듭니다.

mkdir <packagedir>

그런 다음 .deb 패키지 파일을 그곳으로 이동하십시오. 방금 만든 디렉토리 위의 디렉토리에서이 명령을 실행하십시오 (권한이 허용하는지 확인하십시오!).

dpkg-scanpackages packagedir | gzip > packagedir/Packages.gz

이제 내용이 포함 된 확장자 .list/etc/apt/sources.list.d/가진 파일을 작성하십시오 .

deb [trusted=yes] file:///path_to_dir_above_packagedir packagedir/

적절한 데이터베이스를 업데이트하십시오.

apt-get update

이 시점에서 로컬 저장소의 패키지는를 사용하여 다른 패키지와 같이 설치할 수 있습니다 apt-get install <packagename>. 새 패키지가 로컬 저장소에 추가 dpkg-scanpackages되면 Packages.gz 파일 을 업데이트하기 위해 규정 된 명령을 다시 발행 apt해야하며 새 패키지를 사용 가능하게하기 전에 업데이트해야합니다. 잘하면 이것은 테스트 목적으로 유용 할 수 있습니다 .


6
새로운 apt 1.1에서는 URI 와 맨 [trusted=yes]사이 ( Man 페이지 참조)가 필요합니다. 그렇지 않으면 서명이 없기 때문에 실패합니다. debfile:///sources.list(5)apt-get update
vinc17

2

debootstrap과 같은 도구에 필요한 전체 구조로 리포지토리를 만들려면 가장 간단한 방법은 다음과 같습니다.

  1. 저장소 디렉토리를 작성하십시오.

    # mkdir -p /opt/debian
    
  2. conf 서브 디렉토리를 작성하십시오.

    # mkdir /opt/debian/conf
    
  3. 다음과 같은 내용으로 / opt / debian / conf / distributions 파일을 만듭니다 (사용중인 배포판에 맞게 조정).

    Label: Local APT repository
    Codename: jessie
    Architectures: amd64
    Components: main
    Description: Local APT repository for debootstrap
    
  4. reprepro로 패키지를 가져옵니다.

    # reprepro -b /opt/debian includedeb jessie /path/to/package.db
    
  5. 쉘 for-loop를 사용하여 패키지를 가져옵니다 (예 : APT 캐시의 모든 것).

    # cd /var/cache/apt/archives
    # for DEB in *.deb; do reprepro -b /opt/debian includedeb jessie $DEB; done
    

서명되지 않은 아카이브가 생성됩니다. --no-check-gpg 옵션과 함께 debootstrap과 함께 사용할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.