Изучая что-то новое, как оптимизировать свою работу порой приходится возвращаться к тому что почему-то ранее игнорировал, а использовал привычное, к примеру, в Ubuntu LTS есть система управления пакетами и приложения в лице snap, но я ее как-то обошел стороной, мне больше привычно было использовать apt. Но это было ранее, решил заморочиться для себя разобрать что есть Snap.
Snap — это как я понял разработка от Canonical, посредством нее можно устанавливать программы в виде snap-пакетов, в основе которых лежит: само приложение и необходимые ему библиотеки. Т.е. я не завишу от библиотек устанавливаем из дефолтных репозитариев текущего дистрибутива.
Выделил себе нюансы если используем Snap, то:
- Пакет обычно содержит зависимости приложения
- Приложения изолированы (sandbox)
- Обновляются автоматически
- Может занимать больше места
- Запуск некоторых приложений может быть чуть медленнее
- Версия приложения может быть новее, чем в репозитарии
Ubuntu
Выделил себе нюансы если используем deb, то:
- Зависимости берутся из системы
- Обычно имеют более прямой доступ к системе
- Обновления выполняются через
apt upgrade - Обычно компактнее
- Версии привязаны к репозитариям конкретного релиза
Шаг №1: Устанавливаем самую последнюю версию демона/утилиты snapd (на 18.08.2026 - Version: 2.76+ubuntu22.04.1) из текущих репозитариев системе текущего дистрибутива OS:Ubuntu 22.04 LTS Server и он (служба и сокет) должен быть запущен:
ekzorchik@srv-us2204a:~$ sudo rm -Rf /var/lib/apt/lists
ekzorchik@srv-us2204a:~$ sudo apt-get update
ekzorchik@srv-us2204a:~$ sudo apt-get install snapd
ekzorchik@srv-us2204a:~$ whereis snap
snap: /usr/bin/snap /usr/share/man/man8/snap.8.gz
На заметку: Если хочется по подробнее приобщиться к инструменту, то на помощь приходит справка.
ekzorchik@srv-us2204a:~$ snap --help
ekzorchik@srv-us2204a:~$ man snap
For more information about a command, run 'snap help <command>'.
For a short summary of all commands, run 'snap help --all'.
и конечно же формируемые наработки на основе своих потребностей.
ekzorchik@srv-us2204a:~$ sudo systemctl enable snapd.socket
ekzorchik@srv-us2204a:~$ sudo systemctl enable snapd
ekzorchik@srv-us2204a:~$ sudo systemctl start snapd.socket
ekzorchik@srv-us2204a:~$ sudo systemctl start snapd
Шаг №2: Посмотреть какие пакеты установлены через snap:
ekzorchik@srv-us2204a:~$ sudo snap list
Name Version Rev Tracking Publisher Notes
core 16-2.61.4-20260225 17292 latest/stable canonical✓ core
core20 20220318 1405 latest/stable canonical✓ base
core22 20260410 2437 latest/stable canonical✓ base
lxd 5.0.8-46bcfa0 40338 5.0/stable/… canonical✓ -
snapd 2.55.3 15534 latest/stable canonical✓ snapd
ekzorchik@srv-us2204a:~$
Шаг №3: Если мы не знаем, как называется snap который нам нужен то можно воспользоваться поиском:
Синтаксис: snap find <название>
На заметку: т.е. после find вводим по одной букве и нажимаем клавишу ENTER дабы в полученном выводе увидеть возможно нужное.
ekzorchik@srv-us2204a:~$ snap find certbot
Name Version Publisher Notes Summary
certbot 5.7.0 certbot-eff✓ classic Automatically configure HTTPS using Let's Encrypt
certbot-dns-cloudxns 1.32.2 certbot-eff✓ - CloudXNS DNS Authenticator plugin for Certbot
certbot-dns-cloudflare 5.7.0 certbot-eff✓ - Cloudflare DNS Authenticator plugin for Certbot
certbot-dns-dnsmadeeasy 5.7.0 certbot-eff✓ - DNS Made Easy DNS Authenticator plugin for Certbot
certbot-dns-dnsimple 5.7.0 certbot-eff✓ - DNSimple DNS Authenticator plugin for Certbot
certbot-dns-digitalocean 5.7.0 certbot-eff✓ - DigitalOcean DNS Authenticator plugin for Certbot
Шаг №4: Чтобы обновить установленный snap пакет в системе:
ekzorchik@srv-us2204a:~$ sudo snap refresh core
snap "core" has no updates available — для текущего пакета нет пока обновлений, т.е. установлена актуальная версия.
ekzorchik@srv-us2204a:~$
Шаг №5: Чтобы обновить все установленные snap пакеты в системе:
ekzorchik@srv-us2204a:~$ sudo snap refresh
2026-08-18T09:01:54+03:00 INFO Waiting for automatic snapd restart...
2026-08-18T09:01:55+03:00 INFO Waiting for automatic snapd restart...
2026-08-18T09:01:56+03:00 INFO Waiting for automatic snapd restart...
2026-08-18T09:01:57+03:00 INFO Waiting for automatic snapd restart...
core20 20260410 from Canonical✓ refreshed
snapd 2.76.2 from Canonical✓ refreshed
ekzorchik@srv-us2204a:~$
Шаг №6: Произведем установку пакета certbot:
На заметку: вроде как, по официальным сведениям, предварительно нужно из системы удалить пакет certbot если был установлен традиционным способом через apt, а уже после ставить через snap. Т.к. при вызове можно запутаться, либо явно указывать путь до программы в консоли.
ekzorchik@srv-us2204a:~$ dpkg -l | grep certbot
пусто
ekzorchik@srv-us2204a:~$ sudo snap install certbot --classic
certbot 5.7.0 from Certbot Project (certbot-eff✓) installed
ekzorchik@srv-us2204a:~$
а если ставить пакет из deb пакетов, то
ekzorchik@srv-us2204a:~$ apt-cache show certbot | grep Version
Version: 1.21.0-1build1
ekzorchik@srv-us2204a:~$
Как бы версия отличается, но отличается ли функционал, думается, что если есть специализированный инструмент получения работы, то его нужно использовать, т.е. snap, заморачиваться выявлением отличий не считаю пока нужным.
Шаг №7: Произведем удаление установленного пакета, к примеру, certbot:
ekzorchik@srv-us2204a:~$ sudo snap remove certbot
certbot removed (snap data snapshot saved)
ekzorchik@srv-us2204a:~$
Шаг №8: А можно не удаляя пакет просто его деактировать:
ekzorchik@srv-us2204a:~$ sudo snap disable certbot
certbot disabled
ekzorchik@srv-us2204a:~$ sudo snap list | grep certbot
certbot 5.7.0 5781 latest/stable certbot-eff** disabled,classic
ekzorchik@srv-us2204a:~$
Шаг №9: Вывести на консоль доступные версии пакета (можно как еще не установив его, так и установив его):
ekzorchik@srv-us2204a:~$ sudo snap info certbot
name: certbot
summary: Automatically configure HTTPS using Let's Encrypt
publisher: Certbot Project (certbot-eff✓)
store-url: https://snapcraft.io/certbot
contact: https://github.com/certbot/certbot/issues
license: Apache-2.0
description: |
The objective of Certbot, Let's Encrypt, and the ACME (Automated
Certificate Management Environment) protocol is to make it possible
to set up an HTTPS server and have it automatically obtain a
browser-trusted certificate, without any human intervention. This is
accomplished by running a certificate management agent on the web
server.
This agent is used to:
- Automatically prove to the Let's Encrypt CA that you control the website
- Obtain a browser-trusted certificate and set it up on your web server
- Keep track of when your certificate is going to expire, and renew it
- Help you revoke the certificate if that ever becomes necessary.
snap-id: wy7i66qPx4neXr6m9rTh7Y40h8EhtZFh
channels:
latest/stable: 5.7.0 2026-07-21 (5781) 77.1MB classic
latest/candidate: ↑
latest/beta: 5.7.0 2026-07-21 (5781) 77.1MB classic
latest/edge: 5.8.0.dev0 2026-08-18 (5855) 75.2MB classic
ekzorchik@srv-us2204a:~$
Шаг №10: Ну допустим установили самую последнюю версию через snap пакет certbot, а по-другому и не может быть, т.к только такой вид установки поддерживается, то как пакет использовать в системе?:
ekzorchik@srv-us2204a:~$ sudo find / -name certbot
/snap/certbot
/snap/certbot/5781/bin/certbot
/snap/certbot/5781/lib/python3.12/site-packages/certbot
/snap/bin/certbot
/root/snap/certbot
/var/snap/certbot
ekzorchik@srv-us2204a:~$
ekzorchik@srv-us2204a:~$ whereis certbot
certbot: /snap/bin/certbot
т.е. мы его просто вызываем, т.к. в переменную PATH прописан путь:
ekzorchik@srv-us2204a:~$ env | grep PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
ekzorchik@srv-us2204a:~$ certbot --version
certbot 5.7.0
ekzorchik@srv-us2204a:~$
Шаг №11: Как узнать размер пакета snap в системе:
На заметку: snap-пакеты располагаются в системе в виде сжатых образов (файлов с расширением snap).
ekzorchik@srv-us2204a:~$ sudo ls -lhS /var/lib/snapd/snaps | grep certbot
-rw------- 2 root root 74M Aug 18 09:52 certbot_5781.snap
ekzorchik@srv-us2204a:~$ sudo file /var/lib/snapd/snaps/certbot_5781.snap
/var/lib/snapd/snaps/certbot_5781.snap: Squashfs filesystem, little endian, version 4.0, xz compressed, 77130328 bytes, 8063 inodes, blocksize: 131072 bytes, created: Thu Jul 16 05:15:55 2026
ekzorchik@srv-us2204a:~$
есть еще в корне "/" присутствует каталог /snap — это папка куда монтируются snap-пакеты, как squashfs-образы, которые система видит, как виртуальные диски. Наверное, я правильно понял, но не факт.
Ну пока по итогу, я получил базовое знакомство, по мере взаимодействия с инструментом буду дополнять текущую заметку, как, впрочем, я всегда делаю, поэтому прощаюсь, до новых заметок на моих блогах, с уважением автор блога ekzorchik.