Ok, rozumiem, w jaki sposób mogę używać apt-get {install|upgrade|remove} mypackages
do instalowania, uaktualniania lub usuwania plików binarnych, a także ich plików danych konfiguracyjnych i zależności (w rzeczywistości remove
usuwam pliki binarne, chyba że zostaną dostarczone dodatkowe flagi).
Nie szukam sposobu, w jaki jest on używany, jak to man
opisuje, ale wysoki poziom tego, co robi. Moim celem końcowym jest stworzenie sposobu na zainstalowanie i zarządzanie niestandardowym oprogramowaniem (utworzonym przez plik make) na wielu zdalnych komputerach i muszę dowiedzieć się więcej o tym procesie. Jeśli odpowiedzi na to pytanie są oparte na używanej dystrybucji, prosimy o dostosowanie do Debiana.
Oprócz ogólnego sposobu działania mam następujące szczegółowe pytania:
- W jaki sposób klient uzyskujący dostęp do repozytorium apt śledzi pliki?
- Czy repozytorium musi być hostowane w tym samym systemie operacyjnym (tzn. Czy repozytorium apt może być hostowane na serwerze redhat)?
- W jaki sposób określa się lokalizacje do zainstalowania plików? Czy jest to określone w
.deb
pliku? - W jaki sposób zdalny komputer uzyskuje dostęp do repozytorium? Czy to tylko ftp (y) czy http (s)?
- Czy na komputerze, na którym znajduje się repozytorium, działa specjalne oprogramowanie (takie jak gitlab dla repozytorium git), czy może to tylko jakiś ustrukturyzowany system plików?
źródło
Odpowiedzi:
Musisz rzucić okiem na https://wiki.debian.org/Packaging - tam samouczek dotyczący pakowania bardzo ci pomoże, a także fragmenty przewodnika dla nowego opiekuna.
Co do twoich pytań, w kolejności:
Repozytorium zawiera pliki „listy”. Np. Http://http.us.debian.org/debian/dists/stretch/main/binary-amd64/Packages.xz .
apt-get update
pobiera te pliki list i przechowuje je w/var/lib/apt/lists
. Pliki listy zawierają wszystkie pakiety, w tym kilka metadanych i względny adres URL, na którym można znaleźć plik .deb. (Są to pliki tekstowe czytelne dla człowieka, więc możesz po prostu na nie spojrzeć).System operacyjny nie ma znaczenia. Możesz go hostować w systemie Windows, jeśli chcesz. (Cóż, może masz problemy z nazwami plików, których Windows nie lubi.) (Zobacz także # 4 i # 5).
Tak, jest w pliku deb. Plik deb jest tak naprawdę archiwum (używa
ar
). Wewnątrz są niektóre pliki tar; jeden z nich jest (zasadniczo) wyodrębniony do/
.To tylko HTTP (lub HTTPS, FTP, lub ... apt-get obsługuje wiele protokołów). Jednak nic specjalnego. Pamiętaj, że istnieją pliki Release podpisane przy pomocy gpg, które gwarantują integralność nawet bez HTTPS. Zwierciadła Debiana najczęściej używają HTTP, a nie HTTP. (Kilka obsługuje również HTTPS dla zachowania poufności).
To tylko uporządkowany system plików.
Szybki przegląd wysokiego poziomu interakcji apt-get ze źródłem pakietu:
Konfigurujesz źródła, które chcesz przeglądać w pliku sources.list. Rozważ linię taką jak:
deb
mówi, że jest to źródło plików .deb (binarnych) gettings; następnie jest prefiks URL, pakiet / wydanie („stretch”) i komponent („main”).apt-get ma listę architektur, pobiera ją z dpkg. Powiedzmy, że
dpkg --print-architecture
jestamd64
. apt-get może teraz budować adresy URL, z których faktycznie zamierza pobierać, łącząc prefiks URL, słowo „dists”, pakiet, komponent i architekturę. Następnie dodaje do kilku ustalonych nazw plików, takich jak „Packages.xz”. To daje powyższy adres URL (w punkcie 1). Istnieje jeszcze kilka plików o określonych nazwach / ścieżkach, takich jak plik Release http://http.us.debian.org/debian/dists/stretch/Release i jego podpis (to samo, z dołączonym plikiem .gpg). Są to wszystkie (ewentualnie skompresowane) pliki tekstowe. Plik wydania zawiera sumy kontrolne dla innych plików, które apt-get ma pobrać, takich jak Packages.xz.Plik Packages.xz zawiera listę wszystkich pakietów w tym pakiecie / nazwa kodowa / architektura. Podaje także ścieżkę do tego pliku; na przykład
pool/main/0/0ad/0ad_0.0.21-2_amd64.deb
.Gdy poprosisz apt-get o pobranie pakietu, używa tej lokalizacji + podstawowego adresu URL, aby pobrać pakiet, więc pakiet znajduje się na stronie http://http.us.debian.org/debian/pool/main/0/0ad /0ad_0.0.21-2_amd64.deb
Drugi interesujący katalog jest
source
zamiastbinary-amd64
. To jest używane do twoichdeb-src
wpisów; zawiera informacje o pakietach źródłowych (i poza tym jest dość podobny).Są inne rzeczy (uważam, że wszystkie są opcjonalne), które mogą być częścią repozytorium (tj. Dostępne przez HTTP): różnice między różnymi wersjami pliku Packages.xz; tłumaczenia opisów pakietów, pełną listę każdego instalowalnego pliku i do którego pakietu należy (Contents-amd64.gz, używany np. przez apt-file, a nie przez apt-get) itp. Prawdopodobnie nie są one odpowiednie dla ciebie, ale możesz zobaczyć je wszystkie, przeglądając http://http.us.debian.org/debian/dists/stretch/ ; większość z nich to pliki zwykłego tekstu.
Wszystkie te pliki są zwykłym tekstem. Teoretycznie można je tworzyć ręcznie. W praktyce każdy korzysta z jednego z tych narzędzi do generowania repozytorium . Tutaj - i ostrzegam, że był to wybór dokonany dawno temu, więc może być nieaktualny - używamy mini-deinstalacji. Dane wyjściowe tych narzędzi to zwykłe pliki lub, w najgorszym przypadku, dowiązania symboliczne. Możesz zsynchronizować je z dowolnym serwerem WWW.
źródło
/var/lib/apt/lists/
. Zawartość jest pobierana przez apt-file i auto-apt.