Tips & tricks — Создание локального зеркала Arch Linux
Вопрос возник всвязи с переходом на новую работу в банк, где мнительная сб не спешила открывать интернет. А свежую систему на компе хотелось... В результате после курения манов и гугления получилось следующее.
Итак, первым делом надо скачать core,extra и community на машину, где интернет есть. Скрипт archmirror-sync
Собственно, файл c путями
Запускаем archmirror-sync и дооолго ждем (к слову, зеркало весит около 20Гб), на 4 Мбитах качалось весь день. После того как зеркало скачалось я запускал скрипт еще раз, т.к. некоторые пакеты обновились.
Последний каверзный момент касается вышеупомянутых симлинков: зеркало я собирался записать на 4 двд, но бразеро, который я юзал, похоже, не пишет на диски просто симлинки, а пишет сами файлы (ну, мб я не разобрался). Соответственно, симлинки я отнес на флешке отформатенной под ext2. Осталось только их все скопировать. И тогда родился костыль ;)
Создаем копию структуры директорий зеркала
mkdir -pv archmirror-copy/{core,extra,community}/os/{any,i686}
mkdir -pv archmirror-copy/pool/{packages,community}
Теперь
Я вначале сделал man cp, конечно, но cp сопротивлялось и не хотело копировать только симлинки. Потом уже сообразил, что можно было find поюзать...
Итак, оригинальные симлинки у нас на флешке, а в archmirror-copy - симлинки на пакаджи. Последний оригинальный ход (archmirror-copy) был придуман для бразеро, т.е. я писал двд из папки archmirror-copy. Как мы помним, бразеро, симлинки не пишет, а пишет файлы, на которые они ссылаются. Таким образом на диске будут только пакаджи и не будет повторения данных. Эк я его... его жн оружием...
Собственно, копируем все двд на компьютер, где будем делать локальное зеркало и в папках core, extra, community пускаем repo-add core|extra|community.db.tar.gz * Перезапись базы пакаджей займет минут 15, за которые мы легко успеем добавить локальное зеркало в /etc/pacman.d/mirrorlist.
Server = file:///path/to/your/local/mirror/$repo/os/$arch
Вуаля! У вас есть локальное зеркало арча.
p.s. Все это писалось в спешке (и, как оказалось, зря, потому что интернет через два дня включили) так что код просит рефакторинга.
Итак, первым делом надо скачать core,extra и community на машину, где интернет есть. Скрипт archmirror-sync
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#!/bin/bash |
Собственно, файл c путями
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# cat /home/bahek/misc/archmirror-include |
Запускаем archmirror-sync и дооолго ждем (к слову, зеркало весит около 20Гб), на 4 Мбитах качалось весь день. После того как зеркало скачалось я запускал скрипт еще раз, т.к. некоторые пакеты обновились.
Последний каверзный момент касается вышеупомянутых симлинков: зеркало я собирался записать на 4 двд, но бразеро, который я юзал, похоже, не пишет на диски просто симлинки, а пишет сами файлы (ну, мб я не разобрался). Соответственно, симлинки я отнес на флешке отформатенной под ext2. Осталось только их все скопировать. И тогда родился костыль ;)
Создаем копию структуры директорий зеркала
mkdir -pv archmirror-copy/{core,extra,community}/os/{any,i686}
mkdir -pv archmirror-copy/pool/{packages,community}
Теперь
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#!/bin/bash |
Я вначале сделал man cp, конечно, но cp сопротивлялось и не хотело копировать только симлинки. Потом уже сообразил, что можно было find поюзать...
Итак, оригинальные симлинки у нас на флешке, а в archmirror-copy - симлинки на пакаджи. Последний оригинальный ход (archmirror-copy) был придуман для бразеро, т.е. я писал двд из папки archmirror-copy. Как мы помним, бразеро, симлинки не пишет, а пишет файлы, на которые они ссылаются. Таким образом на диске будут только пакаджи и не будет повторения данных. Эк я его... его жн оружием...
Собственно, копируем все двд на компьютер, где будем делать локальное зеркало и в папках core, extra, community пускаем repo-add core|extra|community.db.tar.gz * Перезапись базы пакаджей займет минут 15, за которые мы легко успеем добавить локальное зеркало в /etc/pacman.d/mirrorlist.
Server = file:///path/to/your/local/mirror/$repo/os/$arch
Вуаля! У вас есть локальное зеркало арча.
p.s. Все это писалось в спешке (и, как оказалось, зря, потому что интернет через два дня включили) так что код просит рефакторинга.