- Вопрос или проблема
- Чтобы отменить эти изменения
- Ответ или решение
- Шаг 1: Удаление Snap-версии Firefox
- Шаг 2: Добавление PPA MozillaTeam
- Шаг 3: Настройка приоритетов пакетов
- Шаг 4: Установка Firefox
- Шаг 5: Настройка автоматических обновлений
- Шаг 6: Проверка установки
- Для отмены изменений
- Альтернативные варианты установки
Вопрос или проблема
Насколько я вижу, в текущей разработке для 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
Чтобы отменить эти изменения
- Удалите PPA Firefox.
sudo add-apt-repository -r ppa:mozillateam/ppa
- Удалите привязку apt.
sudo rm -rf /etc/apt/preferences.d/mozilla-firefox
- Удалите версию 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, имеют несколько вариантов:
-
Использовать Snap. Snap поступает от Mozilla и предназначен для кросс-дистрибутивной и кросс-платформенной работы. Вы не должны находить его “специфичным для Ubuntu”. Snap Firefox будет включен в стандартные установки Ubuntu Desktop.
-
Скачать бинарный файл с сайта Mozilla. Это требует знания, как устанавливать и удалять без менеджера пакетов. Это тот же бинарник, который используется в Snap.
-
Если вы все еще хотите использовать deb-пакеты, которые находятся в репозиториях Ubuntu, тогда присоединяйтесь к Debian и помогите волонтерам упаковать Firefox. Это сложный процесс, который делает его упаковка как deb (вот почему Mozilla неenthusiastic о продолжении усилий), но сообщество — с достаточным количеством добровольцев — способно на великие дела.
-
Добавить репозиторий deb Mozilla. Используйте apt-pinning для выбора этого репозитория вместо репозиториев Ubuntu.
-
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:
- Перейдите на страницу загрузки Firefox и нажмите кнопку “Скачать сейчас”.
- Извлеките содержимое загруженного файла:
cd ~/Downloads && tar xjf firefox-*.tar.bz2
- Переместите распакованную папку Firefox в
/opt
и создайте символическую ссылку в месте на$PATH
:
sudo mv firefox /opt
sudo ln -s /opt/firefox/firefox /usr/local/bin/firefox
- Скачайте копию рабочего стола:
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:
-
Удалите PPA:
sudo add-apt-repository -r ppa:mozillateam/ppa
-
Удалите файл настроек приоритетов:
sudo rm -rf /etc/apt/preferences.d/mozilla-firefox
-
Удалите APT-версию и переустановите Snap:
sudo apt remove firefox && sudo snap install firefox
Альтернативные варианты установки
Если вы хотите использовать альтернативные способы установки, вы можете установить Firefox через Flatpak или загрузить бинарную версию напрямую с сайта Mozilla в виде tar.bz2, как описано в других источниках.
Используя данные шаги, вы сможете успешно установить стабильную версию Firefox в виде deb-пакета на Ubuntu 22.04 или более поздних версиях без использования Snap.