Блог — Отгрузка со склада |
Блог
Пользуясь выходными и шилом в неположенном месте, я неожиданно сподобился сделать публичным свой собственный репозиторий RPM-пакетов для CentOS 6. Сразу же оговорюсь, что создан он был не из баловства и не для удобрения ЧСВ, а по гораздо более прозаичной причине − как в официальных, так и в известных мне сторонних репозиториях, очень часто отсутствуют пакеты с последними версиями приложений, которыми я регулярно пользуюсь (в качестве примера тут можно привести «настольный» клиент «облачного» хранилища файлов Dropbox, упоминавшийся в одной из предыдущих записей). Более того, тот же «реформатор» исходных текстов Artistic Style, чьими услугами я регулярно пользуюсь при изучении и правке чужого кода, до сих пор присутствует на pkgs.org только в виде пакета для CentOS 5: убедитесь сами. В общем, коль скоро менять дистрибутив на более «прогрессивный» я пока что не собираюсь, а Linux-сообщество активно призывает жить по принципу «делиться надо» − прошу любить, как говорится, и жаловать(ся): YUMrepo, новый раздел этого сайта.
Теперь перейдем к техническим деталям. Для того, чтобы этот, как, впрочем, и любой другой, репозиторий был доступен пакетному менеджеру для поиска и установки ПО, необходимо добавить в папку /etc/yum.repos.d/ соответствующий конфигурационный файл (в данном случае − zarezky-spb-ru.repo; имя может быть абсолютно произвольным, «опознание», насколько мне известно, выполняется по расширению, а вся необходимая информация содержится в самом файле). Наиболее простым способом известить YUM о прибавлении в семействе будет последовательное выполнение двух приведенных ниже команд: wget --output-document=~/Downloads/zarezky-spb-ru.repo http://zarezky.spb.ru/yumrepo/zarezky-spb-ru.repoНу а для самых недоверчивых я продублирую содержимое этого файла здесь: [zarezky.spb.ru-$basearch]Нетрудно видеть, что перед нами, с формальной точки зрения, ссылки не на один, а на три репозитория − с бинарными пакетами под архитектуру целевой системы (каюсь, пока что по факту поддерживается только i686, x86_64 еще в планах), с бинарными пакетами, не зависящими от этой самой архитектуры (приложения на Python, как вариант) и с так называемыми «исходными RPM-пакетами» (о них еще будет сказано ниже). Как только данный файл окажется в папке /etc/yum.repos.d/, пакетный менеджер при выполнении команд типа yum search, yum install или yum list all начнет обращаться, в том числе, и к перечисленным репозиториям, никакой перезагрузки ОС для этого, само собой, не требуется. Выше я описал самый, что называется, «ленивый» вариант использования моего скромного вклада в «опакечивание» Linux-приложений, но ведь «всегда есть два выхода» − а тут их даже целых три. Например, если вы не хотите использовать какие бы то ни было сторонние репозитории, то любой из пакетов можно запросто скачать к себе на рабочее место и установить локально: cd ~/DownloadsНу и наконец, любители делать все от «а» до «я» своими руками (параноики, проще говоря, типа меня самого) могут воспользоваться теми самыми «исходными RPM-пакетами»,содержащими архив(ы) с исходными текстами и .spec-файл с правилами сборки для утилиты rpmbuild, чтобы самостоятельно выполнить сборку пакетов бинарных. Схематично этот процесс (на примере Midnight Commander) выглядит следующим образом. В первую очередь, необходимо подготовить внутри домашней папки соответствующую дочернюю иерархию, если таковая еще отсутствует: cd ~ && mkdir -p rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}После этого скачиваем нужный .src.rpm-файл cd ~/Downloadsи извлекаем его содержимое rpm2cpio mc-4.8.10-1.el6.src.rpm | cpio -idmvДалее раскладываем добычу по полочкам mkdir ~/rpmbuild/SOURCES/mc-4.8.10 && mv mc-4.8.10.tar.xz ~/rpmbuild/SOURCES/mc-4.8.10/перебираемся в папку ~/rpmbuild/SPECS/ и наслаждаемся теплым ламповым rpmbuild -ba mc-4.8.10-centos6.specВажное замечание «под занавес»: в мире RHEL и его производных сложившейся практикой, вызывающей у меня суровое недоумение, является хранение всех без исключения архивов с исходными текстами и .patch-файлов к ним непосредственно внутри rpmbuild/SOURCES/, что, на мой взгляд, никак не способствует удобству управления этим хозяйством, особенно если файлы имеют не слишком очевидные имена. Именно поэтому я предпочитаю держать «сырье» каждого пакета в отдельной дочерней папке, имя которой имеет вид ~/rpmbuild/SOURCES/имя_пакета-номер_версии/и .spec-файлы из моего репозитория по умолчанию ожидают именно этого. Так что если вы считаете такую «систематизацию» излишней, то при пересборке любого «моего» пакета из оригинала придется указать дополнительный параметр rpmbuild -ba --without ownsourcedir mc-4.8.10-centos6.specлибо вручную поправить соответствующий .spec-файл. P.S. Я просто оставлю это здесь: Rpmbuild Tutorial P.P.S. При желании, вы можете присоединиться к обсуждению этой записи на RSDN: Хочется конструктивной критики. <<Первая <Предыдущая | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | Следующая> Последняя>> |