LINUX.ORG.RU

Как корректно обновлять Firefox на Ubuntu, который установлен из бинарника?

 


1

1

В связи с будущим переходом на snap решил заблаговременно удалить firefox из реп и поставить с бинарника, скаченного с оф. сайта (архив tar.bz2 и распаковал в /opt/firefox).

Как теперь обновлять firefox, не скачивая архив с новой версией каждый раз и с последующей распаковкой?

В целях безопасности, папка /opt/firefox (куда я поставил firefox ) принадлежит руту (я же не могу папке /opt/firefox дать права записи текущему пользователю, дабы исключить подмену бинарника и искажение других файлов браузера).

А браузер же запущен не от рута, а от обычного пользователя. Получается, что автоматически (или через help -> about Firefox) Firefox не сможет сам себя обновить, так как не сможет перезаписать файлы в /opt/firefox, которые принадлежат руту.

И как лучше поступить? Настроить уведомление о новых версиях в Firefox через настройки, и при выходе новой версии разово запускать firefox через рута?

Или может есть способы получше (дожидаться левых реп и использовать их я не очень хочу)?

★★★

Последнее исправление: iljuase (всего исправлений: 2)

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

mexx
()

Я бы на питоне скрипт бы написал простой.

И засадил его в таймеры ⏱ systemd этак раз в день.

Хотя на самом деле сделал бы папку /home/myuser/.apps и забил бы.

запускать firefox через рута

Это точно не надо. Вероятность, что наделается какая-то ерунда весьма большая.

fornlr ★★★★★
()
Последнее исправление: fornlr (всего исправлений: 3)
Ответ на: комментарий от ZenitharChampion

А потом же владельцем исполняемого файла будем тот пользователь, под которым он и будет запускаться. Это разве безопасно? Мало ли, уязвимость найдут в браузере и браузер сам внесёт вредоносные изменения в свой код.

Может создать пользователя типа firefox-update, сделать его владельцем /opt/firefox и при выходе новой версии разово запускать firefox из-под него, типа

sudo -u firefox-update /opt/firefox/firefox

Обновить и всё.

iljuase ★★★
() автор топика

дабы исключить подмену бинарника

Firefox не сможет сам себя обновить

Всё верно.

И как лучше поступить?

Обновление «сам себя» это и есть подмена бинарника, тебе надо только определиться хочешь ты это разрешать или нет. Нормальное обновление (пакетным менеджером) делается внешней, по отношению к фф, программой, с большими чем у фф правами. В твоём случае это «скачивать архив каждый раз». Или написать скрипт который будет делать то же самое но автоматически (думаю это не сложно).

Если же таки хочешь чтобы фф обновлялся именно сам - клади в $HOME и смирись с «подменой бинарника».

firkax ★★★★★
()

распаковал в /opt/firefox

Но зачем? /opt – это вообще странная директория полезность которой стремится к нулю. Для таких вещей у меня в хомяке есть директории ~/Applications и ~/Applications/bin, вторая добавлена в PATH. Просто распаковываешь туда архив и все. Если приложение может само обновляться (типа IDE), то оно само и будет обновляться своими средствами.

Im_not_a_robot ★★★★★
()

сам пакетик можно проверять на обновленность перед скачкой.

использовать wget --timestamping или curl --etag-compare <file> - curl --etag-save <file> и подобные

еще вариант поизучать апи и выдергивать оттуда номер версии фаерфокс и обновлять его в случае несопадении номерков.

pfg ★★★★★
()
Последнее исправление: pfg (всего исправлений: 2)

Ок, начал писать скрипт. Пока вот:

#!/usr/bin/python3
import requests
import re
import subprocess
import tarfile

def get_latest_version(): 
    r = requests.head("https://download.mozilla.org/?product=firefox-latest&os=linux64&lang=en-US")
    link = r.headers['Location']
    version_re = re.search("releases/.*/linux-x86_64", link)
    version = version_re.group(0).split('/')[1]
    return link, version                  

def get_current_version():
    firefox_run = subprocess.run(['/opt/firefox/firefox/firefox', '--version'], stdout=subprocess.PIPE)
    firefox_istalled_version = firefox_run.stdout.decode().rstrip().split(" ")[2]
    return firefox_istalled_version

def download_firefox_archive(link, latest_version):
    r = requests.get(link)
    firefox_file = open(f"/tmp/{latest_version}.tar.bz2", "wb")
    firefox_file.write(r.content)
    firefox_file.close()

def unpack_archive(latest_version):
    tar_file = tarfile.open(f"/tmp/{latest_version}.tar.bz2", "r:bz2")
    tar_file.extractall("/tmp/firefox/")
    tar_file.close()

latest_version_link, latest_version = get_latest_version()
my_version = get_current_version()

if latest_version == my_version:
    print(f"You have latest version: {my_version}")
else:
    print(f"New version released! Your version: {my_version}, latest version: {lstest_version}")
    download_firefox_archive(latest_version_link, latest_version)
    unpack_archive(latest_version)

Потом допилю распаковку в нужный каталог (пока скрипт тестовый, распаковка в /tmp/firefox), настройка входных параметров, systemd-timer и т.д.

Если кому интересно, подключайтесь к разработке: https://github.com/4815162342lost/firefox_autoupdate/blob/main/main.py

iljuase ★★★
() автор топика
Последнее исправление: iljuase (всего исправлений: 2)
Ответ на: комментарий от iljuase

Походу РФ нужно переходить на альтернативы: яндекс и мун Китайцы живут с этим и нам придется. Поисковик дюкдюкго тоже показал , что он чмо. Показав каклеквсие сайты вверху.

Bootmen ☆☆☆
()
Последнее исправление: Bootmen (всего исправлений: 3)
Ответ на: комментарий от iljuase

upd: сервис, исполняемый файл, таймер готовы.

Новая ссылка (переместил исполняемые файлы): https://github.com/4815162342lost/firefox_autoupdate/

To Do: – добавить обработку исключений (в случае, если, например, сетевых проблем) – написать документацию

iljuase ★★★
() автор топика

можно сделать chown на пользователя временно или постоянно,
обновляется как в вендах, через «о Firefox»

Sylvia ★★★★★
()

В связи с будущим переходом на snap

Значит, это Ubuntu?

с бинарника, скаченного с оф. сайта (архив tar.bz2

В гуе. Меню → Справка → О Firefox. Дефолтом оно само проверяет наличие новой версии, качает, обновляет. Чего плясать, раз они уже́ вместо нас сплясали?

Dementy ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.