Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Загрузка и обновление репозитория ubuntu из под windows  (Прочитано 11112 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн apple_rtk

  • Автор темы
  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Написал программу по мотивам этой темы.

Алгоритм работы:
1. Установите источник обновления. По умолчанию это http://ru.archive.ubuntu.com (версия 1.0 поддерживает только HTTP).
2. Если у вас уже есть некоторые загруженные пакеты в оригинальной структуре репозитария, укажите каталог "ubuntu" с ними как "Приемник". Тогда при генерации листа загрузки в лист не попадут ссылки на пакеты, которые у вас уже есть. То есть лист загрузки по сути станет листом обновления версии репозитория.
3. Установите тип системы, для которой предназначается файл листа загрузки - Linux или Windows. Различие проявляется в окончании строки CR-LF для Windows и LF для Linux. По умолчанию выбрана Windows.
4. Установите загружаемый дистрибутив. Внимание! Важен регистр символов! По умолчанию выбран дистрибутив maverick.
5. Выберите скачиваемые секции репозитория, архитектуру пакетов и загрузку исходников.
6. При доступе в интернет через прокси-сервер убедитесь, что он настроен и активен в браузере Internet Explorer (Сервис->Свойства обозревателя...->Подключения->Настройка LAN...->Прокси-сервер)
7. Нажмите кнопку "Сгенерировать ссылки".
8. По мере генерации файлов листа загрузки, они будут появляться в окне "Управление файлами со ссылками для загрузки".

Скриншоты:
Скачивание выбранных файлов Packages.gz


Анализ файлов и генерация листа загрузки


Описание файлов и папок программы
Файл gzip.bin - утилита gzip.
Файл UbuntuDownloader.exe - основной файл программы.
Каталог links - сюда сохраняются файлы листов загрузки со ссылками.
Каталог ubuntu - приемник пакетов по умолчанию.
Каталог utmp - хранилище временных файов. Пересоздается каждый раз при запуске.

Возможные вопросы:
1. Программа совсем не запускается - только окно с ошибкой 0xXXXXXXXX
Не установлен .NET Framework 2.0 и выше. Он входит в состав Windows Vista и Windows 7. Для операционных систем Windows 98/2000/XP его надо скачивать отдельно. Однако, сейчас он есть почти у всех. Программа протестирована на версии 2.0.

2. У меня интернет через прокси, а где в программе вводить его настройки?
Программа читает настройки, установленные в браузере Internet Explorer. Если в нем стоит галочка "Использовать прокси-сервер", то программа работать будет.

3. Могу ли я получить исходный код?
Да. Код текущей версии прикреплен в аттаче -- UbuntuDownloader_src.zip.

4. Где хранятся настройки программы?
В %USERPROFILE%\Local Settings\Application Data\3MH.RU каталоги с именем UbuntuDownloader.exe_*

5. Файлы со ссылками созданы. Что дальше?
Дальше импортируете его в свой любимый менеджер закачек, ставите опцию сохранения стурктуры и загружаете. Можно, конечно, использовать wget или сделать внутренний загрузчик прямо в программе, но я считаю это изобретением велосипеда. К тому же функционал менеджера закачек намного выше.
Скрипт для загрузки через wget:
set output_dir=C:\UbuntuDownloader
set srcurls=C:\UbuntuDownloader\links\2010_11_10__01_54_14_953__maverick_main_binary_i386.LINKS.txt
set wget_log=C:\UbuntuDownloader\wget.log

rem Если работаем за прокси то убираем "rem" в начале строк и указываем
rem set http_proxy=АДРЕС_ПРОКСИ:ПОРТ
rem set ftp_proxy=АДРЕС_ПРОКСИ:ПОРТ
rem set proxy_user=ИМЯ_ПОЛЬЗОВАТЕЛЯ
rem set proxy_password=ПАРОЛЬ

wget --input-file=%srcurls% --directory-prefix=%output_dir% --append-output=%wget_log% --force-directories --timestamping  --proxy-user=%proxy_user% --proxy-password=%proxy_password%

UbuntuDownloader_bin.zip -- исполняемые файлы (Portable)
UbuntuDownloader_src.zip -- исходный код (C# 2.0)
« Последнее редактирование: 10 Ноября 2010, 15:50:07 от apple_rtk »

Оффлайн ViTalityU

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

Оффлайн apple_rtk

  • Автор темы
  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Я, кстати, начинал выкачивать репозиторий Вашим скриптом. Качал трое суток, не зная размера. Скачал ))). Потом написал прожку, мне было легче написать, чем разобраться, как работает скрипт. да и просто было несколько часов свободного времени.

Оффлайн ViTalityU

  • Любитель
  • *
  • Сообщений: 71
    • Просмотр профиля
я так понимаю для вас не критична поддержка сохранения структуры репозитория?

предлагаю вам, в качестве направления развития вашей программы, для поддержки сохранения структуры репозитория реализовать создание списков закачек для пары самых популярных менеджеров закачек (Download Master). в которых бы хранилась информация не только, что качать, но и куда сохранять в соответствии со структурой репозитория.

Пользователь решил продолжить мысль 13 Ноября 2010, 00:19:16:
кстати ваш принцип можно применить и при использовании моего скрипта:
после запуска скрипта и  появления строки
dd.mm.yyyy hh:mm:ss downloading... see ПУТЬ\К\repository_collector\tmp\wget.logпрерываем работу скрипта
берем файл ПУТЬ\К\repository_collector\tmp\pkgurls.txt
скармливаем файл любимому менеджеру закачек
« Последнее редактирование: 13 Ноября 2010, 00:19:17 от ViTalityU »

Оффлайн apple_rtk

  • Автор темы
  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Кстати, у вас в случае скачивания исходников скрипт генерирует очень большой файл srcurls.txt - он занимает около 30 мегабайт на более 350 тыс. ссылок. Моя прожка делает намного меньше ссылок.
Сначала скачал все скриптом - получилось загрузить ок. 30 тыс. файлов. Потом решил проверить прожкой. Я так думал, что она должна была выдать пустой файл, так как все скачено. Однако, она нашла еще какие-то пакеты, тысяч 5 всего и догрузила 47 мегабайт. вообщем, где-то глюк. Может, у меня инет при скачивании скриптом сбойнул, а wget.log уже перезаписал.
« Последнее редактирование: 15 Ноября 2010, 09:23:45 от apple_rtk »

Оффлайн ViTalityU

  • Любитель
  • *
  • Сообщений: 71
    • Просмотр профиля
нашел в чем косяк у меня. спасибо
« Последнее редактирование: 17 Ноября 2010, 01:51:34 от ViTalityU »

Оффлайн Mozgoed

  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Многих также интересует вопрос "Какой размер репозитория ubuntu" и "как удалить старые версии пакетов репозитория ubuntu"?

Самую последнюю версию программы смотрите на сайте http://mozgoed-mgoy.narod.ru/?mod=page&page=7

0.Требования к запуску программы.
Практически такие же как и у автора программы.
Windows 2000, Windows XP, Windows Server 2003 - Нужен .Net Framework 2.0
Windows Vista, Windows 7 - Ничего не нужно.
Ubuntu 10.10 - Нужен пакет Mono. Запускать можно через консоль "mono ubuntu-repository.exe".

1.Как узнать размер скачиваемого репозитория?
Моя программа позволяет в интерактивной форме узнать размеры репозитория и отдельных его частей.
а) Выбираете нужные дистрибутивы(первая колонка).
б) Выбираете компоненты распространения (вторая колонка).
в) Выбираете архитектуру процессора (третья колонка)
г)Повторяете операцию (а,б,в) для каждого релиза, который вам нужен (на момент публикации этого сообщения актуальной была Oneiric).
Жмёте "Анализ". Прога изучает все вкладки и по каждой выдаёт суммарный размер репозитория. И в конце выдаёт размер всего-всего, что вы выбрали вообще.
Программа не создаёт никаких временных файлов в процессе "Анализа", поэтому считается полностью Portable. (можно даже с CD запускать)

2. Как скачать Ubuntu репозиторий?
Данная программа может скачать ubuntu репозиторий с опциональным выбором его частей.
а) Выбираете нужные дистрибутивы(первая колонка).
б) Выбираете компоненты распространения (вторая колонка).
в) Выбираете архитектуру процессора (третья колонка)
г)Повторяете операцию (а,б,в) для каждого релиза, который вам нужен (Dapper в репозитории Ubuntu.com более не хранится).
Жмёте кнопку скачивания. Программа скачивает пакеты связанные с выбранными настройками.
+ Программа поддерживает настройку попыток скачивания каждого пакета. Нажмите кнопку "..." для изменения настроек. 0 - при любой ошибке пакет пропускается и начинается скачивание следующего. 1 - будет ещё одна попытка скачивания. 2 - и т.д.
+ Внимание Новая функция "Очистка" - позволяет очистить любой репозиторий от ненужных ветвей пакетов.
Допустим в вашем репозитории находятся полные релизы maverick и natty. Все компьютеры вы перевели на новую версию Natty. Получается, что репозиторий хранит целых 40 ГБ ненужных теперь пакетов. Вариант удаления репозитория и скачивания его заново с новыми параметрами долгий. гораздо проще очистить его от ненужных пакетов. Нажмите флажок "Очистка" и выберите те ветви репозитория, которые должны остаться после обновления.
Будьте внимательны! Лишние ветви репозитория будут безвозвратно удалены! Однако плюсом этой обработки будет то, что заодно будет произведено удаление устаревших версий пакетов и пустых папок.

2. Как автоматически обновлять репозиторий по расписанию?
Новая функция Ubuntu-repository позволяет выполнять обновление по расписанию с периодичностью от раза в 104 дня и 4 часа -> до одного раза в час. Новое обновление не начнётся пока не будет завершено предыдущее.
Для указания времени обновления нажмите кнопку "..." и укажите время обновления с помощью счётчиков. При сбросе счётчиков дней и часов в 0 - режим обновления по расписанию отключается.

3. Как удалить устаревшие пакеты из скачанного репозитория?
Такой вопрос часто возникает когда вы несколько раз обновили репозиторий с помощью другой программы, но она забыла удалить устаревшие пакеты. А по причине огромного размера репозитория сделать это вручную очень-очень долго.
а) Нажать кнопку "Обзор" и выбрать корневую папку репозитория. (в ней должны быть папки "dists" и "pool")
б) Нажать кнопку "Удалить старые пакеты". Дождаться окончания сканирования пакетов в репозитории (окно может зависнуть, потому что ещё не успел распаралелить процессы), и дождаться окончания сканирования пакетов в папке "pool" (Процесс ещё более долгий...  :( )
в) Откроется окошко о результатах предварительного сканирования. Согласившись с вопросом о начале Удаления, ждём окончания работы программы.
Совет: Если в pool'e файлов меньше, чем официально должно быть, значит репозиторий не полный. Если наоборот - много больше, то либо репозиторий перегружен старыми версиями, либо стоит подумать, жать ли кнопку "Да". Потому что вся эта разница будет наверняка удалена.
Для пытливых умов скажу алгоритм работы. Потому что возможно функция удаления старых пакетов Вас не устроит и удалит что-то лишнее из репозитория. Итак:
I) Создаётся список всех файлов в папке pool.
II) Находятся все Packages.gz в файле Release в корне репозитория и из каждого архива вынимаются все ссылки на файлы.
III) Потом для каждого файла из первого списка ищется соответствие во втором списке. Если находится, то файл не трогается. Если не находится, то файл физически удаляется.
Данная функция программы тоже полностью Portable.

BugFixes:
-Исправлена ошибка при удалении старых пакетов (удалялся один пакет)
+При удалении старых пакетов пустые папки теперь удаляются
-Исправлена ошибка расчёта времени скачивания
« Последнее редактирование: 30 Сентября 2012, 16:15:31 от Mozgoed »

Оффлайн zl0i

  • Активист
  • *
  • Сообщений: 344
  • Как много веселых ребят и все делают велосипед...
    • Просмотр профиля
еще можно добавить возможность скачивания нужного пакета с его зависимостями. причем зависимости определять либо исходя из дефолтного набора пакетов либо из анализа базы данных уже установленных. а можно и не только убунтовские/дебиановские репы качать(гентушные н-р) -тогда вообще комбайн получиться.
ВЕЛОСИПЕДОВ ДЛЯ ВСЕХ, ДАРОМ, И ПУСТЬ НИКТО НЕ УЙДЁТ ОБИЖЕННЫЙ!

Оффлайн Sema1011

  • Новичок
  • *
  • Сообщений: 12
    • Просмотр профиля
Многих также интересует вопрос "Какой размер репозитория ubuntu" и "как удалить старые версии пакетов репозитория ubuntu"?

0.Требования к запуску программы.


Уменьшает репозиторий на 1 пакет
Пример :
Должно быть : 120  Было в папке: 134  Стало :119
« Последнее редактирование: 25 Апреля 2011, 20:14:35 от VinnyPooh »

Оффлайн Mozgoed

  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Ошибка удаления лишнего пакета, при удалении старых пакетов, исправлена.  :coolsmiley:
« Последнее редактирование: 05 Сентября 2011, 03:01:55 от Mozgoed »

Оффлайн drobovik

  • Новичок
  • *
  • Сообщений: 17
    • Просмотр профиля
    • NetLab
Вопрос созрел - для deb-mirror подобный GUI существует? (как у Mozgoed)

Ложная скромность порождает некомпетентность.

Оффлайн Mozgoed

  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Ну.. мне кажется врядли. Причина в том, что я сам в основном работаю под Windows и как для всех людей, кто попытался перейти на Linux, возникла проблема привыкания к работе с постоянными прописываниями чего-либо в консоли =) ну я понимаю, что можно написать коротенькую команду, но когда нужно написать огромную команду с кучей параметров, то это начинает раздражать)) Также не был в восторге от редактирования файлов настроек.
Поэтому моя программа рассчитана на тех, кто только-только перешёл на Linux или же допустим имеет сервер Windows 2008 и ему проще с него обновлять репозиторий. Не ставить же для этого виртуальную машину))
Консольные приложения очень мощные в том плане, что можно по расписанию запускать его через планировщик заданий с нужными параметрами. Однако для человека, далёкого от подобного разбора help'а с кучей параметров, гораздо проще будет тупо натыкать нужные кнопочки на форме и быстро получить результат. Может быть он вообще посмотрит на размер репозитория и откажется качать)) А в случае с консольной программой он обьёт кучу времени разбираясь в config'е прежде чем получит хоть какой-то результат.
Так что это просто переходный этап для новичков. О возможности запуска моей программы из консоли с параметрами даже и не помышляю. Иначе снова вернёмся к нашим баранам =)

Оффлайн zavndw

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
12 будет добавлена или еще рано?

Оффлайн Mozgoed

  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
12 будет добавлена или еще рано?
12 версия добавлена. Есть так же возможность добавления новых версий самостоятельно.
Создал специальную страничку на сайте http://mozgoed-mgoy.narod.ru/?mod=page&page=7
Все обновления смотрите там.

 

Страница сгенерирована за 0.048 секунд. Запросов: 24.