Pull to refresh

Comments 24

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

Если выбросить из инструкций создание ключика, проверку репозиториев и прочую обёртку, то в остатке будет примитивный скрипт. Который в свою очередь сводится к командам createrepo для RHEL и dpkg-scanpackages для Debian. Достаточно показать это и становится понятно что здесь нет никаких «чёрных ящиков» и труд программистов не нужен. Задачу можно поручить любому специалисту, инструкции достаточно. Да и скриптики если разобраться не так уж нужны. Т.е. моей целью было понимание.
Так рассуждая, можно дойти до того, что и бэкап — простой скриптик, который scp гоняет туда-сюда, а браузер — всего лишь программа для передачи байтиков по http. И зачем тысячи программистов над ним трудятся? Можно же telnet'ом html странички смотреть!
UFO landed and left these words here
Можно. Ваш аватар даже намекает на правило «не изобретать велосипеды». Однако, есть велосипеды, а есть понимание. Думаю Вы не будете всерьёз предлагать прочитать исходники браузера для того чтобы выучить 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 -
А ещё раз в тысячу лет наконец читают внимательно man apt-key и man gpg и получается
sudo apt-key adv --fetch-keys http://<IP-адрес>/repo/DEB-GPG-KEY
Какие только велосипеды не городят, лишь бы маны к 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).
Only those users with full accounts are able to leave comments. Log in, please.