Автор Тема: Пишем патчи на minimal-ы , или поделись своим дистрибутивом !  (Прочитано 15727 раз)

Оффлайн swordrex

  • Участник
  • *
  • Сообщений: 403
    • Pínus
Цитировать
Какую писалку дисков ставим xfburn, brasero или k3b ?

xfburn - самый легкий

brasero - почти комбайн, а k3b - вроде тянет с собой kde-шные вещи.
there is no truth outside of our own awareness

kostyalamer

  • Гость
Ну вот ,товарищи патчестроители ,начинайте скачивать minimal-ы. Постараюсь до воскресного вечера выложить и сборочный скрипт и базовую сборочную среду (можно легко и одним скриптом обойтись). Так что в принципе можете начинать строить дистрибутивы, просто сразу поставьте 2 пакета apt-repo-tools и genisoimage. А остальное все на ваше
усмотрение, любой рабочий стол, любые программы ;)  . Скрипт уже работает, просто осталось все проверить и написать
небольшую встроенную справку.

Оффлайн swordrex

  • Участник
  • *
  • Сообщений: 403
    • Pínus
с нетерпением ждем, минималы уже приготовлены :)
there is no truth outside of our own awareness

Оффлайн aibolit

  • Участник
  • *
  • Сообщений: 388
  • ALT Linux KDesktop 7.0.0 (20130717)
А остальное все на ваше усмотрение, любой рабочий стол, любые программы ;)  . Скрипт уже работает, просто осталось все проверить и написать небольшую встроенную справку.
А если интерфейс проги под KDE-4 заточен (например, ktorrent), а у меня Simply с KDE-3, возможно будет запустить ее или нужно переходить на 4-е кеды?
Per aspera ad Linux! - Через тернии к линуксу!

kostyalamer

  • Гость
to aibolit Не по теме но отвечу , проги от kde4 устанавливаются в /usr/share/kde4/bin там их и запускайте хоть под Симпликом, хоть под чем.
Теперь о деле
Все сделано, скрипт для создания патча лежит здесь:

http://kostyalamer.narod.ru/patch_creator/patch_creator.html

Минимальная базовая патчевая iso-ха тут: http://narod.ru/disk/18093970000/path_kst_bazov01.iso.html

Вот алгоритм создания патча ( его же можно почитать по справке внутри скрипта )

                              Справка:

Эта прога. предназначена для создания установочного патча
на минимальные сборки ALTLinux , который представляет собой
локальный репозитарий из скачанных пакетов и установочный скрипт Setup.
Можно создать iso-образа диска с патчем, для последующей записи на болванку
Примерный алгоритм действия такой:
1) На установленный минимал, ставите необходимые Вам пакеты
(собираете свой дистрибутив).Обязательно надо установить пакеты
            apt-repo-tools  и  genisoimage
2) Запускаете этот скрипт и копируете пакеты из кэша Apt-а.
3) Готовите iso для записи на диск. Готовое iso находится в Вашем домашнем
каталоге и называется path.iso
4) Выходите из этой программы и записываете iso-образ на болванку.
Вы можете редактировать репу и добавлять пакеты из других источников
при помощи mc (2-ой пункт меню ) но при этом необходимо следить
за зависимостями пакетов вручную. При каждом использовании программы в
вашем домашнем каталоге в /Repa_local/local/i586 создается файл pkg.list
со списком установленных в репозитарии пакетов. Периодически сохраняйте
его куда-нибудь и тогда можно вручную откатываться до нужной конфигурации
системы удаляя ненужные пакеты.
Устанавливается патч на новый минимал так:
Вставляется диск, после чего для первого CD/DVD-ROM-а (master, а не slave)
в терминале под root-ом (su -) набираем:  mount /dev/hdc
потом в mc под пользователем копируем Setup в домашний каталог
(сразу и RPM_On_Disk скопируйте ) и просто кликаем мышкой по Setup-у.
Можно и без Setup-а обойтись при помощи Synaptic-а:

1)Добавить компакт-диск 2)обновить
3) список пакетов /состояние/ не установленные.
4)Выделить пакеты и установить.
В общем, счастливого хака, собирайте свои патчи и делитесь ими !

Даб чуть не забыл, все что скопируете в каталог /Repa_local/local/ и ниже
будет записано в iso, т.е. можете делать папки с обоями, закатывать туда
разные хелпы , вместо моего Setup-а закатать собственный инсталятор, который
кроме установки пакетов будет править разные конфиги и т.д.
----------------------------------------------------------------------------
О всех замеченных багах, а так же пожеланиях по работе программы
просьба писать в раздел разработка форума AltLinux
или в гостевую книгу моего сайта http://kostyalamer.narod.ru .
Благодарности: автору genbasedir - а , NotHAM-у за его минимальные сборки
Drool-у за его help о том как создавать локальную репу,

   Лицензия: ДЧХ - делай что хочешь.
   P.S. Spectrum forever !    

Вот скрипт в виде текста:
      
#!/bin/sh
# RPM_On_Disk_PathCreator v0.1 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
 
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) Выход."
}

# ---------- Программа  ----------
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 ; exit' " > $HOME/Repa_Local/local/Setup
    chmod 711 $HOME/Repa_Local/local/Setup
    sleep 1
    genisoimage -r -v -J -l -o ~/path.iso ~/Repa_Local/local
    
       sleep 1
       clear
       echo " файл path.iso готов ";
       pause
      
    
   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.1 beta"
   echo ""
   echo '  Эта прога. предназначена для создания установочного патча
на минимальные сборки ALTLinux , который представляет собой
локальный репозитарий из скачанных пакетов и установочный скрипт Setup.
Можно создать iso-образа диска с патчем, для последующей записи на болванку
Примерный алгоритм действия такой:
1) На установленный минимал, ставите необходимые Вам пакеты
(собираете свой дистрибутив).Обязательно надо установить пакеты
            apt-repo-tools  и  genisoimage
2) Запускаете этот скрипт и копируете пакеты из кэша Apt-а.
3) Готовите iso для записи на диск. Готовое iso находится в Вашем домашнем
каталоге и называется path.iso
4) Выходите из этой программы и записываете iso-образ на болванку.
Вы можете редактировать репу и добавлять пакеты из других источников
при помощи mc (2-ой пункт меню ) но при этом необходимо следить
за зависимостями пакетов вручную. При каждом использовании программы в
вашем домашнем каталоге в /Repa_local/local/i586 создается файл pkg.list
со списком установленных в репозитарии пакетов. Периодически сохраняйте
его куда-нибудь и тогда можно вручную откатываться до нужной конфигурации
системы удаляя ненужные пакеты.
Устанавливается патч на новый минимал так:
Вставляется диск, после чего для первого CD/DVD-ROM-а (master, а не slave)
в терминале под root-ом (su -) набираем:  mount /dev/hdc
потом в mc под пользователем копируем Setup в домашний каталог
(сразу и RPM_On_Disk скопируйте ) и просто кликаем мышкой по Setup-у.
Можно и без Setup-а обойтись при помощи Synaptic-а:

1)Добавить компакт-диск 2)обновить
3) список пакетов /состояние/ не установленные.
4)Выделить пакеты и установить.
В общем, счастливого хака, собирайте свои патчи и делитесь ими !

Даб чуть не забыл, все что скопируете в каталог /Repa_local/local/ и ниже
будет записано в iso, т.е. можете делать папки с обоями, закатывать туда
разные хелпы , вместо моего Setup-а закатать собственный инсталятор, который
кроме установки пакетов будет править разные конфиги и т.д.
----------------------------------------------------------------------------
О всех замеченных багах, а так же пожеланиях по работе программы
просьба писать в раздел разработка форума AltLinux
или в гостевую книгу моего сайта http://kostyalamer.narod.ru .
Благодарности: автору genbasedir - а , NotHAM-у за его минимальные сборки
Drool-у за его help о том как создавать локальную репу,

   Лицензия: ДЧХ - делай что хочешь.
   P.S. Spectrum forever !              '
 
   pause
   menu
;;
 "Выход.")
   break
;;
 *)
  echo " Ошибка выбора !"
  sleep 3
  menu
;;
esac
done
 

Все остальное напишу вечером ( про antico . pcman и т.п. ) , немного устал от компа  :-X
Главное можете начинать работать !

Да чуть не забыл, как поставите патч, Setup из хомяка стирайте и отмонтируйте CD-Rom под root-ом : umount /dev/hdc.
И еще в iso-ху я и скрипт закатал, если будете ее скачивать то скрипт скачивать не нужно .
« Последнее редактирование: 20.02.2010 13:51:42 от kostyalamer »

kostyalamer

  • Гость
To swordreх
Как испытания скрипта прошли, успешно ?

Оффлайн swordrex

  • Участник
  • *
  • Сообщений: 403
    • Pínus
Да, скрипт замечательно все отрабатывает, чуть позже попробую накатить на мини созданный патч и погонять :)
вещь очень нужная получилась и простая в использовании. молодец! и спасибо!

прим.: из идей - можно добавить в скрипт строку, что бы при обновлении базы репов он создавал 2 файла: pkg.list(который будет замещаться) и pkg_дата_создания.list(который будет оставаться. Тогда и разницу легко установить и откатиться если что :)
« Последнее редактирование: 20.02.2010 17:19:19 от swordrex »
there is no truth outside of our own awareness

kostyalamer

  • Гость
Да идейка неплохая, несколько дней от bash-а отдохну (слегка надоел) и наверно допилю как ты сказал ( давай на ты общаться, кодеры мы или погулять вышли  ;) ). Сначала только базовый патч переделаю (iso), как то лишние косяки с монтированием немного раздражают. Можно посмотреть в сторону Thunar- ра у него есть плагин позволяющий монтировать диски так же как в pcman-е. С antico разобрался ? Там довольно своеобразная ( с непривычки ) система работы с окнами приложений. Если что непонятно, спрашивай  :)

Оффлайн swordrex

  • Участник
  • *
  • Сообщений: 403
    • Pínus
поставил минимал, накатил твой базовый патч - как в справке написано - все нормально, без проблем и ошибок стало (правда я устанавливал через синаптик, добавил в него исошку и установил всю)
с antico пока проблем не возникло, пробовал ее и lxde раньше но пока сижу в xfce.

хочу попробовать на консольный вариант накатить по твоему рецепту слепок своей рабочей системы и погонять, может что еще))
как сделаю отпишусь.
there is no truth outside of our own awareness

kostyalamer

  • Гость
Давай, дело хорошее. Тут до меня внезапно доперло что этот скрипт можно использовать для бэкапа любого дистрибутива, хоть Симплика, хоть кед. Бэкапится будет именно система , а не домашний каталог ( т.е. все скачанные и установленные пакеты ).  Особенно актуальна эта тема для товарищей с дорогим интернетом, например для GPRS-ников.
Я то же хочу под виртуалбоксом собрать патч под старое железо, так что-бы нормально работало на 128Мб памяти и желательно в графике (консольный вариант и так должен летать на такой железяке). А то что-то все эти новомодные  примочки сильно стали память кушать. Можно будет и про WM вспомнить, я под ним год просидел, очень быстрый рабочий стол  :)

Оффлайн swordrex

  • Участник
  • *
  • Сообщений: 403
    • Pínus
Цитировать
новомодные  примочки сильно стали память кушать. Можно будет и про WM вспомнить
возможно стоит посмотреть в сторону:
OpenBox

Версия 3.4.11 (8 февраля 2010)
there is no truth outside of our own awareness

kostyalamer

  • Гость
На Thunar-е ,базовый патч получился гораздо лучше. :)
Лежит он здесь: http://narod.ru/disk/18108283000/patch_kst_bazov02.iso.html
правда объем получился побольше 43Мб, зато качество совсем другое.
примерный состав патча:
рабочий стол - antico
файлы             - thunar + плагины ( монтирование, сеть, миниатюры )
редактор        - medit
броузер           - arora
архивы             - file roller
графика          - dokument viewer
и естественно мой скрипт для создания патча.
Рекомендую использовать вместо первого для сборки своих систем

kostyalamer

  • Гость
Цитировать
новомодные  примочки сильно стали память кушать. Можно будет и про WM вспомнить
возможно стоит посмотреть в сторону:
OpenBox

Версия 3.4.11 (8 февраля 2010)
OpenBox я ставил под Альтом в чистом виде, очень неплохо работает ( как и другие box-ы ).

Оффлайн swordrex

  • Участник
  • *
  • Сообщений: 403
    • Pínus
в общем вот что сделал:

на "чистую" поставил минимал NotHAM
установил и настроил в нем нужные программы с помощью RPM_on_disk_kostyalamer создал локальный репозиторий
в папку /home/user/Repa_Local/local положил (из-под root-а)архив с папкой /home/user, а также файлы: /etc/passwd, /etc/shadow, /etc/group
скриптом RPM_on_disk создал *.iso и закатал на диск
на другом компе установил минимал, не входя в графику из-под root-а с созданного патча *.iso скопировал в /etc файлы /etc/passwd, /etc/shadow, /etc/group
перезагрузился, через synaptic добавил в качестве репо - диск-патч *.iso и произвел до-установку пакетов
---все подхватилось, программы работают, настройки идентичны оригиналу.

затем на первом компе провел обновление из сизифа, удалил пару файлов - в общем угробил систему(специально)
установил минимал, из консоли заменил /home/user и файлы /etc/passwd, /etc/shadow, /etc/group, загрузился и через synaptic добавил в качестве репо - диск-патч *.iso и произвел до-установку пакетов. результат:
как будто ничего и не ломал :)

во всем процессе - самое долгое - установка минимала.

замечательный скрипт - экономит массу времени и нервов и позволяет однообразно настроить компьютеры пользователей. и восстановить систему
there is no truth outside of our own awareness

kostyalamer

  • Гость
Следующая версия будет еще лучше  :) , Кстати я раскопал где лежат настройки antico ~./config/antico.cfg. Теперь можно будет сохранять этот файл и в новой системе увидеть рабочий стол с нужными иконками и отредактированной системой меню . Можно и дефолтную тему раскурочить в /usr/share/antico/theme/