====== Snap ======
* https://snapcraft.io/
* [[linux:flatpak|Flatpak]] 같은 샌드박스형 리눅스 패키징.
* [[linux:ubuntu|Ubuntu Linux]] 기본
* [[https://github.com/snapcrafters|Snapcrafters]] : snap 패키지를 함께 만드는 커뮤니티.
===== Install =====
sudo apt-get install snapd
# snap 애플리케이션의 Permission 등을 더 쉽게 관리하려면 snap-store 가 있는게 낫다.
sudo snap install snap-store
* [[https://docs.snapcraft.io/installing-snapd|Installing Snapd]]
===== 기본 사용 =====
* 목록 검색
snap find <앱이름>
* 설치
sudo snap install <앱이름>
===== 버전 고정 / application version =====
* https://askubuntu.com/a/1225257
* **단, 이 방법은 다음 업데이트가 발생하면 자동으로 업그레이드가 되어 버린다**
# version / revision 목록 확인
snap list intellij-idea-ultimate --all
# 바로 직전 버전으로 되돌리기
sudo snap revert intellij-idea-ultimate
# revision 명시해서 되돌리기(버전과는 다른 값임)
sudo snap revert intellij-idea-ultimate --revision 212
===== 입력기 문제 =====
* 2020년 현재 [[linux:inputmethod:ibus|iBus]], [[linux:inputmethod:fcitx|Linux Input Method fcitx]] 만 작동하며 그나마도 완전하지 못해보임.
* ''uim''은 아예 안됨.
===== Uninstall / Remove =====
* [[https://www.kevin-custer.com/blog/disabling-snaps-in-ubuntu-20-04/|Disabling Snaps in Ubuntu 20.04 - Kevin Custer]]
* [[https://techwiser.com/remove-snap-ubuntu/|How to Remove Snap From Ubuntu | TechWiser]]
* Ubuntu 설치 직후, 아무런 snap 애플리케이션도 설치 안한 상태에서는 ''sudo apt purge %%--autoremove%% snapd'' 만 해도 된다.
# snap list 로 설치된 애플리케이션 목록을 확인하고,
snap list
# sudo snap remove xxx 로 모두 remove, 단 core 는 남겨둔다.
sudo snap remove --purge snap-store
sudo snap remove --purge ...
# df 명령으로 /snap/core/xxxx 로 시작하는 모든 파티션 확인하고 umount
sudo umount /snap/core/xxxx
sudo umount /snap/core/yyyy
...
sudo snap remove core
# snapd 패키지 삭제, purge
sudo apt purge --autoremove snapd
# 남아있는 snap 디렉토리 삭제
rm -rf ~/snap
sudo rm -rf /snap
sudo rm -rf /var/snap
sudo rm -rf /var/lib/snapd
* ''snapd'' 삭제 [[devops:ansible|Ansible]]
- name: remove snapd
become: yes
shell: |
apt purge -y --autoremove snapd gnome-software-plugin-snap
rm -rf /snap
rm -rf /var/snap
rm -rf /var/lib/snapd
rm -rf /var/cache/snapd
===== classic =====
* [[https://ubuntu.com/blog/how-to-snap-introducing-classic-confinement|How to snap: introducing classic confinement | Ubuntu]]
===== Theme 연결 =====
* [[linux:theme|Linux Themes]]
* [[https://snapcraft.io/blog/how-to-ensure-your-snap-uses-the-correct-theme|How to ensure your snap uses the correct theme | Snapcraft]]
* [[https://snapcraft.io/whitesur-gtk-theme|snap whitesur-gtk-theme]] 혹은 [[https://snapcraft.io/orchis-themes|snap orchis-themes]] 참조
# 특정 snap app 만 연결
sudo snap connect [other snap]:gtk-3-themes whitesur-gtk-theme:gtk-3-themes
sudo snap connect [other snap]:icon-themes whitesur-gtk-theme:icon-themes
# 전체 snap app 에 연결
for i in $(snap connections | grep gtk-common-themes:gtk-3-themes | awk '{print $2}'); do sudo snap connect $i whitesur-gtk-theme:gtk-3-themes; done
for i in $(snap connections | grep gtk-common-themes:icon-themes | awk '{print $2}'); do sudo snap connect $i whitesur-gtk-theme:icon-themes; done
===== 참조 =====
* [[https://ubuntu.com//blog/how-to-make-snaps-faster|How to make snaps faster | Ubuntu]]
* [[https://ubuntu.com//blog/lets-build-a-snap-together-a-complex-snapcraft-yaml-walkthrough|Let’s build a snap together – a complex snapcraft.yaml walkthrough | Ubuntu]]
* [[https://blog.simos.info/how-to-make-a-snap-package-for-lolcat-with-snapcraft-on-ubuntu/|How to make a snap package for lolcat with snapcraft on Ubuntu – Mi blog lah!]]
* [[https://www.digitalocean.com/community/tutorials/how-to-package-and-publish-a-snap-application-on-ubuntu-18-04|How To Package and Publish a Snap Application on Ubuntu 18.04 | DigitalOcean]]
* [[https://phoenixnap.com/kb/snap-packages|Snap Packages {Comprehensive Guide for Ubuntu Users}]]