LINUX.ORG.RU

Как обновить Firefox через командную строку

 


0

1

Как обновить Firefox, используя командную строку через «updater», который находится в каталоге программы, рядом с главным исполняемым файлом?

Когда я его запускаю, он печатает следующие требования:

Usage: updater patch-dir install-dir apply-to-dir [wait-pid [callback-working-dir callback-path args...]]

Задача — обновить программу через командную строку без запуска браузера.


Программа установлена не из репозитория, а загружена архивом с офф.сайта.

Перемещено hobbit из general

Программа установлена не из репозитория, а загружена архивом с офф.сайта.

Зачем?

sudopacman ★★★★★
()
Ответ на: комментарий от sudopacman

Если интересно, то у меня на Убунту при обновлении до последней версии возникли просто нереальные тормоза при открытии нового окна. Память выжирается на 99%. На пару минут машина подвешивается и отвисает. И не важно, это открытие браузера или открытие нового окна уже работающего браузера. Далее можно работать нормально, но потребление памяти больше, чем должно быть, процентов эдак на двадцать. Началось это ещё пару версий назад, но с текущей (95-й) это стало просто невыносимо. Стал искать причину. И расширения отключал, и профиль новый заводил и с настройками видеокарты игрался.. Потом просто поставил версию с сайта и всё заработало как полагается.

Dreamdrawer
() автор топика
Ответ на: комментарий от Dreamdrawer

Надо то было всего:

sudo snap remove firefox && sudo apt install firefox 

И не было бы ни тормзов ни прочих заморочек. И обновлялся бы сам через штатный updater графический, или apt upgrade

anonymous
()
Ответ на: комментарий от Kolins

Нет. В теме я указал этот момент — загруженный архив с официального сайта.

Архив распаковывается и всё, в нём находится готовый к употреблению, самодостаточный набор. Запускается всё это исполняемым файлом.

Если закинуть в каталог ~/bin/, то отзываться в терминале будет на вызов «firefox».

Dreamdrawer
() автор топика
Ответ на: комментарий от anonymous

Да с чего же вы решили, что речь о snap-пакете?

Dreamdrawer
() автор топика
Ответ на: комментарий от hateWin

Ну, то понятное дело, можно. Писать скрипт, который будет проверять наличие новой версии, сравнивать (какие-то) условия, при выполнении которых скачивать архив, распаковывать его…

Потому и спрашиваю, может ли это проделать встроенными средствами. По идее это должно быть возможно, раз есть такой файл, как «updater» в каталоге программы, который, к тому же, исполняемый.

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

Dreamdrawer
() автор топика
Ответ на: комментарий от LongLiveUbuntu

Старое

ОС: Ubuntu 20.04.3 LTS x86_64​
Ядро: 5.4.0-91-generic
ЦПУ: Intel Pentium G860 (2) @ 3.000GHz
ОЗУ: 5928MiB
Видеокарта: NVIDIA GeForce 9600 GT
Видеодрайвер: NVIDIA 340.108 

Но я не понимаю, к чему вопрос, если на том же оборудовании, та же версия работает отлично?

Dreamdrawer
() автор топика
Ответ на: комментарий от Dreamdrawer

Попробуй Appimage/Flatpak. Для Appimage есть обновлялка.

sudopacman ★★★★★
()

Даже из usage понятно, что это сугубо сервисная программа, для перезаписывания бинарников в установочной папке.

Качает обнову скорее всего сам firefox. И он же вызывает этот updater при обновлении.

anonymous
()

Программа установлена не из репозитория, а загружена архивом с офф.сайта.

Простите, а нафига? Убунта же вроде?
Самый простой способ - sudo synapic, поиск firefox, грохнуть всё. А потом - sudo apt firefox install

Как такой вариант?

ЗЫ: Есть такое свойство у этого браузера - тормозить и вешать всю систему. Решается - проще некуда, в домашнем каталоге убей каталог «/.mozilla» перед установкой. Весь.

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

Вообще-то, у меня такое встречалось и не раз. Что из-за firefox вся система вставала колом, особенно, когда листаешь длинную ленту. Есть такое. Ну, у меня в профиле энегросбережения настроено так, что при нажатии кнопки питания комп выключается. Я не гордый своим преимуществом перед машинами - могу и подождать, пока выключится. А после включения - всё нормально. И браузер в том числе. Где-то у этого комбайна утечка памяти существует. А где - даже сами разработчики не совсем понимают.

Вот вам, блин и Обьектно-Ориентированное Программирование. Утечка есть? Есть. А где? А хрензна, этот код не мы писали, а индусы какие-то.

cadaber ★★
()
Ответ на: комментарий от Dreamdrawer

норм.
я так рклоуна обновляю.
деб-пакет сделали,а репозиторий не асиляли, зато замазали все репоподобным костылем и насписали скрипт обновления. чуть переделал и в систему воткнул.
https://rclone.org/downloads/

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

sudo synapic, поиск firefox, грохнуть всё. А потом - sudo apt firefox install
убей каталог «/.mozilla» перед установкой

Проделал все эти операции, но результат ровно тот же самый.

Dreamdrawer
() автор топика
Последнее исправление: Dreamdrawer (всего исправлений: 1)
Ответ на: комментарий от Kolins

А кстати, можно как-нибудь перед загрузкой поставить условие для проверки наличия новой версии?

Dreamdrawer
() автор топика
Ответ на: комментарий от Dreamdrawer

Проделал все эти операции, но результат ровно тот же самый.

Честно? - Не знаю. Никогда с такой фигнёй не сталкивался. А на другой машинке попробовать? Хотя и так ясно, что на другой такого не получится...

Что бы я сделал в твоём случае? Наверное, плюнул бы и ось переставил, сохранив /home, но удалив все каталоги с .точкой. А заодно проверил жесткий диск MHDD. Нафига? А просто, для профилактики и самоуспокоения.

ФС кстати, какая? От этого тоже, точнее более вероятно, может зависеть. Своп-раздел размечен? Сейчас его редко делают, поскольку оперативки дофига, но я обычно по старинке - делаю, равным количеству RAM.

На железки грешить глупо, скорее ССЗБ.

ЗЫ: И да, почему бы просто не поставить какой другой браузер? Хотя... Лично мне, подобная проблема - просто мешала бы спокойно спать. =)

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

ФС кстати, какая?

ext4. Да в конфиге системы всё стандартно. Своп равен размеру оперативки.

поставить какой другой браузер

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

Как бы и есть решение в виде использования несистемного пакета, которое работает без нареканий.

проблема - просто мешала бы спокойно спать

Воттож! :)

Dreamdrawer
() автор топика
19 ноября 2023 г.

Доброго здоровья! Даже если вопрос ТС уже и не актуален, то всё равно выложу два bash-скрипта. Один скачивает последнюю стабильную версию firefox, а второй устанавливает. Проверено на Ubuntu 22.04. Внутри каждого скрипта есть короткое описание.

Скрипт firefox-download.sh

#! /bin/bash
# Скрипт обновлён 17.11.2024
# Скриптописатель foxadmin whitepost@mail.ru

# Скрипт скачивает последнюю стабильную версию Firefox c официального сайта Mozilla
# Если последняя стабильная версия уже установлена, то скачивания не происходит!
# "Кривую" установку этот скрипт не исправляет!

# Данный скрипт был написан для работы с мобильным прокси-сервером NetShare
# Т.е. если компьютер подключен к сети через смартфон с прокси NetShare, то всё качается!
# Без прокси, само собой, тоже будет работать!

# Если нужна версия для Linux 64 то переменная system=linux64 (задано по умолчанию!)
# Если Linux 32, то меняем значение переменной system с linux64 на linux

# Формируемая команда для wget
# https://download.mozilla.org/?product=firefox-latest&os=$system&lang=ru

# Здесь можно посмотреть значения переменных system, product и lang для формируемой строки запроса
# https://download-installer.cdn.mozilla.net/pub/firefox/releases/latest/README.txt

# Меняем разделители, чтобы bash корректно работал с пробелами
IFS=$'\t\n';

# Функция проверки наличия curl в системе
function fun_curl () {
	if ! [[ -f $(which curl) ]]; then
		echo -e "${RED}Не установлено приложение curl!${NORMAL}\n${GREEN}Установите curl и запустите скрипт повторно.${NORMAL}";
		exit 0;
	else
		echo -e "${GREEN}curl есть в системе!${NORMAL}";
	fi

}

# Функция проверки wget в системе
function fun_wget () {
	if ! [[ -f $(which wget) ]]; then
		echo -e "${RED}Не установлено приложение wget!${NORMAL}\n${GREEN}Установите wget и запустите скрипт повторно.${NORMAL}";
		exit 0;
	else
		echo -e "${GREEN}wget есть в системе!${NORMAL}";
	fi

}

# Функция проверки наличия сети (I-net). Отличается от старой версии функции - здесь использую wget вместо ping (из-за http-прокси!)
function fun_ping () {
	wget -q --spider https://download.mozilla.org;
 
	if [ $? -ne 0 ] ; then
		echo -e "\n${RED}https://download.mozilla.org недоступен!${NORMAL}\n";
		exit 0;
	else
		echo -e "${GREEN}https://download.mozilla.org доступен!${NORMAL}";
	fi

}

# Функция проверки последней версии Firefox на сайте Mozilla
function fun_lver () {
	lver=$(curl -s http://download.cdn.mozilla.net/pub/firefox/releases/ | sed -e :a -e 's/<[^>]*>//g;/</N;//ba' | sed '/[a-z].*/d' | grep -Eo '[0-9]+\.[0-9]+\.*[0-9]*' | sort -n -t . -k 1,1 -k 2,2 -k 3,3 | tail -n 1);
}

# Функция проверки установленной версии Firefox
function fun_iver () {
	iver=$(firefox -v | awk '{ print $3 }');
}

# Функция сравнения установленной версии Firefox и последней стабильной на сайте Mozilla
function fun_comparation () {
	if [[ "$iver" = "$lver" ]]; then
		echo -e "\n${GREEN}Текущая стабильная версия Firefox-$iver уже установлена!\n${NORMAL}";
		exit 0;
	fi
}

# Функция скачивания последней стабильной версии Firefox с официального сайта Mozilla
function fun_download () {
	echo -e "\n${GREEN}Качаем последнюю версию Firefox для $system в архиве tar.bz2\n${NORMAL}";
	wget -O "/tmp/firefox-$lver-$system.tar.bz2" "https://download.mozilla.org/?product=firefox-latest&os=$system&lang=$lang";
	echo -e "\n${GREEN}Загрузка завершена!\n${NORMAL}";
	if [[ -d "$HOME/Download" ]]; then
		mv "/tmp/firefox-$lver-$system.tar.bz2" "$HOME/Download";
		echo  -e "\n${GREEN}Скачанный файл находится $HOME/Download\n${NORMAL}";
	elif [[ -d "$HOME/download" ]]; then
		mv "/tmp/firefox-$lver-$system.tar.bz2" "$HOME/download";
		echo  -e "\n${GREEN}Скачанный файл находится $HOME/download\n${NORMAL}";
	elif [[ -d "$HOME/Загрузки" ]]; then
		mv "/tmp/firefox-$lver-$system.tar.bz2" "$HOME/Загрузки";
		echo  -e "\n${GREEN}Скачанный файл находится $HOME/Загрузки\n${NORMAL}";
	else
		echo  -e "\n${GREEN}Скачанный файл находится в каталоге /tmp\n${NORMAL}";
	fi
}

# Переменные
# Для Linux 64-х разрядной
system=linux64;
# Для Linux 32-х разрядной
# system=linux;

# Локализация Firefox
lang=ru;

# Расцветка вывода консоли
RED='\033[1;31m';
GREEN='\033[1;32m';
NORMAL='\033[0m';

###############################################
# Тело скрипта

fun_wget;
fun_curl;
fun_ping;
fun_iver;
fun_lver;
fun_comparation;
fun_download;

exit 0;

Скрипт firefox-install.sh

#! /bin/bash
# Скрипт обновлён 17.11.2024
# Скриптописатель foxadmin whitepost@mail.ru

# Скрипт предназначен для установки Firefox
# из архива tar.bz2 путь к которому указывается в виде аргумента
# к примеру sudo ./firefox-install.sh ./firefox-latest.tar.bz2

# Для корректного выполнения скрипта требуются права root либо через sudo !!!

# Меняем разделители
IFS=$'\t\n';

# Функция проверки прав пользователя запустившего скрипт
function fun_user {
if ! [[ `/bin/id -u` == 0 ]]; then
	echo -e "${RED}Получите права root либо запустите скрипт через sudo!\n${NORMAL}";
	exit 0;
fi
}

# Функция установки Firefox из архива указанного в виде аргумента данному скрипту
function fun_install () {
	if ! [[ -d "$ipath" ]]; then
		echo -e "${GREEN}Формируется каталог $ipath!${NORMAL}";
		mkdir "$ipath";
	fi
	echo -e "${GREEN}$1 распаковывается в $ipath!${NORMAL}";
	tar xvjf "$1" -C "$ipath";
	echo -e "${GREEN}Формируется desktop-файл${NORMAL}";

cat > /usr/share/applications/firefox.desktop<<EOF
[Desktop Entry]
Encoding=UTF-8
Name=Firefox
Name[ru]=Firefox
Comment[ru]=Обозреватель Всемирной Паутины
GenericName=Web Browser
GenericName[ru]=Интернет-браузер
X-GNOME-FullName=Firefox Web Browser
X-GNOME-FullName[ru]=Интернет-браузер Firefox
Exec=firefox --browser
Terminal=false
X-MultipleArgs=false
Type=Application
Icon=/opt/mozilla/firefox/browser/chrome/icons/default/default128.png
Categories=Network;WebBrowser;
MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/vnd.mozilla.xul+xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;
StartupWMClass=firefox-bin
StartupNotify=true
EOF

	echo -e "${GREEN}Формируется ссылка /usr/bin/firefox!${NORMAL}"; 
	ln -s "$ipath/firefox/firefox" "/usr/bin/firefox";
	echo -e "\n${GREEN}Установка завершена!\n${NORMAL}"; 
}

# Функция удаления Firefox установленного ранее этим скриптом
function fun_remove () {
	if [[ -d "$ipath/firefox" ]]; then
		echo -e "${GREEN}Удаляется каталог $ipath/firefox!${NORMAL}";
		rm -R "$ipath/firefox";
	fi

	if [[ -L "/usr/bin/firefox" ]]; then
		echo -e "${GREEN}Удаляется ссылка /usr/bin/firefox!${NORMAL}";
		rm "/usr/bin/firefox";
	fi
		
	if [[ -f "/usr/share/applications/firefox.desktop" ]]; then
		echo -e "${GREEN}Удаляется desktop-файл!${NORMAL}";
		rm "/usr/share/applications/firefox.desktop";
	fi
}

#################################################
# kernel

# Расцветка вывода консоли
RED='\033[1;31m';
GREEN='\033[1;32m';
NORMAL='\033[0m';

fun_user; # Вызов функции проверки прав пользователя запустившего этот скрипт 

if ! [[ $1 == "" ]]; then
	if [[ -f "$1" ]]; then
		ipath="/opt/mozilla"; # Путь установки Firefox
		fun_remove; # Вызов функции удаления Firefox
		fun_install "$1"; # Вызов функции установки Firefox
	else
		echo -e "\n${RED}Файл $1 не найден!\n${NORMAL}";
		exit 0;
	fi
else
	echo -e "\n${RED}Не введён путь к файлу установки\nили он ошибочный!\n${NORMAL}";
fi
exit 0;
foxadmin
()
Ответ на: комментарий от foxadmin

Непонятно зачем вы sed’ом парсите HTML? Есть же ссылка:

wget -O ff.tar.bz2 "https://download.mozilla.org/?product=firefox-latest&os=Linux64&lang=en-US"
wget -O readme.txt http://download.cdn.mozilla.net/pub/firefox/releases/latest/README.txt
less ./readme.txt
dmitry237 ★★★★
()
Ответ на: комментарий от dmitry237

Ключевое слово здесь, видимо, - latest. :)

hobbit ★★★★★
()
Ответ на: комментарий от dmitry237

Спасибо, знаю об этом файле (http://download.cdn.mozilla.net/pub/firefox/releases/latest/README.txt)

Однако в нём нет номера версии и соответственно нет возможности сравнить номер установленной версии с последней на сайте. Возможно я и не прав, возможно есть и другой способ. Но я о нём не знаю.

foxadmin
()
Ответ на: комментарий от foxadmin

Однако в нём нет номера версии

Мой коммент выше Как обновить Firefox через командную строку (комментарий). Переходим в тему, из темы на гитхаб и смотрим скрипт, где черным по белому, как определить номер версии.

Понятно, что трудно проделать эти действия, поэтому сам скопирую для тебя часть кода:

URL="https://download.mozilla.org/?product=firefox-latest&os=linux64&lang=en-US"

VER=`curl -sfI "$URL" | grep -o 'firefox-[0-9.]\+[0-9]'`
krasnh ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.