Product SiteDocumentation Site

6.7. Nâng cấp từ bản phân phối ổn định đến kế tiếp

Một trong những tính năng nổi tiếng nhất của Debian là khả năng nâng cấp một hệ thống được cài đặt từ một bản phát hành ổn định sang một phiên bản tiếp theo: dist-upgrade - một cụm từ nổi tiếng - đã đóng góp phần lớn cho danh tiếng của dự án. Với một vài biện pháp phòng ngừa, việc nâng cấp máy tính chỉ có thể mất vài phút, hoặc vài phút, tùy thuộc vào tốc độ tải xuống từ các kho gói.

6.7.1. Thủ tục Khuyến cáo

Vì Debian đã có thời gian để phát triển giữa các bản phát hành ổn định nên bạn nên đọc ghi chú phát hành trước khi nâng cấp.
In this section, we will focus on upgrading a Stretch system to Buster. This is a major operation on a system; as such, it is never 100% risk-free, and should not be attempted before all important data has been backed up.
Một thói quen tốt khác làm cho việc nâng cấp dễ dàng hơn (và ngắn hơn) là làm sạch các gói đã cài đặt của bạn và chỉ giữ những gói cần thiết. Các công cụ hữu ích để làm bao gồm aptitude, deborphandebfoster (xem Phần 6.2.7, “Theo dõi gói cài đặt tự động”). Ví dụ: bạn có thể sử dụng lệnh sau và sau đó sử dụng chế độ tương tác của aptitude để kiểm tra kỹ và điều chỉnh theo lịch trình xóa:
# deborphan | xargs aptitude --schedule-only remove
Now for the upgrading itself. First, you need to change the /etc/apt/sources.list file to tell APT to get its packages from Buster instead of Stretch. If the file only contains references to Stable rather than explicit codenames, the change isn't even required, since Stable always refers to the latest released version of Debian. In both cases, the database of available packages must be refreshed (with the apt update command or the refresh button in synaptic).
Khi những mã nguồn gói mới này được đăng ký, trước tiên bạn nên làm một nâng cấp tối thiểu với apt upgrade. Bằng cách nâng cấp theo hai bước, chúng ta sẽ giảm bớt công việc của các công cụ quản lý gói và thường đảm bảo rằng chúng ta có các phiên bản mới nhất, có thể đã tích lũy các bản sửa lỗi và cải tiến cần thiết để hoàn tất việc nâng cấp bản phân phối đầy đủ.
Once this first upgrade is done, it is time to handle the upgrade itself, either with apt full-upgrade, aptitude, or synaptic. You should carefully check the suggested actions before applying them: you might want to add suggested packages or deselect packages which are only recommended and known not to be useful. In any case, the front-end should come up with a scenario ending in a coherent and up-to-date Buster system. Then, all you need is to do is wait while the required packages are downloaded, answer the debconf questions and possibly those about locally modified configuration files, and sit back while APT does its magic.

6.7.2. Xử lý sự cố sau khi nâng cấp

Mặc dù những nỗ lực tốt nhất của người quản lý Debian, một nâng cấp hệ thống lớn không phải lúc nào cũng trôi chảy như bạn mong muốn. Phiên bản phần mềm mới có thể không tương thích với các phiên bản trước (ví dụ, hành vi mặc định của họ hoặc định dạng dữ liệu của họ có thể đã thay đổi). Ngoài ra, một số lỗi có thể trượt qua các vết nứt mặc dù giai đoạn thử nghiệm luôn đi trước một bản phát hành Debian.
Để dự đoán một số vấn đề này, bạn có thể cài đặt gói apt-listchanges, hiển thị thông tin về các sự cố có thể xảy ra khi bắt đầu nâng cấp gói. Thông tin này do các nhà bảo trì gói tin lập và đưa vào tệp tin /usr/share/doc/package/NEWS.Debian vì lợi ích của người dùng. Đọc các tệp này (có thể thông qua apt-listchanges) sẽ giúp bạn tránh những sự trục trặc bất ngờ.
You might sometimes find that the new version of a software doesn't work at all. This generally happens if the application isn't particularly popular and hasn't been tested enough; a last-minute update can also introduce regressions which are only found after the stable release. In both cases, the first thing to do is to have a look at the bug tracking system at https://bugs.debian.org/package, and check whether the problem has already been reported. If this is case it will be also listed before the upgrade begins, if you have apt-listbugs installed. If it hasn't, you should report it yourself with reportbug. If it is already known, the bug report and the associated messages are usually an excellent source of information related to the bug:
  • Đôi khi một bản vá đã tồn tại, và nó có sẵn trên báo cáo lỗi; Bạn có thể biên dịch lại một phiên bản cố định của gói bị hỏng cục bộ(xem Phần 15.1, “Rebuilding a Package from its Sources”);
  • Trong một số trường hợp khác, người dùng có thể đã tìm ra giải pháp cho vấn đề và chia sẻ thông tin chi tiết về vấn đề này trong bài trả lời của họ cho báo cáo;
  • Trong các trường hợp khác, một gói cố định có thể đã được chuẩn bị và công khai bởi người bảo trì.
Depending on the severity of the bug, a new version of the package may be prepared specifically for a new revision of the stable release. When this happens, the fixed package is made available in the proposed-updates section of the Debian mirrors (see Phần 6.1.2.3, “Đề xuất cập nhật”). The corresponding entry can then be temporarily added to the sources.list file, and updated packages can be installed with apt or aptitude.
Sometimes the fixed package isn't available in this section yet because it is pending a validation by the Stable Release Managers. You can verify if that is the case on their web page. Packages listed there aren't available yet, but at least you know that the publication process is ongoing.

6.7.3. Cleaning Up after an Upgrade

APT usually ensures a clean upgrade, pulling in new and updated dependencies, or removing conflicting packages. But even being such a great tool, it cannot cover all tasks users and administrators will face after an upgrade, because they require a human decision.

6.7.3.1. Packages removed from the Debian Archive

Sometimes the Debian FTP Masters remove packages from the Debian archive, because they contain release critical bugs, were abandoned by their upstream author or their package maintainer, or simply reached their end of life. In this case a newer Debian release does not ship the package anymore. To find all packages, which do not have a package source, use the apt-show-versions command:
$ apt-show-versions | grep "No available version"
A similar result can be achieved by aptitude search ~o. If the packages found are not required anymore, they should be purged from the system, because they will not face any updates for critical or security related bugs anymore.

6.7.3.2. Dummy and Transitional Packages

Sometimes, it might be necessary for a package to get a new name. In this case often the old package is kept as an (almost) empty package, depending on the new one and installing only the mandatory files in /usr/share/doc/package/. Such packages are called "dummy" or "transitional" packages. If the package maintainer in charge also changed the section of this package to oldlibs, then tools like aptitude, deboprhan, or debfoster (see sidebar THAY THẾ deborphandebfoster) can pickup these packages to suggest their removal.
Unfortunately there is currently no foolproof way of making sure that these packages are automatically removed or picked by the tools mentioned above. One way to check if the system still has some of these packages installed, is to look through the package descriptions of installed packages and then check the results. Be careful not to schedule the results for automatic removal, because this method can lead to false positives:
$ dpkg -l | grep ^ii | grep -i -E "(transition|dummy)"
Because the new package is pulled in as a dependency of the transitional package, it is usually marked as automatically installed and might be scheduled for removal if you try to purge the transitional package from your system. In this case you can use either of the approaches described in sidebar MẸO Xóa và cài đặt đồng thời and Phần 6.2.7, “Theo dõi gói cài đặt tự động” to selectively remove the transitional package.

6.7.3.3. Old or Unused Configuration Files

If the upgrade was successful there might be some configuration file cruft, either from dpkg (see Phần 5.2.3, “Checksums, Danh sách Tệp Cấu hình”), ucf or from removed packages. The latter can be purged by using apt autoremove --purge. The configuration files, that were handled by dpkg or ucf during the upgrade process, have left some counterparts with a dedicated suffix (e.g. .dpkg-dist, .dpkg-old, .ucf-old). Using the find or locate command can help to track them down. If they are no longer of any use, they can be deleted.

6.7.3.4. Files not owned by any Package

The Debian policy enforces that packages don't leave files behind when they are purged. Violating this principle is a serious bug and you will rarely encounter it. If you do, report it; and if you are curious though, you can use the cruft or cruft-ng package to check your system for files not owned by any package.