ava1ar 17.10.2009 03:25
Archlinux — Следуем Arch Way при установке и обновлении ПО
Цель данной статьи - рассказать о подходах, которые приняты при установке ПО в дистрибутиве Arch Linux. Если Вам кажется, что в этой области Вы - пользователь Arch Linux со стажем - все знаете и я не открою ничего нового, думаю Вы заблуждаетесь. Будучи активным пользователем этого дистрибутива на протяжении уже почти двух лет я не перестаю открывать в нем новые и новые интересные особенности и неожиданные возможности, как например сегодня... Но об этом позже, а пока начнем с самого начала: итак, что же такое Arch Way в данном конкретном применении?Случай первый (тривиальный) - нам нужно установить приложение из репозитория в систему. Решается, как известно, командой:
1 |
|
или (что в данном случае приводит к аналогичному результату)
1 |
|
yaourt, если кто-то еще не знает, это "обертка" вокруг pacman'a с набором очень "вкусных" возможностей, некоторые из которых буду описаны ниже.
Итак, проблема решена, пользователь доволен. Идем дальше.
Случай второй: приложения в репозитории не оказалось. Как поступить в данном случае? Правильный ответ - поискать пакет в AUR (Arch Linux User Repository). AUR - это репозиторий, пополняемый сообществом пользователей Arch Linux. Содержит на на данный момент более 17000 пакетов, среди которых можно найти практически все, что может понадобится. Содержит он не бинарные пакеты, а специальные пакеты для ABS (Arch Build System). ABS это метод сборки пакетов из исходных кодов, принятый в Arch Linux. Вкратце - позволяет собрать из исходных текстов пакет, который потом инсталлируется пакетным менеджером. Кстати, одна из возможностей yaourt - поиск, сборка и установка программ из этого репозитория. Итак, пакет нашелся, собрался, ситуация разрешилась. Продолжим.
Случай третий - нужного приложения не оказалось и в AUR'е. Тогда напишем PKGBUILD самостоятельно, и, если приложение может оказаться полезным еще ком-нибудь кроме Вас, и, что более важно, Вы собираетесь его использовать и поддерживать его PKGBUILD, то его следует выложить его в AUR. Возможно Вы кому-то этим очень поможете и сэкономите время:)
Итак, с установкой программ в стиле Arch Way вроде бы разобрались. Теперь перейдем к более редким, но не менее интересным ситуациям - решению проблем с уже установленными приложениями.
Проблема первая. У нас установлены пакет-библиотека LibA и зависящий от него пакет-приложение AppB. Оба установлены из официального репозитория и прекрасно работают. Потом происходит следующее - пакет LibА обновляется до новой версии, и приложение AppB перестает работать. Почему? Дело в том, что AppB собиралось еще со старой версией LibA, и, статически слинковано с ним. Решение - пересборка приложения AppB c новой версией LibА. Это задача для мэйнтейнера пакета AppB, которая иногда решается им быстр (в течении дней, и даже часов), а иногда (к счастью, редко) остается висеть на недели... Если вы думаете, что Вам придется ждать новой версии AppB в репозитории, Вы ... отчасти правы, но, следуя Arch Way следует просто пересобрать данное приложение самостоятельно, у себя на машине. И для этого совсем не нужно скачивать из SVN последний PKGBUILD и собирать пакет на его основе (как я поступал будучи новичком в Арче), а всего-лишь использовав команду
1 |
|
которая выполнит все самостоятельно. Вот такой вот Arch Way.
Закончить же статью мне бы хотелось описанием еще более интересного и сложного случая, с которым я впервые столкнулся сегодня, и который тоже удалось решить в таком-же элегантном стиле :) К тому же, позволю себе быть более конкретным, так как проблема актуальна и в данный момент, а шаги все пока свежи в памяти. Итак, проблема вторая начиналась так же, как и предыдущая: во время очередного обновления системы, до последней актуальной версии в том числе был обновлен и пакет gdl (до 2.28.0-1). Этот пакет имеется в зависимостях у Python Machine - PyGTK IDE, которую я частенько использую и собираю из AUR. Python Machine, как Python -приложение, работает с gdl посредством "биндингов" из пакета gnome-python-extras, который не обновился вместе в gdl, и перестал с ней работать. Попытка пересборки gnome-python-extras из исходников посредством
1 |
|
не увенчалась успехом, т.к. gdl значительно изменился в версии 2.28 и gnome-python-extras нужно пропатчить для успешной сборки и использования. Я задумался: как же поступить в такой ситуации? Неужели придется отказаться от Arch Way и все же скачивать и править PKGBUILD, пересобирать пакет и заменять им пакет из репозитория? Согласитесь, не очень красивый метод. Однако выход был найден - customizepkg. Этот скрипт, работая в паре с yaourt позволяет на лету модифицировать PKGBUILD, который использует yaourt при пересборке пакета из репозитория из исходников. Используя customizepkg мне удалось решить и эту проблему, сохраняя элегантность и не отступая от Arch Way.
P.S. Статья получилась несколько громоздкой, надеюсь хотя бы кто-то из читателей найдет в ней что-то интересное и полезное для себя.
P.P.S. Подробнее о customizepkg в моей следующей статье - пока еще сам с ним разбираюсь, а информации в сети об этой утилите совсем немного.
ava1ar 17.10.2009 03:41 #
+ 1 -
Кстати, немного оффтопик, но режет глаза - разработчики пишут Arch Linux в два слова. Если можно, исправьте название блога со слитного написание на раздельное, думаю так будет правильнее.
спасибо, про -Sb как-то не знал )
пост хорош.
ИМХО, стали раздражать всякие Arch-way, Gentoo-way и др. Мне кажется, это не более чем пеар.
ИМХО, стали раздражать всякие Arch-way, Gentoo-way и др. Мне кажется, это не более чем пеар.
С одной стороны это не более чем действительность при использовании того или иного дистрибутива. С другой - это всего лишь короткое обозначение того, по каким принципам и правилам происходит контроль установки/обновления/удаления софта в том или ином дистрибутиве. И обозначать все это коротким, "дистрибутиво-зависимым" словосочетанием вполне естественно.
Мне кажется, это не более чем пеар
Не согласен. Я бы назвал это "Культурой использования дистрибутива" - может немного пафосно, но зато отражает суть. Можно выберать путь configure && make && make install, а можно потратить еще немного времени на изучение лбимого дистрибутива и поступать так, как в нем принято - будь то pacman/yaourt/abs в арче или dpatch/dpkg-buildpackage в убунту\дебиане и наверняка что-то подобное в rpm-based системах (с ними знаком меньше). Мой принцип - если использовать дистрибутив - то делать это в стиле , который предлагает этот дистрибутив - ведь это наиболее простой и удобный подход.
ну знаешь, почему-то другие дистрибутивы пафосом по использованию его именно "культурно" - не страдают. Нигде не видел opensuse-way slackware-way, ubuntu-way и пр.
ЗЫ в рпм - yum.
ЗЫ в рпм - yum.
Да, не пафос это, а просто набор практик, принятых в данном конкретном дистрибутиве. Если Arch Way режет слух, пускай будут Arch Linux Best Practices. Идея - просто рассказать о том, как те или иные вещи делаются в конкретном дистрибутиве с применением его инструментов.
Гугель говорит "Slackware way: creating packages from source and use installpkg for install."
"Вей" рождается, когда у кого-то своя дорога.
Арч-вей, генту-вей, слака-вей существуют, так как используются, в основном, красноглазиками и прочими фанатично настроенными пользователями. Красноглазие рождается не только, может быть, из-за неких трудностей в личной жизни, а прежде всего из-за тяги к знаниям. Что ни говори, а пафос осилившего даже мало-мальски красноглазые дистры оправдан, особенно на фоне убунту-сусе-мандривоюзеров. Когда красноглазик лезет в код, пишет метровые конфиги для вим, шарится в tcp/ip, убунту-сусе-юзер не может прописать прокси в синаптике и просит скрины. Так уж сложилось.
А у остальных есть только "остальные-вей".
"Вей" рождается, когда у кого-то своя дорога.
Арч-вей, генту-вей, слака-вей существуют, так как используются, в основном, красноглазиками и прочими фанатично настроенными пользователями. Красноглазие рождается не только, может быть, из-за неких трудностей в личной жизни, а прежде всего из-за тяги к знаниям. Что ни говори, а пафос осилившего даже мало-мальски красноглазые дистры оправдан, особенно на фоне убунту-сусе-мандривоюзеров. Когда красноглазик лезет в код, пишет метровые конфиги для вим, шарится в tcp/ip, убунту-сусе-юзер не может прописать прокси в синаптике и просит скрины. Так уж сложилось.
А у остальных есть только "остальные-вей".
P.S. Статья получилась несколько громоздкой, надеюсь хотя бы кто-то из читателей найдет в ней что-то интересное и полезное для себя.
Не-не-не :) Все отлично. Коротко и по делу. Прочитал с интересом. Спасибо!
А вот про -Sb не знал :)
А за статью отдельное спасибо, хоть букв и много, но легко читается.
А за статью отдельное спасибо, хоть букв и много, но легко читается.
Познавательно конечно...
Но я вот не понял, в чем же тут Way Arch'а. Это - не более, чем мануал по установке программ и называть так громко пост...
pacman -S application_name ничем не лучше и не хуже apt-get install application_name и других команд для установки пакетов. Я бы даже сказал... не холивара ради, а просто так думаю, что команды apt-get проще запомнить, чем ключи pacman
Но я вот не понял, в чем же тут Way Arch'а. Это - не более, чем мануал по установке программ и называть так громко пост...
pacman -S application_name ничем не лучше и не хуже apt-get install application_name и других команд для установки пакетов. Я бы даже сказал... не холивара ради, а просто так думаю, что команды apt-get проще запомнить, чем ключи pacman
На самом деле, если долго сидишь под опр. дистрибутивом, часто используемые специфичные команды въедаются не то что в мозг, а непосредственно в пальцы :)
И да, у yaourt один из вариантов синтаксиса даже проще, чем у aptitude/apt-get:
И да, у yaourt один из вариантов синтаксиса даже проще, чем у aptitude/apt-get:
debian# apt-get install package
arch$ yaourt package
вообще-то различие в отсутствии слова - просто смешно. Нашел, чем аргументировать. Алсо, yaourt - не основной пакетный менеджер в арче.
по-моему, только дурачок не запомнит apt-get install, zypper install, yum install, aptitude install.......
С другой стороны, это же обычно sudo apt-get install package, не так ли? То есть, мало того что это на два слова больше, чем в yaourt package, так еще
Сложите все эти аспекты и получите то, что действительно отличает yaourt от apt-get install и то, за что и ценят yaourt.
А запомнил-не запомнил - тоже важно. Да, как новичок линукса я мог не знать разницы между apt-get и apt-install, мог не запомнить или попросту не знать их. Это вы сейчас матерый пользователь, но все мы начинали с удивления от способа устанавливать программы в Linux дистрибутивах (уже не говоря о том, что удивления было от GUI, а консольные варианты вообще некоторых в шок вводят)
- apt-get - слово с дефисом, что не очень удобно набирать (не в том плане что фиг запомнишь, а просто лишних полдвижения пальцами). Кроме того пользуясь табом для автозаполнения после дефиса оно спотыкается, ибо есть еще apt-cache и что-то еще. Опять же лишние теложвижения, которые очень меня раздражали в свое время.
- если вы забыли написать sudo, то приходится опять-таки делать лишние телодвижения
- Слово install на самом деле как-то лишнее. Хотя да, с точки зрения обычного пользователя это больше соответствует естественному языку (мол, товарищь Apt-get, установи мне вот этот пакет). Однако опять же естественный язык неплох для новичков, тогда как уверенные пользователи консоли предпочтут ключ длиной в 1 символ
- Для того чтобы не устанавливать пакет, а для начала найти какой-то пакет содержащий указанное слово нужно изменять два слова в команде. Если опять же ссылаться на естественные языковые конструкции, то совершенно непонятно почему apt-get может устанавливать, но его нельзя попросить искать.
Сложите все эти аспекты и получите то, что действительно отличает yaourt от apt-get install и то, за что и ценят yaourt.
А запомнил-не запомнил - тоже важно. Да, как новичок линукса я мог не знать разницы между apt-get и apt-install, мог не запомнить или попросту не знать их. Это вы сейчас матерый пользователь, но все мы начинали с удивления от способа устанавливать программы в Linux дистрибутивах (уже не говоря о том, что удивления было от GUI, а консольные варианты вообще некоторых в шок вводят)
Way арча, да и любого другого дистрибутива, как-раз начинается там, где pacman -S / apt-get install/ yum install заканчивается, т.е в тех случаях когда пакетный менеджер ожой командой нам помочь не может. В этом случае возможны несколько вариантов:
1) не ставить данную программу
2) поставить ее через configure && make && make install
3) (правильный) собрать пакет, специфичным для данного дистрибутива способом и устновить его в систему пакетным менеджером
да не хотел я ни с кем мерится в этом посте, просто хотел рассказать о Вот как-раз о том, как в Арче реализован третий (правильный) метод установки ПО не из репозитория. Для Debian/Ubuntu можно написать такую же статью про Debian Way, где было бы написано про dpatch и dpkg-buildpackage (наподобие этой) - прочитал бы с удовольствием.
1) не ставить данную программу
2) поставить ее через configure && make && make install
3) (правильный) собрать пакет, специфичным для данного дистрибутива способом и устновить его в систему пакетным менеджером
pacman -S application_name ничем не лучше и не хуже apt-get install application_name и других команд для установки пакетов
да не хотел я ни с кем мерится в этом посте, просто хотел рассказать о Вот как-раз о том, как в Арче реализован третий (правильный) метод установки ПО не из репозитория. Для Debian/Ubuntu можно написать такую же статью про Debian Way, где было бы написано про dpatch и dpkg-buildpackage (наподобие этой) - прочитал бы с удовольствием.
по-моему ты просто херово знаешь возможности других менеджеров. Разруливать депенденсы - это стандартная задача каждого, вариантов ты че-т маловато предложил.
Так я и не рассматривал случай, когда пакетный менеджер может справится с задачей - поставить пакет одной командой может любой мало-мальски знающий человек. В посте говорится о том что делать, если нужной программы в репозитории не оказалось и как ее правильно собрать и поставить в дистрибутиве arch linux
я прошу прощения, но ОЛОЛО.
т.е. ставить через yaourt - это не из репов? И собирать pkgbuild - действительно простое и нужное решение. Вот что я скажу. Во-первых, AUR - это не дистрибутив арч линукс. Арч - это только репозитарий pacman'a, составляемый мейнтенерами арча, которые тщательно подбирают софт и как-никак за ним следят.
AUR - это своего рода launchpad в убунтах, только хуже. Почему? Потому что никто не мешает построить запихать скрипт rm -Rf в пакет, залить в реп и смотреть, сколько его раз его скачают. И не надо мне говорить, что "я каждый раз просматриваю содержимое пакета, прежде чем поставить его из AUR'a" - понятно, что ты просто тыкаешь y побыстрее.
Прошу прощения, но я чувствую, что поторопился с плюсом за пост в стиле "все дерьмо, а yaourt Д'Артаньян"
ЗЫ предрекаю уже вой арчеводов. Надоели флеймы по поводу Arch-way
В посте говорится о том что делать, если нужной программы в репозитории не оказалось
т.е. ставить через yaourt - это не из репов? И собирать pkgbuild - действительно простое и нужное решение. Вот что я скажу. Во-первых, AUR - это не дистрибутив арч линукс. Арч - это только репозитарий pacman'a, составляемый мейнтенерами арча, которые тщательно подбирают софт и как-никак за ним следят.
AUR - это своего рода launchpad в убунтах, только хуже. Почему? Потому что никто не мешает построить запихать скрипт rm -Rf в пакет, залить в реп и смотреть, сколько его раз его скачают. И не надо мне говорить, что "я каждый раз просматриваю содержимое пакета, прежде чем поставить его из AUR'a" - понятно, что ты просто тыкаешь y побыстрее.
Прошу прощения, но я чувствую, что поторопился с плюсом за пост в стиле "все дерьмо, а yaourt Д'Артаньян"
ЗЫ предрекаю уже вой арчеводов. Надоели флеймы по поводу Arch-way
Пост был от арчевода для арчеводов. Если Вам не нравится арчлинукс - не читайте постов из соответствующего блога.
И еще - неужели я где-то в посте как-то ущемил плохо охарактеризовал другие пакетных менеджеры и дистрибутивы? Данным постом я делюсь опытом с другими арчеводами, а не меряюсь длиной пакетных менеджеров в разных дистрибутивах.
На будущее - все мои посты в блоге Archlinux будут адресованы арчеводам или тем, кто интертесуется Арчем. Арчененавистники могут не тратить свое время на чтение и обсуждение.
Далее буду отвечать на комментарии только по теме статьи.
И еще - неужели я где-то в посте как-то ущемил плохо охарактеризовал другие пакетных менеджеры и дистрибутивы? Данным постом я делюсь опытом с другими арчеводами, а не меряюсь длиной пакетных менеджеров в разных дистрибутивах.
На будущее - все мои посты в блоге Archlinux будут адресованы арчеводам или тем, кто интертесуется Арчем. Арчененавистники могут не тратить свое время на чтение и обсуждение.
Далее буду отвечать на комментарии только по теме статьи.
Вот смотрю в последние несколько дней на ваши комментарии. Вы как-то все более и более неадекватны.
Вы как бы чем голословно утверждать, запихайте в AUR скрипт типа rm -Rf. А не голословно утверждайте.
Вообще складывается впечатление, что вы прямо-таки арче-ненавистник какой-то.
Вы как бы чем голословно утверждать, запихайте в AUR скрипт типа rm -Rf. А не голословно утверждайте.
Вообще складывается впечатление, что вы прямо-таки арче-ненавистник какой-то.
Вот смотрю в последние несколько дней на ваши комментарии. Вы как-то все более и более неадекватны.
Складывается скорее впечатление, что учетку увели >.>
Хорошая статья, особенно для новичков Arch Linux
Пока я не сталкивался с такой ситуацией, но думаю, что все впереди
Пока я не сталкивался с такой ситуацией, но думаю, что все впереди