Разработки проекта PuppyRus > Программирование и компиляция
Универсальный менеджер монтирования модулей без aufs , overlayfs.
totiks2012:
Представляю финальную версию скрипта менеджера подключения модулей (sb,sfs,squashfs--тип коректируется в скрипте строка 31 и 61 (строка TARGET_DIR="/mnt/$(basename "$selected_module" .sb )) ,
Скрипт использует монтирование модуля с помощью squashfs в /mnt а далее пробрасывает символические ссылки в / .
скрипт использует для вывода меню консольный peco
Модули ложить в ~/modules (для универсальности использования на разных дистрибутивах) Скрипт позволяет активировать деактивровать модуль. Выбираем модуль потом выбираем действие: Активировать , Деактивировать , используем.
====================================================
Следует скачивать менеджер модулей в ответе #55
это финальная верия
тот что ниже без ошибок, но в нём нет важных плюшек
берите из поста #55
====================================================
mod_man.sh
------------------------------
во вложении так же добавил следующую улучшеную версию
менеджера модулей, улучшены взаимодействие
возможность выбора активации на постоянной или временной основе
подробнее на моей странице в вк https://vk.com/@36590075-rabota-so-skriptom-dlya-upravleniya-modulyami-v-linux-s-ispo
================
--- Код ---
#!/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 "$TARGET_DIR"
sudo rm -rf ~/.cache/menus/
sudo update-desktop-database
lxpanelctl restart
echo "Модуль ДЕАКТИВИРОВАН!"
sleep 3
;;
esac
echo "Готово"
done
--- Конец кода ---
------------------------------------------------------
так как на одно сообщение идет 5000 знаков второй скрипт repo2sb для создания модулей поместил во вложении,
этот скрипт для создания этих модулей, годится только для основаных на Debian дистрибутивах
подробно про него можно прочитать тут https://vk.com/@36590075-sozdanie-perenosimyh-modulei-prilozhenii-s-pomoschu-repo2sb
сохранить скрипт с именем repo2sb в ~
использовать так ./repo2sb name_pac , где name_pac имя пакета из репозитория
в результате работы скрипта в каталоге ~/portapps мы получим каталог с ресурсами name_pac.AppDir а также модуль name_pac.AppDir.sb
модуль name_pac.AppDir.sb переместить потом в ~/modules
sfs:
--- Цитата: totiks2012 от 15 Январь 2024, 10:28:56 ---попробую сваять на yad
--- Конец цитаты ---
--- Код ---
# ntf -l `ls -1 |tr "\n" "|"` "name" "info text"
--- Конец кода ---
--- Цитата: totiks2012 от 15 Январь 2024, 10:28:56 ---Модули ложить в ~/modules
--- Конец цитаты ---
Если как в PORTEUS- то тогда уж /optional
Ну и тогда уж такое бы надо
--- Цитата: sfs от 15 Январь 2024, 09:45:53 ---Не увидел в вашем скрипте создание ссылок. Еще надо написать удаление и понять насколько это удобно
--- Конец цитаты ---
Для псевдо подключения
DdShurick:
--- Цитата: sfs от 15 Январь 2024, 11:26:59 ---Не увидел в вашем скрипте создание ссылок
--- Конец цитаты ---
Из cp --help
-R, -r, --recursive рекурсивно копировать каталоги
-s, --symbolic-link создавать символьные ссылки вместо копирования
Теперь видишь?
totiks2012:
--- Цитата: sfs от 15 Январь 2024, 11:26:59 ---Если как в PORTEUS- то тогда уж /optional
--- Конец цитаты ---
у меня будет live-kit сейчас minios , там монструзный путь получится /run/initramfs/memory/data/minios/optional/ потому решил что более универсально для всех ~/modules... но вопрос оставляю открытым для обсуждения.
sfs:
--- Цитата: DdShurick от 15 Январь 2024, 11:33:39 ----s, --symbolic-link
--- Конец цитаты ---
Не знал. Удобно
--- Цитата: totiks2012 от 15 Январь 2024, 12:43:22 ---потому решил что более универсально для всех ~/modules
--- Конец цитаты ---
Тогда уж сделать возможность выбирать
Навигация
Перейти к полной версии