Di chuyển các gói snap đến vị trí / thư mục khác


13

Tôi muốn di chuyển các gói snap đã cài đặt vào thư mục nhà. Các gói Snap lớn hơn một chút so với các gói .deb do đó chúng chiếm không gian trong phân vùng gốc của tôi. Tôi biết các gói được đặt trong /var/lib/snapd/snapsvà chúng đang làm việc với việc gắn gói /snap/app_dir. Tôi đã cố gắng để liên kết, nhưng nó không hoạt động.

Câu trả lời:


14

Thay đổi thư mục cài đặt snaps

Đây là một vấn đề phổ biến mà nhiều người yêu cầu. Có vẻ như các nhà phát triển snap không có ý định giải quyết sớm, vì vậy một số giải pháp đã được đề xuất.

Giải pháp đầu tiên bị cộng đồng từ chối mạnh mẽ, nhưng tôi đã không thử, là sử dụng các liên kết tượng trưng để liên kết các thư mục dẫn đến snaps. Phương pháp này dường như không hoạt động vì cộng đồng trả lời rằng apparmom không hoạt động với các liên kết tượng trưng.

Giải pháp thứ haimount --bindthư mục /val/lib/snapd/snapshoạt động tốt với tôi với các ứng dụng đã cài đặt nhưng không cài đặt được ứng dụng mới vì tôi đã chuyển thư mục sang phân vùng khác. Điều đó đã cho tôi một lỗi về việc liên kết cứng ứng dụng snap với thư mục bộ đệm được đặt trong đó /var/lib/snapd/cache. Tôi không biết liệu giải pháp này có thể hoạt động nếu vị trí nằm trong cùng một phân vùng hay không; nhưng đây là lý do tại sao tôi chuyển thư mục snap để giải phóng không gian từ phân vùng này sang phân vùng khác.

Thứ ba và tùy chọn làm việc là chuyển /var/lib/snapdtoàn bộ thư mục mount --bindsang vị trí đó từ một vị trí khác và điều đó làm việc cho tôi và đây là các bước.

Chỉ cần một lưu ý nhỏ, bạn đã biết, sau khi rsync được thực hiện ở các bước dưới đây, bạn có thể sao lưu dữ liệu bên trong /var/lib/snapdsang vị trí khác cho đến khi toàn bộ quá trình được thực hiện thành công sau đó bạn có thể xóa dữ liệu sao lưu nếu bạn muốn giải phóng thêm dung lượng.

##############################################################################
# Take Care this section may break the System !!!
##############################################################################
##Move snap folder to Home instead of root.
#Create the directory : you can change the location
mkdir /home/$USER/snap/snapd

#Copy the data
sudo rsync -avzP /var/lib/snapd/  /home/$USER/snap/snapd/

#Do backups
sudo mv /var/lib/snapd /var/lib/snapd.bak
sudo cp /etc/fstab /etc/fstab.bak

#Change fstab (Change $USER with your name or change the path totally)
echo "/home/$USER/snap/snapd /var/lib/snapd none bind 0 0" | sudo tee -a /etc/fstab

#remount fstab Or reboot.
sudo mkdir /var/lib/snapd
sudo mount -a

if ls  /var/lib/snapd/ | grep snaps
then
    echo "Re-mounting snapd folder is done successfully. !!!!"
    sudo rm -rf /var/lib/snapd.bak
else
    echo "WARNING : Re-mounting snapd folder failed, please revert !!!!! "
    echo "WARNING : Re-mounting snapd folder failed, please revert !!!!! "
    echo "WARNING : Re-mounting snapd folder failed, please revert !!!!! "
    echo "WARNING : Re-mounting snapd folder failed, please revert !!!!! "
    echo "WARNING : Re-mounting snapd folder failed, please revert !!!!! "

    # Trying to revert automatically
    sudo cp /etc/fstab.bak /etc/fstab

    sudo mount -a
    sudo umount /var/lib/snapd

    sudo mv /var/lib/snapd.bak /var/lib/snapd

    echo "Files located at ~/snap/snapd should be removed, but it keeped for
    recovery until you ,manually, reboot the system and make sure the service
    is running correctly then manually you can remove that folder ~/snap/snapd
    !!!!!!!!!!!!!!, you should do that manually."

fi
##############################################################################
# Take Care the pervious section may break the System !!!
##############################################################################

Người giới thiệu

  1. Vị trí đĩa tùy chỉnh cho vấn đề snaps nhất định
  2. Hỏi ubfox Câu hỏi (Giải pháp không tốt nhất) Liên kết
  3. Đề xuất sử dụng liên kết gắn kết thay vì liên kết tượng trưng trong di chuyển thư mục snap Liên kết
  4. Sự khác nhau giữa liên kết gắn kết và liên kết tượng trưng Liên kết
  5. Tạo liên kết gắn kết vĩnh viễn

1
Làm việc tuyệt vời cho tôi. Cảm ơn bạn! Tôi chỉ phải (tái) tạo thư mục / var / lib / snapd sau khi chuyển nó sang .bak để mount -a hoạt động
Salim

@Salim, Bạn nói đúng, tôi đã bỏ lỡ bước này mà tôi sẽ thêm vào kịch bản
Muhammad Yusuf

11

Cuối cùng tôi cũng tìm được cách.

  • Đầu tiên di chuyển gói snap đến vị trí mong muốn. Hãy để snap_app.snapứng dụng bạn muốn di chuyển. Di chuyển gói từ /var/lib/snapd/snaps/snap_app.snapđến ~/snaps/snap_app.snap.
  • Sau đó, bạn phải thay đổi tùy chọn gắn kết /etc/systemd/system/snap-snap_app-90.mount, số trong tên tệp có thể thay đổi. Nó có chỉ thị What=/snap_app_loactiondưới [Mount]. Thay đổi nó đến vị trí gói snap mới của bạn.
  • Cuối cùng, bạn phải liên kết các gói snap đến /var/lib/snapd/snaps/.
    Ví dụ: ln -s ~/snaps/snap_app.snap /var/lib/snapd/snaps/snap_app.snap

Gói Snap ban đầu được gắn vào /snap/snap_appthư mục. bạn có thể kiểm tra nó với mount. Khởi động lại máy của bạn và bạn đã hoàn tất.


forum.snapcraft.io/t/ Từ cũng có thể hữu ích
Adam Monsen
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.