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

Оффлайн Balbes

  • alt linux team
  • ***
  • Сообщений: 915
Не большой отчет по использованию патчера.
Есть старенькая система (конфиг уже описывал в теме про легкие программы) на котором тестирую программки на минимал с WM, решил установить накопившийся софт и систему на другой ПК.
Поставил последний варинат патчера из rpm-пакета. Все установилось, в меню появился пункт с Патчером. Запустил, создал локальный репозиторий из кеша, создал iso-образ, записал его на болванку. Ставлю минимал на второй ПК, все нормально установилось, минимальная система готова для дальнейшей установки софта. Запускаю патч по инструкции, он отработал, написал мне "многа буквав", вникать в них не стал - все равно не знал, что должно быть написано. А дальше самое интересное - ни каких новых пунктов в меню не появилось. Начал разбираться, вижу через синаптик, что пакеты установились в систему, но ни каких меню не прописалось - значит что-то не так отработало в патчере. Запустил по новой и уже внимательно стал изучать результат - обнаружил, что патчер выдает ошибки на несколько пакетов. Оказалось, что эти пакеты изначально криво встали на исходном ПК (не полностью докаченные файлы). Выкидываю их из кэше и по новой формирую патч.
Для чистоты проверки ставлю систему заново, запускаю патч, отрабатывает нормально, все пакеты установились и прописались в меню. Сразу доставляю скрипт myppp и проверяю подключение к инте - все работает. Ну думаю - победа ... но не тут-то было.
Перезагружаюсь в другую систему, делаю дела, пытаюсь перегрузиться опять в минимал и ... лило радует девятками. Решил, что сам где-то накосячил при установке скрипта. Запускаю процесс по новой и сразу после успешной отработки патчера пробую перезагрузиться и ... те же девятки.
Оказывается при отработке патчера, если не используются опции восстановления системы (нет на СД папок System и Arhiv) патчер благополучно курочит корень и убивает загрузку (ставил загрузчик для минимала в корень для многосистемной загрузки).
Чуток подправил файл setup - все нормально заработало.

Предложения :
- добавить в скрипт, создающий файл setup, проверку на наличие использования архивирования и восстановления системы. Если они не используются - не добавлять в файл setup для исошника команд для этого. Либо разделить в меню патчера пункты на бэкап системы и софтовую часть, что-бы делать исошник с командами бэкапа или без них.
- добавить паузу после отработки веток по созданию репы и образа при создании патча, что-бы можно было не спеша прочитать, что он нормально отработал и куда что поместил.
- добавить в справку предупреждение на предварительную проверку кэша на наличие битых файлов в нем, иначе патчер не сможет нормально все сам установить.

И пожелания не столько к пачу, сколько по общему подходу - хорошо бы сделать минимал в котором включены по максиму все драйвера + добавить в инсталяшку момент выбора дополнительного диска с софтом, с которого инсталятор будет тупо ставить все обнаруженные пакеты. Тогда не понадобиться руками запускать патчер и будет легко клонировать системы любому новичку - скачал нужный минимал и патч (или сформировал свой), запустил инсталяшку и в нужный момент только подсовывай диск с софтом и система сразу встанет в нужной конфигурации. Это облегчит размножение сразу на много ПК или для новичков.

kostyalamer

  • Гость
Спасибо за тест, буду разбираться ! А в чем конкретно проявлялось убивание корня ? (какие каталоги были затерты, по идее ничего затираться не должно). У меня уже померли несколько минималов без какого либо использования патчера, причем загрузчик ставился не в MBR ,а в раздел. Эффект тот же "9", возможно в Вашем случае та же история.
В любом случае, спасибо все проверю !

kostyalamer

  • Гость
Товарищи кодеры ( и сочувствующие  ;) ), давайте подумаем вместе, возможно я чего-то туплю.
Вот кусок PatchCR. генерирующий фаил setup:
    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
В кавычках находится готовый текст setup-а по порядку:
1) под root-ом  а) Добавляем диск в репозитарии apt-а б) монтируем диск в) копируем rpm-ы из репы в кеш apt-а, иначе при установке с диска они там не прописываются и дальнейшее создание патчей будет невозможно
г) устанавливаем все пакеты из локальной репы д) копируем все содержание папки /System в корень рекурсивно (по- идее при пустой папке System, вообще ничего копироваться не будет)
2)под пользователем копируем содержание папки /Arhiv, включая скрытые папки/файлы в хомяк пользователя.

Критическим может быть пункт 1д, но по идее не должен.
У кого есть идеи, пишите, буду признателен  :)

Оффлайн Balbes

  • alt linux team
  • ***
  • Сообщений: 915
Не знаю в чем причина, подробно не разбирался, если надо - попробую еще раз провести эксперимент и посмотреть, что происходит. До этого такого эффекта на минималах не наблюдал, возможно из-за того, что загрузчик ставился в MBR, и причина может быть не в патчере, а в минимале.
б. - он обязателен ? вроде по инструкции его уже перед этим примонтировали что-бы запустить с него setup
д. - у меня ошибка вылезала именно из-за этого пункта, после его изменения - все сработало как надо (надо бы повторить и посмотреть что происходит). Возможно это из-за того, что в локальной репе нет этих папок даже пустых и на диске их не появляется то же.

Как вариант - можно разделить в патчере создание копии кэша и их установку на новом ПК, и вынести в отдельный пункт архивирование и разворачивание резервной копии системы. Либо перед выполнением восстановления на целевом ПК проверять наличие файлов для восстановления и выдавать запрос на подтверждение этой операции, а то при восстановлении на существующий хом и систему могут затираться существующие файлы, что не всегда будет нужно.

Кстати, при распаковке и установке патча в середине работы apt-get выдается запрос на подтверждение установки пакетов, об этом желательно упомянуть в справке\руководстве, или привязать безусловное выполнение (что-бы этот запрос не выдавался и не прерывал работу патчера).

п.с. можно на ты.  ;)

kostyalamer

  • Гость
Переходим на ты  ;)
1)Сегодня немного занят но в ближайшие пару дней  повторю эксперименты с пустой папкой System, посмотрю чего будет.
2) С пунктом б вроде был такой косяк, после использования apt-cdrom add диск оказывался отмонтированным.
3)Есть идейка в простейшей реализации : Можно сделать 2 разных Setup -а . Один просто устанавливает все пакеты из репы, другой кроме этого копирует файлы из папок. Наверное так для начала и сделаю, дальнейшее продолжение этой темы сделать Setup с экранным меню, как в патчере. Надо будет подумать, чего бы еще интересного туда напихать, кроме копирования настроек.
4)Запрос на установку пакетов по моему выдается только когда их не хватает в репе и они тянутся из интернета (проверю)
Идей у тебя много, молодец, а то Swordrex куда-то пропал и процесс остановился, теперь будем продолжать.  :) 

Оффлайн Balbes

  • alt linux team
  • ***
  • Сообщений: 915
Запрос на установку - это не из-за отсутствия чего-то, там пишет сколько пакетов готово к установке и сколько требуется места, нажимашь Y и процесс полетел.
Посмотрел в описании на apt-get , вроде есть опции -y и --force-yes , попробую посмотреть что они дадут.


А если попробовать прилепить функцию создания копии загруженных в кэш пакетов как образ диска или папку для локального репозитория сразу к синаптику или альтераторам ?
Открыл синаптик, закачал все что надо (не обязательно ставить сразу на текущий ПК), дал команду создать диск или локальную репу и получил сразу нужный результат. Полученную репу можно использовать самому, для размножения нужного  софта на другие ПК, где нет тырнета, или отдавать друзьям\знакомым. Хорошо бы еще приладить к диску с репой простую графическую мордочку для быстрого запуска процесса установки.
А патчер можно доделать под архивирование системы с настройками и переноса на другой ящик (с другой конфигурацией железа).

kostyalamer

  • Гость
Запрос на установку - это не из-за отсутствия чего-то, там пишет сколько пакетов готово к установке и сколько требуется места, нажимашь Y и процесс полетел.
Посмотрел в описании на apt-get , вроде есть опции -y и --force-yes , попробую посмотреть что они дадут.


А если попробовать прилепить функцию создания копии загруженных в кэш пакетов как образ диска или папку для локального репозитория сразу к синаптику или альтераторам ?
Открыл синаптик, закачал все что надо (не обязательно ставить сразу на текущий ПК), дал команду создать диск или локальную репу и получил сразу нужный результат. Полученную репу можно использовать самому, для размножения нужного  софта на другие ПК, где нет тырнета, или отдавать друзьям\знакомым. Хорошо бы еще приладить к диску с репой простую графическую мордочку для быстрого запуска процесса установки.
А патчер можно доделать под архивирование системы с настройками и переноса на другой ящик (с другой конфигурацией железа).
Это идеи безусловно хорошие, но уже не ко мне а к разработчикам альта. Так-как совсем другой уровень. Хотя в тех же
легких  Альтах, установщик запрашивает дополнительные диски с программами. Если за базу принимать не минимал, а 1-ый диск школьного легкого, то все уже готово, подсовываем при установке диски от патчера и (теоретически ) получаем сразу же готовую систему .
Можно и NotHAM попросить на предмет перевода минимала на такой инсталятор, но насколько это технически реализуемо и есть ли у него на это время не знаю !
Архивирование системы, штука довольно тонкая, если только хомяк, то все просто ( правда надо вставлять проверку на переполнение диска), если еще цеплять чего-нибудь из корня, то автоматом не получится точно.

Оффлайн Balbes

  • alt linux team
  • ***
  • Сообщений: 915
Не много подправил скрипт, вроде теперь не сваливается система после его использования с пустыми каталогами, но надо проверить еще на других ПК.
Заодно подправил мелкие огрехи в statistica и чуть изменил интерфей.

kostyalamer

  • Гость
Посмотрел, работает есть одно но:
  echo "su -c 'apt-cdrom add ;mount /dev/hdc ;cp -v /media/cdrom/i586/RPMS.local/*.rpm /var/cache/apt/archives ;
    apt-get -y 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
У тебя все копируется под root-ом включая файлы идущие в хомяк, теоретически они под пользователем не могут быть использованы (практически не проверял). Проверь если это действительно так просто верни апостроф на место  ;) . Кстати, улучшай эту штуку на здоровье, как все испытаешь, опакечу   :)

Оффлайн Balbes

  • alt linux team
  • ***
  • Сообщений: 915
Добавил проверку файлов в каталоге System.
Насколько понял проблема в команде ср, если ее давать от рута и с пустым каталогом, возможно меняются права (каталоги и файлы остаются на месте).

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....
Цитата: man cp
   -p     Сохраняет исходные параметры файла, такие как владелец,  группа,
              права  доступа  (включая  suid  и  sgid  биты),  время последней
              модификации и время последнего доступа к файлу. В  случае,  если
              установка  владельца  или  группы приводит к ошибке, suid и sgid
              биты сбрасываются.  (Заметим, что впоследствии исходный  файл  и
              его  копия  могут иметь разное время последнего доступа, так как
              операция копирования является доступом к исходному файлу).


Оффлайн Balbes

  • alt linux team
  • ***
  • Сообщений: 915
за экспериментами забыл вернуть в строку запуска монтирование, исправил.
попробовал на других "полных" дистрибутивах - на них проблем после пользования скриптом (и с пустыми папками) не обнаружено.
похоже все таки проблема в самих минималах.
может быть не корректно закрывается корневая система при остановке или чего-то не хватает ?

kostyalamer

  • Гость
Сегодня есть немного свободного времени, посмотрю что там на минималах с пустыми папками происходит  :)

kostyalamer

  • Гость
To Balbes: Зря ты революцию с setup-ом делал, проверил все нормально работает и с пустыми папками и с пустыми папками и прокосяченными зависимостями пакетов и с пустыми папками и подключённой репой в интернете  ;). Проблема сидит в выключении компа под минималом, у меня каждый раз после перезагрузки из него вываливается на графической заставке lilo черная табличка где внизу пишется количество ошибок (сейчас 8  ;) ), после чего попадаем в текстовой режим lilo.
Естественно, при перезагрузки из kde4 такого безобразия не происходит ! Как я писал раньше у меня уже несколько минималов умерло как раз с "999...9" в lilo вообще без использования patchcr-а. В общем, как ты справедливо сказал проблема в минимале. Сейчас NotHAM-у напишу по этому поводу.
Когда допилишь patchcr до ума, будем пакетить, или хочешь опакеть его сам: src-ха у меня на сайте валяется, там только changelog подправить , да в архиве файл подменить.

NotHAM

  • Гость
..... "999...9" в lilo вообще без использования patchcr-а. В общем, как ты справедливо сказал проблема в минимале. Сейчас NotHAM-у напишу по этому поводу....

Проблема не в minimal а, скорее всего в lilo+BIOS+HDD. Гляньте тут:
http://wiki.linuxquestions.org/wiki/LILO_Error_Codes
Ну и на мыло ответил.