Debian Unstableで大規模パッケージのアップグレードを安全に行う方法は?

Debian Unstableで大規模パッケージのアップグレードを安全に行う方法は?

私は数ヶ月間Debian Unstable(sid)を実行してきました。私が直面した唯一の深刻な問題は、アップグレード中にPython3が一時的に中断されたことでした。幸いなことに、管理者が修正を発表した後、1日以内に問題を解決できました。

しかし、今後はこのような問題が発生しないように努力しており、Debian の不安定性に関するパッケージの更新をいつ進めるべきか、更新する前にバグが修正されるのを待つ必要があるかについてのベストプラクティスについてここに尋ねます。それは:インストール中のシステム損傷のリスクを最小限に抑えながら、更新されたDebianの不安定なシステムを維持する方法は?

たとえば、今すぐ実行する場合は、sudo apt-get update; sudo apt-get dist-upgradeアップグレードする必要があるソフトウェアパッケージが200を超え、そのうちの2つを削除することをお勧めします。

The following packages were automatically installed and are no longer required:
  libnfs8 python-subprocess32
Use 'sudo apt autoremove' to remove them.
The following NEW packages will be installed:
  libnfs11 libzstd1 python-kiwisolver python-olefile
The following packages will be upgraded:
  apt apt-utils atom-beta base-passwd binutils binutils-common binutils-x86-64-linux-gnu bluetooth bluez bubblewrap
  ca-certificates ca-certificates-java console-setup console-setup-linux cpp cpp-7 dconf-gsettings-backend
  dconf-service e2fslibs e2fsprogs e2fsprogs-l10n evince evince-common fontconfig fontconfig-config g++ g++-7 gcc
  gcc-7 gcc-7-base gcc-8-base geany geany-common gir1.2-glib-2.0 gnome-desktop3-data gtk-update-icon-cache gvfs
  gvfs-bin gvfs-common gvfs-daemons gvfs-libs keyboard-configuration libapt-inst2.0 libapt-pkg-perl libapt-pkg5.0
  libarpack2 libasan4 libatomic1 libavcodec57 libavformat57 libavresample3 libavutil55 libbabl-0.1-0 libbinutils
  libbluetooth3 libboost-atomic1.62.0 libboost-chrono1.62.0 libboost-date-time1.62.0 libboost-filesystem1.62.0
  libboost-iostreams1.62.0 libboost-locale1.62.0 libboost-program-options1.62.0 libboost-python1.62.0
  libboost-regex1.62.0 libboost-system1.62.0 libboost-thread1.62.0 libcairo-gobject2 libcairo2 libcc1-0 libcilkrts5
  libcom-err2 libcomerr2 libcups2 libcupsfilters1 libcupsimage2 libdconf1 libdouble-conversion1 libdw1 libelf1
  libevdocument3-4 libevview3-3 libext2fs2 libfftw3-double3 libfontconfig1 libgcc-7-dev libgcc1 libgegl-0.3-0
  libgfortran4 libgirepository-1.0-1 libglib2.0-0 libglib2.0-bin libglib2.0-data libgnome-desktop-3-17 libgomp1
  libgpg-error0 libgtk-3-0 libgtk-3-bin libgtk-3-common libharfbuzz-icu0 libharfbuzz0b libhdf5-100
  libhttp-negotiate-perl libidn11 libinput-bin libinput10 libitm1 libjs-sphinxdoc libkpathsea6 liblsan0 liblz4-1
  libmpx2 libnm0 libnspr4 libnss3 libopenmpt-modplug1 libopenmpt0 libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0
  libparted-fs-resize0 libparted2 libperl5.26 libpostproc54 libprocps6 libpython-stdlib libpython2.7
  libpython2.7-minimal libpython2.7-stdlib libpython3-dev libpython3-stdlib libqt4-dbus libqt4-declarative
  libqt4-designer libqt4-dev libqt4-dev-bin libqt4-help libqt4-network libqt4-opengl libqt4-opengl-dev
  libqt4-qt3support libqt4-script libqt4-scripttools libqt4-sql libqt4-sql-mysql libqt4-sql-sqlite libqt4-svg
  libqt4-test libqt4-xml libqt4-xmlpatterns libqt5core5a libqt5dbus5 libqt5gui5 libqt5multimedia5 libqt5network5
  libqt5opengl5 libqt5printsupport5 libqt5svg5 libqt5widgets5 libqt5x11extras5 libqtcore4 libqtdbus4 libqtgui4
  libquadmath0 libservlet3.1-java libsoup-gnome2.4-1 libsoup2.4-1 libsqlite3-0 libss2 libstdc++-7-dev libstdc++6
  libswresample2 libswscale4 libtiff5 libtsan0 libtumbler-1-0 libubsan0 libvlc-bin libvlc5 libvlccore9 libvolume-key1
  libvte-2.91-0 libvte-2.91-common libwww-robotrules-perl libxft2 ndiff network-manager nmap nmap-common parted perl
  perl-base perl-modules-5.26 procps python python-apt-common python-matplotlib python-matplotlib-data python-minimal
  python-pil python-tk python-tz python2.7 python2.7-minimal python3 python3-apt python3-crypto python3-dev python3-gi
  python3-minimal qdbus qt4-designer qt4-linguist-tools qt4-qmake qt5-gtk-platformtheme qtcore4-l10n
  qttranslations5-l10n sqlite3 tumbler tumbler-common virtualbox virtualbox-dkms virtualbox-qt vlc vlc-bin
  vlc-plugin-base vlc-plugin-notify vlc-plugin-qt vlc-plugin-samba vlc-plugin-skins2 vlc-plugin-video-output
  vlc-plugin-video-splitter vlc-plugin-visualization xfce4-settings xserver-xorg-input-libinput
234 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
Need to get 275 MB/275 MB of archives.
After this operation, 5,831 kB of additional disk space will be used.
Do you want to continue? [Y/n]

これらのアップグレード/アンインストールを安全に実行できるかどうかを確認します(パッケージのインストールを中断する既知のバグがあります)。

理想的には、更新するたびに何百ものバグレポートページを読む必要はありませんが、コンピュータに損傷を与える可能性があるため、盲目的にすべてのバグレポートページをインストールしたくありません。

実際には、個々のパッケージごとにエラーレポートを手動で確認しますか、それともこれを行うより効率的な方法がありますか?不安定な Debian システムを維持するときにアップデートを延期するタイミングを知るために、システム全体のアップデート中にどのような措置を講じますか。

ベストアンサー1

私はこれがあなたが探している答えではないことを知っていますが、これが正解だと思います。

知りません。これにはDebian stableを使用するだけです。

最新のパッケージを使用するには、(まれに)パッケージの損傷を受けなければなりません。パッケージ保守者は、変更ログが不正確または不完全であるため、すべての変更ログを確認してテストを実行する必要があるため、自分の(複数の)依存関係の1つに独自のパッケージを破損する可能性がある更新プログラムがあるかどうかを確認することはできません。

あるいは、本当に最新バージョンが必要な場合は、debian stableを使用してstableのいくつかのパッケージを混在させることができます。ただし、これらのパッケージのアップグレードが安定したシステムと互換性があることを確認する必要があります。

キャッシュを消去しない限り、常に以前のバージョンのパッケージにロールバックできます。コンピュータを複製して更新しようとした後にテストが成功したら、ホストコンピュータで更新できます。

実際には、個々のパッケージごとにエラーレポートを手動で確認しますか、それともこれを行うより効率的な方法がありますか?不安定な Debian システムを維持するときにアップデートを延期するタイミングを知るために、システム全体のアップデート中にどのような措置を講じますか。

作業が必要で、ダウンタイムを余裕がない生産システムには不安定なシステムを使用しないでください。不安定なシステムの場合:祈り、更新します。期待どおりに機能しない場合は、最後のbtrfsスナップショットをロードしてシステム全体をロールバックし、問題がアップストリームで解決されるのを待ちます。

おすすめ記事