С дури завел этот блог, сюда буду писать что-нить чем захочу поделиться с другими, по тому как я мучаю никсы, программирую на пхп, просто страдаю фигней и все в таком духе, вобщем создали, а дальше разберемся

Показаны сообщения с ярлыком linux. Показать все сообщения
Показаны сообщения с ярлыком linux. Показать все сообщения

пятница, 20 июля 2012 г.

Что делать, если у вас много сторонних репозиториев

Прежде чем читать этот пост откройте консоль и выполните следующие команду
ls /etc/apt/sources.list.d | wc -l
Если у вас вдруг появилась надпись
"ls" не является внутренней или внешней командой, исполняемой программой или пакетным файлом.
то значит эта статья точно не для вас :)

Если у вас не Debian, Ubuntu или их потомки, а что-то на основе RPM или Gentoo, то это тоже не для вас, по крайне мере пока.

Если у вас получилось число меньше 5, то вам наверное не пригодится то что написано дальше.

Ну а если вы получили число больше 10 (а то и 24 как получилось у меня) то читайте дальше и вы сможете сэкономить много времени.

Как в голову пришла идея.

Итак, все началось немногим меньше полутора лет назад, когда я обновлял свою тестовую ubuntu natty на ставший тестовым oneiric. Матов было много, так как приходилось мониторить, когда ppa репозитории перейдут на новый дистрибутив и каким он будет. Кто-то переходил на oneiric, а кто-то только на natty - на это все ушло довольно много времени.
Потом было обновление до oneiric и precise, увеличение количества репозиториев и количества ругательств, установка системы на работе с нуля и подключения этого добра в новую систему.

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

А ведь по сути подключение репозитория сводится к добавлению двух файлов - список адресов в sources.list.d и gpg ключ в trusted.gpg.d, так почему бы их не объединить в пакет, установив который вы подключаете репозиторий, а удалив - отключаете.


Пакет по формату получился простейший, без каких либо зависимостей и не требующий ничего особенного для сборки, но оставался вопрос - как такие пакеты устанавливать, поэтому пришлось реализовывать еще и репозиторий.

И что из этого получилось

А получился сайт http://pkggen.no-ip.org/, который представляет собой довольно простую вещь - вы скачиваете и ставите один пакет, после чего вы можете ставить все пакеты, которые есть на сайте, а если вам чего-то не хватает (а в начале так и будет), то после регистрации можно добавить свои репозитории, и система сама сгенерирует для них пакеты и добавит в репозиторий. PPA репозитории отслеживаются автоматически и проверяются на обновление на launchpad. Все пакеты репозиториев начинаются с префикса, так-что искать в общем списке их можно не только по источнику, но и по имени.

Техническая реализация

Ну во первых код открыт - в лучших традициях OpenSource :)
Во вторых реализовано все на Symfony 2 и хостится на Debian. Интерфейс с использованием Twitter Bootstrap, для редактирования классический CRUD, пагинатор и поиск, репозиторий реализуется просто тремя адресами и ZendCache (а то без него как-то плохо). Для подписей используется библиотека php-gnupg. Так как размер каждого пакета примерно 2.5 килобайта, то с файлами решено было не заморачиваться и собранные пакеты хранить прямо в базе.

понедельник, 27 февраля 2012 г.

Умудрился снести вчера libc

Позавчера, во время обновления пакетов умудрился удалить libc - нужно было почистить *.dpkg* а я сдури почистил libc6*.so.* в результате было очень весело :)

Сначало все работало, но все программы не запускались, выдавая ошибку что библиотека не найдена. Работали только опера и майнкрафт, ну и консолька, причем не рутовая. В консольке работал только cd, спас меня только установленный бизибокс - с его помощью распаковал пакет libc и с помощью LD_PRELOAD добавил библиотеку. Дальше все завелось, за исключением того что под рутом не пускало, соответственно установить пакет не получалось.
Пришлось делать ребут, после которого система уходила в кернел паник, опять спас бизибокс который был подсунут в качестве инита, и вот тогда уже восстановил пакет и все заработало.

Пакеты в дебиане 4

Ага, посрался с мейнтейнерами, ушел на убунту, завел ppa, ну нафиг этот дебиан :)

четверг, 19 февраля 2009 г.

Баг в ядре 2

Вот этот патч помогает

http://bugzilla.kernel.org/attachment.cgi?id=20172

Конечно система ведет себя не идиально, но гораздо лучше - как временное решение подходит :)

воскресенье, 8 февраля 2009 г.

Баг в ядре

К сожалению и домашний комп и ноут оказались подвержены багу в ядре, который тормозит систему при работе с винтом - http://bugzilla.kernel.org/show_bug.cgi?id=12309

В результате сейчас сменил три ядра и сижу на 2.6.29-rc3

Баг обнаружили в 2.6.18 и собственно откатываться как-то не хочется...
Странно что его не обнаружили раньше...

Пакеты в дебиане 3

Ну фух, теперь я мейнтейнер трех пакетов в дебиане :)

Это librcd и librcc, а также обновленный phpunit - со сборкой проблем было очень мало, основные проблемы с лицензионной чистотой - то GPL не соответствует, то еще какая-то гадость с политиками, например в phpunit была сжатая js для генерации отчета о покрытии кода, так из-за сжатия кода она не подходит по лицензии, и временно пришлось исключать эту функциональность.

Зато теперь в дебиане почти последний phpunit - альфа только осталась на сайте и загружены, ожидается патч на taglib и еще возможно другие патчи - на zip архивы например :)

воскресенье, 18 января 2009 г.

Пакеты в дебиане 2

Ушло на вторую итерацию - для патченья taglib нужна лицензия LGPL, а пакеты были по GPL - автор исправил.

А причиной того что итерация будет длинной является разделение общего пакета на пакет библиотеки и gtk интерфейса настройки, который находится в другом so файле

суббота, 17 января 2009 г.

Пакеты в дебиане

Ура, мои пакеты добавили в дебиан.
Пакеты librcd и librcc для автоматической конвертации кодировок.
Сама сборка оказалась не сложной, больше проблем было с лицензиями.
Сначала отклонили из-за того что лицензия была указана просто GPL а не GPL2, потом выяснилось что нужно выделить в отдельный пакет gtk интерфейс, который есть в librcc и абсолютно пока не нужен, затем оказалось что GPL не подойдет для патча - taglib идет по LGPL, автор поменял и сейчас новый пакет готов :)

пятница, 12 декабря 2008 г.

Обновился

Ну вот, теперь я не подопытный кролик, а лабораторная мышь.

пятница, 21 ноября 2008 г.

Амарок, русские теги и taglib 1.5

Все было тихо и спокойно пока в lenny не включили taglib 1.5 — в результате synaptic и aptitude постоянно хотели обновиться, да и запирать версию пакета не хотелось, как-никак она была еще с Sarge, поэтому полез обновляться :)

Слазил и ничего не нашел — патч еще не появился.

Через несколько дней появился патч, но ждать пакетов для lenny можно было долго — делать их было некому — мейнтейнер, который создавал пакеты для Sarge ушел на Gentoo...

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

устанавливаются пакеты для разработчика — из-за замечательной системы зависимостей достаточно поставить только dh-make — он пригодится для создания нового пакета

После чего скачиваются пакеты исходного кода — файлы dsc, diff.gz и orig.gz

dpkg-source -x файл.dsc и у нас уже есть папка с исходными кодами программы и специальной папкой debianвнутри нее, управляющей сборкой пакета.

Собирается пакет тоже одной коммандой — из папки пакета dpkg-buildpackage и идем пить чай (в случае если собираем что-то типа wine, openoffice или kde — с учетом продолжительности работ — из самовара).

Пакет собирается просто, а вот патч делается сложнее, как выяснилось — после патча программа стала собираться неверно — вырезались все упоменания о динамических библиотеках.

Промучавшись, но так и не найдя решения я решил сделать хитрость — изучив стадии сборки пакета я выполнил их до инсталяции файлов во временную директорию, после чего прервал сборку и подменил библиотек на собранную с помошью ./configure && make, после чего выполнил все остальные комманды и в результате получил хоть и кривой, но рабочий пакет.

На этом и успокоился до недавнего времени, а именно до прошлого четверга :)

среда, 19 ноября 2008 г.

Амарок и русские теги

В связи с тем что я пользуюсь амароком (замечательный плеер) у меня была проблема с русскими названиями песен — как известно почти все виндовые плееры сохраняют теги idv2 не по стандарту — в кодировке cp1251.

Это связано с просто замечательной поддержкой Unicode в Windows — а именно поддерживается только UTF16BE и LE, когда во всех нормальных операционных системах используется UTF8, из за того что занимает меньший объем и совместим со старыми функциями по работе со строками. К сожалению MS всегда идет своим путем, поэтому кодировка там сохраняется как угодно, но не по стандарту.

В amaroK для работы с тегами используется библиотека taglib (на данный момент версия 1.5) — в Debian ее пакет — libtag, она к сожалению работает только по стандарту.
Каждому виндузятнику не обьяснишь, что есть стандарт, поэтому к существующему положению дел приходится приспосабливаться - для хороших программ принцип минимум требований ко входным данным и максимум к выходным, поэтому такое поведение довольно странно...

Так как для нас проблема важная — кодировки кирилицы и как с этим бороться — то на просторах гугля был найден патч RusXMMS, который добавляет автоматическое определение кодировок на основе частотного анализа русского текста.
На этих принципах работают почтовый декодер Лебедева, Штирлиц, Пунтосвичер, причем работают очень хорошо.

Дело было давно и стоял у меня тогда еще Etch, на который прекрасно ставились пакеты от Sarge — библиотека была версии 1.4 и зависимостей никаких не было.

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

среда, 5 ноября 2008 г.

Ktorrent

Сменил запущенный под wine utorrent на Ktorrent 3, добрался наконец до разгребания груды раздаваемых торрентов, которые не мог разобрать больше года.

В результате количество торрентов сократилось в полтора раза и Ktorrent запускатся при загрузке KDE автоматически, что не может не радовать.

Из общих впечатлений:

  • Красивый интерфейс, но с немного меньшей отзывчивостью, помоему программам, написанным для KDE4 пока не хватает таких настроек как у программ KDE3
  • Удобная фишка закрепления дефолтовой папки для группы, что очень удобно для сериалов, когда их выкладывают по серии
  • Гораздо меньше занимает процессорного времени, правда немного больше памяти, но тут одна тонкость - нужно обновиться до 3.1.4, который сейчас в unstable, в 3.1.3, который в testing ошибка с захватом ресурсов - постоянно 100% процессора и утечка памяти.
  • Так и не разобрался почему закаченные раздачи не раздаются автоматически, хотя галка вроде на месте.
  • Нету показа активных торрентов как в utorrent - показываются все, которые раздаются, даже если никто не скачивает.

В целом впечатления лучше чем от utorrent, единственное, что не хватало - импорт списка торрентов из utorrent, я конечно нахал и многово хочу, но всетаки :)

вторник, 4 ноября 2008 г.

Баг в KDE

Вчера нашел неприятный баг в KDE:

Комбинации клавиш для выделения меню (Alt+буква) работают только в соответствующей раскладке клавиатуры, причем в KDE3 работаю при переключении на русский язык русские и не работают английские, а в KDE4 частично починили и частично поломали :) - работают в любой раскладке все непереведенные пункты меню, но никак не работают переведенные.

В виндах такой-же глюк, а вот в гномовских приложениях все нормально.

Написал в багтрекер дебиана, сегодня пришел ответ, оперативно - вот она, злобная бага :)