ย้ายแพ็กเกจสแน็ปไปยังตำแหน่ง / ไดเรกทอรีอื่น


13

ฉันต้องการย้ายแพคเกจ snap ที่ติดตั้งไปยังโฮมไดเร็กตอรี่ แพคเกจ Snap นั้นใหญ่กว่าแพ็คเกจ. deb เล็กน้อยดังนั้นมันจึงใช้พื้นที่ในพาร์ติชั่นรูทของฉัน ฉันรู้ว่าแพคเกจที่อยู่ในและพวกเขาจะทำงานร่วมกับการติดตั้งแพคเกจเพื่อ/var/lib/snapd/snaps /snap/app_dirฉันพยายามที่จะเชื่อมโยง แต่มันไม่ได้ผล

คำตอบ:


15

เปลี่ยนไดเร็กทอรีการติดตั้ง snaps

นี่เป็นปัญหาทั่วไปที่หลายคนถามหา ดูเหมือนว่านักพัฒนา snap ไม่ได้ตั้งใจที่จะแก้ปัญหาในเร็ว ๆ นี้ดังนั้นจึงแนะนำวิธีแก้ไขปัญหาบางอย่าง

ทางออกแรกที่ชุมชนปฏิเสธอย่างรุนแรง แต่ฉันไม่ได้ลองคือใช้ลิงก์สัญลักษณ์เพื่อลิงก์ไดเรกทอรีที่นำไปสู่ วิธีนี้ดูเหมือนว่าจะไม่ทำงานเมื่อชุมชนตอบกลับบอกว่าอาวุธไม่ทำงานกับลิงก์สัญลักษณ์

โซลูชันที่สองคือmount --bindไดเรกทอรี/val/lib/snapd/snapsที่ใช้งานได้ดีสำหรับฉันด้วยแอปพลิเคชันที่ติดตั้งแล้ว แต่ไม่สามารถติดตั้งแอปพลิเคชันใหม่ได้เนื่องจากฉันย้ายไดเรกทอรีไปยังพาร์ติชันอื่น นั่นทำให้ฉันมีข้อผิดพลาดเกี่ยวกับการเชื่อมโยงแอปพลิเคชัน snap กับไดเรกทอรีแคชที่อยู่ใน/var/lib/snapd/cacheนั้น ฉันไม่ทราบว่าโซลูชันนี้อาจใช้งานได้หรือไม่หากตำแหน่งอยู่ในพาร์ติชันเดียวกันหรือไม่ แต่นี่คือเหตุผลว่าทำไมฉันจึงย้ายไดเรกทอรี snap เพื่อเพิ่มพื้นที่ว่างจากพาร์ติชันหนึ่งไปยังอีกที่หนึ่ง

ตัวเลือกที่สามและการทำงานคือการย้าย/var/lib/snapdไดเรกทอรีโดยรวมจากไดเรกทอรีmount --bindอื่นไปยังตำแหน่งอื่นและใช้งานได้สำหรับฉันและนี่คือขั้นตอน

ทราบเพียงเล็กน้อยคุณทราบอยู่แล้วว่าหลังจากทำ rsync ในขั้นตอนด้านล่างแล้วคุณสามารถสำรองข้อมูลภายใน/var/lib/snapdสถานที่อื่นจนกว่ากระบวนการทั้งหมดจะเสร็จสมบูรณ์จากนั้นคุณสามารถลบข้อมูลสำรองหากคุณต้องการเพิ่มพื้นที่ว่าง

##############################################################################
# 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 !!!
##############################################################################

อ้างอิง

  1. ตำแหน่งดิสก์ที่กำหนดเองสำหรับปัญหาสแนปบางอย่าง
  2. ถามคำถามอูบุนตู (ไม่ใช่ทางออกที่ดีที่สุด) ลิงค์
  3. ข้อเสนอแนะที่จะใช้ผูกติดแทนการเชื่อมโยงสัญลักษณ์ในการย้ายไดเรกทอรีสแน็ปลิงค์
  4. ความแตกต่างระหว่างการผูกติดและการเชื่อมโยงสัญลักษณ์การเชื่อมโยง
  5. ทำให้ permenant ผูกติด

1
ใช้งานได้ดีสำหรับฉัน ขอบคุณ! ฉันเพียงแค่ต้อง (อีกครั้ง) สร้างไดเรกทอรี / var / lib / snapd หลังจากย้ายไปที่. bak สำหรับการเมานต์ -a เพื่อใช้งาน
Salim

@Salim, ถูกต้องฉันพลาดขั้นตอนนี้แล้วซึ่งจะเพิ่มในสคริปต์
Muhammad Yusuf

11

ในที่สุดฉันก็พบวิธี

  • ขั้นแรกให้ย้ายแพคเกจ snap ไปยังตำแหน่งที่ต้องการ ให้snap_app.snapเป็นแอพที่คุณต้องการย้าย ย้ายแพคเกจจากไป/var/lib/snapd/snaps/snap_app.snap~/snaps/snap_app.snap
  • จากนั้นคุณต้องเปลี่ยนตัวเลือกการติดตั้งใน/etc/systemd/system/snap-snap_app-90.mountจำนวนในชื่อไฟล์อาจแตกต่างกันไป แต่ก็มีคำสั่งภายใต้What=/snap_app_loaction [Mount]เปลี่ยนเป็นตำแหน่งแพคเกจใหม่ของคุณ
  • ในที่สุดคุณต้อง symlink แพคเกจ snap /var/lib/snapd/snaps/ให้
    Ex: ln -s ~/snaps/snap_app.snap /var/lib/snapd/snaps/snap_app.snap

Snap package ถูกเมาท์เข้าสู่/snap/snap_appไดเรกทอรี mountคุณสามารถตรวจสอบด้วย รีบูทเครื่องของคุณและคุณทำเสร็จแล้ว


forum.snapcraft.io/t/…อาจมีประโยชน์ด้วย
Adam Monsen
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.