Tại sao tất cả các snaps được gắn kết và được liệt kê dưới dạng các thiết bị khối hoặc phân vùng cho Ubuntu 18.04?


18

Kể từ khi chạy Ubuntu 18.04 lsblkcho thấy 16 vòng lặp snap (2-3 lần cho mỗi snap). Câu hỏi là, tại sao chúng được liệt kê là kết quả cho lsblk, fdisf-l và blkid?

Nó tạo ra rất nhiều lộn xộn từ các phân vùng ổ đĩa thực tế mà tôi cần xem, cụ thể là / dev / phân vùng. Tôi biết một bản sao có chủ đích của câu hỏi này tồn tại, nhưng nó chỉ hỏi tại sao ba vòng lặp được liệt kê mỗi snap. Tôi muốn biết lý do tại sao các snaps này được liệt kê ở vị trí đầu tiên và bản sao có mục đích không trả lời điều này (có lẽ những cái được đánh dấu này là trùng lặp có thể giúp tôi bằng cách giải thích tại sao nó là bản sao). Về mặt kỹ thuật, chúng đủ điều kiện là hệ thống tệp (mà tôi không tạo ra cũng không yêu cầu), nhưng chúng đang cản trở đầu ra thông tin cho / dev / phân vùng mà tôi quan tâm. Điều này trở thành vấn đề khi fdisk -l xuất ra ba trang + danh sách đầy chủ yếu với snaps.

Đầu ra của bản cài đặt Ubuntu (1 tuần tuổi) gần đây và tôi chưa cài đặt bất kỳ snaps nào:

$ lsblk  
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT  
loop0    7:0    0  14.5M  1 loop /snap/gnome-logs/37  
loop1    7:1    0   2.3M  1 loop /snap/gnome-calculator/170  
loop2    7:2    0  86.6M  1 loop /snap/core/4486  
loop3    7:3    0  86.6M  1 loop /snap/core/4650  
loop4    7:4    0   1.6M  1 loop /snap/gnome-calculator/154  
loop5    7:5    0  14.5M  1 loop /snap/gnome-logs/34  
loop6    7:6    0   3.3M  1 loop /snap/gnome-system-monitor/36  
loop7    7:7    0   2.3M  1 loop /snap/gnome-calculator/178  
loop8    7:8    0    13M  1 loop /snap/gnome-characters/101  
loop9    7:9    0   3.7M  1 loop /snap/gnome-system-monitor/45  
loop10   7:10   0 139.5M  1 loop /snap/gnome-3-26-1604/64  
loop11   7:11   0   140M  1 loop /snap/gnome-3-26-1604/59   
loop12   7:12   0   3.7M  1 loop /snap/gnome-system-monitor/41  
loop13   7:13   0    21M  1 loop /snap/gnome-logs/25  
loop14   7:14   0  12.2M  1 loop /snap/gnome-characters/69  
loop15   7:15   0    13M  1 loop /snap/gnome-characters/96  
sda      8:0    0 298.1G  0 disk  
├─sda1   8:1    0   512M  0 part /boot/efi  
└─sda2   8:2    0 297.6G  0 part /  
sr0     11:0    1  1024M  0 rom  

(chụp màn hình bổ sung của văn bản trên):
ảnh chụp màn hình.jpg

My snap listhiển thị 6 kết quả:

core
gnome-3-26-1604 gnome-Calculator
gnome
-character
gnome-log
gnome-system-Monitor

Trong khi đó, gnome-đĩa-Utility hoàn toàn không hiển thị gì cho snaps, chỉ hiển thị ổ cứng và ổ đĩa quang của tôi.

Sẽ không hiệu quả nếu mỗi snap được cài đặt được liệt kê dưới dạng một thiết bị khối (mỗi lần thêm 2-3 lần). Tôi có nên mong đợi các bản cập nhật trong tương lai để đối phó với điều này?

Chỉnh sửa:
fdisk-lcũng đưa ra một danh sách rất dài với 16 trường hợp của các "vòng lặp đĩa" này (Đĩa / dev / loop0, Disk / dev / loop1, v.v., mỗi danh sách có chi tiết tôi sẽ không hiển thị ở đây vì quá dài). Đây không thể là hành vi dự định, phải không?
blkidcũng liệt kê 16 vòng lặp, như TYPE = "squashfs". Ít nhất là parted -lhoạt động như mong đợi, chỉ ra ngoài phân vùng đĩa thực tế của tôi.

Tôi vừa thử nghiệm điều này, và cài đặt nhiều snaps sẽ thêm nhiều hơn vào đầu ra lsblk. Do đó, fdisk, lsblk, blkid có thể có danh sách đầu ra rất lớn, theo số lượng snaps có sẵn và được cài đặt.


Tôi nghĩ rằng câu trả lời thực sự cho câu hỏi của bạn là ở câu hỏi liên quan này: "Gói Snap là hệ thống tệp squashfs. Cách duy nhất để truy cập snaps là gắn kết chúng. Vì vậy, chúng sẽ luôn được gắn kết." Askubfox.com/questions/842093/ Thần Chúa tôi ước họ không phải gắn kết!
craq

Câu trả lời:


10

Khi bạn gõ lệnh

snap list 

bạn sẽ nhận được đầu ra của các gói snap được cài đặt thực tế. Lý do là khi một gói snap được cập nhật, phiên bản cũ sẽ được giữ lại (xem snapcraft docu) .

Tài sản từ snapcraft docu

Sau đó, bộ sưu tập rác sẽ loại bỏ và xóa bất kỳ tệp snap nào và các vùng có thể ghi của chúng, cho các phiên bản snap trước phiên bản vừa được cập nhật - có nghĩa là, nhiều nhất, hai phiên bản snap sẽ xuất hiện trên hệ thống. Điều này giúp tiết kiệm không gian đĩa mà không ảnh hưởng đến khả năng hoàn nguyên snap về trạng thái đã biết trước đó.

Hoàn toàn xóa một snap khỏi hệ thống của bạn cũng sẽ xóa mã và lọc dữ liệu cho tất cả các phiên bản trước.

Chẳng hạn, bạn đã cài đặt nhiều hơn một phiên bản của máy tính gnome .

Trong trường hợp bạn chỉ cần phiên bản mới nhất, bạn có thể sử dụng

sudo snap remove gnome-calculator --revision <verison to be placed>

Sử dụng lệnh

losetup -a 

hiển thị cho bạn các snaps được gắn (thiết bị lặp)

Nếu bạn muốn xóa những cái kép, gõ

sudo losetup -d /dev/loop<loopnumber>

Nó dường như là một lỗi của mã snap, vì tất cả cũ hơn được giữ trong tệp / var / lib / snapd / snaps.


1
sudo: remove: command not foundlosetup -dkhông thay đổi gì cả.
jordy

3
Mã chính xác là sudo snap removekhông sudo remove. Vui lòng xem lại câu trả lời của bạn.
jordy

8

Từ nội dung trong câu hỏi của bạn, vấn đề của bạn là tìm kiếm cách kiểm soát những gì bạn đang thấy khi bạn cố gắng xem các thiết bị khối của mình hơn là cách snap sử dụng các thiết bị chặn cho hoạt động của nó.

Tôi đồng ý với sự phân biệt tham chiếu của bạn giữa fdisk -lparted -l. Mặc dù fdisk cho thấy đầu ra chi tiết rất tốt của các thiết bị khối, nhưng nó cho thấy quá nhiều thứ khác làm mất tập trung vào những gì bạn đang cố gắng xem.

Nghị quyết

Bạn có thể sử dụng bộ lọc đầu ra định dạng lsblk . Điều này hoạt động tốt để cung cấp một đầu ra sạch như những gì bạn nhận được với tiện ích gnome-đĩa .

$ lsblk -o name,mountpoint,label,size,fstype,uuid | egrep -v "^loop"

Hoặc như bạn đã chỉ ra trong câu hỏi của bạn:

$ sudo parted -l

Đối với dflệnh trong câu hỏi của bạn, sử dụng:

$ df | egrep -v /dev/loop

3
Tôi đã chờ đợi một thời gian dài để ai đó đề xuất chính xác điều này, một đầu ra được lọc cho lsblk (chứ không phải tất cả những bình luận bảo vệ đầu ra quá mức là bình thường và tốt). Tôi muốn tránh phải làm điều này, tuy nhiên, chỉ vì đơn giản và thẳng lsblklà nhanh chóng, dễ nhớ và nó hoạt động rất đẹp, trước khi snap can thiệp vào nó. Tôi muốn nó trở lại như cũ. Hy vọng rằng, đầu ra quá mức chỉ là một lỗi sẽ được sửa chữa.
jordy

4
@danthonyd Cảm ơn bạn đã thừa nhận. Tôi chắc chắn rằng tôi đã hiểu câu hỏi và cảm thấy chắc chắn rằng nó xứng đáng là một vị trí trong cơ sở dữ liệu thông tin của AU để xem xét và trả lời. Đây là điều tôi đã quan tâm trong một thời gian dài. Tuy nhiên, vấn đề không phải là Snap. Vấn đề là với các fdisknhà phát triển. Họ nên thêm một phương pháp để lọc các thiết bị thực qua các thiết bị giả để loại bỏ đầu ra quá mức và làm cho ứng dụng của họ dễ quản lý hơn, như tiện ích Gnome-đĩa. Không ai sẽ được sử dụng fdiskđể quản lý các thiết bị vòng lặp của họ . (còn tiếp) ...
LD James

4
... (Tiếp theo) Họ thậm chí không cần nhìn thấy nó trong đầu ra fdisk . Đó là những gì losetup và các lệnh ứng dụng giả khác dành cho. Vậy tại sao phải hiển thị nó, nếu bạn không thể quản lý nó bằng công cụ. Lỗ hổng trong thiết kế fdisk này đang làm cho các ứng dụng như chia taylsblk trở nên phổ biến hơn và thân thiện với người dùng.
LD James

1
Cảm ơn bạn. Tôi đang thêm | egrep -v "^loop"vào tất cả các lsblktập lệnh 16.04 của mình ngày hôm nay để giảm bảo trì vào ngày tôi chuyển đổi thành 18.04. (FYI tôi đã lên-bình chọn câu trả lời của bạn trước khi ngày nay)
WinEunuuchs2Unix

4

Tôi thấy điều này phiền phức quá. Có vẻ như nếu họ không chạy, họ không nên được gắn kết hoặc liệt kê. Bạn có thể chạy lệnh này để loại trừ tất cả các thiết bị lặp.

$ lsblk -e 7


1

Nếu bạn sử dụng phiên bản snap của màn hình hệ thống, thì bạn sẽ thấy tất cả các hệ thống tệp được sử dụng bởi snap cũng như các phiên bản bạn sử dụng.

Một "cách khắc phục" dễ dàng là gỡ cài đặt Gnome System Monitor khỏi cửa hàng ứng dụng. Đây là phiên bản snap.

Sau đó cài đặt Gnome System Monitor từ kho lưu trữ thông thường bằng trình quản lý gói Synaptic. Đây là phiên bản bình thường cài đặt một loạt các tập tin trên toàn bộ phân vùng gốc của bạn. Đẹp!

Và bạn sẽ thấy đúng những gì bạn mong đợi khi bạn khởi chạy Gnome System Monitor ...


Tuyệt quá! Đây là những gì tôi đang tìm kiếm. Các lệnh là snap remove gnome-system-monitor(không yêu cầu sudo), tiếp theo là sudo apt install gnome-system-monitor(lần này với sudo).
PerlDuck

0

Để chỉ hiển thị các mount không bao gồm loopback, bạn cũng có thể chỉ cần:

lsblk -af |grep -sv loop

;)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.