Poradniki > Podstawy

Zawsze aktualna lista serwerów dla polecenia pacman

(1/1)

pavbaranov:
Oprogramowanie w Arch rozpowszechniane jest poprzez repozytoria dostępne na serwerze głównym, którego zawartość jest powielana przez serwery lustrzane. Te ostatnie lubią płatać figle i nie zawsze ich lista, którą udostępniamy lokalnie w pliku /etc/pacman.d/mirrorlist jest tożsama z tym, co udostępnione zostało na serwerze głównym. Niejednokrotnie również możemy mieć zastrzeżenia co do prędkości pobierania danych z tych serwerów. Nie oznacza to, że sytuacja staje się patowa i trzeba czekać, czy w ogóle serwery lustrzane się zaktualizują lub czy będą oferować lepszy transfer danych.

Muszę przypomnieć, że wspomniany wyżej plik zawiera listę serwerów, która podczas działania polecenia "pacman -S" jest przeszukiwana w kolejności od najwyżej umieszczonego serwera po najniżej umieszczony. Jeśli udaje się nawiązać sensowne połączenie z serwerem umieszczonym na liście wyżej, to transakcja zostaje przeprowadzona. Oznacza to, że jeśli prędkość transferu jest akceptowalna przez polecenie pacman, to pomijane są serwery położone na liście poniżej tego, z którym połączenie zostało nawiązane. Tym samym, może się okazać, że nie jest to ani najszybszy, ani też najaktualniejszy spośród udostępnionych systemowi serwerów lustrzanych.

Nie oznacza to, że użytkownik Archa pozostawiony został bez żadnej pomocy. Możliwości jest kilka.

I. Bez żadnych narzędzi dodatkowych w systemie, zawsze możemy skorzystać z internetowej wyszukiwarki serwerów źródlanych, udostępnionej pod adresem: https://www.archlinux.org/mirrorlist/. Generując ją, zaznaczamy pole: Use mirror status i otrzymaną listę podmieniamy za plik /etc/pacman.d/mirrorlist. Następnie dokonujemy edycji tego pliku i usuwamy znak "#" sprzed adresów tych serwerów, które chcemy udostępnić systemowi.

II. Możemy również zainstalować skrypt armrr, który nam zautomatyzuje pracę.

--- Kod: ---yaourt -S armrr
--- Koniec kodu ---
bądź
--- Kod: ---yaourt -S armrr-git
--- Koniec kodu ---
Po instalacji, wydajemy polecenie:

--- Kod: ---# armrr
--- Koniec kodu ---
i wybieramy kod państwa z listy bądź, jeśli ten kod znamy:

--- Kod: ---# armrr kod
--- Koniec kodu ---

III. Najbardziej rozwiniętym rozwiązaniem jest użycie programu reflector, który znajduje się w repozytoriach.

--- Kod: ---# pacman -S reflector
--- Koniec kodu ---
Robimy kopię pliku z serwerami (wcześniej sprawdzamy, czy lista ta nie zawiera znaku "#" przed serwerem, który ma zostać udostępniony, jeśli zawiera - to znak ten usuwamy):

--- Kod: ---# cp -vf /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.backup
--- Koniec kodu ---
Teraz już możemy rozpocząć operacje z reflectorem. Oferuje on różne możliwości organizacji pliku mirrorlist. Do najbardziej popularnych prawdopodobnie, będą należeć:

a. Udostępnienie systemowi określonej ilości serwerów wraz z ich posortowaniem od najszybszego do najwolniejszego.

--- Kod: ---# reflector --verbose -l X --sort rate --save /etc/pacman.d/mirrorlist
--- Koniec kodu ---
W miejscu X wpisujemy ilość serwerów, które chcemy udostępnić.

b. Udostępnienie systemowi określonej ilości najaktualniejszych serwerów, posortowanych wg ratingu szybkości.

--- Kod: ---# reflector --verbose -l X -p http --sort rate --save /etc/pacman.d/mirrorlist
--- Koniec kodu ---
W miejscu X wpisujemy ilość serwerów, które chcemy udostępnić.

c. Udostępnienie systemowi określonej ilości najaktualniejszych i zarazem najszybszych serwerów z określonego państwa.

--- Kod: ---# reflector --verbose --country 'Nazwa Państwa' -l X -p http --sort rate --save /etc/pacman.d/mirrorlist
--- Koniec kodu ---
W miejscu X wpisujemy ilość serwerów, które chcemy udostępnić, zaś w miejscu Nazwa Państwa - nazwę państwa, z którego serwery będą udostępnione. Teoretycznie winno to być najlepsze rozwiązanie, bowiem połączenia miejscowe winny być sprawniejsze.

Polecenie może zostać zautomatyzowane poprzez usługę podnoszoną przez systemd. W tym celu tworzymy plik:

--- Kod: ---sudo nano /etc/systemd/system/reflector.service
--- Koniec kodu ---
i umieszczamy w nim następującą zawartość:

--- Kod: ---[Unit]
Description=Pacman mirrorlist update

[Service]
Type=oneshot
ExecStart=/usr/bin/reflector --protocol http --latest X --number Y --sort rate --save /etc/pacman.d/mirrorlist
--- Koniec kodu ---
W miejscu X wpisujemy jakąś liczbę, która ograniczy działania reflectora wyłącznie do takiej ilości serwerów, które są ostatnio zsynchronizowane, zaś w miejscu Y wpisujemy jakąś liczbę (nie większą od X), która w pliku /etc/pacman.d/mirrorlist wygeneruje listę tych serwerów ograniczoną do zadanej ilości.
Od tej chwili, aktualizacja listy udostępnionych serwerów może przebiegać następująco:

--- Kod: ---# systemctl start reflector
--- Koniec kodu ---

Jeśli ktoś chciałby, aby lista serwerów była uaktualniana za każdym razem przy starcie systemu, winien nadać plikowi /etc/systemd/system/reflector.service następującą zawartość:

--- Kod: ---[Unit]
Description=Pacman mirrorlist update
Requires=network.target
After=network.target

[Service]
Type=oneshot
ExecStart=/usr/bin/reflector --protocol http --latest X --number Y --sort rate --save /etc/pacman.d/mirrorlist

[Install]
RequiredBy=network.target
--- Koniec kodu ---
(znaczenie X oraz Y zostało omówione wyżej) i następnie uruchomić automatyczne podnoszenie usługi przy starcie systemu:

--- Kod: ---# systemctl enable reflector
--- Koniec kodu ---

Więcej informacji o dostępnych poleceniach reflector uzyskacie wydając:

--- Kod: ---reflector --help
--- Koniec kodu ---

Materiał opracowany na podstawie:
https://www.archlinux.org/mirrorlist/
https://wiki.archlinux.org/index.php/Mirrors
https://wiki.archlinux.org/index.php/Reflector

Nawigacja

[0] Indeks wiadomości

Idź do wersji pełnej