Mais conteúdo relacionado Semelhante a Упаковка и развертывание программ на perl под debian (20) Упаковка и развертывание программ на perl под debian6. Debian
Полезные скрипты
...dh_make, dh-make-perl, debuild, debcommit, dupload, debrelease, dch,
debc, debi, dpkg-buildpackage, dpkg-repack, dh_builddeb, dh_builddeps,
dh_clean, dh_clearvcs, dh_compress, dh_css, dh_desktop, dh_fixperms,
dh_gconf, dh_gencontrol, dh_install, dh_installcatalogs, dh_installchangelogs,
dh_installcron, dh_installdeb, dh_installdebconf, dh_installdefoma,
dh_installdirs, dh_installdocs, dh_installemacsen, dh_installexamples,
dh_installinfo, dh_installinit, dh_installlogcheck, dh_installlogrotate,
dh_installman, dh_installmanpages, dh_installmenu, dh_installmime,
dh_installmodules, dh_installpam, dh_installppp, dh_installudev, dh_installwm,
dh_installxfonts, dh_installxmlcatalogs, dh_link, dh_listpackages, dh_make,
dh_makeshlibs, dh_md5sums, dh_movefiles, dh_perl, dh_perldeps,
dh_pycentral, dh_pysupport, dh_python, dh_scrollkeeper, dh_shlibdeps,
dh_strip, dh_suidregister, dh_testdir, dh_testroot, dh_testversion,
dh_undocumented, dh_usrlocal, dh_versions, cvs-buildpackage, svn-
buildpackage, apt-file, debconf, dpkg-parsechangelog, dpkg-repack, lintian...
8. Debian
dh_make
• Создает скелет нового пакета
• И много мусора:
$ ls debian/
changelog control cron.d.ex docs
emacsen-remove.ex init.d.ex libyapm-perl.default.ex
manpage.1.ex manpage.xml.ex postinst.ex preinst.ex
README.Debian watch.ex compat copyright dirs
emacsen-install.ex emacsen-startup.ex init.d.lsb.ex
libyapm-perl.doc-base.EX manpage.sgml.ex menu.ex
postrm.ex prerm.ex rules
10. Debian
Необходимые файлы
• debian/control - метаданные пакета
• debian/compat - для debhelper
• debian/rules - makefile для сборки
• debian/changelog
11. Debian
debhelper
#!/usr/bin/make -f
clean:
dh_testdir
dh_testroot
dh_clean
$(MAKE) clean
build:
$(MAKE) test
install:
dh_testdir
dh_testroot
dh_clean -k
dh_installdirs
$(MAKE) install DESTDIR=debian/$(shell dh_listpackages)
binary: install
dh_testdir
dh_testroot
dh_installchangelogs
dh_installdocs
dh_installexamples
dh_installman
dh_link
dh_compress
dh_fixperms
dh_perl
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
.PHONY: install binary
14. Debian
dh-make-perl
Одной строкой:
$ dh-make-perl --email=mmcleric@yandex-team.ru
Другой строкой:
$ sudo dh-make-perl --install --cpan Some::Module
http://wiki.debian.org/Teams/DebianPerlGroup:
...just send a signed mail to debian-perl@lists.debian.org and list the packages
you want us to take over.
17. Debhelper
dh_perldeps
$ DH_VERBOSE=1 dh_perldeps
processing file debian/libyandex-unrotate-perl/usr/share/perl5/Yandex/
Unrotate.pm
dependent perl modules: warnings, strict, Digest::MD5, Yandex::Logger,
Yandex::TmpFile, File::Basename
realpath: /usr/share/perl/5.8/warnings.pm -> /usr/share/perl/5.8.8/warnings.pm
realpath: /usr/share/perl/5.8/strict.pm -> /usr/share/perl/5.8.8/strict.pm
realpath: /usr/lib/perl/5.8/Digest/MD5.pm -> /usr/lib/perl/5.8.8/Digest/MD5.pm
realpath: /usr/share/perl/5.8/File/Basename.pm -> /usr/share/perl/5.8.8/File/
Basename.pm
dependent debian packages: perl, perl-base, libyandex-logger-perl, perl-modules,
libyandex-tmpfile-perl
18. Debhelper
dh_perldeps
1. Читаем весь код в пакете
2. Ищем /buses+((?:w+::)*w+)(?:s+(v?[d_.]+))?/sg
3. Просматриваем @INC в поисках файлов
4. Делаем dpkg -S на каждый файл
5. ???
6. PROFIT!
20. Debhelper
dh_perldeps
До:
$ grep Depends debian/control
Depends: ${perl:Depends}
После:
$ debc | grep Depends
Depends: libyandex-logger-perl, libyandex-tmpfile-perl,
perl (>= 5.6.0-16), perl-base, perl-modules
22. Debhelper
dh_builddeps
- Debian policy запрещает генерировать control
- Иногда некроссплатформенен
+ Зато незаменим для автосборок
27. Debhelper
dh_versions
$ grep Logger ./scheduler.pl
use Yandex::Logger 1.0.2;
$ debuild
...
$ debc | grep Depends
Depends: libyandex-logger-perl (>= 1.0.2), perl (>= 5.6.0-16),
perl-base, perl-modules
34. Тестирование
Yandex::DB
Yandex::DB::Plugin::Meta
$ cat /etc/db.d/meta
[{
quot;basequot; : quot;metaquot;,
quot;hostquot; : quot;meta-db.feeds.yandex.netquot;,
...
}, ...]
[meta-dbs3.feeds.yandex.net] meta> select host, user, passwd,
base from Bases where name = ‘scheduler’;
+-----------------------+-----------+-----------+-----------+
| host | user | passwd | base |
+-----------------------+-----------+-----------+-----------+
| db.feeds.yandex.net | user | pass | scheduler |
+-----------------------+-----------+-----------+-----------+
36. Тестирование
Yandex::DB
Yandex::DB::Plugin::Sandbox
• Индивидуальные базы у каждого пользователя
• Пересоздается на каждый запуск тестов
• Но остается работать после запуска тестов