Все готово, новая версия скрипта здесь:
http://kostyalamer.narod.ru/patch_creator/patch_creator.htmlСкачиваем, распаковываем и собираем свои дистрибутивы ( патчи ).
Вставляю сюда краткую справку из самого скрипта:
----------------------------------------------------------------------------------------------------------------------------
Patch_Create v0.2 beta
Эта прога. предназначена для создания установочного патча
на минимальные сборки ALTLinux (или других сборок Альта) , который представляет
собой локальный репозитарий из скачанных пакетов и текстовой файл setup.
Так же есть и другие интересные возможности, которые описаны ниже.
Очень неплохо программа справляется с бэкапом небольшой системы.
В результате работы создается iso-образа диска с патчем, для последующей
записи на болванку
Примерный алгоритм действия такой:
1) На установленный минимал, ставите необходимые Вам пакеты
(собираете свой дистрибутив).Обязательно надо установить пакеты
apt-repo-tools и genisoimage
2) Запускаете этот скрипт и копируете пакеты из кэша Apt-а.
3) Копируете все что необходимо для работы в новой системе
в папку /Repa_Local/local/Arhiv ( например скрытые системные каталоги ./ или
файлы, а можно и весь свой домашний каталог туда записать и заархивировать
таким способом практически всю систему ). Все это автоматически будет
скопировано обратно в новый домашний каталог при установке патча.
Копируете все необходимые папки с настройками ( например если необходимо
создать на разных компах одинаковых пользователей:
/etc/passwd, /etc/shadow, /etc/group ) в папку /Repa_Local/local/System.
Все содержимое этого каталога будет автоматически скопировано в корневой
каталог новой системы. ВНИМАНИЕ !!! Пользуйтесь этой возможностью осторожно
бездумное ковыряние системных каталогов под root-ом убивает пингвина
Вы можете из программы сохранять список пакетов в файл ( в его названии
автоматически прописываются дата и время создания ) Периодически это
полезно делать для сохранения особо удачных пакетных конфигураций системы.
4) Готовите iso для записи на диск. Готовое iso находится в Вашем домашнем
каталоге и в его названии автоматически прописывается дата и время создания.
5) Выходите из этой программы и записываете iso-образ на болванку.
Вы можете редактировать репу и добавлять пакеты из других источников
при помощи mc (2-ой пункт меню ) но при этом необходимо следить
за зависимостями пакетов вручную.
Устанавливается патч на новый минимал так:
Вставляется диск, после чего для первого CD/DVD-ROM-а (master, а не slave)
в терминале под обычным пользователем набираем: mount /dev/hdc
потом либо набираем там же sh /media/cdrom/setup
либо в mc под пользователем входим в каталог /media/cdrom/ и там набираем
команду sh setup, как кому удобнее.
Для полного счастья в терминале под отмонтируем
диск umount /dev/hdc ( можно этого не делать, при перезагрузке
все будет отмонтировано автоматически )
В общем, счастливого хака, собирайте свои патчи и делитесь ими, или
бэкапьте свои системы этой программой и живите спокойно!
Все что скопируете в каталог /Repa_local/local/ и ниже будет записано в iso
( но только из папок Arhiv и System копируется автоматом при установке патча
смотри 3-ий пункт этой справки ),
т.е. можете делать папки с обоями, закатывать туда
разные хелпы , вместо моего Setup-а закатать собственный инсталятор, который
кроме установки пакетов будет править разные конфиги и т.д.
---------------------------------------------------------------------------------------------------------------------
Вот и сам скрипт для любителей Bash-а:
#!/bin/sh
# RPM_On_Disk_PathCreator v0.2 beta kostyalamer 02/2010
#------------------------------
function proverka ()
{
if [ `rpm -qa | grep -c $1` -eq 0 ]; then echo '<--- установите пакет ' $1 ' !!! --->'; read ; exit 1 ;
fi
}
#------------------------------
function create_dir ()
{
mkdir -p ~/Repa_Local/local/i586/ 2>/dev/null
mkdir ~/Repa_Local/local/.disk 2>/dev/null
mkdir ~/Repa_Local/local/Arhiv 2>/dev/null
mkdir ~/Repa_Local/local/System 2>/dev/null
cd ~/Repa_Local/local/i586/
mkdir base RPMS.local SRPMS.local 2>/dev/null
}
#------------------------------
function pause ()
{
echo "
"
echo -e "\033[1m Нажмите Enter !!! \033[0m"
read bred
}
#------------------------------
function statistic ()
{
a=`ls $HOME/Repa_Local/local/i586/RPMS.local/ *.rpm 2>/dev/null | wc -l`
b=`ls $HOME/Repa_Local/local/i586/SRPMS.local/ *.rpm 2>/dev/null | wc -l`
c=`expr $a + $b - 2`
cd $HOME/Repa_Local/local/i586/
echo " В вашем репозитарии " $c " RPM "
echo -n " Занимаемый объем на винте: ";du -s -h
echo ""
}
#------------------------------
function genbase ()
{
rm -f $HOME/Repa_Local/local/i586/base/*;
a=`ls $HOME/Repa_Local/local/i586/RPMS.local/ *.rpm 2>/dev/null | wc -l`
b=`ls $HOME/Repa_Local/local/i586/SRPMS.local/ *.rpm 2>/dev/null | wc -l`
c=`expr $a + $b`
if [ `expr $c` -gt 2 ]; then
cd ~/Repa_Local/local/i586/RPMS.local/
ls -1 > ../pkg.list
echo "Alt Repa `date +%d/%m/%y_%H:%M`" >~/Repa_Local/local/.disk/info
echo '
<--- работает genbasedir --->
'
genbasedir --progress --label="Repa `date +%d/%m/%y_%H:%M`" --origin="ALT Linux" --topdir=$HOME/Repa_Local/local/ i586 local
echo $'\a'
echo '
Репозитарий с пакетами успешно создан и находится
в папке /Repa_Local вашего домашнего каталога,теперь
вам осталось записать этот каталог на диск !
'
sleep 2
fi;
}
#------------------------------
function rpm_to_repa ()
{
clear
echo -e "\033[1m
--- Копируем пакеты, введите пароль root-а ---
\033[0m"
su -c 'if [ `ls /var/cache/apt/archives/*.rpm | wc -l` -eq 1 ]; then echo " в кэш-е Apt-а нет скачанных rpm-ов !!! "; pause; exit;
fi;
cp -v /var/cache/apt/archives/*.rpm $HOME/Repa_Local/local/i586/RPMS.local;
cp -v /var/cache/apt/archives/*.src.rpm $HOME/Repa_Local/local/i586/SRPMS.local';
rm -f $HOME/Repa_Local/local/i586/RPMS.local/*.src.rpm;
sleep 1
}
function menu ()
{
clear
statistic
echo ""
echo -e "\033[1m ----- Введите нужную цифру ! ----- \033[0m"
echo ""
echo "1) Копировать rpm-ы из кеша Apt-а."
echo "2) Редактировать репу при помощи mc."
echo "3) Приготовить iso для записи диск."
echo "4) Удалить все пакеты из репы."
echo "5) Удалить пакеты из кеша Apt-а."
echo "6) Справка."
echo "7) Сохранить список пакетов репы в файл."
echo "8) Выход."
}
# ---------- Программа ----------
clear
echo " Подождите, комп. думает ! "
proverka "apt-repo-tools"
if [ $? -eq 1 ]; then
exit
fi
create_dir;
genbase;
clear
statistic
echo ""
echo -e "\033[1m ----- Введите нужную цифру ! ----- \033[0m"
echo ""
select punkt in "Копировать rpm-ы из кеша Apt-а." "Редактировать репу при помощи mc." "Приготовить iso для записи диск." "Удалить все пакеты из репы." "Удалить пакеты из кеша Apt-а." "Справка." "Сохранить список пакетов репы в файл." "Выход."
do
case $punkt in
"Копировать rpm-ы из кеша Apt-а.")
clear
rpm_to_repa
genbase
menu
;;
"Редактировать репу при помощи mc.")
clear
proverka "mc"
if [ $? -eq 0 ]; then
echo "Редактирование репозитария в mc !"
echo "Можно удалить лишние пакеты или
добавить пакеты вручную из других
источников "
echo ""
echo "Выход из mc по F10 "
pause
mc -U $HOME/Repa_Local/local/i586/
genbase
else echo " Установите пакет mc ! "; pause
fi
menu
;;
"Приготовить iso для записи диск.")
clear
proverka "genisoimage"
if [ $? -eq 0 ]; then
echo "Записываем образ диска."
echo "su -c 'apt-cdrom add ;mount /dev/hdc ;cp -v /media/cdrom/i586/RPMS.local/*.rpm /var/cache/apt/archives ;
apt-get install /media/cdrom/i586/RPMS.local/*.rpm ; cp -r /media/cdrom/System/* /';
cp -r /media/cdrom/Arhiv/* /media/cdrom/Arhiv/.[a-zA-Z0-9]* ~ " > $HOME/Repa_Local/local/setup
#chmod 711 $HOME/Repa_Local/local/setup
genisoimage -r -v -J -l -o ~/patch.iso ~/Repa_Local/local
mv -f ~/patch.iso ~/patch`date +%d%m_20%y_%H%M`.iso
clear
echo " файл .iso для записи готов !!! ";
sleep 2
else echo -e "\033[1m Установите пакет genisoimage ! \033[0m"; pause
fi
menu
;;
"Удалить все пакеты из репы.")
clear
echo "Удалить все пакеты из репы."
cd $HOME/Repa_Local/local/i586/
rm -f RPMS.local/* SRPMS.local/* base/*
sleep 1
menu
;;
"Удалить пакеты из кеша Apt-а.")
clear
echo -e "\033[1m Если вы действительно хотите удалить
все скачанные пакеты введите Y, если нет
просто нажмите на Enter ! \033[0m"
echo ""
read l
if [ $l = "Y" -o $l = "y" ]; then
echo -e "\033[1m Для удаления пакетов введите пароль root ! \033[0m"
su -c 'apt-get clean'
fi
menu
;;
"Справка.")
clear
echo " Справка:"
echo ""
echo " Patch_Create v0.2 beta"
echo ""
echo ' Эта прога. предназначена для создания установочного патча
на минимальные сборки ALTLinux (или других сборок Альта) , который представляет
собой локальный репозитарий из скачанных пакетов и текстовой файл setup.
Так же есть и другие интересные возможности, которые описаны ниже.
Очень неплохо программа справляется с бэкапом небольшой системы.
В результате работы создается iso-образа диска с патчем, для последующей
записи на болванку
Примерный алгоритм действия такой:
1) На установленный минимал, ставите необходимые Вам пакеты
(собираете свой дистрибутив).Обязательно надо установить пакеты
apt-repo-tools и genisoimage
2) Запускаете этот скрипт и копируете пакеты из кэша Apt-а.
3) Копируете все что необходимо для работы в новой системе
в папку /Repa_Local/local/Arhiv ( например скрытые системные каталоги ./ или
файлы, а можно и весь свой домашний каталог туда записать и заархивировать
таким способом практически всю систему ). Все это автоматически будет
скопировано обратно в новый домашний каталог при установке патча.
Копируете все необходимые папки с настройками ( например если необходимо
создать на разных компах одинаковых пользователей:
/etc/passwd, /etc/shadow, /etc/group ) в папку /Repa_Local/local/System.
Все содержимое этого каталога будет автоматически скопировано в корневой
каталог новой системы. ВНИМАНИЕ !!! Пользуйтесь этой возможностью осторожно
бездумное ковыряние системных каталогов под root-ом убивает пингвина :-)
Вы можете из программы сохранять список пакетов в файл ( в его названии
автоматически прописываются дата и время создания ) Периодически это
полезно делать для сохранения особо удачных пакетных конфигураций системы.
4) Готовите iso для записи на диск. Готовое iso находится в Вашем домашнем
каталоге и в его названии автоматически прописывается дата и время создания.
5) Выходите из этой программы и записываете iso-образ на болванку.
Вы можете редактировать репу и добавлять пакеты из других источников
при помощи mc (2-ой пункт меню ) но при этом необходимо следить
за зависимостями пакетов вручную.
Устанавливается патч на новый минимал так:
Вставляется диск, после чего для первого CD/DVD-ROM-а (master, а не slave)
в терминале под обычным пользователем набираем: mount /dev/hdc
потом либо набираем там же sh /media/cdrom/setup
либо в mc под пользователем входим в каталог /media/cdrom/ и там набираем
команду sh setup, как кому удобнее.
Для полного счастья в терминале под отмонтируем
диск umount /dev/hdc ( можно этого не делать, при перезагрузке
все будет отмонтировано автоматически )
В общем, счастливого хака, собирайте свои патчи и делитесь ими, или
бэкапьте свои системы этой программой и живите спокойно!
Все что скопируете в каталог /Repa_local/local/ и ниже будет записано в iso
( но только из папок Arhiv и System копируется автоматом при установке патча
смотри 3-ий пункт этой справки ),
т.е. можете делать папки с обоями, закатывать туда
разные хелпы , вместо моего Setup-а закатать собственный инсталятор, который
кроме установки пакетов будет править разные конфиги и т.д.
----------------------------------------------------------------------------
О всех замеченных багах, а так же пожеланиях по работе программы
просьба писать в раздел разработка форума AltLinux
или в гостевую книгу моего сайта http://kostyalamer.narod.ru .
Благодарности: автору genbasedir - а , NotHAM-у за его минимальные сборки
Drool-у за его help о том как создавать локальную репу, swordrex-у за его
интересные идеи, которые я использовал в этой версии скрипта.
Лицензия: ДЧХ - делай что хочешь.
P.S. Spectrum forever ! '
pause
menu
;;
"Сохранить список пакетов репы в файл.")
cd ~/Repa_Local/local/i586/RPMS.local/
ls -1 > ~/Repa_Local/pkg.list
mv -f ~/Repa_Local/pkg.list ~/Repa_Local/pkg`date +%d%m_20%y_%H%M`.list
clear
echo " Список пакетов сохранен !!! "
sleep 2
menu
;;
"Выход.")
break
;;
*)
echo " Ошибка выбора !"
sleep 3
menu
;;
esac
done
Используя новые возможности скрипта я сразу (для проверки) накатил на minimal antico с кучей иконок от старой системы и настроенный bmp. Очень рекомендую пользоваться при установке патчей sh setup и забыть про установку патчей через Synaptic.
В общем, собираем свои патчи, обсуждаем их состав, делимся самыми удачными. Теперь каждый , более-менее грамотный пользователь Альта может почувствовать себя разработчиком ;)
Счастливого хака ( Р.Столмен)!!!
PS Вопросы по скрипту будем обсуждать в этой теме, а где обсуждать патчи надо определиться .