Обновление в Fish: как обновить Fish shell до актуальной версии

Устаревшая версия Fish shell часто проявляется косвенно: перестают работать плагины из fisher, конфиг ругается на незнакомые команды, а автодополнение ведёт себя иначе, чем в свежей документации. Прежде чем обновляться, проверьте текущую версию командой fish --version — от этого зависит, какой способ обновления подойдёт и нужен ли сторонний репозиторий.

Ниже разберём, как обновить Фиш на разных системах, что проверить после обновления и как откатиться, если что-то пошло не так. Точные названия пакетов и репозиториев зависят от вашего дистрибутива, поэтому перед установкой стоит свериться с официальной документацией проекта fish shell.

Проверка текущей версии Fish

Откройте терминал и выполните:

fish --version

Команда выведет строку вида fish, version X.Y.Z. Сравните её с актуальной версией на официальном сайте проекта или в репозитории на GitHub. Если разница в несколько мажорных релизов — обновление действительно нужно.

Дополнительно полезно проверить, откуда установлен пакет. В системах на базе Debian/Ubuntu это делается командой apt policy fish, в Fedora — dnf info fish. Так вы поймёте, пришёл ли Фиш из штатного репозитория или из стороннего источника, и не будет ли конфликта при обновлении.

Обновление Fish на Ubuntu и Debian

Стандартные репозитории Debian и старых выпусков Ubuntu нередко содержат заметно устаревшую версию Фиш. Сначала попробуйте штатный путь:

sudo apt update

sudo apt install --only-upgrade fish

Если версия осталась старой, возможная причина — сам репозиторий. Проект Fish поддерживает собственный репозиторий (PPA для Ubuntu и репозиторий для Debian через openSUSE Build Service), где публикуются свежие сборки. Подключение стороннего репозитория — действие, которое вы выполняете на свой риск; точные команды добавления берите только с официального сайта проекта, так как они меняются от релиза к релизу.

📊 Как у вас установлен Fish shell?
Из штатного репозитория дистрибутива
Через сторонний репозиторий (PPA/OBS)
Через Homebrew
Собран из исходников

Обновление на Fedora, Arch и других дистрибутивах

В Fedora Fish обычно обновляется вместе с системой: выполните sudo dnf upgrade fish или полное обновление sudo dnf upgrade. В Arch Linux и производных пакет обновляется командой sudo pacman -Syu fish — частичное обновление системы там не рекомендуется, поэтому лучше обновлять всё сразу.

Для других дистрибутивов логика та же: сначала обновить индекс пакетов, затем сам пакет. Если штатный репозиторий отстаёт от апстрима, варианты такие:

  • 🐟 Подключить официальный репозиторий проекта Fish для вашего дистрибутива.
  • 📦 Использовать универсальный формат пакетов, если он поддерживается вашей системой.
  • 🍺 Установить через Homebrew on Linux — brew держит относительно свежие версии.
  • 🔧 Собрать из исходников — вариант для опытных, требует установки зависимостей для сборки.

Обновление Fish на macOS

На macOS самый распространённый способ установки Фиш — Homebrew. Обновление выполняется двумя командами:

brew update

brew upgrade fish

Если Fish ставился через MacPorts или скачанным установщиком с сайта, команды brew к нему не применимы. Проверить, какой именно бинарник запускается, можно командой which fish — путь подскажет источник установки.

Что проверить после обновления

Само по себе обновление пакета не перезапускает уже открытые сессии. Закройте и заново откройте терминал, затем снова выполните fish --version и убедитесь, что номер версии изменился.

Дальше — проверка работоспособности окружения. Новые версии Фиш иногда меняют поведение отдельных встроенных команд или убирают устаревшие возможности, поэтому старые скрипты и функции стоит прогнать вручную.

☑️ Проверка после обновления Fish

Выполнено: 0 / 5

⚠️ Внимание: если Fish установлен как ваша оболочка по умолчанию и после обновления перестал запускаться, вы можете остаться без рабочего терминала в этой сессии. Заранее убедитесь, что в системе доступен запасной шелл (например, /bin/bash), а путь к Fish в /etc/shells указан корректно.

Обновление плагинов и fisher

Обновление самого шелла и обновление плагинов — разные задачи. Менеджер плагинов fisher обновляет установленные расширения командой:

fisher update

Если после обновления Fish какой-то плагин выдаёт ошибки, возможная причина — несовместимость с новой версией шелла. Проверьте страницу плагина: у многих популярных расширений указана минимальная поддерживаемая версия Фиш. Иногда помогает переустановка плагина, иногда — откат шелла до выхода исправления.

Откат к предыдущей версии

Откат зависит от пакетного менеджера и не всегда возможен штатными средствами, если старая версия уже удалена из репозитория или кэша. Общие направления:

  • ⏪ В Debian/Ubuntu — установка конкретной версии через apt install fish=версия, если она ещё доступна в репозитории или кэше пакетов.
  • 🍺 В Homebrew — старые версии формул напрямую не поддерживаются; обычно проще удалить пакет и установить нужную сборку из официального репозитория проекта.
  • 💾 Восстановление из резервной копии системы, если она делалась перед обновлением.

⚠️ Внимание: принудительная установка старой версии пакета поверх новой может нарушить зависимости системы. Перед откатом зафиксируйте текущее состояние и будьте готовы переустановить пакет начисто.

Где Fish хранит настройки

Основной конфиг — ~/.config/fish/config.fish. Пользовательские функции лежат в ~/.config/fish/functions, установленные fisher плагины — в подкаталогах conf.d, functions и completions внутри того же ~/.config/fish. Удаление самого пакета fish обычно не трогает эти файлы, но перед экспериментами каталог стоит скопировать.

Типичные проблемы и их решения

СимптомВероятная причинаЧто делать
Версия не меняется после обновленияОткрыта старая сессия шеллаЗакрыть и заново открыть терминал
apt не находит новую версиюУстаревший штатный репозиторийПодключить официальный репозиторий проекта
Ошибки в config.fish после обновленияИзменилось поведение командыПроверить синтаксис по свежей документации
Плагин перестал работатьНесовместимость с новой версиейОбновить плагин через fisher update
Fish не запускается как login shellНекорректный путь в /etc/shellsПроверить путь через which fish и исправить запись

Самая частая причина «обновление не сработало» — забытая открытая сессия терминала: пакет обновился, а запущенный процесс Fish продолжает работать со старой версией в памяти.

Частые вопросы

Удалятся ли мои настройки при обновлении Fish?

Обновление пакета обычно не затрагивает пользовательский каталог ~/.config/fish, где хранятся конфиг, функции и плагины. Тем не менее перед мажорным обновлением каталог разумно скопировать.

Нужно ли заново прописывать Fish как оболочку по умолчанию?

Как правило, нет: запись в /etc/passwd и список /etc/shells при обновлении пакета сохраняются. Но если Fish переехал по другому пути (например, после перехода с одного пакетного менеджера на другой), настройку придётся повторить через chsh.

Чем обновление через PPA отличается от штатного репозитория?

Сторонний репозиторий обычно содержит более свежие версии, но его сопровождение и совместимость с вашим выпуском дистрибутива вы принимаете на себя. Штатный репозиторий стабильнее, но отстаёт от апстрима.

Можно ли обновить Fish без прав root?

Штатные пакетные менеджеры требуют прав администратора. Альтернатива — Homebrew в пользовательском каталоге или сборка из исходников с установкой в домашнюю папку, но это требует ручной настройки путей.

Как узнать, что вышла новая версия Fish?

Подпишитесь на релизы в официальном репозитории проекта на GitHub или периодически проверяйте обновления пакетного менеджера — свежие версии доходят туда с разной скоростью в зависимости от дистрибутива.