Posty otagowane ‘brak internetu

10
sty

Tworzenie własnych repozytoriów

Ostatnimi czasy, kolega zainstalował sobie w domu Fedorę 8 (tak, ta cała moja gadka o społeczności zaczyna działać ;] ). Niestety, nie ma dostępu do internetu, co nie pozwala w praktyce na isntalację pakietów.

Dlaczego? A dlatego, że od dawna już twórcy popularnych dystrybucji wycofali możliwość instalacji pakietów z płyty (jeszcze pamietam ten menadżer instalacji oprogramowania z płyty na Mandrake’u 10.1 ;] ). Przy próbie instalacji pakietu, yum/rpm odwołuje się automatycznie do repozytoriów internetowych, których dla niego… nie ma. Komputer fizycznie nie ma podłączenia do sieci, więc nie ma siły, aby zależności zostały rozwiązane. Włączenie opcji ignorowania błędów i podobnych też niewiele daje, bo niektórych pakietów po prostu brakuje…

W tym momencie, takiej osobie pozostaje tylko mozolna instalacja brakujących pakietów paczka, po paczce. To jednak nie jest dobre rozwiązanie. Czemu? Bo kolejnej paczce, do szczęścia może brakować pięciu innych, a tym pięciu po 5 kolejnych dla każdej, i tak dalej! W ten sposób powstaje gigantyczne drzewo zależności. Taką tragiczną sytuację, obrazowo nazywa się często “piekłem zależności”. Pasuje, prawdaż ;] ?

Co więc może zrobić nieszczęsny użytkownik, który znalazł się w takiej sytuacji? Odpowiedź jest prosta, choć aby ją znaleźć musiałem dać się wyśmiać, spędzić godziny na googlach, a potem plując jadem na piekielnie uprzejmą społeczność i wsparcie z jej strony, dorwałem się do odpowiedniego programu, zacząłem eksperymentować, edytować i kombinować. I udało się :)

Ale po kolei. Nasz biedny użytkownik, nie mając dostępu do repozytoriów internetowych. musi… stworzyć własne! Wbrew pozorom, jest to bardzo łatwe i wręcz “bezbolesne”. Jedyne, co może być w tej operacji trudne, to instalacja odpowiedniego pakietu. Do wykowania kroków, które za chwilę przedstawię, potrzeba pakietu o nazwie createrepo. Nie wiem, czy jest na płycie Fedory 8 (nie mam pod ręką), ale mam prawo przypuszczać, że nie. W tym wypadku, należy w jakimś miejscu, w którym dostaniemy dostęp do sieci pobrać, najlepiej najnowszą wersję, a następnie zainstalować ją w swoim systemie. O rozmiary bym się nie bał- u mnie ważyła 51kB :)

Ok, kiedy mamy już działający Createrepo, musimy wreszcie zacząć tworzyć nasze wyczekiwane repozytorium  :)

Zaczynamy od utworzenia folderu. Dla wygody i zgodności, niech znajduje się w /home . Nazwijmy go “myrepo”.

Kiedy mamy już nasz folder, musimy skopiować do niego wszystkie paczki z płyty instalacyjnej Fedory [dla innych dystrybucji też powinno działać] + dodatkowe paczki, jeśli chcemy [wtedy jednak lepiej, żeby wszystkie zależności byly tam pomyślnie rozwiązane]. Kiedy już wszystko jest na miejscu, wchodzimy do konsoli i wykonujemy [ja wykonywałem z roota, choć powinno też dzialać ze zwykłego użytkownika]:
createrepo /home/myrepo

Po pomyślnym wykonaniu polecenia musimy jeszcze “podsunąć” yumowi repozytorium. Najwygodniej zrobić to w nautilusie. żeby mieć dostęp do plików systemowych, najlepiej uruchomić go jako root, wpisując w konsoli jako root:
nautilus /etc/yum.repos.d

Po wykonaniu tego polecenia, powinniśmy zobaczyć okienko nautilusa z otwartym katalogiem zawierającym pliki *.repo. Są to pliki, z których korzysta yum, do rozwiązywania zależności i pobierania pakietów z internetowych repozytoriów. Tam właśnie musimy umieścić plik “myrepo.repo”, o następującej treści:

[myrepo]
name=Myrepo
baseurl=file:///home/myrepo
enabled=1
gpgcheck=0

Po tej operacji nasze repozytorium powinno już działać:

[root@localhost repo]# yum install gnutella
Loading “installonlyn” plugin
Setting up Install Process
Setting up repositories
myrepo 100% |=========================| 951 B 00:00
Reading repository metadata in from local files
primary.xml.gz 100% |=========================| 2.2 kB 00:00
myrepo : ################################################## 3/3
Parsing package install arguments
Nothing to do

*Nothing to do- źle wpisałem nazwę pakietu, nie ma związku z repozytoriami.

:)

Gdyby yum, dalej chciał jednak odwoływać się do internetowych repozytoriów, można mu je usunąć. W praktyce sprowadza się to do usunięcia z /etc/yum.repos.d wszystkich plików *.repo poza utworzonym przez nas. Dla bezpieczeństwa, polecam jednak uprzednio wykonać ich kopie.

I to by było właściwie na tyle, mam nadzieję, że komuś pomogłem :)

Wszelkie pytania/uwagi mile widziane, bo z notki zrobił się właściwie pokaźny artykuł i nie wykluczam błędów.

Zanim zakończę wpis, uzupełnię go o jeden szczegół, który wczoraj obiecałem. Mój plan nauki na ferie to mniej więcej:

- powtórzenie klas,

- może grafy i algorytmy grafowe.

W międzyczasie lektura “Matematyki konkretnej”.