スナップパッケージを別の場所/ディレクトリに移動する


13

インストールされているスナップパッケージをホームディレクトリに移動したい。スナップパッケージは.debパッケージよりもわずかに大きいため、ルートパーティションのスペースを取ります。パッケージがにあり/var/lib/snapd/snaps、パッケージをにマウントしていることを知っています/snap/app_dir。シムリンクを試みましたが、うまくいきませんでした。

回答:


14

スナップインストールディレクトリの変更

これは多くの人が求める一般的な問題です。スナップ開発者はすぐにそれを解決するつもりはないようですので、いくつかの解決策が提案されました。

コミュニティによって強く拒否された最初の解決策は、私が試みなかったのですが、スナップにつながるディレクトリをリンクするためにシンボリックリンクを使用することです。apparmomはシンボリックリンクでは機能しないとコミュニティが返信しているため、この方法は機能しないようです。

2番目の解決策mount --bind/val/lib/snapd/snaps既にインストールされているアプリケーションで正常に機能するディレクトリですが、ディレクトリを別のパーティションに移動していたため、新しいアプリケーションをインストールできませんでした。そのため、snapアプリケーションをにあるキャッシュディレクトリにハードリンクすることに関するエラーが発生しました/var/lib/snapd/cache。場所が同じパーティション内にあるかどうかにかかわらず、このソリューションが機能するかどうかはわかりません。しかし、これがスナップディレクトリを移動して、一部のスペースをパーティションから別のスペースに解放する理由です。

3番目の有効なオプションは、/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. ubuntuに質問する(最善の解決策ではない)リンク
  3. 使用への提案は、バインドスナップディレクトリを移動するには、シンボリックリンクの代わりにマウントリンク
  4. バインドマウントとシンボリックリンクの違いリンク
  5. バインドマウントを永続化する

1
私にとってはうまくいきます。ありがとうございました!/ var / lib / snapdディレクトリを.bakに移動して、mount -aが機能するようにしただけで、(再)作成するだけでした
Salim

@Salim、あなたは正しい、私はスクリプトに追加するこのステップを逃しました
Muhammad Yusuf

11

やっと道を見つけた。

  • 最初にスナップパッケージを目的の場所に移動します。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]ます。新しいスナップパッケージの場所に変更します。
  • 最後に、snapパッケージをにシンボリックリンクする必要があります/var/lib/snapd/snaps/
    例: ln -s ~/snaps/snap_app.snap /var/lib/snapd/snaps/snap_app.snap

スナップパッケージは元々/snap/snap_appディレクトリにマウントされています。で確認できますmount。マシンを再起動すれば完了です。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.