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


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: [HOWTO] Различные способы создания локального репозитория  (Прочитано 75425 раз)

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

Оффлайн warlock

  • Активист
  • *
  • Сообщений: 257
  • Linux Ubuntu 12.04
    • Просмотр профиля
Re: Создание локального репозитория
« Ответ #30 : 07 Октября 2008, 18:56:26 »
ещё один вариант!

Как известно, в Ubuntu реализовано централизованное хранение информации обо всех основных программах в одном месте, для более удобного поиска и последующей их установки. Этим местом является менеджер пакетов Synaptic. (Система -> Администрирование -> Менеджер пакетов Synaptic) Для инсталляции программы вам необходимо её только найти в списке и отметить для установки, далее программа будет автоматически скачана из интернета и установлена.

Основные программы, которые могут пригодиться при работе в ОС Ubuntu, хранятся в так называемом репозитории на официальном сервере Ubuntu. Каждый раз, когда вы отмечаете для установки ту или иную программу в менеджере пакетов Synaptic, она сперва скачивается.

Но что делать, если у вас очень медленный или дорогой интернет, или может у вас вообще отсутствует доступ во всемирную сеть, или вы просто не хотите зависеть от подключения к интернету работая в Linux Ubuntu? Можно, конечно, скачать все необходимые программы (пакеты) по одной, а потом вручную устанавливать, но кто знает, какая программа вам пригодится в дальнейшем?

Решением данной проблемы является создание локального репозитория, т.е. полной или частичной копии официального репозитория у себя на жестком диске. Таким образом, однажды скачав весь репозиторий, у вас больше не будет зависимости от интернета.

Итак, приступим.

1. Для создания копии (среза) репозитория у себя на жестком диске, существует специальная программа: debmirror. Соответственно, для начала вам её необходимо установить из того же менеджера пакетов Synaptic



или набрав команду в терминале:

sudo apt-get install debmirror

2. Создаём папку в домашней дирректории, в которой будет храниться срез репозитория (или даже несколько), к примеру, назовём её Repositories.

mkdir Repositories

3. Далее, напишем скрипт, который будет выполнять всю работу по созданию копии репозитория у вас на жестком диске.

Перейдём в папку Repositories:

cd Repositories

и создадим в ней файл скрипта с именем archive.ubuntulinux.org.sh:

gedit archive.ubuntulinux.org.sh

Вставляем в этот файл следующее:

#!/bin/bash -x
 /usr/bin/debmirror --nosource -m --passive --host=archive.ubuntulinux.org \
 --root=ubuntu --method=ftp --progress \
 --dist=hardy,hardy-security,hardy-updates,hardy-backports \
 --ignore-release-gpg --section=main,restricted,multiverse,universe \
 --arch=i386 /полный/путь/к/папке/куда/нужно/скачать/репозиторий/

полный путь у вас должен выглядеть примерно следующим образом: /home/aidsoid/Repositories/ru.archive.ubuntu.com/

и сохраняем его. После сохранения нужно сделать файл запускаемым (chmod +x archive.ubuntulinux.org.sh).

Приведённый выше пример будет выкачивать репозиторий для Ubuntu 8.04 (Hardy Heron), если вы всё еще используете старую версию Ubuntu 7.10 (Gutsy Gibbon), то вам необходимо немного подправить этот скрипт, в частности, необходимо изменить значения параметра --dist с hardy на gutsy. Также следует обратить внимание на параметр --arch, который указывает на архитектуру вашего компьютера, значение i386 говорит о том, что будут скачаны пакеты для компьютера с архитектурой x86. Этот параметр также может принимать значение amd64 для 64-битных AMD или Intel компьютеров.

4. Ну вот, собственно говоря и всё, теперь можно запускать скрипт на выполнение, для этого в консоли, находясь в папке Repositories, наберите следующую команду:

./archive.ubuntulinux.org.sh

Скрипт начнёт свою работу. Весь репозиторий занимает около 20-30 Гигабайт, так что перед скачиванием обеспечьте свободное место на диске. В любой момент можно безболезненно прервать работу скрипта, нажатием сочетания кнопок Ctrl+C. При повторном запуске скрипта, он продолжит скачивание недокачанных пакетов. Также повторный запуск скрипта позволит обновить ваш локальный репозиторий, т.е. проверяется наличие новых версий программ и они также выкачиваются.

Примечание: пользователей Ubuntu 7.10 ожидает один маленький подводный камень, пользователям Ubuntu 8.04 беспокоиться не о чем. Существует ошибка в debmirror’е, из-за которой при повторном запуске скрипта удаляется папка pool из локального репозитория. Её необходимо исправить перед запуском скрипта. Описание ошибки тут: https://bugs.launchpad.net/ubuntu/+source/debmirror/+bug/136634

Лечится ошибка просто:
$ sudo gedit /usr/bin/debmirror
заменяете в редакторе строку local $/="\n\n"; на local $/="\n"; и сохраняете файл. Теперь обновление репозитория пройдёт без происшествий.

5. После того как скрипт скачается (это может занять длительное время), вы сможете использовать его, добавив deb строку в источники приложений. (Система -> Администрирование -> Источники приложений)

deb строка должна указывать на папку с репозиторием и выглядит примерно следующим образом:
deb file:///home/aidsoid/Repositories/ru.archive.ubuntu.com/ hardy main restricted multiverse universe

 Дата добавления записи: Среда, Май 7th, 2008 at 10:43 дп. Категория: Linux Ubuntu. Вы можете отслеживать любые ответы на эту запись через RSS 2.0. Вы можете оставить комментарий, или trackback с вашего собственного сайта.

Оффлайн vadim-nsk

  • Старожил
  • *
  • Сообщений: 1318
  • Жить надо так, как горит пламя!
    • Просмотр профиля
    • Linux в Новосибирске
Re: Создание локального репозитория
« Ответ #31 : 07 Октября 2008, 19:32:28 »
ещё один вариант!
По мне так единственно верный вариант, не знаю есть ли такая хауту или нет, но она должна быть на форуме :). Как пожелание хотелось бы видеть расширенный вариант т.е. без  --ignore-release-gpg и собственно рецептом изготовление образов реп на ДВД и СД. Думаю многим бы пригодилось. Вот я например уже забыл, как решил проблему с подписью, сейчас даже не вспомню(вот у меня работает, а как делал забыл), а если бы было хауту, этого не произошло.
Просьба выделить в отдельное хауту, желательно с дополнениями.
С большим уважением и наилучшими пожеланиями.
Изготовленные таким методом репы очень помогают.

burgua

  • Гость
Re: Создание локального репозитория
« Ответ #32 : 07 Октября 2008, 19:35:35 »
Все грамотные - не завалите человека советами!

Оффлайн diden05

  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
Re: Создание локального репозитория
« Ответ #33 : 22 Октября 2008, 13:01:45 »
Приветствую всех!
Есть обратная проблема, то есть существует срез репозитория на двд, хочу сделать его доступным в рамках нашей локалки, подскажите как?

Оффлайн thunderamur

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6846
    • Просмотр профиля
Re: Создание локального репозитория
« Ответ #34 : 22 Октября 2008, 14:32:44 »
Что-то тут способ создания репозитория с распаковкой пакетов увидел и с установкой доп. прог  :o Можно проще, 4 команды в терминале и готово, но напишу подробно, раз в теме есть слово "новичкам".

Чтобы скаченные пакеты сохранялись в кэше:

Цитировать
Система > Администрирование > Менеджер пакетов Synaptic
В нём: Настройки > Параметры > Файлы > Хранить все загруженные файлы в кеше

А теперь собсно создание локального репозитория:

mkdir Packages
cp /var/cache/apt/archives/*.deb Packages
cd Packages
apt-ftparchive packages .|gzip > Packages.gz

В итоге в дом. директории получим локальный репозиторий Packages, который теперь можно скопировать на любой носитель и подключить к системе.

Чтобы указать системе этот репозиторий:

Цитировать
Система - Администрирование - Источники приложений - ПО сторонних производителей - Добавить

Общий вид: deb file:/ <путь к пакетам> /
Пример1: deb file:/home/thunder/Packages /        - у меня это выглядит так
Пример2: deb file:/media/thunder/Packages /       - а это если пакеты хранятся на флешке
« Последнее редактирование: 22 Октября 2008, 14:45:50 от Thunde® »

Оффлайн diden05

  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
Re: Создание локального репозитория
« Ответ #35 : 25 Октября 2008, 12:19:44 »
спасибо, помогло

Оффлайн Black Jak

  • Любитель
  • *
  • Сообщений: 63
    • Просмотр профиля
Re: Создание локального репозитория
« Ответ #36 : 11 Декабря 2008, 15:43:05 »
Господа! У меня такая ситуация. Дома на компе стоит Линукс. Но интернет - gprs. А на работе стоит Windows и  инетом порядок, но админ не разрешает ставить Линукс.  Вот и прошу помочь-подсказать-объяснить, как можно из под винды скачать репозитарий для Убунты. Подозреваю что програмки деб-миррор  для винды нет.  :idiot2:

Jetta

  • Гость
Re: Создание локального репозитория
« Ответ #37 : 11 Декабря 2008, 16:44:25 »
Поставь ubuntu на flash.

Вот тут же есть >>
https://forum.ubuntu.ru/index.php?topic=2454.0;topicseen

И лучше использовать aptoncd << для создания мм.. репозиторки
« Последнее редактирование: 11 Декабря 2008, 16:47:32 от Jetta »

Оффлайн thunderamur

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6846
    • Просмотр профиля
Re: Создание локального репозитория
« Ответ #38 : 11 Декабря 2008, 16:45:49 »
но админ не разрешает ставить Линукс.

вот гад  ;D

могу предложить довольно тупой, но вполне рабочий способ.
1. Скачать дома список пакетов ~6 метров
2. Далее выбираем что хотим поставить и смотрим какие пакеты система хочет вытянуть
3. Качаем на работе эти пакеты
4. Дома добавляем их в локальный репозиторий
5. Ставим.

З.Ы.: уверен есть способ поудобнее, описанного выше, но это я так по-нубски  ;)

================================================================

Поставь ubuntu на flash.

а если на работе не фурычит usb-boot, например, намеренно выключен админом, думаю опять же не разрешит... хотя если usb-boot есть, то вариант получше)))
« Последнее редактирование: 11 Декабря 2008, 16:47:44 от Thunde® »

Оффлайн MadKox

  • Активист
  • *
  • Сообщений: 441
  • =)
    • Просмотр профиля
    • Моя страница на Launchpad
Сетевой репозиторий.
« Ответ #39 : 11 Декабря 2008, 19:34:01 »
Создание сетевого репозитория

В целом тема достаточно избитая, но порядком раскиданная по разным топикам. Мне кажется это потому, что процесс в значительной степени специфичен для каждого. Я хотел только описать мой случай, возможно, кому-то еще это тоже пригодится. На что-то новое не претендую, все скрипты кроме mirror подсмотрены тут на форуме, в сходных ветках.

Итак - ситуация:
1. Есть головной офис, в нем сидим преимущественно под Ubuntu, есть сеть, в ней машины пользователей, шлюз и сервер. Интернет быстрый, лимитный и дорогой.
2. Есть филиал, там тоже сидят под Ubuntu, там только шлюз. Инет - медленный, но безлимитный и относительно дешевый.
Задача: создать и поддерживать репозиторий в офисе.

Часть 1. Скачивание репозитория. Все действия выполнялись на шлюзе филиала.

1. Установил debmirror.
sudo apt-get install debmirror
2. Cоздал 2 скрипта.

Первый - mirror_upd - собственно отвечает за закачку
(Нажмите, чтобы показать/скрыть)
Второй - mirror - циклично запускает первый скрипт, до тех пор, пока тот не завершится без ошибок (т.е. корректно доработает до конца). Это нужно на случай обрыва коннекта, т.к. в этом случае скрипт mirror_upd просто вывалится в терминал и сам продолжать работу станет только с подсказки пользователя.
(Нажмите, чтобы показать/скрыть)

Сделал их исполняемыми и переписал в /usr/sbin/
sudo cp /home/odmin/mirror_upd /usr/sbin
sudo chmod +x /usr/sbin/mirror_upd
sudo cp /home/odmin/mirror /usr/sbin
sudo chmod +x /usr/sbin/mirror
Также создал папку под репозиторий:
mkdir /home/odmin/repository/ubuntu/

Затем я запустил процесс и ушел покурить (дня на два):
sudo mirror

Часть 2. Подключение репозитория.

Как наступил счастливый момент и скрипт отработал я подрубил к шлюзу usb хард и переписал папку repository.  Затем с хардом поехал в офис и там переписал ее в /home/odmin на шлюзе. Т.к. для нужд sams'a на шлюзе поднят apache я решил воспользоваться им и кинул в папку www симлинк на репозиторий.
sudo ln -s /home/odmin/repository /var/www/
Собственно, на этом этапе репозиторий уже был способен работать, но для того, чтобы клиенты признали его приоритетным его следовало подписать.
Для этого я создал ключ:
(Нажмите, чтобы показать/скрыть)

Создал скрипт makerepo и положил его в /home/odmin/repository/ubuntu и сделал исполняемым.
(Нажмите, чтобы показать/скрыть)

Запустил его (sudo makerepo) и ввел мой пароль на ключ (см. выше). Скрипт достаточно быстро отработал.

Далее я экспортировал публичный ключ для репозитория...
gpg --export -a username > public.key
(Где username - имя пользователя, вбитое при генерации ключа.)
...и положил его в папку с репозиторием (для удобства)
sudo mv /home/odmin/public.key /home/odmin/repository/ubuntu/public.key

Часть 3. Шаманство на машинах клиентов.

1. Нужно добавить кое какие строчки в sources.list (лучше в самое его начало):
sudo gedit /etc/apt/sources.list
А строчки такие:
deb http://192.168.0.3/html/repository/ubuntu intrepid main restricted universe multiverse
deb http://192.168.0.3/html/repository/ubuntu intrepid-security main restricted universe multiverse
deb http://192.168.0.3/html/repository/ubuntu intrepid-updates main restricted universe multiverse
deb http://192.168.0.3/html/repository/ubuntu intrepid-backports main restricted universe multiverse
Где 192.168.0.3 - адрес шлюза (т.е. той машины, на которой лежат репозитории).
2. Нужно добавить ключ на репозиторий. Для этого файерфоксом идем на 192.168.0.3 и в папке ubuntu качаем файл public.key,
затем (при условии, что файл скачался в дом. папку юзера):
sudo apt-key add public.key
3. sudo apt-get update
Все. Теперь клиентские машины будут брать пакеты из локального репозитория.


Все эти манипуляции я проделал сначала на 7.10, потом просто дописал в скрипты miror_upd и makerepo строчки про 8.04 и 8.10. Для упрощения процесса я поднял на шлюзе филиала ssh сервер и теперь запускаю скрипт обновления из офиса, жаль только никак нельзя автоматизировать перенос репки на харде  ;)

Хочу добавить, что тем, кому повезло с рабочим инетом, достаточно пропустить пункты с переносом репозиория с одного компа на другой. В остальном мануал справедлив и для одного компа. А еще расшаривать репозиторий можно по ftp и (как говорят, но сам не пробовал) по smb.
« Последнее редактирование: 16 Ноября 2009, 04:42:18 от ubuntar »
Homo homini admini est...

Оффлайн jmur

  • Активист
  • *
  • Сообщений: 350
    • Просмотр профиля
Re: Сетевой репозиторий.
« Ответ #40 : 12 Декабря 2008, 17:31:43 »
а на харде каждый раз весь репозиторий тащишь?
Или только разницу?

Оффлайн MadKox

  • Активист
  • *
  • Сообщений: 441
  • =)
    • Просмотр профиля
    • Моя страница на Launchpad
Re: Сетевой репозиторий.
« Ответ #41 : 13 Декабря 2008, 17:05:51 »
Каждый раз весь. Последний раз тащил 7.10, 8.04 и 8.10 - было около 70Гб. Но т.к. обновляю я его где-то раз в 2 недели - меня это особо не напрягает.
Homo homini admini est...

Оффлайн samnick

  • Новичок
  • *
  • Сообщений: 37
    • Просмотр профиля
Re: Сетевой репозиторий.
« Ответ #42 : 13 Декабря 2008, 20:15:58 »
не каждый раз ,а перетягивает списки пакетов и то ориентируясь на их контрольные суммы (тоесть левого тарфика мало около метра) в случяе не освпадения стягтвает файл списков сравнивает с тем что имееться у тя на компе ,а отом дотягивает новые пакеты после чего удаляет старые

лично мое наблюдение обновлял раз в сутки

Оффлайн MadKox

  • Активист
  • *
  • Сообщений: 441
  • =)
    • Просмотр профиля
    • Моя страница на Launchpad
Re: Сетевой репозиторий.
« Ответ #43 : 14 Декабря 2008, 23:27:09 »
Мне кажется, произошла небольшая путаница с тем, кто, что тащит...

Итак:

Случай №1. Тащит программа debmirror. Тащит пакеты. Из инета. Складывает их на комп. В этом случае debmirror при второй и последующих итерациях тащит только новые пакеты и тем самым обновляет репозиторий.

Случай №2. Тащит MadKox. Тащит пакеты. Тащит их на харде, который лежит у него в кармане. Тащит из филиала в офис. В этом случае он (MadKox) при второй и последующих итерациях тащит каждый раз весь репозиторий. Т.к. он не нашел пока способа корректно дописывать новые пакеты на хард, да и использовать хард отдельно под одни репозитории он себе позволить не может.
Homo homini admini est...

Оффлайн netum

  • Любитель
  • *
  • Сообщений: 82
    • Просмотр профиля
Re: Сетевой репозиторий.
« Ответ #44 : 16 Декабря 2008, 05:40:51 »
Доброго времени суток. Есть пара вопросов:
1) можно ли держать в одной папке репозиторий для двух версий, т.е. харди и интрепида?
/usr/bin/debmirror --nosource -m --passive --host=ru.archive.ubuntu.com \
   --dist=intrepid ...
   --arch=i386 /home/repository/ubuntu/

/usr/bin/debmirror --nosource -m --passive --host=ru.archive.ubuntu.com \
   --dist= hardy ...
   --arch=i386 /home/repository/ubuntu/
Ведь после выполнения debmirror подчищает лишние/устаревшие пакеты. Будут они друг за другом отчищать чужие репы? Можно запустить с ключом "nocleanup" но тогда со временем репы могут сильно распухнуть.
2) при запуске скрипта makerepo получаю варнинги, так и должно быть? Пример для репы с вайном:
Цитировать
... /repo/wine.budgetdedicated.com$ sudo ./makerepo
[sudo] password for .....:
 ** Packages in archive but missing from override file: **
  wine wine-dev wine-gecko

 Wrote 3 entries to output Packages file.
gpg: WARNING: unsafe ownership on configuration file `/home/...../.gnupg/gpg.conf'
.....

 

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