Как установить Firefox в виде традиционного deb-пакета (без snap) в Ubuntu 22.04 и более поздних версиях?

Вопрос или проблема

Насколько я вижу, в текущей разработке для 22.04 Jammy, Firefox является пакетом Snap. Связанный Deb пакет в apt – это всего лишь ярлык/ссылка на ту версию snap.

Я предпочитаю, чтобы моя установка не была из snap-пакетов, поскольку считаю их слишком «специфичными для Ubuntu».

Существуют ли альтернативные способы установки Firefox на Jammy?
Мой любимый вариант – это Apt repository или PPA. Тем временем я протестирую версию Flatpak на своей тестовой виртуальной машине.

Если вы перейдете на версию APT, вы потеряете закладки в snap-версии, если не синхронизируете их с вашей учетной записью Firefox или не экспортируете их вручную.


Другой ответ от Organic Marble относится к Firefox-ESR, а ответ от eddygeek – к бета-версии.

Этот ответ относится к последней стабильной версии Firefox. Вы можете использовать PPA Firefox, поддерживаемый командой Mozilla.

sudo add-apt-repository ppa:mozillateam/ppa

Затем скопируйте и вставьте следующий код в терминал за один раз (не копируйте построчно), чтобы приоритизировать версию apt Firefox над версией snap.

echo '
Package: *
Pin: release o=LP-PPA-mozillateam
Pin-Priority: 1001

Package: firefox
Pin: version 1:1snap*
Pin-Priority: -1
' | sudo tee /etc/apt/preferences.d/mozilla-firefox

Далее, удалите версию snap Firefox.

sudo snap remove firefox

Если вы видите следующую ошибку:

error: cannot perform the following tasks:
- Remove data for snap "firefox" (1943) (unlinkat /var/snap/firefox/common/host-hunspell/en_ZA.dic: read-only file system)

Удалите файлы /etc/apparmor.d/usr.bin.firefox и /etc/apparmor.d/local/usr.bin.firefox, чтобы APT Firefox мог работать с расширениями GNOME и онлайн-учетными записями GNOME.

sudo rm /etc/apparmor.d/usr.bin.firefox 
sudo rm /etc/apparmor.d/local/usr.bin.firefox

Затем выполните следующие команды (источник), чтобы отключить службу hunspell и снова попытаться удалить snap-версию Firefox.

sudo systemctl stop var-snap-firefox-common-host\\x2dhunspell.mount
sudo systemctl disable var-snap-firefox-common-host\\x2dhunspell.mount
sudo snap remove firefox

Установите Firefox с помощью apt.

sudo apt install firefox

Чтобы гарантировать, что автоматические обновления не переустановят версию snap Firefox, введите следующую команду. В качестве альтернативы вы можете отключить автоматические обновления.

echo 'Unattended-Upgrade::Allowed-Origins:: "LP-PPA-mozillateam:${distro_codename}";' | sudo tee /etc/apt/apt.conf.d/51unattended-upgrades-firefox

Чтобы отменить эти изменения

  1. Удалите PPA Firefox.
sudo add-apt-repository -r ppa:mozillateam/ppa
  1. Удалите привязку apt.
sudo rm -rf /etc/apt/preferences.d/mozilla-firefox
  1. Удалите версию apt и переустановите snap.
sudo apt remove firefox && sudo snap install firefox

Источник: OMG Ubuntu

Предупреждение – ответ мог устареть из-за недавних событий на февраль 2024 года

Вы можете установить официальную версию Firefox ESR (Extended Support Release) через .deb из PPA Mozilla

sudo add-apt-repository ppa:mozillateam/ppa
sudo apt install firefox-esr

Дополнительная информация доступна здесь: https://ubuntuhandbook.org/index.php/2022/03/install-firefox-esr-ubuntu/

Это было единственное, что сработало для меня после обновления до Ubuntu 22.10.

Сначала удалите версию Snap Firefox:

sudo snap remove firefox

(Если у вас есть настройки в версии Snap Firefox в ~/snap/firefox/, вы можете захотеть перенести их в ~/.mozilla/firefox/)

Затем добавьте PPA от mozillateam:

sudo add-apt-repository ppa:mozillateam/ppa

Теперь пакет firefox предоставляется как репозиториям Ubuntu, так и PPA Mozilla. Версия, предоставленная в репозиториях Ubuntu, является переходным пакетом, который на самом деле устанавливает snap-версию Firefox за кулисами, что в данном случае нам не нужно. Проверьте, что вы видите оба пакета firefox, выполнив:

apt info -a firefox

Чтобы предотвратить установку snap-версии Firefox через пакет firefox, предоставленный Ubuntu, нам нужно изменить этот файл от имени root, используя gnome-text-editor или любой другой текстовый редактор по вашему выбору:

sudo gnome-text-editor /etc/apt/preferences.d/mozillafirefoxppa

Добавьте следующие строки:

Package: firefox*
Pin: release o=LP-PPA-mozillateam
Pin-Priority: 501

Package: firefox*
Pin: release o=Ubuntu
Pin-Priority: -1

Первые три строки придают приоритет пакетам firefox, предоставленным PPA Mozilla. А последние три строки отключают установку пакетов firefox из репозиториев Ubuntu.

Выполните sudo apt update, чтобы убедиться, что изменения были учтены.

Теперь вы должны иметь возможность установить версию Firefox из PPA. Вы можете смоделировать установку Firefox с помощью --dry-run, чтобы проверить, какая версия Firefox будет установлена:

sudo apt install --verbose-versions --dry-run firefox

Если вы не видите слово snap в номере версии пакета firefox (например: 1:1snap1-0ubuntu2), вы в порядке. Выполните эту команду для установки Firefox (без Snap):

sudo apt install --verbose-versions firefox

Переход Firefox с Deb на Snap был объявлен в сентябре 2021 года. См. https://discourse.ubuntu.com/t/feature-freeze-exception-seeding-the-official-firefox-snap-in-ubuntu-desktop/24210/199 для полного обсуждения.

Это результат сотрудничества и взаимодействия между командами Desktop и Snap в Canonical и разработчиками Mozilla и является первым шагом к переходу с deb на snap, который состоится в ходе цикла разработки 22.04.

Перевод: Переход Firefox с Deb на Snap – это решение, инициированное Mozilla. Команды Ubuntu пытаются сделать переход как можно менее болезненным для большинства людей.

Множество добровольцев тестировали Snap Firefox, обнаруживая/отправляя/исправляя ошибки с цикла 21.10, чтобы сгладить шероховатости и задокументировать крайние случаи. (Это был мой повседневный драйвер с тех пор)

Люди, которые хотят Firefox, имеют несколько вариантов:

  1. Использовать Snap. Snap поступает от Mozilla и предназначен для кросс-дистрибутивной и кросс-платформенной работы. Вы не должны находить его “специфичным для Ubuntu”. Snap Firefox будет включен в стандартные установки Ubuntu Desktop.

  2. Скачать бинарный файл с сайта Mozilla. Это требует знания, как устанавливать и удалять без менеджера пакетов. Это тот же бинарник, который используется в Snap.

  3. Если вы все еще хотите использовать deb-пакеты, которые находятся в репозиториях Ubuntu, тогда присоединяйтесь к Debian и помогите волонтерам упаковать Firefox. Это сложный процесс, который делает его упаковка как deb (вот почему Mozilla неenthusiastic о продолжении усилий), но сообщество — с достаточным количеством добровольцев — способно на великие дела.

  4. Добавить репозиторий deb Mozilla. Используйте apt-pinning для выбора этого репозитория вместо репозиториев Ubuntu.

  5. Flatpak и другие пакетные менеджеры.

Если вы хотите использовать packages.mozilla.org, как указано на их сайте: https://support.mozilla.org/en-US/kb/install-firefox-linux#w_install-firefox-deb-package-for-debian-based-distributions, тогда вам все равно нужно настроить автоматические обновления, чтобы избежать установки snap.

Я предпочитаю это решение mozillateam ppa, потому что не могу найти официальную информацию, что это ppa на самом деле является официальным ppa Mozilla, хотя оно кажется надежным, я полагаю.

Цитируя их процедуру установки:

sudo install -d -m 0755 /etc/apt/keyrings

wget -q https://packages.mozilla.org/apt/repo-signing-key.gpg -O- | sudo tee /etc/apt/keyrings/packages.mozilla.org.asc > /dev/null

echo "deb [signed-by=/etc/apt/keyrings/packages.mozilla.org.asc] https://packages.mozilla.org/apt mozilla main" | sudo tee -a /etc/apt/sources.list.d/mozilla.list > /dev/null

echo '
Package: *
Pin: origin packages.mozilla.org
Pin-Priority: 1000
' | sudo tee /etc/apt/preferences.d/mozilla 

sudo apt-get update && sudo apt-get install firefox

Для автоматических обновлений это должно сработать:

echo 'Unattended-Upgrade::Origins-Pattern { "archive=mozilla"; };' | sudo tee /etc/apt/apt.conf.d/51unattended-upgrades-firefox

См. https://github.com/mvo5/unattended-upgrades/blob/7bf3aa52af1c6b11c031d0949f223c1beb94f84c/README.md для получения дополнительной информации о синтаксисе и фильтрах.

Чтобы проверить, сработала ли конфигурация, используйте sudo unattended-upgrade --dry-run -v

Я нашел следующее решение, чтобы получить основанный на deb Firefox из firefox-next ppa.

Предупреждение: Это бета-версия!

Поскольку имя пакета также firefox, нам нужно включить в черный список пустой пакет-ярлык snap, который имеет версию 1:1snap1-0ubuntu2

sudo apt remove firefox
echo "
Package: firefox
Pin: version 1:1snap1-0ubuntu2
Pin-Priority: 99
" | sudo tee /etc/apt/preferences
sudo add-apt-repository ppa:mozillateam/firefox-next
sudo apt install firefox

Вот вариант этапа add-apt-repository, который все еще соблюдает новые требования к подписыванию пакетов – он работает как с ppa (основной релиз), так и с firefox-next (бета) репозиториями:

sudo gpg --keyserver hkp://keyserver.ubuntu.com:80 --no-default-keyring --keyring /usr/share/keyrings/firefox.gpg --recv-keys 9BDB3D89CE49EC21
echo 'deb [signed-by=/usr/share/keyrings/firefox.gpg]  https://ppa.launchpadcontent.net/mozillateam/ppa/ubuntu jammy main 
' | sudo tee /etc/apt/sources.list.d/firefox.list

(Это было полезно для меня, потому что в предварительном релизе KDE Neon 22.04 команда add-apt-repository на данный момент возвращает aptsources.distro.NoDistroTemplateException: Ошибка: не удалось найти шаблон дистрибуции для Neon/jammy)

Как уже упоминалось ранее

Удалите snap-версию Firefox

sudo snap remove firefox

Добавьте репозиторий mozillateam

sudo add-apt-repository ppa:mozillateam/ppa

Автоматические обновления

echo 'Unattended-Upgrade::Allowed-Origins:: "LP-PPA-mozillateam:${distro_codename}";' | sudo tee /etc/apt/apt.conf.d/51unattended-upgrades-firefox

Если вы не хотите обновлять все пакеты из LP-PPA-mozillateam, тогда вам стоит сделать следующее:

echo '
Package: firefox
Pin: version 1:1snap1-0ubuntu2
Pin-Priority: 99

Package: *
Pin: release o=LP-PPA-mozillateam
Pin-Priority: 99

Package: firefox*
Pin: release o=LP-PPA-mozillateam
Pin-Priority: 1001
' | sudo tee /etc/apt/preferences.d/mozilla-firefox

Это обновит только пакет Firefox из LP-PPA-mozillateam, а не другие. Также снижает приоритет версии snap Firefox.

И теперь вы готовы установить Firefox

sudo apt install firefox

Вы можете установить последние официальные сборки .deb, работающие с Ubuntu 22.04 LTS (Jammy), здесь:
https://launchpad.net/~phd/+archive/ubuntu/firefox/

Это PPA репозиторий с официальными пакетами Ubuntu, выпущенными первоначально для Ubuntu 20.04 LTS (Focal) и автоматически обновляемыми, как только новая версия выпускается.

Я избежал менеджеров пакетов и следовал опубликованным инструкциям, чтобы установить Firefox из сборок Mozilla:

  1. Перейдите на страницу загрузки Firefox и нажмите кнопку “Скачать сейчас”.
  2. Извлеките содержимое загруженного файла:
cd ~/Downloads && tar xjf firefox-*.tar.bz2
  1. Переместите распакованную папку Firefox в /opt и создайте символическую ссылку в месте на $PATH:
sudo mv firefox /opt
sudo ln -s /opt/firefox/firefox /usr/local/bin/firefox
  1. Скачайте копию рабочего стола:
wget https://raw.githubusercontent.com/mozilla/sumo-kb/main/install-firefox-linux/firefox.desktop -P /usr/local/share/applications

Переход от установки Firefox через snap к установке через ppa и apt автоматизирован здесь, с попыткой немного большего контроля и документации, чем эффективный и компактный скрипт от Archisman Panigrahi. Возможно, кому-то это понравится:

#!/bin/bash
# Этот скрипт проверяет, правильно ли установлен Firefox. Firefox используется
# для автоматической настройки SSH-ключей GitHub и токенов доступа GitHub.
# И для управления браузером Firefox он должен быть установлен с использованием apt вместо snap. https://stackoverflow.com/questions/72405117
# https://www.omgubuntu.co.uk/2022/04/how-to-install-firefox-deb-apt-ubuntu-22-04
# https://askubuntu.com/questions/1399383/

# Запустите с помощью:
# bash -c "src/prerequisites/firefox_version.sh"

command_output_contains(){
    local substring="$1"
    shift
    local command_output="$@"
    if grep -q "$substring" <<< "$command_output"; then
        echo "FOUND"
    else
        echo "NOTFOUND"
    fi
}

#######################################
# Проверяет, установлен ли firefox через snap или нет.
# Локальные переменные:
#  respones_lines
#  found_firefox
# Глобальные переменные:
#  None
# Аргументы:
#  None
# Возвращает:
#  0 Если команда была успешно выполнена.
# Выводы:
#  FOUND если firefox установлен через snap.
#  NOTFOUND если firefox не установлен через snap.
#######################################
firefox_via_snap(){
    local respons_lines="$(snap list)"
    local found_firefox=$(command_output_contains "firefox" "${respons_lines}")
    echo $found_firefox
}

#######################################
# Проверяет, установлен ли firefox через ppa и apt или нет.
# Локальные переменные:
#  respones_lines
#  found_firefox
# Глобальные переменные:
#  None
# Аргументы:
#  None
# Возвращает:
#  0 Если команда была успешно выполнена.
# Выводы:
#  FOUND если firefox установлен через ppa и apt.
#  NOTFOUND если firefox не установлен через ppa и apt.
#######################################
firefox_via_apt(){
    local respons_lines="$(apt list --installed)"
    local found_firefox=$(command_output_contains "firefox" "${respons_lines}")
    echo $found_firefox
}

#######################################
# Проверяет, добавлен ли firefox как ppa или нет.
# Локальные переменные:
#  respones_lines
#  ppa_indicator
#  found_firefox_ppa
# Глобальные переменные:
#  None
# Аргументы:
#  None
# Возвращает:
#  0 Если команда была успешно выполнена.
# Выводы:
#  FOUND если firefox добавлен как ppa.
#  NOTFOUND если firefox не добавлен как ppa.
#######################################
firefox_ppa_is_added(){
    # Получить список пакетов ppa, добавленных для использования apt.
    local respons_lines="$(apt policy)"
    # Укажите идентификатор для наличия ppa firefox.
    local ppa_indicator="https://ppa.launchpadcontent.net/mozillateam/ppa/ubuntu"
    local found_firefox_ppa=$(command_output_contains "$ppa_indicator" "${respons_lines}")
    echo $found_firefox_ppa
}


#######################################
# Удалите Firefox, если он установлен через snap.
# Локальные переменные:
#  respones_lines
#  found_firefox
# Глобальные переменные:
#  None
# Аргументы:
#  None
# Возвращает:
#  0 Если команда была успешно выполнена.
# Выводы:
#  FOUND если firefox установлен через snap.
#  NOTFOUND если firefox не установлен через snap.
#######################################
remove_snap_install_firefox_if_existant(){
    if [ "$(firefox_via_snap)" == "FOUND" ]; then
        
        # Запрашивает у пользователя разрешение.
        ask_user_swapping_firefox_install_is_ok
        
        # Разрешение пользователя дано, удалите установку firefox snap.
        yes | sudo snap remove firefox 2>&1
        assert_firefox_is_not_installed_using_snap
        echo "Firefox удален." > /dev/tty
    fi
    assert_firefox_is_not_installed_using_snap
}

#######################################
# Запрашивает у пользователя разрешение на замену установки Firefox.
# Локальные переменные:
#  yn
# Глобальные переменные:
#  None
# Аргументы:
#  None
# Возвращает:
#  0 Если команда была успешно выполнена.
#  3 Если пользователь прекращает программу.
# Выводы:
#  Сообщение, указывающее, что Firefox будет удален.
#######################################
ask_user_swapping_firefox_install_is_ok(){
    echo "" > /dev/tty
    echo "Здравствуйте, firefox установлен через snap. Чтобы автоматически добавить ваши " > /dev/tty
    echo "токены доступа GitHub, нам нужно управлять браузером firefox." > /dev/tty
    echo "Для того чтобы управлять браузером firefox, необходимо изменить метод установки" > /dev/tty
    echo "с snap на apt." > /dev/tty
    echo "" > /dev/tty
    echo "Мы не сохраним ваши закладки, историю и расширения." > /dev/tty
    echo "" > /dev/tty
    while true; do
        read -p "Можем мы продолжить? (y/n)? " yn
        case $yn in
            [Yy]* ) echo "Удаление Firefox, пожалуйста, подождите 5 минут, мы сообщим вам, когда это будет сделано."; break;;
            [Nn]* ) echo "Установка прекращена пользователем."; exit 3;;
            * ) echo "Пожалуйста, дайте ответ да или нет." > /dev/tty;;
        esac
    done
}

#######################################
# Убедитесь, что Firefox не установлен через snap, иначе выдает ошибку.
# Локальные переменные:
#  None
# Глобальные переменные:
#  None
# Аргументы:
#  None
# Возвращает:
#  0 Если Firefox не установлен через snap.
#  1 Если Firefox все еще установлен через snap.
# Выводы:
#  Ничего
#######################################
# Запустите с помощью:
assert_firefox_is_not_installed_using_snap(){
    if [ "$(firefox_via_snap)" == "FOUND" ]; then
        echo "Ошибка, установка Firefox все еще установлена через snap." > /dev/tty
        exit 2
    fi
}
assert_firefox_is_installed_using_ppa(){
    if [ "$(firefox_via_apt)" != "FOUND" ]; then
        echo "Ошибка, установка Firefox не была выполнена с использованием ppa и apt." > /dev/tty
        exit 2
    fi
}

#######################################
# Убедитесь, что ppa Firefox добавлен в apt.
# Локальные переменные:
#  None
# Глобальные переменные:
#  None
# Аргументы:
#  None
# Возвращает:
#  0 Если ppa Firefox добавлен в apt.
#  4 В противном случае.
# Выводы:
#  Сообщение об ошибке, указывающее, что ppa firefox не был правильно добавлен.
#######################################
# Запустите с помощью:
assert_firefox_ppa_is_added_to_apt(){
    if [ "$(firefox_ppa_is_added)" == "NOTFOUND" ]; then
        echo "Ошибка, ppa Firefox не был добавлен в apt." > /dev/tty
        exit 4
    fi
}
assert_firefox_ppa_is_removed_from_apt(){
    if [ "$(firefox_ppa_is_added)" == "FOUND" ]; then
        echo "Ошибка, ppa Firefox не был удален из apt." > /dev/tty
        exit 4
    fi
}

#######################################
# Добавляет ppa firefox для установки с помощью apt, если он еще не добавлен.
# Локальные переменные:
#  None
# Глобальные переменные:
#  None
# Аргументы:
#  None
# Возвращает:
#  0 Если Firefox не установлен через snap.
#  1 Если Firefox все еще установлен через snap.
# Выводы:
#  Ничего
#######################################
add_firefox_ppa_if_not_in_yet(){
    if [ "$(firefox_ppa_is_added)" == "NOTFOUND" ]; then
        echo "Теперь добавляется ppa Firefox в apt." > /dev/tty
        echo "" > /dev/tty
        yes | sudo add-apt-repository ppa:mozillateam/ppa
    fi
    assert_firefox_ppa_is_added_to_apt
}
remove_firefox_ppa(){
    if [ "$(firefox_ppa_is_added)" == "FOUND" ]; then
        echo "Теперь удаляется ppa Firefox из apt." > /dev/tty
        echo "" > /dev/tty
        yes | sudo add-apt-repository --remove ppa:mozillateam/ppa
    fi
    assert_firefox_ppa_is_removed_from_apt
}


#######################################
# Убедитесь, что предпочтения пакета установки Firefox установлены на ppa/apt. Это
# делается путем проверки содержимого файла на соответствие ожидаемому с использованием жесткого кода MD5Sum.
# Локальные переменные:
#  None
# Глобальные переменные:
#  None
# Аргументы:
#  None
# Возвращает:
#  0 Если Firefox не установлен через snap.
#  1 Если Firefox все еще установлен через snap.
# Выводы:
#  Ничего
#######################################
# Запустите с помощью:
assert_firefox_installation_package_preference_file_content(){
    local preferences_path="$1"
    local md5_output=$(md5sum $preferences_path)
    local expected_md5_output="961023613b10ce4ae8150f78d698a53e  $preferences_path"
    if [ "$md5_output" != "$expected_md5_output" ]; then
        echo "Ошибка, md5 вывод: $preferences_path не такой, как ожидалось." > /dev/tty
        echo "md5_output=         $md5_output" > /dev/tty
        echo "ожидаемый_md5_output=$expected_md5_output" > /dev/tty
        exit 5
    fi
}

assert_firefox_auto_update_file_content(){
    local preferences_path="$1"
    local md5_output=$(md5sum $preferences_path)
    local expected_md5_output="ffd6e239ef98a236741f4ba5c84ab20e  $preferences_path"
    if [ "$md5_output" != "$expected_md5_output" ]; then
        echo "Ошибка, md5 вывод: $preferences_path не такой, как ожидалось." > /dev/tty
        echo "md5_output=         $md5_output" > /dev/tty
        echo "ожидаемый_md5_output=$expected_md5_output" > /dev/tty
        exit 5
    fi
}


#######################################
# Устанавливает предпочтение пакета установки Firefox с snap на ppa/apt.
# Локальные переменные:
#  preferences_path
# Глобальные переменные:
#  None
# Аргументы:
#  None
# Возвращает:
#  0 Если Firefox не установлен через snap.
#  1 Если Firefox все еще установлен через snap.
# Выводы:
#  Ничего
#######################################
# Запустите с помощью:
change_firefox_package_priority(){
    local preferences_path="/etc/apt/preferences.d/mozilla-firefox"

    # Установите предпочтения пакета для установки firefox.
    echo 'Package: *
Pin: release o=LP-PPA-mozillateam
Pin-Priority: 1001' | sudo tee "$preferences_path"

    # Убедитесь, что предпочтения пакета установки установлены правильно в firefox.
    assert_firefox_installation_package_preference_file_content "$preferences_path"
}

#######################################
# Убедитесь, что установка Firefox обновляется автоматически.
# Локальные переменные:
#  update_filepath
# Глобальные переменные:
#  None
# Аргументы:
#  None
# Возвращает:
#  0 Если Firefox не установлен через snap.
#  1 Если Firefox все еще установлен через snap.
# Выводы:
#  Ничего
#######################################
ensure_firefox_is_updated_automatically(){
    local update_filepath="/etc/apt/apt.conf.d/51unattended-upgrades-firefox"
    # Установите предпочтение пакета для установки firefox.
    echo 'Unattended-Upgrade::Allowed-Origins:: "LP-PPA-mozillateam:${distro_codename}";' | sudo tee "$update_filepath"

    # Убедитесь, что предпочтение пакета установки установлено правильно в firefox.
    assert_firefox_auto_update_file_content "$update_filepath"
}


#######################################
# Устанавливает firefox с помощью ppa и apt.
# Локальные переменные:
#  None
# Глобальные переменные:
#  None
# Аргументы:
#  None
# Возвращает:
#  0 Если Firefox установлен через ppa и apt.
#  1 Если Firefox не установлен через ppa и apt.
# Выводы:
#  Ничего
#######################################
install_firefox_using_ppa(){
    if [ "$(firefox_via_apt)" == "NOTFOUND" ]; then
        yes | sudo apt install firefox 2>&1
    fi
    assert_firefox_is_installed_using_ppa
    echo "Firefox успешно установлен с использованием ppa и apt." > /dev/tty
}


# Переключите установку Firefox с snap на ppa/apt с помощью вышеупомянутых функций.
# 0. Обнаружьте, как установлен firefox.
# 1. Если firefox установлен с помощью snap:
# 1.a Запросите у пользователя разрешение на замену установки Firefox.
# 1.b Поверить и указать, что закладки, дополнения и история не будут удалены.
# 1.c Удалите snap firefox, если он существует.
# 1.d Проверьте, что snap firefox удален.
remove_snap_install_firefox_if_existant

# 2.a Добавьте ppa firefox в apt, если его еще нет.
# 2.b Убедитесь, что ppa firefox добавлен (успешно).
add_firefox_ppa_if_not_in_yet
#remove_firefox_ppa

# 3.a Изменить приоритет пакета Firefox, чтобы гарантировать его установку из PPA/deb/apt 
# вместо snap.
# 3.b Убедитесь, что приоритет установки Firefox установлен правильно.
change_firefox_package_priority

# 4.a Убедитесь, что установка Firefox автоматически обновляется.
# 4.b Убедитесь, что команда автоматического обновления выполнена успешно.
ensure_firefox_is_updated_automatically

# 5.a Установите Firefox с помощью apt.
# 5.v Убедитесь, что firefox установлен успешно, и только один раз, с использованием apt/PPA.
install_firefox_using_ppa

Мой ответ похож на другие, но я столкнулся с проблемой hunspell. Я не мог продолжать без размонтирования. Как сказали markling и Archisman Panigrahi, вам необходимо сделать резервную копию своего профиля Firefox каким-то образом или сохранить все в облаке с помощью синхронизации Firefox, прежде чем начинать, или вы потеряете свои закладки, пароли и т. д. После создания резервной копии вот что я сделал:

sudo snap disable firefox
sudo umount /var/snap/firefox/common/host-hunspell
sudo snap remove --purge firefox
sudo apt purge firefox
sudo apt autoremove
sudo add-apt-repository ppa:mozillateam/ppa
echo '
Package: firefox*
Pin: release o=LP-PPA-mozillateam
Pin-Priority: 501
   
Package: firefox*
Pin: release o=Ubuntu
Pin-Priority: -1
' | sudo tee /etc/apt/preferences.d/99mozillateamppa
echo 'Unattended-Upgrade::Allowed-Origins:: "LP-PPA-mozillateam:${distro_codename}";' | sudo tee /etc/apt/apt.conf.d/51unattended-upgrades-firefox
sudo apt update
sudo apt install firefox

Пакет “firefox” PPA Mozillateam распределяет, что на самом деле является бета-версией (я получил Firefox 116 ровно за неделю до его официального выпуска), хотя вы можете рассматривать это как кандидат на выпуск (116 уже три недели находился в бета-версии перед упаковкой для PPA Mozillateam). Если вы не совсем уверены в этом, вы можете редактировать последнюю строку и установить “firefox-esr” вместо “firefox”:

sudo apt install firefox-esr

Недавно команда FF представила официальный Debian репозиторий с Firefox Nightly

# создайте папку для ключа репозитория PGP
sudo install -d -m 0755 /etc/apt/keyrings
# скачайте ключ репозитория и сохраните в /etc/apt/keyrings
sudo wget -q https://packages.mozilla.org/apt/repo-signing-key.gpg -O /etc/apt/keyrings/packages.mozilla.org.asc
# добавьте APT-репозиторий в список источников
echo "deb [signed-by=/etc/apt/keyrings/packages.mozilla.org.asc] https://packages.mozilla.org/apt mozilla main" | sudo tee -a /etc/apt/sources.list.d/mozilla.list > /dev/null

# Обновите список пакетов
sudo apt-get update
# Установите пакет Firefox Nightly .deb
sudo apt-get install firefox-nightly

Команда для запуска FF Nightly – firefox-nightly. Его синий значок будет показан рядом с FF. Он будет обновляться гораздо чаще, чем snap-версия, что может быть раздражающим.

Я перешел на ручное управление firefox на нескольких системах после того, как кто-то исправил одну проблему, но ввел другую, что привело к ужасному искажению всех фотографий на основных новостных веб-сайтах. В моем избранном решении две основные части.

Для важных «должен работать» вещей я получаю firefox с https://www.mozilla.org/en-US/firefox/all/ в виде tar-ball. Я затем использую
tar xf [этот архив] затем
обновляю полученную директорию firefox, чтобы не допустить обновлений – это делается с помощью директивы политики в созданной поддиректории firefox, затем я меняю владельца/группу на root, затем (что довольно важно) я откладываю текущий /usr/lib/firefox, добавляя релиз к имени, т.е. (сегодня это будет /usr/lib/firefox125) Затем, наконец, перемещаю только что подготовленный новый firefox в /usr/lib/firefox. Если что-то плохое попадает в производственную версию firefox – я предпринимаю два действия: 1) сообщаю об этом и 2) откатываю проблемную версию – именно там /usr/lib/firefox125 будет переименован обратно в /usr/lib/firefox.

Также важно для меня, и это вклад в сообщество – я теперь также участвую в firefox nightly (ссылка https://www.mozilla.org/en-US/firefox/channel/desktop/), где изменения происходят примерно за 4 месяца до того, как они попадают в каналы производства, такие как обновления для Ubuntu. Ночной сборке иногда делают плохие обновления, но эти ошибки исправляются в течение недели-двух, и я также могу продолжать общее использование браузера с помощью стабильной версии, если nightly не работает.

Ответ или решение

Чтобы установить Firefox в виде традиционного deb-пакета (без Snap) на Ubuntu 22.04 или более поздних версиях, выполните следующие шаги. Обратите внимание, что будет потеряна информация о закладках из Snap-версии, если вы не синхронизируете их с вашей учетной записью Firefox или не экспортируете вручную.

Шаг 1: Удаление Snap-версии Firefox

Если у вас уже установлена версия Firefox, установленная через Snap, начните с ее удаления:

sudo snap remove firefox

Если возникли ошибки, связанные с файловой системой, выполните следующие команды для удаления AppArmor профилей Firefox и отключения соответствующих сервисов:

sudo rm /etc/apparmor.d/usr.bin.firefox 
sudo rm /etc/apparmor.d/local/usr.bin.firefox

sudo systemctl stop var-snap-firefox-common-host\x2dhunspell.mount
sudo systemctl disable var-snap-firefox-common-host\x2dhunspell.mount
sudo snap remove firefox

Шаг 2: Добавление PPA MozillaTeam

Добавьте PPA-репозиторий MozillaTeam:

sudo add-apt-repository ppa:mozillateam/ppa

Шаг 3: Настройка приоритетов пакетов

Создайте файл настроек приоритета, чтобы установить версию из PPA выше Snap-версии:

echo '
Package: *
Pin: release o=LP-PPA-mozillateam
Pin-Priority: 1001

Package: firefox
Pin: version 1:1snap*
Pin-Priority: -1
' | sudo tee /etc/apt/preferences.d/mozilla-firefox

Шаг 4: Установка Firefox

Теперь вы готовы установить Firefox через APT:

sudo apt update
sudo apt install firefox

Шаг 5: Настройка автоматических обновлений

Чтобы убедиться, что автоматические обновления не переустановят Snap-версию Firefox, настройте следующую команду:

echo 'Unattended-Upgrade::Allowed-Origins:: "LP-PPA-mozillateam:${distro_codename}";' | sudo tee /etc/apt/apt.conf.d/51unattended-upgrades-firefox

Шаг 6: Проверка установки

Проверьте, что Firefox установлен из PPA и работает правильно. Вы можете запустить:

firefox --version

Для отмены изменений

Если вы хотите вернуться к версии Firefox из Snap:

  1. Удалите PPA:

    sudo add-apt-repository -r ppa:mozillateam/ppa
  2. Удалите файл настроек приоритетов:

    sudo rm -rf /etc/apt/preferences.d/mozilla-firefox
  3. Удалите APT-версию и переустановите Snap:

    sudo apt remove firefox && sudo snap install firefox

Альтернативные варианты установки

Если вы хотите использовать альтернативные способы установки, вы можете установить Firefox через Flatpak или загрузить бинарную версию напрямую с сайта Mozilla в виде tar.bz2, как описано в других источниках.

Используя данные шаги, вы сможете успешно установить стабильную версию Firefox в виде deb-пакета на Ubuntu 22.04 или более поздних версиях без использования Snap.

Оцените материал
Добавить комментарий

Капча загружается...