Apa yang sebenarnya dilakukan `do-release-upgrade`?

30

Kita tahu bahwa do-release-upgrade"melakukan upgrade rilis". Tetapi pada tingkat yang sedikit lebih rendah apa yang sebenarnya ia lakukan?

Saya berencana untuk melakukan peningkatan yang lebih manual, misalnya cara Debian: aptitude updatedan aptitude full-upgradesetelah menyiapkan sumber. Sebenarnya, saya berencana untuk melakukannya sepenuhnya interaktif aptitude. Tapi itu daun saya ingin tahu tentang apa lagi yang do-relase-upgrade dilakukannya, kecuali menyiram up sources.list saya.

Robert Siemer
sumber

Jawaban:

32

do-release-upgradeadalah bagian dari paket "update-manager-core". Script tampaknya menentukan rilis mana yang akan Anda tingkatkan, cobalah untuk mencari tahu apakah itu didukung atau tidak dan mengeluh tentang yang terakhir. - Jika yakin berhasil, ia mengunduh UpgradeTool khusus rilis dan menjalankannya.

Bagian dari paket "update-manager-core" adalah file /etc/update-manager/meta-release, di mana Anda dapat menemukan URL http://changelogs.ubuntu.com/meta-release dan di sana Anda menemukan URL untuk mengunduh UpgradeTool.

Tarbal UpgradeTool yang diunduh dikemas dari paket sumber "ubuntu-release-upgrader" (sebelum "update-manager"). Versi ini sesuai dengan pembaruan terbaru untuk rilis target.

Sumber memiliki README lama dari masa rilis berkutil dan serak. Ini membahas apa yang harus dilakukan selama upgrade rilis. Itu juga menyebutkan tautan ke proposal UpgradeTool yang lebih rinci .

Saya daftar di sini tindakan yang disebutkan di sana dan memeriksa apakah mereka benar-benar dilaksanakan:

  • terkait repositori
    • beralih ke entri sources.list baru
    • menghapus repositori pihak ke-3 yang tidak dikenal
    • mungkin swap mirror (tidak diterapkan)
  • paket terkait
    • periksa tidak ada paket yang rusak sebelum meningkatkan
    • perbarui rilis saat ini sebelum meningkatkan ( apt-get updatehanya)
    • hapus dan instal paket tertentu
    • periksa apakah {ubuntu, kubuntu, edubuntu} -desktop diinstal
    • singkirkan kernel lama
    • memiliki penghapusan-daftar hitam dan -witel
    • menghapus atau mengganti paket usang yang ada di rilis sebelumnya
  • konfigurasi yang terkait (mungkin dalam kebiasaan: lihat di bawah)
    • menambahkan pengguna default ke grup baru (tidak dilakukan untuk versi yang saya periksa)
    • periksa beberapa file konfigurasi

UpgradeTool dikonfigurasi untuk setiap rilis menggunakan file-file berikut (buka untuk melihat!):

  • DistUpgrade.cfg
    • Konfigurasi terkait UpgradeTool
    • konfigurasi terkait rilis
    • repositori (mis. [Sumber] ValidMirrors)
    • perubahan khusus ([Distro] PostInstallScript)
    • paket khusus; diproses hanya oleh DistUpgradeController.py:
      • [Distro] RemoveObsoletes, ForcedOboletes, BaseMetaPkgs, MetaPkgs
      • [meta_package_name] ForcedObsoletes
    • ... dan oleh DistUpgradeCache.py:
      • [Distro] MetaPkgs, RemovalBlacklist, RemoveEssentialOk, BadVersions, BaseMetaPkgs, PurgeOboletes, Demotions, KeyDependencies
      • [Distro dan meta_package_name] KeepInstalledPkgs, KeepInstalledSection, PostUpgrade *
      • [KernelRemoval] *
  • DistUpgradeQuirks.py
    • menjalankan (melepaskan) fungsi spesifik (file yang sama) dan plugin ( pluginsdirektori)
    • fungsi harus memiliki nama spesifik (mis. from_nattyPreCacheOpen()) dan plugin conditionatribut khusus (misalnya *atau PostInitialUpdate)
    • salah satu dari fungsi-fungsi itu,, StartUpgrade()adalah grab-bag lain itu sendiri: antara lain ia memanggil _applyPatches(), yang berjalan di atas file dalam patchesdirektori
    • semua ini tidak melakukan apa-apa pada instalasi saya (i386, paket tidak lebih lama dari natty-update)
  • lebih banyak dari DistUpgradeCache.py
    • berjalan get_kernel_list.sh(tidak dalam kepercayaan) dan memastikan satu kernel terinstal
    • beberapa penanganan tentang driver Nvidia

Versi yang diperiksa:

  • rapi → oneiric
  • oneiric → tepat
  • tepat → trusty (final per 2014-04-18)
  • trusty → utopic (jam sebelum rilis pada 2014-10-23)
Robert Siemer
sumber
3
Setiap kali saya menggunakan do-release-upgrade, saya berakhir dengan sistem yang tidak bisa di-boot :)
user205301
Sebagai contoh, do-release-upgrade menangani: driver nvidia binary, perubahan multiarch, ndiswrapper, menambah / menghapus arsitektur dan tipe kernel (mis. Deprecating the server kernel)
NGRhodes
@NGRodes komentar Anda terlalu samar untuk saya: ndiswrapper adalah kasus khusus kembali penuh semangat, bukan hari ini. Tidak ada arsitektur yang ditambahkan atau dihapus (kecuali untuk amd64, yang menambahkan i386 sebagai asing, yang Anda tutupi dengan “perubahan multiarch” saya kira). - Tidak ada yang "usang": paket dihapus atau tidak.
Robert Siemer