Hali,
Tapasztaltabb Debianos guruktól kérdezném, hogy hogyan lehet egy debian forrásból meglévő csomagot módosítani? (Konkrétan az rtpproxy-ba hackelem éppen bele a mysql logolást.)
Addig rendben van, hogy
apt-get source rtpproxy
apt-get build-dep rtppxy
apt-get install devscripts
dch -l local 'add mysql log'
Ezen a ponton debuild gyönyörű szépen el is készíti a .deb filet a forrásból, a saját verziómat.
Csakhogy, nekem nem csak a verziószámot kellene megváltoztatnom, hanem bele is kellene nyúlnom a forráskódba. Márpedig amikor ezt megtettem, onnantól nem hajlandó fordulni:
$ debuild
dpkg-buildpackage -rfakeroot -D -us -uc
dpkg-buildpackage: set CFLAGS to default value: -g -O2
dpkg-buildpackage: set CPPFLAGS to default value:
dpkg-buildpackage: set LDFLAGS to default value:
dpkg-buildpackage: set FFLAGS to default value: -g -O2
dpkg-buildpackage: set CXXFLAGS to default value: -g -O2
dpkg-buildpackage: source package rtpproxy
dpkg-buildpackage: source version 1.1-2local1
dpkg-buildpackage: source changed by X Y <x@y>
dpkg-buildpackage: host architecture amd64
fakeroot debian/rules clean
QUILT_PATCHES=debian/patches quilt --quiltrc /dev/null pop -a -R || test $? = 2
Patch set-ctrl-socket-owner does not remove cleanly (refresh it or enforce with -f)
make: *** [unpatch] Error 1
dpkg-buildpackage: failure: fakeroot debian/rules clean gave error exit status 2
debuild: fatal error at line 1319:
dpkg-buildpackage -rfakeroot -D -us -uc failed
Ha jól selytem az a baj, hogy mivel belenyúltam a kódba, a debian/ alatt lévő quilt patcheket nem tudja applikálni. Na de akkor kérdezem, mi a debianos de egyszerű módja, hogy mégis belenyúljak de a saját patchei is felmenjenek? Azaz hogyan tudom a legegyszerűbben hozzáadni saját változtatásaimat?
UPDATE: fenti probléma megoldva, de vannak újabbak lentebb :)
- 1320 megtekintés
Hozzászólások
Plusz infó: a csomag a quilt-et használja a patchek kezelésére.
--
The Net is indeed vast and infinite...
http://gablog.eu
- A hozzászóláshoz be kell jelentkezni
http://pkg-perl.alioth.debian.org/howto/quilt.html
apt-get source rtpproxy
cd rtpproxy-1.1
export QUILT_PATCHES=debian/patches
quilt push -a -v
quilt new mysql-log
export EDITOR=joe
quilt edit file1.c
quilt edit file2.c
quilt edit file3.c
quilt refresh
quilt pop -a -v -R
dch -l local 'add mysql log'
- A hozzászóláshoz be kell jelentkezni
thx
--
The Net is indeed vast and infinite...
http://gablog.eu
- A hozzászóláshoz be kell jelentkezni
További problémákba ütköztem, és sok-sok googli után sem lettem okosabb:
1. Hogyan tudok egy shared library dependency-t hozzáadni? Ha jól sejtem ezt a Makefile.am-hez kellene, meg is tettem:
(...)
rtpproxy_SOURCES=main.c rtp.h rtp_server.c rtp_server.h \
rtpp_defines.h rtpp_log.h rtpp_record.c rtpp_record.h rtpp_session.h \
rtpp_util.c rtpp_util.h rtp.c rtp_resizer.c rtp_resizer.h rtpp_session.c \
rtpp_command.c rtpp_command.h log.h log.c
rtpproxy_LDADD=mysqlclient
(...)
Próbáltam "-l" előtagot is, de ugyanez az eredmény: "make[2]: *** No rule to make target `mysqlclient', needed by `rtpproxy'. Stop."
Pedig minden autoconf howto szerint ez a módja. Miért lesz itt ebből target?!
2. Gondoltam rendesen editálom a control filet is, beleírva a dependencyket:
Build-Depends: (...), libmysqlclient-dev (>= 5)
Erre:
dpkg-checkbuilddeps: Unmet build dependencies: libmysqlclient-dev (>= 5)
Pedig a függőség ki van elégítve, mert ez egy teljesen virtuális csomag amit a libmysqlclient15-dev provideol, ami viszont fent van (5.0.51a-24+lenny2). Nem hiszem el, hogy a virtuális csomagokat nem kezeli a debian build rendszer.
Előre is köszi a tippeket!
--
The Net is indeed vast and infinite...
http://gablog.eu
- A hozzászóláshoz be kell jelentkezni
Az 1. problémára az lett a megoldás, hogy a Makefile.am helyett a configure.ac -be ezt írtam:
AC_CHECK_LIB(mysqlclient, mysql_init, [], [
echo "Error: libmysqlclient-dev required"
exit -1
])
--
The Net is indeed vast and infinite...
http://gablog.eu
- A hozzászóláshoz be kell jelentkezni
Pedig a függőség ki van elégítve, mert ez egy teljesen virtuális csomag amit a libmysqlclient15-dev provideol, ami viszont fent van (5.0.51a-24+lenny2). Nem hiszem el, hogy a virtuális csomagokat nem kezeli a debian build rendszer.
Pedig... (és itt próbálom csendesen feltartani az RTFM feliratú táblát :))
If a relationship field has a version number attached then only real packages will be considered to see whether the relationship is satisfied (or the prohibition violated, for a conflict or breakage) - it is assumed that a real package which provides the virtual package is not of the "right" version. So, a Provides field may not contain version numbers, and the version number of the concrete package which provides a particular virtual package will not be looked at when considering a dependency on or conflict with the virtual package name.
It is likely that the ability will be added in a future release of dpkg to specify a version number for each virtual package it provides. This feature is not yet present, however, and is expected to be used only infrequently.
If you want to specify which of a set of real packages should be the default to satisfy a particular dependency on a virtual package, you should list the real package as an alternative before the virtual one.
http://people.debian.org/~mpalmer/debian-mentors_FAQ.html
http://www.debian.org/doc/debian-policy/
http://lists.debian.org/debian-mentors/
- A hozzászóláshoz be kell jelentkezni
ott a pont...
--
The Net is indeed vast and infinite...
http://gablog.eu
- A hozzászóláshoz be kell jelentkezni
"Ha jól selytem"
Ez még a tegnap elkövetett muszályomnál is szebb. :) Mostanában nagyon rááll a kezem a Z-re és az Y-ra, folyton (fojton?) kavarok velük, pedig semmi közük a j-hez.
- A hozzászóláshoz be kell jelentkezni
A művelet eredményes volt. Ha valakinek szüksége volna arra, hogy az rtpproxy logoljon, sőt mysqlbe logoljon, itt a patch: http://www.gablog.eu/online/node/86
Sőt, még a timeout értéket is lehet állítani configból.
(Ez akkor jön jól, ha például számlázáshoz pontos CDR kell, és bizony a SIP szerverek nem logolnak semmit, ha a hívás csak úgy megszakad, vagy elmarad a BYE.)
--
The Net is indeed vast and infinite...
http://gablog.eu
- A hozzászóláshoz be kell jelentkezni
-
- A hozzászóláshoz be kell jelentkezni