1 (17.07.2011 10:53:43 отредактировано faithman)

http://www.debian.org/logos/openlogo-nd-50.pnghttp://www.debian.org/Pics/debian.png

Создание локального репозитория Debian

2

Пример быстрого поднятия репозитория с использованием reprepro:

$ mkdir repository
$ mkdir repository/conf
$ touch repository/conf/distributions

В файлик repository/conf/distributions прописываем:

Codename:  squeeze
Suite:  testing
Version: testing
Origin:
Label: Debian Repository
Description: Debian repository
Architectures: i386
Components: main contrib non-free
SignWith: default
DebIndices: Packages Release . .gz .bz2
DscIndices: Sources Release . .gz .bz2
Contents: . .gz .bz2

параметры "говорящие", что не понятно, то рассказано в "man reprepro"
Все. Репозиторий готов. Что бы добавить пакет:

reprepro -b ./repository/  --ask-passphrase includedeb squeeze /var/cache/apt/archives/*.deb

Параметр --ask-passphrase подпишет ваш реп с помощью вашего ключа GnuPG.
На не подписанные репы, aptitude будет ругаться, что мол "ненадежный". Для использования подписанного, надо сделать выгрузку вашего ключа, а на машине использующей реп:

sudo apt-key add /tmp/key.asc
Ungrateful animal: In the world without walls, who needs windows?

3

Если я создаю список пакетов с помощью команды dpkg-scanpackages. Как будет выглядеть ссылка на этот список в /etc/apt/source.list

Что толку, если не можешь сделать мир лучше

4

CryptSpirit пишет:

Если я создаю список пакетов с помощью команды dpkg-scanpackages. Как будет выглядеть ссылка на этот список в /etc/apt/source.list

Затрудняюсь ответить. Эта команда создает список пакето-описаний. я думаю, что одной её для создания репозитария мало.

Ungrateful animal: In the world without walls, who needs windows?

dpkg-scanpackages сохдает индексный файл, который является частью репозитория Debian.
сам по себе, без репозитория этот файл бесполезен.
в варианте, предложенным alukard404 эту команду отдельно вызывать не нужно.

Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.

6 (23.02.2010 14:10:45 отредактировано CryptSpirit)

В его варианте все понятно. Да вот я в руководстве напал на такую строку где только с помощью этой команды и прописывании адреса в файле /etc/apt/source.list говорилось о создании репозитория (локального). Год издания 2004 если не ошибаюсь вот ток название книженции сходу не напишу. Поищу если что то ссылку на книгу и страницу обеспечу. Вот специально полез в гугл и нашел кучу ссылок на подобный метод. Как вы это прокомментируете? Либо вы имели введу Репозиторий, а я какой то там репозиторий??!? alukard404 а что по вашему репозиторий? Разви мы не говорим об одном и том же. distributions это информационный файл необходимый мне кажется больше для создания (добавления пакетов) репозитория. У меня давно уже стоит репозиторий созданый по "вашему" методу. И до сих пор у меня сложилось мнение что distributions отвечает только за перераспределение пакетов в каталогах репозитория.

Что толку, если не можешь сделать мир лучше

7

Кто-нибудь разместите скрипт для рекурсивного поиска и добавления пакетов иерархии /pool для утилиты reprepro.

Обрисую ситуацию -- люди скачивают dvd-образы (6 штук) Debian GNU/Linux и пытаются создать локальный репозиторий на HDD с помощью reprepro. Команда includedeb не поддерживает рекурсивный поиск файлов по вложенным каталогам.

На старом форуме где-то видел, но конкретно не помню.

8

2faithman:
На дисках все пакеты лежат на одной и той же глубина ./pool/main/r/reprepro/reprepre.deb
Используйте маску: ./pool/*/*/*/* и все будет работать.

2CryptSpirit:
В своем посте, я показал способ создания репозитария с алфовитным иерархированием.
Файл distributions это конфиг репозитория. Если прочтете в мануале программы reprepro, там описываются возможности этого файла. Он отвечает за то, какие релизы могут быть в репозитарии, обновляться ему или нет... Я не совсем понимаю, что Вы имеете под "перераспредилением" пакетов.

И я ничего не имею против Вашего способа. Но на сколько я знаю, этой команды мало для создании репозитария и репозиторий предоставляют 4 файла,  а dpkg-scanpackages только один. Из этого следует, что чего-то не хватает.

Не смотря на то, что я не модератор/администратор, хотел бы Вас попросить проявлять больше уважения к собеседнику.

Ungrateful animal: In the world without walls, who needs windows?

9

alukard404, прошу прощения но я так всю жизнь на форумах пишу. Черт его знает почему :rolleyes:  Без обид. Я просто спросил ваше мнение  о моем способе и спрашивал про строку в файле /etc/apt/source.list. Вы видете в моем тексте обиду и наезд на кого то но в плотную не видите вопроса. Может опять это высказывание может показаться вам жерстким но это моя манера. Забанят мне все равно. А "перераспредилением" это и есть алфавитная иерархия ag . Мое мнение про reprepro: класный метод для создания репозиторий в сети, а для личного пользования + возможности быстрого создания диска репами я считаю хватит и dpkg-scanpackages. Вот потому и поднял вопрос an

Что толку, если не можешь сделать мир лучше

10

Но на сколько я знаю, этой команды мало для создании репозитария и репозиторий предоставляют 4 файла,  а dpkg-scanpackages только один. Из этого следует, что чего-то не хватает.

Вроде ответ или задайте, пжл, ответ ещё раз.

Тоже без обид, просто как начнем новый форум, так и закончим.  ab
Есть ещё способы через deb-mirror и несколько др пограм. Я пользую тока reprepro, а stable у меня лежит скопипасченый deb-mirror'ом.

Ungrateful animal: In the world without walls, who needs windows?

11

CryptSpirit пишет:

спрашивал про строку в файле /etc/apt/source.list

:/

Что толку, если не можешь сделать мир лучше

12

CryptSpirit пишет:
CryptSpirit пишет:

спрашивал про строку в файле /etc/apt/source.list

:/

Гм. Как я понимаю, Ваш репозитарий (deb-пакеты) лежит вместе с файлом, который создает dpkg-scanpackages. Попробуйте указать путь к этой папке. Если репозитарий заработает, то отпишитесь, пжл.
Точную строку я вам дать не могу, т.к. не знаю какому релизу репозитарий соответствует и какие секции.

Ungrateful animal: In the world without walls, who needs windows?

13

Копался не то что бы долго но и без этого у меня последнее время проблем хватает (потому просил помощи здесь). Реп мой лежит в каталоге /usr/rep/deb а файл Packages.gz в /usr/rep и тогда строка в /etc/apt/source.list имеет вид deb file:///usr/rep / просто и странно. Помог скрипт APTonCD. Точнее диск созданный им. Я добавил его и прочел /etc/apt/source.list. Мне кажется среди комбинации команд которые использует APTonCD есть и dpkg-scanpackages. Одним словом вот так простенько можно сделать мини реп с нужными вами пакетами (у меня он на всякий случай находиться на отдельном разделе)

Что толку, если не можешь сделать мир лучше

14

здрасте, народ. вот хочу просить совета, направить на путь  истинный, так сказать ab

я просмотрела тему и посчитала, что создавать новую не стоит..

ситуация такова, начальство поставило задачу, автоматизировать установку Debian 5.0 по сети с локального репозитария. доступа к инету нет. реп создавался из 5 DVD. файлы Release были подписаны моим ключом.
процесс таков: при загрузке с сети комп, на который устанавливается система, подхватывает по dhcp ipшник и файл pxelinux.0, далее через tftp грузится initrd и начинается установка системы. происходит настройка сети, разметка дисков и далее просит адрес зеркала для базовой установки операционной системы. репозитарий мой лежит на ftp-сервере, на той же машине, где dhcp-сервер и tftp запущены. я ввожу адрес репа, а далее он ругается:

Signature made .. UTC using DSA key ID CB4E54C7
Can't check signature: public key not found

мое виденье всего этого дела таково (правда какое-то оно мутное, это виденье :/ )
установщик, а конкретнее debootstrap (я так понимаю это отделный процесс??) ищет файл Release, потом к нему подпись Release.gpg, проверяет подпись своим каким-то (стандартным?) ключом. он не подходит, т.к. подпись то создана моим ключом. вот он и ругается.

полезла в инет и нахожу стать двух типов: либо про сетевую установку системы через инет с настоящего зеркала, либо про локальные репозитарии, но разговор при этом идет не об установке системы с него, а об установке пакетов в готовой системе.. (смиренно прошу прощения за бардак в объяснениях, излагать все в письменном виде для меня проблема).  так вот, в одной из статей второго типа я нахожу такую тему: содзается локальный репозитарий, генерируется новый ключ, а далее идет такое:

После этого будет нужно добавить ключ в базу Apt
apt-key add ~/.gnupg/secring.gpg

и у меня родился вопрос (уф.. и долго же я до него добиралась  ab  ) может стоит поковыряться в initrd и поставить его в известность о моем ключе?

а т.к. в такое я вляпалась :rolleyes:   впервые, то  другой вопрос родился тут же: может я все неправильно понимаю? и есть другой путь?

".. и надеждою маюсь,
полный тайных тревог,
что хоть малую малость.." (Евтушенко)
меня кто-нибудь поймет ag

И сказала ARPA "Да будет протокол", И стал протокол. И увидела ARPA, что это хорошо..

15 (18.04.2010 20:39:50 отредактировано aivee)

А можно создать репозиторий на флешке? Или как еще можно решить такую задачу:
Загруженные из интернета пакеты перенести на машину, не подключенную к интернету, и установить их там.
Будет ли рабоать такой вариант: перенести загруженные пакеты в папку /var/cache/apt/archives/ на второй компьютер?

16 (19.04.2010 19:14:22 отредактировано faithman)

aivee пишет:

А можно создать репозиторий на флешке? Или как еще можно решить такую задачу:
Загруженные из интернета пакеты перенести на машину, не подключенную к интернету, и установить их там.
Будет ли рабоать такой вариант: перенести загруженные пакеты в папку /var/cache/apt/archives/ на второй компьютер?

1.Можно.

2. Тема как раз про это. Читайте. Я использую reprepro.

17 (11.05.2010 17:00:43 отредактировано zenon)

Стал играться с apt-build - в итоге можно создать локальный репозиторий следующим образом:
dpkg-reconfigure apt-build # попросит задать пути для build и repository
создаст /etc/apt/sources.list.d/apt-build.list

в нем deb file:/где_наш_репо/ apt-build main
не забыть про приоритеты в /etc/apt/preferences
# Package: *
# Pin: release o=apt-build
# Pin-Priority: 990

далее можно не делать apt-build install, а просто скопировать deb пакеты (например из /var/cache/apt/archives) в /где_наш_репо/ и выполнить apt-build build-repository => apt-get update => всё ab
Packeges.gz при этом генерируется....

ы. Насколько я понимаю если поставить Pin-Priority: 1001 = наш репо пригвоздится намертво?

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

18

Вообщем, наверное в эту тему вопрос, понадобилось создать локальный репозиторий для squeeze. Все начиналось хорошо, но провайдер немного вырубил инет и все поломалось ac
Запускаем зеркалирование:

debmirror  -v -d testing --nosource --i18n --method=http -h ftp.de.debian.org --ignore-missing-release /home/yazichnik/repo/

И получаем следующее:

Mirroring to /home/yazichnik/repo/ from http://ftp.de.debian.org/debian/
Arches: i386
Dists: testing
Sections: main,contrib,non-free,main/debian-installer
Pdiff mode: use
Will clean up AFTER mirroring.
Attempting to get lock, this might take 2 minutes before it fails.
Get Release files.
[0%] Getting: dists/testing/Release... ok
[0%] Getting: dists/testing/Release.gpg... ok
gpgv: keyblock resource `/home/yazichnik/.gnupg/trustedkeys.gpg': ошибка открытия файла
gpgv: Подпись создана Вск 29 Авг 2010 12:14:15 MSD ключом RSA с ID 55BE302B
[GNUPG:] ERRSIG 9AA38DCD55BE302B 1 2 00 1283069655 9
[GNUPG:] NO_PUBKEY 9AA38DCD55BE302B
gpgv: Не могу проверить подпись: открытый ключ не найден
gpgv: keyblock resource `/home/yazichnik/.gnupg/trustedkeys.gpg': ошибка открытия файла
gpgv: Подпись создана Вск 29 Авг 2010 12:14:15 MSD ключом RSA с ID 55BE302B
gpgv: Не могу проверить подпись: открытый ключ не найден
Release signature does not verify.
The directory for a dist should be its codename, not a suite.
Starting conversion - renaming 'dists/testing' to 'dists/squeeze':
Directory 'dists/squeeze' already exists; aborting conversion.
WARNING: releasing 1 pending lock...

Собственно вопрос, откуда взялся этот самый ключ и почему он стал его требовать? Как это исправить?

19

Может надо было сначала выполнить

 Консоль:
gpg --keyserver keyring.debian.org --recv-keys 4F368D5D

20

Все-равно ругается ac

21

Может эта ссылка чем поможет.

22

Вообщем нужно сделать так:
1 - удаляем ./temp
2 - удаляем /main
3 - запускаем

debmirror -v -d testing --nosource --i18n --method=http -h ftp.de.debian.org --ignore-missing-release --ignore-release-gpg --allow-dist-rename /home/yazichnik/repo/

4 - ждем пока все переиндексируется и продолжит дальше качаться
фух, уже думал заново придется делать

23

Коллеги, пара вопросов по созданию репозитория.
Создал репозиторий под Ubuntu посредством debmirror.
При обновлении ругается на ключ.

Импортировал ключ посредством "gpg --keyserver keyring.debian.org --recv-keys 4F368D5D"

gpg: запрашиваю ключ 4F368D5D с hkp сервера keyring.debian.org
gpg: /home/alex/.gnupg/trustdb.gpg: создана таблица доверий
gpg: ключ 4F368D5D: открытый ключ "Debian Archive Automatic Signing Key (2005) <ftpmaster@debian.org>" импортирован
gpg: не найдено абсолютно доверяемых ключей
gpg: Всего обработано: 1
gpg:               импортировано: 1

но на ключ все-таки ругается:

gpgv: ресурс блока `/home/alex/.gnupg/trustedkeys.gpg': ошибка открытия файла
gpgv: Подпись создана Чтв 29 Апр 2010 21:25:07 MSD ключом DSA с ID 437D05B5
[GNUPG:] ERRSIG 40976EAF437D05B5 17 2 00 1272561907 9
[GNUPG:] NO_PUBKEY 40976EAF437D05B5
gpgv: Не могу проверить подпись: открытый ключ не найден
Release signature does not verify.

Это праблем номер раз ab.

Праблем номер два.
Отредактировал "/etc/apt/source.list", все строки поменял на локальный адрес. Но при запуске "менеджера обновлений" либо посредством apt-get update он смотрит не только на мой новый репозиторий, но еще и на другие - на репозиторий Оперы, например.

Вопрос - где это настраивается?

Ну, и заодно хотелось бы настроить, чтобы "менеджер обновлений" у юзеров стартовал по расписанию и в "silent mode", просто закачивая и устанавливая обновления с локального сервера по расписанию.

А, ну и третий вопрос - хотелось бы поставить к репозиторию интерфейс, чтобы ставить галочки, "что закачивать" (или, скорее, "что раздавать" юзерам), поскольку не все обновления имеет смысл ставить.

24

по первому вопросу: попробуйте сделать как я писал выше, мне помогло
по второму вопросу: если я правильно понял то вы пользуетсь убунтой, в меню администрирование - источники приложений, там выбрать нужные вам репозитории

25

первый вопрос: то есть надо просто удалить ./temp и сделать переиндексацию созданного хранилища?
второй вопрос: да, Ubuntu. а как это через конфиги сделать?

26

Мне помогло просто удалить ./temp
Можно ручками отредактировать /etc/apt/source.list там # комментриует строки, просто ставить перед неиспользуемыми. Есть еще там source.list.d можно еще там поковыряться на тему ненужностей
На счет расписание, сделайте от рута задание в cron и будет то что вы хотите )

27

./temp удалил.
sources.list модифицировал руками, но все равно при обновлении с другой машины опрашивает и другие сервера тоже, никак не пойму по каким еще конфигам он их собирает.
про cron все понятно ab

28

Частично разобрался.
Есть директория /etc/apt/sources.list.d, а в ней конфиги всех third-party репозиториев (лаунчпадов).
Думаю теперь, как это "пристыковать" к моему зеркалу.

С crontab разобрался, все качается по часам ab.

29

перечитал ветку и возникли вопросы
1. У меня в локалке две архитектуры 386 и 64, значит мне надо делать два локальных репо?
2. можно ли монтировать раздел для локального репо на лвм?
3. какой рекомендуется объем раздела для локального репо (386 и 64)?

30

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