Chciałbym zbudować własne lokalne repozytorium w mojej sieci LAN, aby komputery w sieci LAN mogły się z niego aktualizować i aktualizować. Chcę pobrać pakiety i przechowywać je na moim lokalnym serwerze, aby móc z niego aktualizować, aktualizować, instalować itp. Bez korzystania z Internetu.
apt
repository
grooveplex
źródło
źródło
Odpowiedzi:
Z wiki pomocy Ubuntu :
źródło
dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz
. Co/dev/null
tam robisz Przeczytałem też stronę podręcznika, ale nie było to całkiem jasne.* Aby utworzyć repozytorium offline przez sieć LAN *
Zainstaluj lokalny serwer Apache Webserver
Domyślnie pakiet Apache Debiana utworzy stronę internetową w
/var/www
twoim systemie. Dla naszych celów to w porządku, więc nie ma powodu, aby robić cokolwiek więcej. Możesz go łatwo przetestować, wskazując swoją ulubioną przeglądarkę na.http://localhost
Powinieneś zobaczyć domyślną stronę poinstalacyjną, która jest faktycznie przechowywana w/var/www/index.html
Utwórz katalog repozytorium pakietów Debiana,
aby utworzyć katalog
/var/www/debs
dla tego. Pod nim powinieneś utworzyć katalogi „architektury”, po jednym dla każdej architektury, którą musisz obsługiwać. Jeśli używasz tylko jednego komputera (lub typu komputera), potrzebujesz tylko jednego - zwykle „i386” dla systemów 32-bitowych lub „amd64” dla 64-bitowych. Jeśli używasz innej architektury, zakładam, że prawdopodobnie już o tym wiesz. Teraz wystarczy skopiować pliki pakietu „.deb” dla danej architektury do odpowiednich katalogów. Jeśli teraz wskażesz swoją ulubioną przeglądarkę internetowąhttp://localhost/debs/amd64
(na przykład), zobaczysz listę pakietów dla systemów 64-bitowych.Utwórz plik Packages.gz
Teraz musimy utworzyć plik katalogu do użycia przez APT. Odbywa się to za pomocą narzędzia o nazwie „dpkg-scanpackages”. Tutaj'
Poinformuj APT o repozytorium
Teraz pozostaje tylko powiadomić APT o swoim repozytorium. Robisz to, aktualizując plik /etc/apt/sources.list. Będziesz potrzebować takiego wpisu:
Użyłem rzeczywistej nazwy hosta mojego systemu zamiast localhost - w ten sposób kod jest taki sam dla wszystkich komputerów w mojej sieci LAN, ale localhost da sobie radę, jeśli używasz tylko jednego komputera.
Teraz zaktualizuj APT:
źródło
/var/www/debs
w tej odpowiedzi hasłem/var/www/html/debs
. Lub będziesz potrzebować dodatkowych kroków, aby ręcznie edytować konfigurację apache w/etc/apache2
Tworzenie uwierzytelnionego repozytorium
Spojrzałem na odpowiedzi tutaj i na innych stronach, a większość z nich ma (IMHO dużą) wadę, że tworzysz nieuwierzytelnione repozytorium. Oznacza to, że trzeba uruchomić
apt-get
z--allow-unauthenticated
instalacji pakietów z niego. Może to stanowić zagrożenie bezpieczeństwa, szczególnie w skryptach, w których instalowane pakiety mogą nie pochodzić z lokalnego repozytorium.Zauważ, że nie opisałem tutaj, jak udostępnić go przez sieć LAN, ale jest to dość ogólna konfiguracja za pomocą Apache lub nginx (zobacz inne odpowiedzi tutaj).
Skonfiguruj katalog repo
Następnie dodaj taką linię do
sources.list
:Dodawanie i usuwanie pakietów
usuń paczki
dodaj pakiety
teraz uruchom następujący skrypt, który generuje pliki Packages, Release i InRelease i podpisuje je kluczem prywatnym gpg:
Przykład Zawartość pliku conf / dystrybucji
Origin: My_Local_Repo Label: My_Local_Repo Codename: xenial Architectures: i386 amd64 Components: main Description: My local APT repository SignWith: 12345ABC
Spinki do mankietów
https://wiki.debian.org/RepositoryFormat
http://ubuntuforums.org/showthread.php?t=1090731
https://help.ubuntu.com/community/CreateAuthenticatedRepository
źródło
date -Rc
, poprawiłem godate -Ru
przy założeniu, że to, co masz na myśli z opisem edycjiMożesz także skonfigurować lokalny serwer źródłowy za pomocą nginx i reprezentpro:
Zainstaluj pakiety debian
twórz katalogi dla reprezentpro i edytuj je
/ srv /reprepro / ubuntu / conf / distribution
/ srv /reprepro / ubuntu / conf / options
Uwzględnij w reprezentpro, zbuduj
Konfiguracja nginx:
/etc/nginx/sites-available/vhost-packages.conf
Zoptymalizuj rozmiar łyżki:
/etc/nginx/conf.d/server_names_hash_bucket_size.conf
Odsyłacz do Przewodnika instalacji
źródło
Możesz rzucić okiem na
apt-mirror
iapt-cacher
.Oto przewodnik, jak go zainstalować i używać.
źródło
Instrukcje w odpowiedzi @ BigSack i oficjalnym wpisie wiki Ubuntu nie działały dla mnie na Ubuntu 18.04, dopóki nie wprowadziłem tych dwóch zmian:
Wygeneruj prosty, nieskompresowany
Packages
plik (podczas jego wykonywania katalog roboczy musi znajdować się w miejscu, w którym znajdują się wszystkie pakiety)Dodaj następujący wpis w
/etc/apt/sources.list
źródło
Czytaj
1 Źródło: Utwórz repozytorium Ubuntu
źródło
Aby utworzyć lokalne repozytorium offline
1. Udostępnij katalog (przynajmniej root)
źródło
Próbowałem użyć
apt-rdepends
jak w wybranej odpowiedzi, ale kiedy próbowałem zainstalować pakiet z mojego lokalnego repozytorium, narzekałem na brakujące zależności.apt-rdepends
nie wyświetlał niektórych zależności dla mojego pakietu. Podejrzewam, że ma to coś wspólnego z faktem, żeapt-cache show
pokazuje wiele rekordów.Zamiast tego użyłem
apt-cache depends
i to załatwiło sprawę:Uzyskiwanie rekurencyjnej listy zależności
-i
: tylko ważne zależności--recurse
: rekurencyjneZamień go w strawną listę
| tr -d "|,<,>, "
| sed -e 's/^Depends://g' | sed -e 's/^PreDepends://g'
| sort
| uniq > list.txt
Pełne polecenie:
Pobierz pakiety
Wyszukaj pakiety i zmień je w Packages.gz
źródło
Zrobiłem to używając apt-mirror.
Jest dobry, ale musisz mieć więcej miejsca na dysku twardym, ponieważ będzie on synchronizowany z serwerem repos.
źródło