LINUX.ORG.RU

[Решено] Две копии одной программы #2

 


1

2

Всем добрый вечер.

Прошу прощения. Хочу задать вопрос который поднимал ранее. Являюсь пользователем windows, хочу перейти на linux.

В win установлен firefox браузером по умолчанию в директорию

C:\Program Files\Mozilla Firefox

в папке

C:\Users хранится его профиль.

Так же в разделе D:\ имеется несколько Portable версий firefox, ихние профили находятся каждый в своем каталоге и не пересекаются. Каждая портативная программа может запускаться независимо друг от друга.

Как такую концепцию реализовать в Linux? Прошу ответить тех кто знает, простыми словами, по возможности без командной строки и кусков кода.

В ранее созданной мною теме, с таким же названием, рекомендовали использовать appimage. Но на сколько я понял, этот тип файлов использует профиль от «родительской» программы по умолчанию. В общем этим способом воспользоваться не получилось, в силу недостаточного опыта.

Также рекомендовали использовать firejail, но для меня это тоже не совсем понятно.

Я остановился на том, что скачал пакет firefox для linux, распаковал в пользовательской папке. Попробовал разные версии. История сохраняется у каждой своя.

Можно ли так делать сточки зрения безопасности?

Программу из архива можно запускать из любой папки, или нужно поместить в какую то определенную?

Профиль с настройками хранится в этой же папке из архива, или где то в другом месте, если да то где?

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

Как обновить программу из архива до определенной версии? Или хотя бы перенести историю в новую версию?

Как запретить программе самостоятельно обновляться?



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

Открываешь firefox, идёшь в about:profiles нажимаешь «создать новый профиль», потом «запустить ещё один браузер с этим профилем».
всё, у тебя 2 firefox с профилями, не зависящими друг от друга. Вроде работает и в windows.

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

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

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

Тебе ещё в прошлой теме ответили, что тебе подойдет firejail, там тебе и изоляция, и сколь угодно экземпляров сразу. Но да, это нужно в терминал лезть.

Вот только в Linux тебе все равно придется его на таком уровне учить. Если ты надеешься перейти на него без изучения основ работы с ним — просто бросай. Серьезно.

Или изучаешь Linux на уровне сисадмина, или ничерта у тебя с ним не выйдет. Готовых GUI решений у нас минимум, и они покрывают лишь самые базовые вещи.

Vsevolod-linuxoid ★★★★★
()
Ответ на: комментарий от firkax

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

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

Ну вот тебе буквально ответ на твой вопрос — я сам использую Firefox ESR внутри firejail, запускаю командой: firejail --private=ff --nodbus firefox-esr

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

Можно создать другую директорию, например ff2 или как угодно, и запустить ещё один экземпляр тоже в контейнере: firejail --private=ff2 --nodbus firefox-esr

Вот и всё, подробнее тут разжевано: FireJail -- краткое и ознакомительное практическое руководство

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

Вы уж простите, я и в тот раз открывал эту статью, но я не понимаю что с этим делать и как это устроено? Мне не понятны эти команды и куски кода… Где хранится этот контейнер? Я могу его скопировать на внешний носитель? Я могу обновить версию программы?

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

Эта команда очень простая, разбираем:

firejail --private=ff --nodbus firefox-esr

  • firejail — запускает сам firejail, это ПО для изоляции ПО внутри контейнера
  • --private=ff — говорит, чтобы ПО не имело доступа к реальной домашней директории и видело директорию ff как домашнюю — то есть настройки будут сохранены в ff/.mozilla, так как для запущенного Firefox это ~/.mozilla
  • --nodbus — блокирует доступ к D-Bus с целью изоляции ПО в контейнере от ОС.
  • firefox-esr — эта команда запускает установленный в ОС Firefox ESR

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

vsevolod@hp15:~$ mkdir test
vsevolod@hp15:~$ cd test
vsevolod@hp15:~/test$ wget https://ftp.mozilla.org/pub/firefox/releases/113.0.1/linux-x86_64/ru/firefox-113.0.1.tar.bz2
--2023-05-14 01:08:16--  https://ftp.mozilla.org/pub/firefox/releases/113.0.1/linux-x86_64/ru/firefox-113.0.1.tar.bz2
Распознаётся ftp.mozilla.org (ftp.mozilla.org)… 34.117.35.28
Подключение к ftp.mozilla.org (ftp.mozilla.org)|34.117.35.28|:443... соединение установлено.
HTTP-запрос отправлен. Ожидание ответа… 200 OK
Длина: 80286558 (77M) [application/x-tar]
Сохранение в: «firefox-113.0.1.tar.bz2»

firefox-113.0.1.tar.bz2                         100%[=====================================================================================================>]  76,57M  4,60MB/s    за 28s     

2023-05-14 01:08:44 (2,78 MB/s) - «firefox-113.0.1.tar.bz2» сохранён [80286558/80286558]

vsevolod@hp15:~/test$ tar xaf firefox-113.0.1.tar.bz2 
vsevolod@hp15:~/test$ ls -l
итого 78412
drwxr-xr-x 7 vsevolod vsevolod     4096 мая 14 01:09 firefox
-rw-r--r-- 1 vsevolod vsevolod 80286558 мая 12 13:26 firefox-113.0.1.tar.bz2
vsevolod@hp15:~/test$ ls firefox
application.ini     firefox          icons                 libmozgtk.so      libnssckbi.so   libssl3.so         pingsender            Throbber-small.gif
browser             firefox-bin      libfreeblpriv3.so     libmozsandbox.so  libnssutil3.so  libxul.so          platform.ini          updater
crashreporter       firefox-bin.sig  libipcclientcerts.so  libmozsqlite3.so  libplc4.so      libxul.so.sig      plugin-container      updater.ini
crashreporter.ini   firefox.sig      liblgpllibs.so        libmozwayland.so  libplds4.so     locale.ini         plugin-container.sig  update-settings.ini
defaults            fonts            libmozavcodec.so      libnspr4.so       libsmime3.so    minidump-analyzer  precomplete
dependentlibs.list  gmp-clearkey     libmozavutil.so       libnss3.so        libsoftokn3.so  omni.ja            removed-files
vsevolod@hp15:~/test$ cd
vsevolod@hp15:~$ firejail --nodbus --private=test/ ~/firefox/firefox-bin
Reading profile /etc/firejail/default.profile
Reading profile /etc/firejail/disable-common.inc
Reading profile /etc/firejail/disable-programs.inc
Warning: networking feature is disabled in Firejail configuration file

** Note: you can use --noprofile to disable default.profile **

Parent pid 13684, child pid 13685
Warning: An abstract unix socket for session D-BUS might still be available. Use --net or remove unix from --protocol set.
Child process initialized in 115.30 ms
## дальнейший вывод обрезал

Правда повторный запуск выдает ошибку, пока не понял почему, как и ручное указание профиля firefox — но по сути я сделал следующее:

  • Создал директорию test
  • Скачал туда Firefox для Linux в архиве с официального хранилища
  • Распаковал его там
  • Запустил внутри контейнера с ограничением на доступ только в test
Vsevolod-linuxoid ★★★★★
()
Последнее исправление: Vsevolod-linuxoid (всего исправлений: 1)
Ответ на: комментарий от Vsevolod-linuxoid

@LINUX-ORG-RU , как думаешь, почему на первый раз команда firejail --nodbus --private=test/ ~/firefox/firefox-bin работает для запуска скачанной с оф. сайта версии, а на второй выдает ошибку «Не удалось загрузить профиль»?

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

Vsevolod-linuxoid спасибо за ответ, но это не мой уровень.

Давайте по другому.

Я скачал пакет файерфокс с mozilla-russia.org я могу его запустить из любой папки файлового менеджера?

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

Я бы не советовал качать с левых сайтов. Но да, можешь. Правда он все равно будет писать в ~/.mozilla, насколько помню, потому и нужен firejail, чтобы изолировать друг от друга экземпляры.

И если это не твой уровень — то или ты учишь Linux до этого уровня, или остаешься на Windows.

Что ты хочешь сделать — технически возможно. Но нужно понимать основы.

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

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

А почти все руководства, что я читал, писались во времена, когда люди ещё помнили DOS с его командной строкой, потому им основы основ не объясняли, только описывали особенности команд Linux.

Vsevolod-linuxoid ★★★★★
()
Ответ на: комментарий от johnsmith

https://linuxcookbook.ru/books/textbooks/linux_intro/index.html — правда это старая книга, но вроде для новичков разжевывает. После советую прочесть более новую, так как с тех пор кое-что поменялось: Дистрибутив Linux для ноутбука Intel + Nvidia (комментарий)

А вообще да, переход на Linux не оправдан в большинстве случаев — учиться придется несколько месяцев минимум. Если ты не устроишься потом админом — время впустую.

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

Не в коем случае не хочу разводить холиварные темы. Но, за более чем 10 лет использования пк под win ни разу не возникало необходимости использовать ком. строку. И все равно у меня остается не понимание того, почему при всем разнообразии дистрибутивов и великолепии различных настроек остается пространство темной матери подвластной только мерцающему курсору? Это риторический вопрос. Я понимаю что так сложилось исторически.

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

Не только исторически. Для ряда именно профессиональных задач командная строка объективно удобнее, тем более в Linux она более продвинутая, чем cmd.exe в Windows.

bash ведь язык программирования, так что это позволяет писать скрипты, и Windows администраторы тоже так делают, уже на PowerShell в основном, правда.

Лично я, к примеру:

  • Написал скрипт, что выводил предупреждения о перегреве, а если что — выключал комп.
  • Накостылял скрипт для скачивания всего ЖЖ одного автора.
  • При помощи утилит обработки текста выловил из .pdf от провайдера список всех телефонных номеров, на которые были звонки.
  • Анализировал крупные текстовые логи по много гигабайт и выяснял, в чём дело.
  • Написал скрипт для анализа, сколько пакетов из каких источников в Debian-based стоит.

И многое прочее. В общем, полезная вещь, на самом деле. Суть в том, чтобы вместо того, чтобы дать готовый монолит, дать кучу кирпичей, из которых можно что угодно построить.

Vsevolod-linuxoid ★★★★★
()

Обновлениями в Linux занимается пакетный менеджер. В разных дистрибутивах Linux пакетные менеджеры - это разные программы, написанные разными авторами. Поэтому, чтобы решить твою задачу, надо знать конкретный вариант дистрибутива Linux.

В принципе, можно собрать портабельную версию программы, и можно даже статически слинкованную. Но это настолько сложно, что ты не справишься. Заказывай эту работу за деньги.

Shushundr ★★★
()

Можно ли так делать сточки зрения безопасности? Программу из архива можно запускать из любой папки, или нужно поместить в какую то определенную? Профиль с настройками хранится в этой же папке из архива, или где то в другом месте, если да то где? Если я захочу переустановить систему, история, настройки и т.д. из распакованного архива сохранится, или какой то каталог нужно резервировать? Как обновить программу из архива до определенной версии? Или хотя бы перенести историю в новую версию? Как запретить программе самостоятельно обновляться?

Ответ на все вопросы: «зависит от данного конкретного архива».

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

Я остановился на том, что скачал пакет firefox для linux, распаковал в пользовательской папке. Попробовал разные версии. История сохраняется у каждой своя.

Можно и так.

Можно ли так делать сточки зрения безопасности?

Да. Желательно, юзая отдельный профиль для каждого инстанса. Как вариант (и для пущего сэндбоксинга), можно для каждой копии делать свой псевдо-хомяк с помощью firejail. Решение с firejail универсально для любой программы, без завязки на встроенную поддержку профилей, как в случае с firefox.

Программу из архива можно запускать из любой папки, или нужно поместить в какую то определенную?

Можно. Хоть из мамки.

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

Если не затирать хомяк, то сохранится. Каталог .mozilla в случае с фаерфоксом. В случае с нормальным софтом — .config и .local/share.

Как обновить программу из архива до определенной версии? Или хотя бы перенести историю в новую версию?

Скачать архив нужной версии? Разве не ради этого всё затевалось? Странный вопрос какой-то.

Как запретить программе самостоятельно обновляться?

ХЗ, у меня ничего самостоятельно не обновляется, кроме стима (который без этого обновления не будет нормально работать один хрен), но в общем случае единого ответа на этот вопрос нет — зависит от программы. По идее это тупо включается/отключается в настройках.

Прошу ответить тех кто знает, простыми словами, по возможности без командной строки и кусков кода.

А вот это ты зря. Что может быть проще и понятнее командной строки?

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

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

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

где лежит файл истории, который нужно скопировать в каталог

У нормальных программ — в ~/.local/share. У фаерфокса — в .mozilla.

«Портативные версии» — это какая-то виндовая лабуда, лучше забыть этот термин и понять, как на самом деле всё работает.

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

И все равно у меня остается не понимание того, почему при всем разнообразии дистрибутивов и великолепии различных настроек остается пространство темной матери подвластной только мерцающему курсору?

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

her_s_gory
()
Ответ на: комментарий от Vsevolod-linuxoid

Потыкал, будет работать так

Когда вызываем бинарник внутри уже приватного хомяка, но что-то с профилями, раньше такого не было если отключать то ок firejail --nodbus --private=~/firefox --noprofile ./firefox-bin

Или так, но странно. firejail --nodbus --private=test --profile=firefox `~/firefox/firefox`

Надо разбираться, чёт там наизменяли. Я давно не запускал. Проверил ещё пачку вариантов которые должны работать, но не работают, обычный без ./ firefox запускается, а на текущий ругается… Чудно.

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 3)

рекомендовали использовать appimage

Правильно рекомендовали.

Но на сколько я понял, этот тип файлов использует профиль от «родительской» программы по умолчанию

Нет. Рядом с AppImage-файлом создай каталог с полным именем файла и .config в конце. Например, для файла Firefox-68ESR.AppImage нужно создать каталог Firefox-68ESR.AppImage.config. В него и будут складываться все файлы AppImage-программы.

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

Еше раз. Можно распаковать в любой каталог и запускать. Он даже может быть вообще «вне системы» и один и тотже файл запускать из разных систем.

Аналогично с профилями. Если в данном конкретном экземпляре есть возможность задать расположение профиля, то профили могут быть в разных местах.

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

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

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)
Ответ на: комментарий от posixbit

К сожалению не получается ваш способ. Запускаю в live cd linux mint Создаю каталог с нужным названием. Запускаю аппимедж, запускается и работает. Но каталог пустой.

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

Мне необходима возможность запуска нескольких портативных версий firefox. Независимых друг от друга. Пользовательские настройки должны находится возле самой программы. Для возможности резервного копирования.

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

Запускаю аппимедж, запускается и работает. Но каталог пустой

Каталог с .config в названии создали точно в том же каталоге, в котором находится AppImage-файл? Название созданного каталога точно содержит полное название файла, включая .AppImage?

posixbit ★★
()
Ответ на: комментарий от johnsmith
dron@gnu:~$ mkdir -p my_isolated_firefox/
dron@gnu:~$ wget https://github.com/srevinsaju/Firefox-Appimage/releases/download/firefox-nightly/firefox-nightly-115.0.r20230514090831-x86_64.AppImage 2> /dev/null
dron@gnu:~$ cp firefox-nightly-115.0.r20230514090831-x86_64.AppImage ./my_isolated_firefox/
dron@gnu:~$ chmod +x ./my_isolated_firefox/firefox-nightly-115.0.r20230514090831-x86_64.AppImage 
dron@gnu:~$ firejail --profile=firefox --private=$HOME/my_isolated_firefox/ --appimage ./firefox-nightly-115.0.r20230514090831-x86_64.AppImage

Запуск портативного фаерфокса в изолированной среде, абсолютно всё в одном каталоге, длинные имена оставил как есть.

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от johnsmith

Проверил этот AppImage-файл. Так и есть. Он собран без реализации портативности на основе .config и .home из каталога рядом с AppImage-файлом, поэтому запускать нужно вот так:

$ cd /путь/до/каталога_где_находится_AppImage.

$ HOME=/путь/до/firefox-112.0.r20230414125621-x86_64.AppImage.home ./firefox-112.0.r20230414125621-x86_64.AppImage.

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