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

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

Страницы: [1] 2 3 ... 10
1
Проанализировав последний скрипт еще раз, увидел что пользовательский опыт, способ взаимодействия скрипта менеджера модулей mod_man можно сильно улучшить.
Этот скрипт представляет собой простой и удобный в использовании менеджер модулей для Linux. Он позволяет активировать и деактивировать модули, а также выбирать,
загружать их на постоянной основе или только для текущего сеанса.

Как использовать

Запустите скрипт с помощью bash mod_man.sh или сделайте его исполняемым с помощью chmod +x mod_man.sh и запустите его с помощью ./mod_man.sh.
Выберите действие: активировать или деактивировать.
Если вы решите активировать модуль, выберите, загружать его постоянно или только для текущего сеанса.
Выберите модуль, который вы хотите активировать или деактивировать.
Скрипт позаботится обо всем остальном!
Описание скрипта
Скрипт выполняет следующие действия:

Проверяет, установлена ​​ли утилита peco. В противном случае сценарий завершается с сообщением об ошибке.
Предлагает пользователю выбрать действие: активировать или деактивировать.
Если пользователь решает активировать модуль, сценарий предлагает ему выбрать, загружать ли его постоянно или только для текущего сеанса.
Скрипт ищет доступные модули в каталоге ~/modules и отображает их в списке с помощью peco.
Выбранный модуль монтируется в каталог /mnt.
Скрипт создает файл со спецификациями модуля в каталоге ~/.config.
Скрипт создаёт символические ссылки на все файлы и каталоги из модуля в файловую систему и записывает пути символических ссылок в файл со спецификациями модуля.
Скрипт выполняет дополнительные действия, такие как составление схем и обновление базы данных рабочего стола.
Если пользователь выбрал постоянную загрузку модуля, скрипт создает постоянный файл, скрипт автозагрузки и файл рабочего стола для выбранного модуля.
Если пользователь решает деактивировать модуль, сценарий ищет смонтированные модули в каталоге ~/.config и отображает их в списке с помощью peco.
Скрипт читает файл со спецификациями модуля и удаляет символические ссылки.
Скрипт размонтирует каталог модуля и удалит его.
Скрипт обновляет базу данных рабочего стола.
Если модуль был загружен постоянно, скрипт удаляет постоянный файл, скрипт автозагрузки и файл рабочего стола для выбранного модуля.
Примечание. Для выполнения некоторых действий сценарий использует sudo, поэтому убедитесь, что у вас есть необходимые разрешения.
  В итоге скрипт предоставляет полноценный Менеджер модулей, и похож свой функциональность на тот что был в старом puppy linux 2.7-3.0, там правда утилиты были разделены по своим Gui
код во вложении, для публикации напрямую великоват

прошу тестов .
upd: Этот скрипт будет работать на любом linux дистрибутиве , будь он live или нет.
2
После установки проприетарных дряйверов МХ грузится до обоев рабстола и монитор отключается насовсем, а в Минте дряйвер навяливает разрешение, которое не поддерживает монитор. Попытка вручную внести изменения не дала результата - сначала грузится правильное разрешение на части экрана, а потом включается кривое. Может скрипт написать по переводу в норму?
3
Всё скрипты в топике темы! Сердечное Спасибо всем кто участвовал !
4
только пустые папки не удаляет в /mnt.
да это моё упущение... но эти пустые папки ни на что не влияют, но для эстетики да можно их и удалить, я внесу эту правку в код.

О значит переносимость и повторяемость в наличии! Спасибо за тест!
5
Проверил скрипт mod_man в вирте на roll2305-23.06-x86_64.iso. Вроде нормально отработал, только пустые папки не удаляет в /mnt.

Приложил лог, как это выглядит в данной сборке и в арче в частности.
6
подумал а чего тянуть вот код скрипта для создания модулей как и говорил расчитан для 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

7
Программное обеспечение 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 я погорячился.
8
По результатам тестирования последнего скрипта
Код
#!/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 , с него сейчас пишу, результат просто вдохновляющий!
9
Надо ли изобретать? Не лучше ли передрать проверенный код у Тинкоре?
я смотрел и ничего не понял, у них всё завязано на инсталятор программ, и это не один скрипт ,там этим занимается группа скриптов, каждый выполняет свою функцию,инсталятор по ходу монтирует squashfs модуль, далее пробрасываются симлинки , у них всё завязано на свою структуру, вероятно всё делает tce-load вот он https://disk.yandex.ru/d/u_3Vw1tHA31-Aw
по сути они делают всё тоже самое  к чему я пришёл, и им проще потому что , сама система упрощеная её взаимосвязи труднее нарушить, большую систему проще ушатать , потому модули нужно тщательно тестировать перед распространением, ну и сам скрипт дорабатывать, мне проще сделать всё заново, чем понять как это работает в tinyCore, а скопировать напрямую вы же сами  понимаете что это так не работает...
10
Надо ли изобретать? Не лучше ли передрать проверенный код у Тинкоре?
Страницы: [1] 2 3 ... 10