Co tak naprawdę robi aktualizacja do-release-upgrade?

30

Wiemy, że do-release-upgrade„dokonuje aktualizacji wersji”. Ale na nieco niższym poziomie, co tak naprawdę robi?

Planuję zrobić bardziej ręczną aktualizację, na przykład sposób Debiana: aptitude updatei aptitude full-upgradepo skonfigurowaniu źródeł. Faktycznie, mam zamiar zrobić to całkowicie interaktywna z aptitude. Ale to mnie ciekawi, co jeszcze do-relase-upgrade robi, poza tym, że zajmuję się źródłami. Lista.

Robert Siemer
źródło

Odpowiedzi:

32

do-release-upgradejest częścią pakietu „update-manager-core”. Skrypt zdaje się określać, do której wersji zamierzasz dokonać aktualizacji, spróbuj dowiedzieć się, czy jest obsługiwany, czy nie i narzekać na to drugie. - Jeśli jest przekonany do działania, pobiera narzędzie UpgradeTool dla danej wersji i uruchamia je.

Częścią pakietu „update-manager-core” jest plik /etc/update-manager/meta-release, w którym można znaleźć adres URL http://changelogs.ubuntu.com/meta-release i tam znajduje się adres URL do pobrania narzędzia UpgradeTool.

Pobrane archiwum UpgradeTool jest pakowane z pakietu źródłowego „ubuntu-release-upgradeader” (wcześniej był to „manager aktualizacji”). Wersja odpowiada najnowszym aktualizacjom wersji docelowej.

Źródło ma stary plik README pochodzący z wartowskich i srogich czasów wydania. Omówiono, co należy zrobić podczas aktualizacji wersji. Wspomina również link do bardziej szczegółowej propozycji UpgradeTool .

Podaję tutaj wymienione tam działania i sprawdziłem, czy są one faktycznie realizowane:

  • związane z repozytorium
    • przejdź do nowych źródeł. listy
    • usuń nieznane repozytoria stron trzecich
    • ewentualnie zamień lustro (nie zaimplementowane)
  • związane z pakietem
    • sprawdź, czy nie ma uszkodzonych pakietów przed aktualizacją
    • zaktualizuj bieżącą wersję przed aktualizacją ( apt-get updatetylko)
    • usuń i zainstaluj określone pakiety
    • sprawdź, czy zainstalowano {ubuntu, kubuntu, edubuntu} -desktop
    • pozbyć się starych jąder
    • mieć czarną listę usuwania i białą listę
    • usuń lub zamień przestarzałe pakiety, które istniały we wcześniejszych wersjach
  • związane z konfiguracją (możliwe w dziwactwach: patrz poniżej)
    • dodawanie domyślnego użytkownika do nowych grup (nie zrobione dla wersji, które sprawdziłem)
    • sprawdź niektóre pliki konfiguracyjne

UpgradeTool jest skonfigurowany dla każdej wersji przy użyciu następujących plików (otwórz je, aby zobaczyć!):

  • DistUpgrade.cfg
    • Konfiguracja związana z UpgradeTool
    • konfiguracja związana z wydaniem
    • repozytoria (np. [Źródła] ValidMirrors)
    • zmiany niestandardowe ([Distro] PostInstallScript)
    • pakiety specjalne; przetwarzane tylko przez DistUpgradeController.py:
      • [Distro] RemoveObsoletes, ForcedObsoletes, BaseMetaPkgs, MetaPkgs
      • [meta_package_name] ForcedObsoletes
    • ... oraz przez DistUpgradeCache.py:
      • [Distro] MetaPkgs, RemovalBlacklist, RemoveEssentialOk, BadVersions, BaseMetaPkgs, PurgeObsoletes, Demotions, KeyDependencies
      • [Distro and meta_package_name] KeepInstalledPkgs, KeepInstalledSection, PostUpgrade *
      • [KernelRemoval] *
  • DistUpgradeQuirks.py
    • uruchamia (wydaje) określone funkcje (ten sam plik) i wtyczki ( pluginskatalog)
    • funkcje muszą mieć określone nazwy (np. from_nattyPreCacheOpen()) i specjalne conditionatrybuty wtyczek (np. *lub PostInitialUpdate)
    • jedna z tych funkcji StartUpgrade()to kolejna sama grab-bag: między innymi wywołuje _applyPatches(), która przegląda pliki w patcheskatalogu
    • wszystko to robi prawie nic w mojej instalacji (i386, pakiety nie starsze niż natty-updates)
  • więcej z DistUpgradeCache.py
    • działa get_kernel_list.sh(nie jest zaufany) i upewnia się, że zainstalowane jest jedno jądro
    • trochę obsługi sterowników Nvidii

Sprawdzone wersje:

  • natty → oneiric
  • oniryczny → precyzyjny
  • precyzyjne → sprawdzone (ostateczne z 18.04.2014)
  • zaufany → utopic (godziny przed wydaniem w dniu 23.10.2014)
Robert Siemer
źródło
3
Za każdym razem, gdy korzystałem z aktualizacji do-release, kończyłem się na systemie, którego nie można uruchomić :)
user205301
Jako przykłady rzeczy, które obsługuje aktualizacja do-release: sterowniki binarne nvidia, zmiany wielowątkowe, ndiswrapper, dodawanie / usuwanie architektur i typów jądra (np.
Przestarzałe
@NGRhodes twój komentarz jest dla mnie zbyt niejasny: ndiswrapper był szczególnym przypadkiem w zadziornym, nie w dzisiejszych czasach. Żadne architektury nie są dodawane ani usuwane (z wyjątkiem amd64, który dodaje i386 jako obcy, który obejmuje się „zmianami wielu zmian”). - Nic nie jest „przestarzałe”: pakiety są usuwane lub nie.
Robert Siemer