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

Последние сообщения

Страницы: 1 2 [3] 4 5 ... 10
21
подумал а чего тянуть вот код скрипта для создания модулей как и говорил расчитан для debian
Код
#!/usr/bin/env bash
#set -x
mkdir -p ~/apptool
cd ~/apptool
# Проверка наличия инструментов
#if [ ! -f appimagetool ]; then
  #wget -q https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage -O appimagetool
  #chmod a+x appimagetool
#fi

if [ ! -f pkg2appimage ]; then
  wget -q https://raw.githubusercontent.com/ivan-hc/AM-application-manager/main/tools/pkg2appimage
  chmod a+x pkg2appimage
fi
# Установка необходимых зависимостей
sudo apt install imagemagick binutils

# Создание временной директории
mkdir -p tmp
cd tmp



# Создание файла рецепта
echo "app: $1
ingredients:" > recipe.yml

cat >> recipe.yml <<EOF
  dist: debian
  arch: $(arch)
  sources:
    - deb http://deb.debian.org/debian/ stable main contrib non-free 
    - deb http://deb.debian.org/debian/ stable-updates main contrib non-free
    - deb http://security.debian.org/debian-security stable/updates main contrib non-free
  packages: 
    - $1 
EOF

# Скачивание пакетов и сборка APPDIR
~/apptool/pkg2appimage ./recipe.yml   

# Копируем каталог с ресурсами в ~/portapps
echo "Копируем каталог с ресурсами в ~/portapps "
mkdir -p ~/portapps/$1.AppDir
cp -r ./$1/$1.AppDir ~/portapps/
cd ~/portapps/$1.AppDir
# Имя файла из десктоп-файла
requested_filename=$(grep -m 1 -o '^Icon=.*' *.desktop | cut -d '=' -f 2-)
echo "$requested_filename"
# Переименовываем app.png
#cd ~/portapps/$1.AppDir
image="$(find /usr/share/icons/gnome/48x48/apps/ -name "$requested_filename.png")"
# Добавляем изображение app.png в ~/portapps/$1.AppDir
cp "$image" ~/portapps/$1.AppDir/

# Сборка AppImage
#ARCH=$(arch) ~/apptool/appimagetool -n ~/portapps/$1.AppDir

cd ~/apptool
rm -rf ./tmp
cd ~/portapps/$1.AppDir
rm ./AppRun
rm ./*desktop
for locale in $(ls ~/portapps/$1.AppDir/usr/share/locale/ | grep -Ev "en|ru"); do
    rm -rf ~/portapps/$1.AppDir/usr/share/locale/$locale
done
rm -rf ~/portapps/$1.AppDir/usr/share/man/*
rm -rf ~/portapps/$1.AppDir/usr/share/help/*

cd ..
mksquashfs ./"$1.AppDir" ./"$1.AppDir".sb -comp gzip -b 256K -Xcompression-level 9

22
Программное обеспечение Linux / Re: [Htop: управление процессами]
« Последний ответ от krasnyh 12 Апрель 2024, 14:28:03 »
Не знаю, насколько актуальная версия htop в здешних сборках, но желательно ставить последние версии, учитывая популярность использования zswap/zram.

На скрине, в графиках, можно увидеть добавленные строки frontswap и compressed.

https://github.com/htop-dev/htop/pull/1153


upd. Похоже только для zswap, про zram я погорячился.
23
По результатам тестирования последнего скрипта
Код
#!/bin/bash
set -x

while true; do
    # Проверки
    command -v peco >/dev/null || { echo "Требуется утилита peco"; exit 1; }

    # Выбор модуля
    selected_module="$(find ~/modules -maxdepth 1 -type f | sed 's|.*/||' | peco)"

    if [ -z "$selected_module" ]; then
        echo "Выход из скрипта."
        break
    fi

    # Путь к файлу спецификации модуля
    spec_file="$HOME/.config/special_file_${selected_module}.txt"
   
   # Ищем и удаляем битые символические ссылки в системе
   echo "Поиск и удаление битых ссылок: ЖДИТЕ"
    sudo find /usr /var /etc -depth -type l ! \( -path /proc -o -path /sys -o -path /dev \) -prune -o -type l ! -exec test -e {} \; -print -delete
    echo "БИТЫЕ ССЫЛКИ УДАЛЕНЫ!"
    # Меню действия
    ACTION=$(echo -e "Активировать\nДеактивировать" | peco --prompt "Выберите действие:")

    case "$ACTION" in

        "Активировать")

            SOURCE_DIR="$HOME/modules/$selected_module"
            TARGET_DIR="/mnt/$(basename "$selected_module" .sb)"

            # Создаем каталог в /mnt с именем выбранного модуля
            sudo mkdir -p "$TARGET_DIR"

            # Монтируем выбранный модуль в /mnt
            sudo mount -t squashfs -o loop "$SOURCE_DIR" "$TARGET_DIR"

            # Создаем файл спецификации с именем модуля
            spec_file="$HOME/.config/special_file_${selected_module%.*}.txt"
            touch "$spec_file"

            # Копируем все файлы и каталоги из модуля в файловую систему
            # и записываем пути символических ссылок в файл спецификации
            #sudo cp -rs --no-clobber "$TARGET_DIR"/* /
            sudo cp -rsPn "$TARGET_DIR"/* /
            find "$TARGET_DIR" -type f -exec echo {} \; | sed "s|$TARGET_DIR||" >> "$spec_file"

            # Продолжаем с остальными действиями, такими как компиляция схем и т.д.
            sudo glib-compile-schemas /usr/share/glib-2.0/schemas/
            sudo ldconfig
            sudo rm -rf ~/.cache/menus/
            sudo update-desktop-database
            lxpanelctl restart

            echo "Модуль АКТИВИРОВАН!"
            sleep 3
            ;;

        "Деактивировать")
            TARGET_DIR="/mnt/$(basename "$selected_module" .sb)"

            # Читаем файл спецификации и удаляем символические ссылки
            #xargs -a "$HOME/.config/special_file_${selected_module%.*}.txt" sudo rm -f
xargs -a "$HOME/.config/special_file_${selected_module%.*}.txt" sh -c 'for file do
  if [ -L "$file" ]; then
    sudo rm -f "$file"
  else
    echo "Skipping real file: $file"
  fi
done'
            # Удаляем файл спецификации
            rm -f "$HOME/.config/special_file_${selected_module%.*}.txt"

            # Отмонтируем каталог
            sudo umount "$TARGET_DIR"
            sudo rm -rf ~/.cache/menus/
            sudo update-desktop-database
            lxpanelctl restart
            echo "Модуль ДЕАКТИВИРОВАН!"
            sleep 3
            ;;
    esac

    echo "Готово"
done

остаюсь более чем довольным код стабилизировался, работает хорошо, файловую систему не портит, еще пару дней покручу и скрипт в топик . Напомню я использую sb модули, вы можете использовать какие угодно, главное чтоб указали это в 31 строке скрипта а также в 61 строке (строка TARGET_DIR="/mnt/$(basename "$selected_module" .sb)"), замените расширение sb на расширение ваших модулей, скрипт будет их искать  в ~/modules

upd: И ведь krasnyh говорил об этом---
Как просто. ) Но у нас ведь копирование создание ссылок в /. И чтобы потом удалять, надо как минимум список иметь созданных ссылок, и лучше с точной датой до секунды, чтоб лишнего не удалить.--- прислушался  я бы тогда к его словам , скрипт был бы уже тогда написан, но я тогда вероятно даже не совсем понял о чём речь, но ум помню точно зацепился за эти слова, и за слова сказанные остальными участниками темы, мужики спасибо вам!

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

upd3: Написал вернее переделал скрипт для appimage для добычи ресурсов для модулей, и их создания используя репозиторий debian 12 процесс полностью автоматизирован, скрипт назвал repo2sb,  Хочу протестировать скрипты и посмотреть на переносимость, буду пробовать на 2-х своих кастомных live-kit , а так же на minios, если результаты удовлетворят будет публикация в топик темы, на одном дистрибутиве с lxde , с него сейчас пишу, результат просто вдохновляющий!
24
Надо ли изобретать? Не лучше ли передрать проверенный код у Тинкоре?
я смотрел и ничего не понял, у них всё завязано на инсталятор программ, и это не один скрипт ,там этим занимается группа скриптов, каждый выполняет свою функцию,инсталятор по ходу монтирует squashfs модуль, далее пробрасываются симлинки , у них всё завязано на свою структуру, вероятно всё делает tce-load вот он https://disk.yandex.ru/d/u_3Vw1tHA31-Aw
по сути они делают всё тоже самое  к чему я пришёл, и им проще потому что , сама система упрощеная её взаимосвязи труднее нарушить, большую систему проще ушатать , потому модули нужно тщательно тестировать перед распространением, ну и сам скрипт дорабатывать, мне проще сделать всё заново, чем понять как это работает в tinyCore, а скопировать напрямую вы же сами  понимаете что это так не работает...
25
Надо ли изобретать? Не лучше ли передрать проверенный код у Тинкоре?
26
 :) нашёл причину почему ломается система ,при дезактивации, дело в том что в файл спецификации попадает всё подряд из /mnt/name_module, так как иду почти на ощупь подрываясь на собственых ошибках, то я не продумал логику, вначале я ввел условие для cp не создавать ссылку на файл и симлинк если он существует, но так как в спек файле он фигурирует то он удалялся, то есть я сносил важные части системы  ??? , достаточно было ввести необходимое условие проверяющее перед удалением файл или смволическая ссылка и всё такое поведение было пресечено.
Внимание код еще сырой использовать на виртуальных машинах либо на системе отведеной для издевательств тестов
код:
Код
#!/bin/bash
set -x

while true; do
    # Проверки
    command -v peco >/dev/null || { echo "Требуется утилита peco"; exit 1; }

    # Выбор модуля
    selected_module="$(find ~/modules -maxdepth 1 -type f | sed 's|.*/||' | peco)"

    if [ -z "$selected_module" ]; then
        echo "Выход из скрипта."
        break
    fi

    # Путь к файлу спецификации модуля
    spec_file="$HOME/.config/special_file_${selected_module}.txt"
   
   # Ищем и удаляем битые символические ссылки в системе
   echo "Поиск и удаление битых ссылок: ЖДИТЕ"
    sudo find /usr /var /etc -depth -type l ! \( -path /proc -o -path /sys -o -path /dev \) -prune -o -type l ! -exec test -e {} \; -print -delete
    echo "БИТЫЕ ССЫЛКИ УДАЛЕНЫ!"
    # Меню действия
    ACTION=$(echo -e "Активировать\nДеактивировать" | peco --prompt "Выберите действие:")

    case "$ACTION" in

        "Активировать")

            SOURCE_DIR="$HOME/modules/$selected_module"
            TARGET_DIR="/mnt/$(basename "$selected_module" .sb)"

            # Создаем каталог в /mnt с именем выбранного модуля
            sudo mkdir -p "$TARGET_DIR"

            # Монтируем выбранный модуль в /mnt
            sudo mount -t squashfs -o loop "$SOURCE_DIR" "$TARGET_DIR"

            # Создаем файл спецификации с именем модуля
            spec_file="$HOME/.config/special_file_${selected_module%.*}.txt"
            touch "$spec_file"

            # Копируем все файлы и каталоги из модуля в файловую систему
            # и записываем пути символических ссылок в файл спецификации
            #sudo cp -rs --no-clobber "$TARGET_DIR"/* /
            sudo cp -rsPn "$TARGET_DIR"/* /
            find "$TARGET_DIR" -type f -exec echo {} \; | sed "s|$TARGET_DIR||" >> "$spec_file"

            # Продолжаем с остальными действиями, такими как компиляция схем и т.д.
            sudo glib-compile-schemas /usr/share/glib-2.0/schemas/
            sudo ldconfig
            sudo rm -rf ~/.cache/menus/
            sudo update-desktop-database
            lxpanelctl restart

            echo "Модуль АКТИВИРОВАН!"
            sleep 3
            ;;

        "Деактивировать")
            TARGET_DIR="/mnt/$(basename "$selected_module" .sb)"

            # Читаем файл спецификации и удаляем символические ссылки
            #xargs -a "$HOME/.config/special_file_${selected_module%.*}.txt" sudo rm -f
xargs -a "$HOME/.config/special_file_${selected_module%.*}.txt" sh -c 'for file do
  if [ -L "$file" ]; then
    sudo rm -f "$file"
  else
    echo "Skipping real file: $file"
  fi
done'
            # Удаляем файл спецификации
            rm -f "$HOME/.config/special_file_${selected_module%.*}.txt"

            # Отмонтируем каталог
            sudo umount "$TARGET_DIR"
            sudo rm -rf ~/.cache/menus/
            sudo update-desktop-database
            lxpanelctl restart
            echo "Модуль ДЕАКТИВИРОВАН!"
            sleep 3
            ;;
    esac

    echo "Готово"
done

но могу сказать стало много лучще чем во вчерашнем коде, я приближаюсь к тому что хотел... а хотел я как и заявлял в топике темы добится модульности на любой системе, без aufs , overlayfs
27
PuppyRus-A [PRA] / Re: Видеодрайвера xf86-video-intel vs modesetting
« Последний ответ от krasnyh 11 Апрель 2024, 22:55:12 »
Все тоже самое, что не раз уже писалось. Не стартуют иксы с modesseting+mesa.
X.Org Смена сервера Позволяет GLAMOR вернуться к программному рендерингу Для устаревших графических процессоров
Насколько я понял, с этими изменениями не будет черного экрана при использовании драйвера modesseting со старыми видеокартами (i915), который как раз и падал на ускорителе glamor. И требовалась замена на xf86-video-intel.

Но это не точно. )
28
в шапке теперь финальная версия улучшеный работающий без ошибок скрипт
---------------------------------------------------------------------------------------------------------------

вот следующая итерация моего иследования на тему создания менеджера монтирования модулей используя символические ссылки.
--------
Внимание скрипт может быть опасен, подключаемые модули нужно тестировать в виртуалке.
У меня например sb модуль c libreoffice собраный в minios стабильно ложит систему (распаковал appimage и перепаковал его в sb ,естествено работает понимаю что масло масляное , но хотел понять виноват скрипт или то что положено в модуль  )

Зависимости peco,  мог использовать fzy, но так как скрипт изначально писал с peco сконцентрировался на самом принципе, позже если нужно будет, можно будет переделать с  fzy
-------
что умеет
Ищет в /usr /var /etc битые ссылки и удаляет их.
--
   при выборе опции Активировать)
--
монтирует модуль в /mnt/module_name
--
оттуда прокидывает в систему ссылки с помощью sudo cp -rs --no-clobber
--
также записывает полный путь всех сим_ссылок в спек_файл_имя_модуля в ~/.config для последующей их дезактивации то есть убираем все ссылки одним махом, и модуль дезактивирован
--
 при выборе опции Дезактивировать)
удаляет все символические ссылки прописаные в спек файл модуля
код:
Код
#!/bin/bash
set -x

while true; do
    # Проверки
    command -v peco >/dev/null || { echo "Требуется утилита peco"; exit 1; }

    # Выбор модуля
    selected_module="$(find ~/modules -maxdepth 1 -type f | sed 's|.*/||' | peco)"

    if [ -z "$selected_module" ]; then
        echo "Выход из скрипта."
        break
    fi

    # Путь к файлу спецификации модуля
    spec_file="$HOME/.config/special_file_${selected_module}.txt"
   
   # Ищем и удаляем битые символические ссылки в системе
   echo "Поиск и удаление битых ссылок: ЖДИТЕ"
    sudo find /usr /var /etc -depth -type l ! \( -path /proc -o -path /sys -o -path /dev \) -prune -o -type l ! -exec test -e {} \; -print -delete
    echo "БИТЫЕ ССЫЛКИ УДАЛЕНЫ!"
    # Меню действия
    ACTION=$(echo -e "Активировать\nДеактивировать" | peco --prompt "Выберите действие:")

    case "$ACTION" in

        "Активировать")

            SOURCE_DIR="$HOME/modules/$selected_module"
            TARGET_DIR="/mnt/$(basename "$selected_module" .sb)"

            # Создаем каталог в /mnt с именем выбранного модуля
            sudo mkdir -p "$TARGET_DIR"

            # Монтируем выбранный модуль в /mnt
            sudo mount -t squashfs -o loop "$SOURCE_DIR" "$TARGET_DIR"

            # Создаем файл спецификации с именем модуля
            spec_file="$HOME/.config/special_file_${selected_module%.*}.txt"
            touch "$spec_file"

            # Копируем все файлы и каталоги из модуля в файловую систему
            # и записываем пути символических ссылок в файл спецификации
            sudo cp -rs --no-clobber "$TARGET_DIR"/* /
            find "$TARGET_DIR" -type f -exec echo {} \; | sed "s|$TARGET_DIR||" >> "$spec_file"

            # Продолжаем с остальными действиями, такими как компиляция схем и т.д.
            sudo glib-compile-schemas /usr/share/glib-2.0/schemas/
            sudo ldconfig
            sudo rm -rf ~/.cache/menus/
            sudo update-desktop-database
            lxpanelctl restart

            echo "Модуль АКТИВИРОВАН!"
            sleep 3
            ;;

        "Деактивировать")
            TARGET_DIR="/mnt/$(basename "$selected_module" .sb)"

            # Читаем файл спецификации и удаляем символические ссылки
            xargs -a "$HOME/.config/special_file_${selected_module%.*}.txt" sudo rm -f

            # Удаляем файл спецификации
            rm -f "$HOME/.config/special_file_${selected_module%.*}.txt"

            # Отмонтируем каталог
            sudo umount "$TARGET_DIR"
            sudo rm -rf ~/.cache/menus/
            sudo update-desktop-database
            lxpanelctl restart
            echo "Модуль ДЕАКТИВИРОВАН!"
            sleep 3
            ;;
    esac

    echo "Готово"
done

требует максимальной осторожности в использовании
но на нескольких модулях работает попробую его в паре с скриптом repo2app , посмотрю как себя поведёт
из недостатков десктоп файл символическую ссылку на картинку картинкой не  воспринимает почему-то, но это мелочи , со временем можно пофиксить, тут главное отловить все возможные странные поведения системы, а они есть так что еще раз повторюсь тестировать скрипт в виртуалке или на отдельной как например у меня отведенной для тестов системе.  Буду рад выслушать замечания , критику , и идеи, братцы идеи нужны...
29
В tineCore же как-то ссылки работают. Этой системе уже много лет... Не смотрели, как у них реализовано?
у них потому и система такая маленькая, они максимально обезжирили  систему, а потом прокидывают симлинки и так как это поверх очень небольших взаимосвязей то нечему ломаться, в больших же линуксах, на новые симлинки начинаются динамические подключения системы и есть большая вероятность того что она сломается, я так это понимаю, ну ради интереса играюсь с этим https://forum.puppyrus.org/index.php?topic=24216.0 но приделал учет символьных ссылок и их удаление при дезактивации по спек файлу  чуть позже выложу скрипт, для идей и обсуждения.
30
В tineCore же как-то ссылки работают. Этой системе уже много лет... Не смотрели, как у них реализовано?
увы не смотрел... Но иду смотреть. Мне интересно.
Страницы: 1 2 [3] 4 5 ... 10