Điểm:6

cách nâng cấp các gói Ubuntu trong WSL cùng với cập nhật tự động của Microsoft Store

lá cờ cn

Tôi bắt đầu sử dụng WSL2 và cài đặt Ubuntu mà không có số phiên bản cụ thể. Tôi hiểu rằng nó sẽ tự động nâng cấp lên bản phát hành LTS lớn tiếp theo (hiện tại là 20.04 và tôi cho rằng nó sẽ là 22.04 vào năm tới).

Sau đó, những gì về các gói bên trong? tôi có thể cập nhật aptnâng cấp thích hợp tất cả chúng, nhưng Microsoft Store cũng tự động cập nhật các bản dựng Ubuntu mới hơn mà tôi tin rằng sẽ ghi đè lên một số bản cập nhật thủ công của tôi. Tôi có nên để chúng như vậy và chỉ nâng cấp các gói mà tôi đã cài đặt không? Điều gì sẽ là thực hành tốt nhất?

Điểm:7
lá cờ vn

Lưu ý: Sử dụng lại một số câu trả lời của tôi cho câu hỏi này. Có đủ sự khác biệt trong câu hỏi để yêu cầu một vài thay đổi, nhưng một số khái niệm cốt lõi là như nhau.

Phần "nâng cấp tự động" của ứng dụng Store hơi khó hiểu. Có, "Ubuntu" (không có số phiên bản) trong Cửa hàng "tự động cập nhật", nhưng điều đó có thể không có nghĩa như bạn nghĩ. Bản thân tôi cũng phải mất một chút thời gian để làm quen với khái niệm này.

Điều này hơi khó giải thích, nhưng khi bạn cài đặt "Ubuntu" (không có phiên bản) từ Cửa hàng, bạn thực sự kết thúc với số ba "cài đặt" khác nhau:

  • Tất nhiên, bản thân WSL là điều kiện tiên quyết. Đây thực sự là nơi cài đặt nhân Linux, vì nó được chia sẻ giữa tất cả các bản phân phối/phiên bản WSL2 đã cài đặt.

  • Một "gói ứng dụng" với gói rootfs (cài đặt.tar.gz) Trong C:\Tệp chương trình\WindowsApps\CanonicalGroup.... Bạn có thể thấy điều này bằng cách khởi động một PowerShell quản trị và chạy Get-ChildItem -Recurse 'C:\Program Files\WindowsApps\Canonical*' | Đối tượng ở đâu {$_.Name -eq 'install.tar.gz' }.

  • Khi chạy lần đầu tiên (thông qua ubuntu.exe), trình cài đặt sẽ tạo phiên bản WSL thực tế của bạn trong %UserProfile%\AppData\Local\Packages\CanonicalGroup....

"Nâng cấp tự động" của ứng dụng Store thực sự làm gì?

Khi có bản cập nhật mới của ứng dụng trên Cửa hàng, thứ duy nhất được cập nhật trên hệ thống của bạn là gói rootfs. nó làm không phải thay đổi cài đặt của bạn ví dụ. nó làm không phải tự động cập nhật bất kỳ gói nào trong ví dụ. Nó thậm chí không cập nhật kernel WSL2.

Bạn vẫn cần phải chạy cập nhật sudo apt && nâng cấp sudo apt -y (hoặc tương đương) để cập nhật các gói một cách thường xuyên. Lưu ý rằng điều này không bao gồm kernel -- Xem bên dưới để biết cách thực hiện.

Như tôi nghĩ bạn có thể thấy từ câu hỏi của mình, đây là một điều tốt. Nếu không, bạn sẽ phải cạnh tranh giữa các gói được nâng cấp "Cửa hàng" và các gói từ kho lưu trữ.

(Lưu ý trang web: Tín dụng và cảm ơn u/zoredache trên Reddit, người ban đầu làm rõ điều này cho tôi.)

Vậy vấn đề là gì?

Dù sao, việc nâng cấp gói Store khá vô dụng đối với hầu hết người dùng trừ khi bạn:

  1. Hủy đăng ký phiên bản (xóa tất cả cấu hình) và định cấu hình lại bằng cách chạy lại ubuntu.exe chỉ huy. Khi thực hiện cấu hình ban đầu đó, rootfs được giải nén, vì vậy bạn sẽ nhận được "bản mới nhất và tốt nhất" từ Cửa hàng tại thời điểm đó. Tuy nhiên, hãy lưu ý rằng các bản phát hành trên Cửa hàng vẫn khá hiếm so với các bản cập nhật gói trong kho lưu trữ chính thức. Ngay cả sau khi cài đặt từ Cửa hàng, hầu như bạn vẫn sẽ nhận được một số bản cập nhật thông qua đúng cách.

  2. Muốn sử dụng cái đó cài đặt.tar.gz để tạo phiên bản WSL/Ubuntu thứ hai (sử dụng wsl --nhập khẩu). Sau đó, phiên bản mới được tạo sẽ sử dụng các rootf được cập nhật trong Cửa hàng. Một lần nữa, các cảnh báo tương tự áp dụng cho các gói repo như trong kịch bản đầu tiên.

Cả hai kịch bản này đều rất phổ biến. Ngay cả khi Cửa hàng không phiên bản Ubuntu được cập nhật lên (có lẽ là) 22.04, nó sẽ không thay đổi Cài đặt phiên bản 20.04, chỉ rootfs bưu kiện.

Tại thời điểm đó, bạn vẫn sẽ cần chạy một Sudo do-phát hành-nâng cấp -d khi cuối cùng bạn muốn nâng cấp lên 22.04 (hoặc bản phát hành tạm thời).

Nâng cấp hạt nhân

Lưu ý rằng cả bản cập nhật Store và đúng cách (hoặc các phương thức đóng gói khác) cập nhật nhân WSL2. Vì hạt nhân là một phần của chính WSL2 và được chia sẻ giữa tất cả các bản phân phối đã cài đặt nên nó được xử lý theo cách khác. Sử dụng:

wsl --cập nhật

... để kiểm tra và tải xuống bất kỳ bản cập nhật nhân WSL2 nào.

Điều đó giả định rằng bạn đang sử dụng kernel mặc định. Bạn có tùy chọn tải xuống hoặc xây dựng hạt nhân của riêng mình từ Nguồn hạt nhân WSL2. Theo kinh nghiệm của tôi, có thể mất vài ngày hoặc vài tuần để bản cập nhật kernel có sẵn thông qua wsl --cập nhật, vì vậy nếu bạn muốn lấy nội dung mới nhất và hay nhất, bạn có thể. Sau đó định cấu hình WSL2 để sử dụng kernel đó thông qua .wslconfig.

Một điều nữa

Tất cả những gì đã nói, ứng dụng "Ubuntu" (không phiên bản) vẫn có một lợi thế và đó là bạn sẽ không cần phải lo lắng về việc thay đổi tên của nó (như trong câu hỏi khác) khi cuối cùng bạn nâng cấp lên bản phát hành sau này. Phiên bản "Ubuntu 20.04" sẽ luôn có tên phiên bản Ubuntu-20.04, ngay cả khi và khi bạn nâng cấp nó lên thứ gì đó theo cách thủ công sau này.

lá cờ cn
Cảm ơn bạn đã giải thích chi tiết! Điều làm tôi ngạc nhiên là bản cập nhật tự động của Cửa hàng thậm chí không cập nhật kernel... thật tốt khi biết điều đó.
NotTheDr01ds avatar
lá cờ vn
@leoce Đúng! Và hạt nhân cũng là một câu chuyện hoàn toàn khác. Cập nhật câu trả lời để trang trải điều đó.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.