Debian - он хороший, но выходит нечасто. Порой надо что-нибудь посвежее. Или "такое же, но с перламутровыми пуговицами". Буржуи не парятся и ставят куски из unstable/testing, заодно цепляя полсистемы. А у нас трафик дорогой. А на backports.org (где всё собрано по возможности из stable) тоже не всё есть.
В общем, объяснял я тут одному хорошему знакомому, как делать бэкпорты руками. Получайте as-is, с некоторыми правками:
(10/09/06 09:54:44) DaGuTa:
Привет. У тебя случайно нет mysql5.0 собранного под Sarge 3.1? А то тригеры понадобились.
(10/09/06 09:57:09) vnaum:
А postgres не смотрел? Мы смотрели-смотрели и postgres сильно симпатичнее будет. Имею мнение, что триггерами дело не ограничится Ж-) есть личнособраный postgres 8.1.
(10/09/06 09:58:25) DaGuTa:
Смотрел, мне его даже под винды давали. Но как то уже mysql ковырял, на ходу менять не хочется. Притом задачка мелкая, вроде хотелось по быстрому, а не выходит:-(
(10/09/06 10:05:25) vnaum:
Тогда могу сам сбэкпортить, могу тебя научить. Трафика тебе одиниково Ж-) Рекомендую postgres всё равно.
(10/09/06 10:06:41) DaGuTa:
Учи, один фиг интересно!
(10/09/06 10:11:41) vnaum:
Короче, идёшь на packages.debian.org Находишь там mysql-server из unstable/testing
(10/09/06 10:12:14) DaGuTa:
Уже пришел вот сюда: http://packages.debian.org/testing/misc/mysql-server-5.0
(10/09/06 10:12:26) vnaum:
Можно apt-source сделать, конечно. Но я что-то так уже привык. Source Package: mysql-dfsg-5.0, Download: [dsc] [mysql-dfsg-5.0_5.0.24a.orig.tar.gz] [mysql-dfsg-5.0_5.0.24a-4.diff.gz] Вот эти [mysql-dfsg-5.0_5.0.24a.orig.tar.gz] [mysql-dfsg-5.0_5.0.24a-4.diff.gz] - качай.
(10/09/06 10:23:27) vnaum:
Взял? распаковывай .orig.tar.gz Переходи в развёрнутый каталог. zcat mysql-dfsg-5.0_5.0.24a-4.diff.gz | patch -p1 Должен появиться там /debian
(10/09/06 10:50:16) DaGuTa:
в директории набрать это? zcat mysql-dfsg-5.0_5.0.24a-4.diff.gz | patch -p1 дык патч в директорию положить?
(10/09/06 10:59:44) vnaum:
Патч - куда угодно. patch -p1 читает его с stdin
(10/09/06 11:10:47) DaGuTa:
фуф, со второго раза вышло вроде:-) Что дальше?
(10/09/06 11:12:09) vnaum:
Теперь у тебя есть каталог с исходниками mysql, в нём подкаталог debian. 1. chmod +x debian/rules 2. Смотри список build-depends в debian/control. Устанавливай все эти пакеты.
(10/09/06 11:14:28) DaGuTa:
а есть способ по быстрому это проверить, а то там зависимостей много?
(10/09/06 11:17:08) vnaum:
Гхм. Ну... Может и есть. Я - не знаю. Можно поиском-заменой убрать запятые и указание версий. И потом копипасте его в aptitude install
(10/09/06 11:17:51) DaGuTa:
нашел способ открыл два окна и сравниваю:-) Хотя про это тоже думал.
(10/09/06 11:26:33) DaGuTa:
Вроде все поставил.
(10/09/06 11:27:16) vnaum:
теперь из каталога с сырцами: fakeroot debian/rules binary fakeroot тож поставь.
(10/09/06 11:29:59) DaGuTa:
и вот это чего такое? debian/rules:7: /usr/share/dpatch/dpatch.make: No such file or directory
(10/09/06 11:30:37) vnaum:
aptitude install dpatch
(10/09/06 11:30:39) DaGuTa:
его он не просил.
(10/09/06 11:30:49) vnaum:
Теперь просит Ж-)
(10/09/06 11:37:21) DaGuTa:
понеслась...
(10/09/06 11:37:43) DaGuTa:
а конфиг создавать не надо было?
(10/09/06 11:40:07) vnaum:
Какой конфиг?
(10/09/06 11:40:40) DaGuTa:
в смысле ./configure ? С какими опциями собирать? Или по умолчанию с дебовскими собирется?
(10/09/06 11:50:14) vnaum:
В rules написано с какими. Умолчания - 99% тебе подойдут. Скажем так, если умолчательных настроек тебе не хватает - то ты задумал что-то вовсе странное.
(10/09/06 11:50:33) DaGuTa:
Ясно. Так и думал.
(10/09/06 12:04:22) DaGuTa:
Закончил.
(10/09/06 12:04:40) vnaum:
Куча *.deb в .. видишь? Это оно.
(10/09/06 12:06:14) DaGuTa:
Угумс, вижу.
(10/09/06 12:08:45) vnaum:
Ну дальше можно репозитарий собрать. Или dpkg -i чего надо. Первый вариант получше. aptitude install dpkg-dev
(10/09/06 12:09:34) DaGuTa:
Оно у меня уже стоит.
(10/09/06 12:13:49) vnaum:
Карашо. Сделай где-нибудь каталог pool, в нём pool/mysql5 Туда сложи *.deb
(10/09/06 12:14:26) vnaum:
#!/bin/bash POOLS=pool/* [ ! -z "$1" ] && POOLS="pool/$1" for dist in $POOLS do base=$(basename "$dist") echo "Scanning '$dist' -> $base..." if [ -d $dist ]; then mkdir -p "dists/stable/$base/binary-i386" dpkg-scanpackages \ "$dist" /dev/null \ | gzip -9c \ > "dists/stable/$base/binary-i386/Packages.gz" else echo "'$dist' doesn't exist!" fi done
(10/09/06 12:14:50) vnaum:
Это был rescan.sh Его положить рядом с pool
(10/09/06 12:23:28) DaGuTa:
А потом выполнить и все?
(10/09/06 12:34:08) vnaum:
Ага. Оно создаст dists
(10/09/06 12:34:45) DaGuTa:
создало. Теперь добавить в апт лист?
(10/09/06 12:34:54) vnaum:
Потом в sources.list: deb file:/var/www/debian stable mysql5 Или где там у тебя каталог. Потом aptitude update. И aptitude install нужный пакет.
(10/09/06 12:35:51) DaGuTa:
а чем apt-get update хуже?
(10/09/06 12:36:40) vnaum:
Release Notes recommends using aptitude instead of apt-get
(10/09/06 12:37:20) DaGuTa:
хм. ясно будем юзать aptitude.
(10/09/06 12:46:20) DaGuTa:
у меня dists лежит в /home, значит пишу: deb file:/home stable mysql5 ?
(10/09/06 12:50:40) vnaum:
И pool тоже в /home? Или в /home/USER?
(10/09/06 12:50:59) DaGuTa:
и pool тоже.
(10/09/06 12:53:39) vnaum:
Тогда да, deb file:/home stable mysql5 Только /home, если чё, самое неподходящее для этого место. Прикинь тебе придётся когда-нить создать пользователя pool? Уж лучше переложи в /home/USER/debian/(pool,dists)
(10/09/06 12:55:04) DaGuTa:
Уговорил :-)
(10/09/06 12:56:20) vnaum:
Кстати, если (pool,dists) лежат в укачиваемом месте (/var/www, ~/public_html) - то этот репозитарий можно будет использовать и удалённо.
(10/09/06 12:59:05) DaGuTa:
Вот так он меня обзывает. W: Couldn't stat source package list file: stable/mysql5 Packages (/var/lib/apt/lists/_home_daguta_debian_dists_stable_mysql5_binary-i386_Packages) - stat (2 No such file or directory)
(10/09/06 12:59:14) vnaum:
Повтори update aptitude не идеальна, при первом добавлении источника ругается на что-то.
(10/09/06 13:00:24) DaGuTa:
Во млин, не ругается. мдя... а я бы косяки еще долго искал:-) Усе вроде поставил:-) И ничего сложного, когда знаешь что и как:-)
(10/09/06 13:09:49) vnaum:
Можно я эту беседу опубликую как статью про ручную сборку бэкпортов?
(10/09/06 13:10:50) DaGuTa:
Я сам тебе хотел посоветовать выложить это:-) Дельная весч выйдет!
(10/09/06 13:13:25) vnaum:
ОК!
Ну вот что-то в таком духе. Для простых случаев этого хватает. Бывает, что для сборки одного пакета надо сначала сбэкпортить другой. apt-source - помогает. Бывает ещё что для работы того что собрано с этого source archive не хватает, необходимые для работы пакеты надо брать с других source archive.
В общем при сборке пакетов сильно многое зависит от собственно что собрались собирать. Бывает всё тривиально (вплоть до того что пакет из unstable можно прямо устанавливать в stable, никаких зависимостей нет вообще), а бывает что и ну его нафиг Ж-)
Удачи!
Замечания, предложения - vnaum@inbox.ru, vladislav.naumov@gmail.com (gtalk/jabber/email), icq#100485019
Ну во-первых, вместо fakeroot debian/rules binary рекомендую использовать debuild. Он заодно и chmod +x debian/rules сам сделает (пакет devscripts).
Во-вторых, не рассмотрена проблема версионированных зависимостей в Build-Depends. Рассмотреть её следует следующим способом: Если при сборке вылетает "хочу версию пакета xxx y.yy, а установлена только z.zz", то сначала следует попробовать занизить версию в Build-Depends до доступной, и только если при этом пакет откажется собираться или работать, бэкпортить соответствующую версию.