Изучая что-то новое, как оптимизировать свою работу порой приходится возвращаться к тому что почему-то ранее игнорировал, а использовал привычное, к примеру, в 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.