Как стать автором
Обновить

Комментарии 24

НЛО прилетело и опубликовало эту надпись здесь
Интересно, что только в русском есть такая идиотская транскрипция латинского слова Repositōrium. Режет глаза невероятно, прямо как «раутер».
Слова раутер в русском языке нет, только в американском английском. А слово роутер вообще какая-то абракадабра.
Я в курсе, привел для сравнения. Сложно было придумать что-то аналогичное.
Скажите, почему надо изобретать велосипед, а не взять что-то вроде mini-dinstall или reprepro? Настраивается на порядок проще, работает надёжнее, поддерживается апстримом.
Наяву столкнулся с ситуацией когда умение создать репозиторий подавалось знакомыми людьми как некое «эксклюзивное знание». Как Вам такое звучание: «Система Сборки Репозитария»? Поменять одну «систему» на другую не было бы эффективно. Потому что «чёрный ящик» остался.

Если выбросить из инструкций создание ключика, проверку репозиториев и прочую обёртку, то в остатке будет примитивный скрипт. Который в свою очередь сводится к командам createrepo для RHEL и dpkg-scanpackages для Debian. Достаточно показать это и становится понятно что здесь нет никаких «чёрных ящиков» и труд программистов не нужен. Задачу можно поручить любому специалисту, инструкции достаточно. Да и скриптики если разобраться не так уж нужны. Т.е. моей целью было понимание.
Так рассуждая, можно дойти до того, что и бэкап — простой скриптик, который scp гоняет туда-сюда, а браузер — всего лишь программа для передачи байтиков по http. И зачем тысячи программистов над ним трудятся? Можно же telnet'ом html странички смотреть!
НЛО прилетело и опубликовало эту надпись здесь
Можно. Ваш аватар даже намекает на правило «не изобретать велосипеды». Однако, есть велосипеды, а есть понимание. Думаю Вы не будете всерьёз предлагать прочитать исходники браузера для того чтобы выучить HTML? Вам приходилось слышать фразы «науке неизвестно что такое электричество»? Хотя все эти люди учились в школе. Здесь ровно то же самое. Есть люди которые считают недоступным среднему уму создание репозитария, сборку ядра, пакета и т.п. Хотя у всех есть пальцы чтобы набрать 1 (одну) команду. Пользовался утилитами подобными reprepro, но статья о них — другая статья, с другой целевой аудиторией.
Если главной целью является понимание, это прекрасно. Заодно можно было бы поподробнее рассказать об устройстве репозитория.
Однако же в статье это преподносится как боевой инструмент. Именно это и вызывает здесь такое недоумение.
Боевой инструмент не очень коррелирует с «Иногда обновляться в ручном режиме — копированием по тому же адресу с перезаписью. Раз в полгода или год.» Мне важно понимание подхода и это понимание может быть стартовой точкой для специалиста. У меня есть конкретные примеры, просто не хочется описывать в комментариях разные заморочки на этот счёт. Боевые инструменты, устройство репозитория, свои заточенные системы «сборки репозитария», аналоги reprepro — остались за скобками.
Зачем? У меня репозиторий формируется одной командой без параметров при конфиге в 17 строк, из которых две — пустые. Хотите видеть? Пожалуйста:
[DEFAULT]
incoming_permissions = 0750
mail_to = me@somewhere.org
architectures = all, i386, amd64
archive_style = flat
dynamic_reindex = 1
archivedir = ~/public_html/debian/
generate_release = 1
release_origin = lalala
release_label = lalala
release_description = Unofficial Debian packages maintained by me

[experimental]
release_suite = experimental

[unstable]
release_suite = unstable
Не то чтобы «эксклюзивное», но если дистрибутивов штук пять и более, при этом есть и самосборные пакеты, есть approx в официальные репы, то нужно скриптовать очень аккуратно и не у всех получается.
Согласен. Типовое применение — спец не хочет таскать пакеты по клиентам на flash-носителе, но и разворачивать свой репозитарий — не знает как подступиться. Понимание которого мы достигаем здесь: спец видит что всех сложностей у него — затраты времени на подготовку иерархии директорий и одна команда в скрипте который и сам по себе — инструкция. Да, он может заняться автоматизацией. Позже. Но ему будет от чего отталкиваться сейчас. Просто сказать: смотри reprepro или createrepo и кури маны было бы ещё проще. Но этот совет ему уже давали и допустим с закачиванием файлов на хостинг и вводом команд по бумажке он справляется.

Об «эксклюзивности»: кто-то когда-то строил репозитарий и у кого-то есть телефон этого человека, но никто не знает как его заставить что-то выложить и сколько заплатить, поэтому пока anykey ходит с flash-носителями. Неважно как зовут этого человека или компанию. Это часто встречающаяся ситуация в малом бизнесе где пытаются использовать Linux в обиходе, когда спустя некоторое время после внедрения обслуживание дошло до anykey.
$ wget http://<IP-адрес>/repo/DEB-GPG-KEY
$ sudo apt-key add DEB-GPG-KEY

Это обычно объединяют в одну команду
wget http://<IP-адрес>/repo/DEB-GPG-KEY -O - | sudo apt-key add -
НЛО прилетело и опубликовало эту надпись здесь
Какие только велосипеды не городят, лишь бы маны к reprepro не читать.
Ошибка в листинге
вместо
gpg —export -a 'Name Surname (repo)' > DEB-GPG-KEY
нужно
gpg --export -a 'Name Surname (repo)' > DEB-GPG-KEY
походу парсер скушал двойной тире
При тестировании не получается завести. При apt-get update получаю
W: Не удалось получить repo.loc/repo/dists/nobody/Release
E: Некоторые индексные файлы не скачались. Они были проигнорированы или вместо них были использованы старые версии.

и так же ошибка:

sky@dhcppc2:~/repo$ ./repo_debian.sh
dpkg-scanpackages: инфо: Записано 1 записей в выходной файл Packages.
dpkg-scanpackages: инфо: Записано 1 записей в выходной файл Packages.
md5sum: soft/binary-i386/Release: Нет такого файла или каталога
ls: невозможно получить доступ к soft/binary-i386/Release: Нет такого файла или каталога
md5sum: soft/binary-x86_64/Release: Нет такого файла или каталога
ls: невозможно получить доступ к soft/binary-x86_64/Release: Нет такого файла или каталога

* Singning Repositary *
Reading passphrase from file descriptor 0

Необходим пароль для доступа к секретному ключу пользователя: «User (My Repo) <gmail@gmail.com>»
2048-бит RSA ключ, ID E6A29EE1, создан 2013-02-10

* Singning i386 *
Reading passphrase from file descriptor 0

Необходим пароль для доступа к секретному ключу пользователя: «User (My Repo) <gmail@gmail.com>»
2048-бит RSA ключ, ID E6A29EE1, создан 2013-02-10

gpg: не могу открыть `Release': Нет такого файла или каталога
gpg: signing failed: ошибка открытия файла

* Singning x86_64 *
Reading passphrase from file descriptor 0

Необходим пароль для доступа к секретному ключу пользователя: «User (My Repo) <gmail@gmail.com>»
2048-бит RSA ключ, ID E6A29EE1, создан 2013-02-10

gpg: не могу открыть `Release': Нет такого файла или каталога
gpg: signing failed: ошибка открытия файла
Упустил из вида при приведении к виду «для публикации», sorry.
Обновил скрипт, проверил — работает.
Но по адресу repo.loc/repo/dists/nobody/Release
Release имеет вид
Origin: nobody
Label: nobody repo
Suite: nobody
Codename: nobody
Version: 1.0
Architectures: i386
Components: soft
Description: nobody 1.0 repo
MD5Sum:
9046a2f783922bf56734bc29087732aa 451 soft/binary-i386/Packages
14366b0a3388229c0267f192e3b3fc01 366 soft/binary-i386/Packages.bz2
9f64d264c2e1da0098f66378ca417f29 344 soft/binary-i386/Packages.gz
0 soft/binary-i386/Release
9046a2f783922bf56734bc29087732aa 451 soft/binary-x86_64/Packages
14366b0a3388229c0267f192e3b3fc01 366 soft/binary-x86_64/Packages.bz2
9f64d264c2e1da0098f66378ca417f29 344 soft/binary-x86_64/Packages.gz
0 soft/binary-x86_64/Release
откуда во всех скриптах и путях взялось «x86_64 », когда в дебиане используется «amd64»?
и что за «nobody», хотя бы «stable» что ли был бы
Согласен. Но это шаблон и любые модификации — на Ваше усмотрение. Скрипт изначально был написан для создания на RHEL 6.3 репозитория для Ubuntu 10.04, а для Ubuntu свойственно x86_64 (причём ЕМНИП это alias для amd64).
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории