Jako że opisywane przez mnie niedawno narzędzie APTonCD nie ma jeszcze opcji pozwalającej na wykonywanie kopii zdalnych repozytoriów a ja bardzo dbam o postawiony niedawno serwer, postanowiłem poszukać jakiegoś innego rozwiązania pozwalającego na potraktowanie tej maszyny pakietami z sekcji security. Poszukałem i znalazłem. Znalazłem apt-mirror.
Niewielki ten perłowy skrypt robi dokładnie to, co robić powinien: lusterkuje zawartość wybranego repozytorium lub repozytoriów. Kluczem do sukcesu jest edycja pliku /etc/apt/mirror.list, w którym określamy:
- base_path – ścieżkę dostępu do katalogu, w którym powstanie kopia repozytorium.
- mirror_path, skel_path, var_path – ścieżki dostępu do trzech podkatalogów którymi posiłkuje się narzędzie, tworzone – uwaga! – od zdefiniowanej powyżej ścieżki bazowej. Najlepiej zostawić to w postaci zakomentowanej, co oznacza że w podanym w base_path katalogu tworzymy trzy podkatalogi: mirror, skel i var.
- defaultarch – tutaj definiujemy architekturę, która nas interesuje (i386, amd64 czy inną, wedle uznania).
- nthreads – oznacza ilość wątków wget-a, w których pobierane będą pliki. apt-mirror wykorzystuje to nieocenione narzędzie do zasysania danych. Na moich nędznych 256 kb/sek nie ma sensu ustawiać tej zmiennej na więcej niż 2.
To w zasadzie wszystko. Teraz wystarczy w kolejnych liniach wymienić adresy interesujących nas repozytoriów dokładnie w takiej samej postaci, jak robimy to w /etc/apt/sources.list, czyli na przykład:
deb http://pl.archive.ubuntu.com/ubuntu edgy-security main restricted universe
Ważna uwaga: oprócz definiowania defaultarch program umożliwia tuningowanie architektur na poziomie pojedynczego repozytorium.
deb-i386 http://pl.archive.ubuntu.com/ubuntu edgy-security main restricted universe
deb-amd64 http://pl.archive.ubuntu.com/ubuntu edgy-security main restricted universe
Rozumiemy się? Świetnie.
Został jeszcze skrypt czyszczący, który na życzenie użytkownika uruchamiany jest po pobraniu całego repozytorium czy repozytoriów i który po prostu porównuje indeks zainstalowanych w systemie pakietów z tym, co znalazło się na dysku a następnie usuwa z lokalnego repozytorium wszystkie pliki nie znajdujące się w indeksie.
Repo podlegające oczyszczeniu definiujemy prosto:
clean http://ftp.us.debian.org/
Można wykluczyć z tego procesu określone katalogi:
skip-clean http://ftp.us.debian.org/debian-cd/
Jak już wyżej wspomniałem pobierałem jedynie sekcję security a i tak wyszło tego ponad 900 MB. Na szczęście pracę narzędzia można w każdej chwili przerwać przez Ctrl+C a potem bez problemu wznowić. Program jeszcze raz pobierze indeksy, ale ściąganie pakietów rozpocznie od momentu, w którym zostało zerwane połączenie.
Artykuł bardzo fajny. Jednak byłbym wdzięczny jak byś dodał znacznik „more” 😉
Przyzwyczajenia z własnego bloga, gdzie jest tylko jeden wpis na głównej. Poprawione.
Witam
Jak z takiego repozytorium się korzysta ?
– jak jest na jakimś serwerze ?
– jak jest na naszym własny dysku ?
Pozdrawiam
jang:
Zwyczajnie. Odpowiedni wpis w sources.list. Jeżeli jest na dysku lokalnym, to musisz mieć działający na nim serwer WWW lub FTP.
jang:
Uzupełnię może 🙂 Przykładowy wpis
deb http://192.168.1.10/ubuntu/ feisty main universe
gdzie 192.168.1.10 to przykładowe IP serwera (w przypadku własnego komputera będzie to localhost) ubuntu to katalog, gdzie znajduje się kopia repozytorium, feisty to wersja dystrybucji, main i universe to Twoje skopiowane z internetu repozytoria.
Dzięki za odpowiedź.
[quote post=”113″]Został jeszcze skrypt czyszczący, który na życzenie użytkownika uruchamiany jest po …[/quote]
Szkoda że nie ma takiej opcji aby pobrał tylko to co jest w systemie.