Tại sao các tập tin snap không thể được sửa đổi theo bất kỳ cách nào?


14

Tôi đã cố gắng thay đổi biểu tượng của Blender trong một thời gian dài, nhưng dù tôi có làm gì đi nữa, tôi không được phép chỉnh sửa bất cứ điều gì /snap/blender-tpaw/3/.

Đây là những gì tôi đã thử:

  • Chỉnh sửa các tập tin từ nautiluskhông có sudo.
  • Chỉnh sửa các tập tin từ nautilusvới sudo( sudo nautilustrong thiết bị đầu cuối).
  • Sử dụng các lệnh đầu cuối như cphoặc rmkhông sudo.
  • Sử dụng các lệnh đầu cuối với sudo(chẳng hạn như sudo cp <source> /snap/blender-tpaw/3/hoặc sudo rm /snap/blender-tpaw/3/<filename.ext>)
  • Làm mọi thứ ở trên trong một thiết bị đầu cuối gốc (sử dụng sudo -i)

Trong mọi trường hợp tôi nhận được lỗi sau:

cannot remove/copy '/snap/blender-tpaw/3/filename.ext': Read-only file system

trong đó tên tệp là tệp và .ext là phần mở rộng của nó.

Điều này cũng áp dụng cho các tệp của snaps khác, không chỉ Blender.

Tôi đang làm gì đó sai ở đây? Hay chỉ là không thể thay đổi những tập tin đó? Mặc dù tôi không nghĩ điều đó là không thể bởi vì mọi thứ ở đây từ Ubuntu đến Blender đều là nguồn mở, vì vậy họ không có lý do gì để chặn chúng tôi sửa đổi các tệp đó.

BIÊN TẬP:

Tôi đã sử dụng Menu chính (alacarte) để thay đổi biểu tượng, nhưng tôi vẫn muốn biết lý do tại sao tôi không thể sửa đổi bất kỳ tệp snap nào.

Câu trả lời:


12

Không thể thay đổi nội dung của snap mà không xây dựng lại snap. Đây chủ yếu là một biện pháp bảo mật, để đảm bảo rằng snap không bị giả mạo.

Tuy nhiên, biểu tượng được gọi là khả năng trong một tập tin máy tính để bàn gọi blender-tpaw_blender.desktopđó có thể chỉnh sửa, và có thể được tìm thấy trong /var/lib/snapd/desktop/applications.

Bạn có thể thay đổi dòng sau để cập nhật biểu tượng: -

Icon=/snap/blender-tpaw/3/meta/gui/icon.svg

Điều "không thể thay đổi" này với snap rất - ý tôi là, RẤT - phiền phức! Lý do chính tôi muốn sử dụng snap là tôi muốn thực hiện cài đặt song song cùng một chương trình (ví dụ: Firefox) và sau đó thực hiện các thử nghiệm với cài đặt "sao chép" mà không làm hỏng cài đặt chính. Nhân tiện, thay đổi trên tệp .desktop không hoạt động trong trường hợp của Firefox.
Almir Campos

13

Mặc dù tiền đề của câu hỏi là chính xác về mặt kỹ thuật (bạn không thể thay đổi các tệp nhanh chóng), có nhiều cách để giải quyết vấn đề này.

Một cách như vậy là sử dụng --bindtùy chọn kết hợp với mount, để kết nối lại hệ thống phân cấp tệp hiện có sang một nơi khác.

Ví dụ: nếu bạn muốn snaps của bạn sử dụng chứng chỉ hệ thống thay vì chứng chỉ được cài đặt core, bạn có thể gắn thư mục chứa chứng chỉ hệ thống trên máy chủ trên đầu thư mục chứng chỉ hệ thống corebằng lệnh sau:

sudo mount --bind -o nodev,ro /etc/ssl/certs /snap/core/current/etc/ssl/certs/

Điều này không thực sự thay đổi hệ thống tập tin snap. Nếu bạn ngắt kết nối thư mục, thư mục cũ sẽ thay thế:

sudo umount /snap/core/current/etc/ssl/certs

Lưu ý: Mounts không tồn tại giữa các lần khởi động lại. Có một số cách để gắn kết vẫn tồn tại sau khi khởi động lại. Một cách như vậy là tạo một systemdkịch bản khởi động:

$ cat <<-EOF | sudo tee /etc/systemd/system/snap-core-current-etc-ssl-certs.mount
[Unit]
Description=Mount unit to fix etc ssl certs in core package
After=snapd.service

[Mount]
What=/etc/ssl/certs
Where=/snap/core/current/etc/ssl/certs
Type=none
Options=bind,nodev,ro

[Install]
WantedBy=multi-user.target
EOF
$ systemctl enable snap-core-current-etc-ssl-certs.mount

Lấy từ đây .


Giải pháp tuyệt vời, cảm ơn v. Nhiều! Chỉ cần một niggle: các phiên bản systemd mới hơn (phiên bản ngày 18.04 khi viết bài này) không còn chấp nhận gắn kết các đường dẫn trên đỉnh có chứa các liên kết mềm; rất may, cấu hình trên có thể được thay thế bằng một dòng trong /etc/fstab, ví dụ: echo -e "/etc/ssl/certs\t/snap/core/current/etc/ssl/certs\tnone\tbind,nodev,ro\t0 2" | sudo tee -a /etc/fstab- source
sxc731 23/2/19
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.