Сайт | Скачать | Видео | Wiki

Автор Тема: Создание портативных программ с помощью doker.  (Прочитано 1153 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн totiks2012

  • Ветеран
  • *****
  • Сообщений: 885
  • Репутация: +24/-0
  • Автор темы
# Создание портативных программ с помощью doker.

### 1. Установка

В первую очередь мы должны озаботится наличием достаточного места на hdd или ssd,  потому что doker контейнер , это по сути дистрибутив linux в контейнере , отвязаный от основной системы , в котором будем работать с  правами root .

Итак установка .

Перед установкой doker обновим список пакетов apt :

Код
sudo apt update

далее вводим команды:
Код
curl -fsSL https://get.docker.com -o get-docker.sh

после выполнения этой команды вводим в терминал:

Код
sudo sh get-docker.sh

после этого у нас в системе установлен  doker.

Теперь мы должны запустить службу doker.

### 2. Запуск doker

Код
sudo systemctl start docker

Теперь у нас всё готово чтоб запустить контейнер:

Код
sudo docker run -it --rm debian:bullseye-slim /bin/bash

обратите внимание контейнер запущен с опцией ` --rm`

то есть после закрытия терминала и перезагрузки системы контейнер будет удален , если вам нужен контейнер и после перезагрузки, опцию `--rm` убираем.

Дожидаемся пока создастся образ контейнера (скачает нужные пакеты для файловой системы), и в контейнере откроется командная строка от root пользователя.



### 3. Устанавливаем программу в doker.

В контейнере, который запущен, устанавливаем например пакет pluma:

Код
apt update

Код
apt install -y pluma

### 4. Добыча ресурсов программы (в нашем случае pluma)

Теперь мы должны отфильтровать все зависимости и компоненты относящиеся к pluma.

Для этого вводим в терминал контейнера последовательность команд:

Код
apt install rsync

Код
mkdir -p ~/pluma  # Создаем каталог ~/pluma (если его нет)

Код
dpkg-query -L pluma > pluma_files.txt  # Получаем список файлов пакета pluma и сохраняем в файл

Код
apt-cache depends pluma | grep "  Depends: " | sed 's/  Depends: //' |  xargs dpkg-query -L >> pluma_files.txt  # Добавляем зависимости в  список файлов

Код
rsync -av --files-from=pluma_files.txt / ~/pluma/  # Копируем файлы в ~/pluma/

Теперь открываем терминал основной системы, и узнаем CONTAINER ID нашего контейнера doker, для этого в терминал основной системы вводим команду:

Код
sudo docker ps

под CONTAINER ID мы увидим набор цифр это код нашего CONTAINER ID, копируем его.

и в терминале основной системы вводим команды:

Код
mkdir /home/live/dok_cont

и в команде

Код
sudo docker cp CONTAINER_ID:/root/pluma /home/live/dok_cont

подменяем CONTAINER_ID на наш код, у меня получилось так :

Код
sudo docker cp 064bc6d978f9:/root/pluma /home/live/dok_cont

Теперь если мы зайдем в домашний каталог /home/live/dok_cont то увидим  каталог pluma c ресурсами для портативной программы.

Но так как копировали от имени root то владельцем каталога естественно является root, и мы должны его вернуть во владения пользователя

для этого в терминале основной системы вводим команду

Код
sudo chown -R live:live /home/live/dok_cont/pluma/

где live это имя пользователя ну а /home/live/dok_cont/pluma/ это каталог который нужно было вернуть во владение пользователя.

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

Для этого напомню в каталоге pluma, с ресурсами достаточно,

 поместить LAUNCER скрипт следующего содержания.



Код
#!/bin/sh
HERE="$(dirname "$(readlink -f "$0")")"
last_dir=$(basename "$HERE")
#usr="$HERE"
#sudo mkdir -p /usr/share/
#sudo mount --bind $HERE/usr/share/$last_dir/ /usr/share/$last_dir/
GSETTINGS_SCHEMA_DIR=$HERE/usr/share/glib-2.0/schemas/ LD_LIBRARY_PATH=$HERE/usr/lib/x86_64-linux-gnu $HERE/usr/bin/$last_dir

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

Код
pluma:16049): GLib-GIO-ERROR **: 12:13:05.836: Settings schema 'org.mate.pluma' is not installed
Trace/breakpoint trap

для того чтоб это поведение вылечить, необходимо вначале установить в основную систему на всякий случай libglib2.0-bin

Код
sudo apt install libglib2.0-bin

далее вводим команду 

Код
glib-compile-schemas /home/live/dok_cont/pluma/usr/share/glib-2.0/schemas/

после этого запускаем снова LAUNC файл из каталога pluma, и текстовой редактор запустится.

Все терминалы после окончания работ, нужно закрыть, и после перезагрузки doker контейнер будет удалён.
« Последнее редактирование: 09 Октябрь 2023, 08:24:40 от totiks2012 »

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5341
  • Репутация: +139/-1
Re: Создание портативных программ с помощью doker.
« Ответ #1 : 07 Октябрь 2023, 15:49:35 »
Сделай небольшую выжимку. Тема может и интересная, но в таком виде малопривлекательная.

Оффлайн totiks2012

  • Ветеран
  • *****
  • Сообщений: 885
  • Репутация: +24/-0
  • Автор темы
Re: Создание портативных программ с помощью doker.
« Ответ #2 : 07 Октябрь 2023, 22:54:36 »
Сделай небольшую выжимку. Тема может и интересная, но в таком виде малопривлекательная.
переделаю, благо есть md файл, я понимаю примерно что требуется ... но не сегодня, сегодня слегка уже не в форме... :)
« Последнее редактирование: 07 Октябрь 2023, 22:56:17 от totiks2012 »

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5341
  • Репутация: +139/-1
Re: Создание портативных программ с помощью doker.
« Ответ #3 : 07 Октябрь 2023, 23:57:08 »
На всякий, я имел ввиду забабахать статью прямо в теме. Если ожидается ну очень много текста, то сделать выжимку, дайджест, анонс на много букв ...  :)

Оффлайн totiks2012

  • Ветеран
  • *****
  • Сообщений: 885
  • Репутация: +24/-0
  • Автор темы
Re: Создание портативных программ с помощью doker.
« Ответ #4 : 08 Октябрь 2023, 07:46:49 »
Сделал, если что нужно поправить опять таки вечером.
upd:  тянет меня иногда на лирику, уж простите. Убрал лирику, и да так более лучше ибо все по делу.
« Последнее редактирование: 08 Октябрь 2023, 08:05:10 от totiks2012 »