좋습니다. 바이너리와 해당 구성 데이터 파일 및 종속성을 사용 apt-get {install|remove} mypackages
, 설치, 업그레이드 또는 제거하는 방법을 이해합니다 (실제로 다른 플래그가 제공되지 않는 한 바이너리만 제거됩니다).apt-get upgrade
remove
나는 설명된 대로 그것이 어떻게 사용되는지를 찾고 있는 것이 아니라 man
, 그것이 무엇을 하고 있는지에 대한 높은 수준을 찾고 있습니다. 나의 궁극적인 목표는 여러 원격 컴퓨터에 일부 사용자 정의 소프트웨어(make 파일에서 생성됨)를 설치하고 관리할 수 있는 방법을 만드는 것이며, 프로세스에 대해 더 많이 알아야 합니다. 이 질문에 대한 대답이 사용 중인 배포판을 기반으로 하는 경우 데비안에 맞게 조정하세요.
이것이 어떻게 작동하는지에 대한 일반적인 원칙 외에도 다음과 같은 구체적인 질문이 있습니다.
- 적절한 저장소에 액세스하는 클라이언트는 어떻게 파일을 추적합니까?
- 저장소는 동일한 운영 체제에서 호스팅되어야 합니까(즉, 적절한 저장소는 Redhat에서 호스팅될 수 있습니까)?
- 설치 파일의 위치를 어떻게 지정합니까? 이것이 파일에 지정되어 있습니까
.deb
? - 원격 컴퓨터는 저장소에 어떻게 액세스합니까? 단지 FTP(들) 또는 http(들)입니까?
- 저장소를 호스팅하는 시스템이 특수 소프트웨어(git 저장소의 경우 gitlab과 같은)를 실행합니까, 아니면 일종의 구조화된 파일 시스템입니까?
답변1
당신은 볼 필요가https://wiki.debian.org/Packaging— 거기에 있는 패키징 튜토리얼과 새로운 유지관리자 가이드의 일부가 여러분에게 큰 도움이 될 것입니다.
귀하의 질문에 따르면, 순서대로:
저장소에는 "목록" 파일이 포함되어 있습니다. 예를 들어. ,http://http.us.debian.org/debian/dists/stretch/main/binary-amd64/Packages.xz.
apt-get update
이러한 목록 파일을 다운로드하여 .deb에 저장합니다/var/lib/apt/lists
. 목록 파일에는 여러 메타데이터와 .deb를 찾을 수 있는 상대 URL을 포함하여 모든 패키지가 나열됩니다. (사람이 읽을 수 있는 일반 텍스트 파일이므로 보기만 하면 됩니다.)운영체제는 중요하지 않습니다. 원하는 경우 Windows에서 호스팅할 수 있습니다. (음, Windows가 좋아하지 않는 파일 이름에 문제가 있을 수 있습니다.) (#4 및 #5도 참조하세요).
예, deb 파일 안에 있습니다. deb 파일은 실제로 아카이브입니다(사용됨
ar
). 내부에는 일부 tar 파일이 있으며 그 중 하나는 (기본적으로)/
.그것은 단지 HTTP(또는 HTTPS, FTP, 또는... apt-get이 많은 프로토콜을 지원함)일 뿐입니다. 하지만 특별한 것은 없습니다. HTTPS 없이도 무결성을 보장하는 gpg로 서명된 일부 배포 파일이 있습니다. Debian 이미지는 주로 HTTP가 아닌 HTTP를 사용합니다. (기밀성을 위해 일부는 HTTPS도 지원합니다).
그것은 단지 구조화된 파일 시스템일 뿐입니다.
apt-get이 패키지 소스와 상호 작용하는 방법에 대한 빠르고 높은 수준의 개요:
source.list 파일에서 볼 소스를 구성할 수 있습니다. 다음과 같은 라인을 고려해보세요:
deb http://http.us.debian.org/debian/ stretch main
deb
이것이 .deb(바이너리) 파일을 가져올 위치이고 URL 접두사, 제품군/버전("stretch") 및 구성 요소("main")입니다.apt-get에는 dpkg에서 가져오는 아키텍처 목록이 있습니다.
dpkg --print-architecture
그렇다고 대답해 봅시다amd64
. apt-get은 이제 URL 접두사, "dists"라는 단어, 패키지, 구성 요소 및 스키마를 결합하여 다운로드할 실제 URL을 구축할 수 있습니다. 그런 다음 "Packages.xz"와 같은 고정된 파일 이름을 추가합니다. 그러면 위의 URL(#1)이 제공됩니다. 게시 파일과 같이 정의된 이름/경로를 가진 파일도 있습니다.http://http.us.debian.org/debian/dists/stretch/Release및 서명(동일, .gpg가 추가됨). 이는 (아마도 압축된) 일반 텍스트 파일입니다. 릴리스 파일에는 Packages.xz와 같이 apt-get이 다운로드할 다른 파일에 대한 체크섬이 포함되어 있습니다.Packages.xz 파일 목록모두이 키트/코드명/아키텍처의 패키지. 그것은 또한 준다길예를 들어 이 파일이 있는 위치입니다
pool/main/0/0ad/0ad_0.0.21-2_amd64.deb
.apt-get에 패키지 다운로드를 요청하면 해당 위치 + 기본 URL을 사용하여 패키지를 다운로드하므로 패키지를 찾습니다.http://http.us.debian.org/debian/pool/main/0/0ad/0ad_0.0.21-2_amd64.deb
source
대신에 또 다른 흥미로운 디렉토리는 입니다binary-amd64
. 이것은deb-src
소스 패키지에 대한 정보를 포함하고 있으며 그 외에는 매우 유사합니다.저장소의 일부가 될 수 있는 몇 가지 다른 사항(즉, HTTP를 통해 사용 가능)이 있습니다. Packages.xz 파일의 여러 버전 간의 차이점, 각 설치 가능한 파일 전체 목록 그들이 속한 패키지(Contents-amd64.gz, 예를 들어 apt-file에서 사용되지만 apt-get에서는 사용되지 않음) 등 귀하와 관련이 없을 수도 있지만 검색을 통해 볼 수 있습니다.http://http.us.debian.org/debian/dists/stretch/;대부분은 일반 텍스트 파일입니다.
이 파일은 모두 일반 텍스트입니다. 이론적으로는 손으로 만들 수 있습니다. 실제로,모든 사람다음 중 하나를 사용하세요.저장소 생성 도구. 여기서는 이것이 오래 전에 이루어진 선택이므로 최신 정보가 아닐 수 있음을 경고합니다. 우리는 mini-dinstall을 사용합니다. 이러한 도구의 출력은 일반 파일이거나 최악의 경우 심볼릭 링크입니다. 원하는 웹 서버와 동기화할 수 있습니다.