Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2013-11-25 17:02:18

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Zależnośći budowanych pakietów

Postanowiłem w końcu ogarnąć wszystkie te pakiety, których używam ale nie ma ich standardowo w repo debiana i do tego celu wykorzystuje ten debianowy system budowy pakietów, czyli pobranie źródeł ze strony projektu, następnie generowanie katalogu debbian przy pomocy np.

Kod:

dh_make -e morfikov[at]gmail.com -l -p libsodium4 -f ../libsodium-0.4.5.tar.gz

Potem sprawdzenie zależności  potrzebnych do zbudowania pakietu na podstawie skryptu configure:

Kod:

dpkg-depcheck -d ./configure

To wyrzuca taki log w skrócie:

Kod:

Packages needed:
  libglib2.0-0:amd64
  libmagic1:amd64
  perl-modules
  pkg-config
  ccache
  mawk
  cpio
  colorgcc
  file
  mime-support
  libpopt0:amd64

I do każdego liba w tym logu dać dpkg -S czyli to by było w tym przypadku:

Kod:

# dpkg -S libglib2.0-0 libpopt0 libmagic1
libglib2.0-0:amd64: /usr/share/doc/libglib2.0-0/AUTHORS
libglib2.0-0:amd64: /usr/share/doc/libglib2.0-0/changelog.gz
libglib2.0-0:amd64: /usr/share/doc/libglib2.0-0/ChangeLog.pre-1-2.gz
libglib2.0-0:amd64: /usr/share/doc/libglib2.0-0/NEWS.pre-1-3.gz
libglib2.0-0:amd64: /usr/share/doc/libglib2.0-0/ChangeLog.pre-2-0.gz
libglib2.0-0:amd64: /usr/share/doc/libglib2.0-0/copyright
libglib2.0-0:amd64: /usr/share/doc/libglib2.0-0/ChangeLog.pre-2-2.gz
libglib2.0-0:amd64: /usr/share/doc/libglib2.0-0
libglib2.0-0:amd64: /usr/share/doc/libglib2.0-0/changelog.Debian.gz
libglib2.0-0:amd64: /usr/share/lintian/overrides/libglib2.0-0
libglib2.0-0:amd64: /usr/share/doc/libglib2.0-0/NEWS.gz
libglib2.0-0:amd64: /usr/share/doc/libglib2.0-0/README.gz
libpopt0:amd64: /usr/share/doc/libpopt0/changelog.Debian.gz
libpopt0:amd64: /usr/share/doc/libpopt0
libpopt0:amd64: /usr/share/doc/libpopt0/changelog.gz
libpopt0:amd64: /usr/share/doc/libpopt0/README
libpopt0:amd64: /usr/share/doc/libpopt0/copyright
libmagic1:amd64: /usr/share/bug/libmagic1/presubj
libmagic1:amd64: /usr/share/doc/libmagic1/changelog.Debian.gz
libmagic1:amd64: /usr/share/bug/libmagic1
libmagic1:amd64: /usr/share/doc/libmagic1/copyright
libmagic1:amd64: /usr/share/doc/libmagic1/changelog.gz
libmagic1:amd64: /usr/share/bug/libmagic1/control
libmagic1:amd64: /usr/share/doc/libmagic1

I dodać  -dev na końcu, po czym uzupełnić plik debian/control do takiej postaci:

Kod:

Build-Depends: debhelper (>= 8.8.8), libglib2.0-dev, libpopt-dev, libmagic-dev

Pytanie pierwsze się nasuwa już tutaj, bo w repo debiana nie ma pakietów  libglib2.0-0-dev, libpopt0-dev, libmagic1-dev , są tylko takie jak uzupełnione w build-depends.  Czy zawsze tak się dzieje z tymi zależnościami, że trzeba odpowiednio te numerki dostosować?

Druga kwestia dotyczy pakietów jakich wymaga budowana paczka przy instalacji. Przykładowo: testuje sobie simplescreenrecorder, który nawet ciekawe się zapowiada i chciałbym z tego zrobić sobie paczuszkę i tak na pierwszy ogień wziąłem analizę paczki  ubuntowej i podejrzałem co ona ma tam w katalogu debian/control :

Kod:

Depends: libasound2 (>= 1.0.16), libavcodec53 (>= 0.8.3-1~) | libavcodec-extra-53 (>= 0.8.7),
 libavformat53 (>= 0.8.3-1~) | libavformat-extra-53 (>= 0.8.7), libavutil51 (>= 0.8.3-1~) | libavutil-extra-51 (>= 0.8.7),
 libc6 (>= 2.14), libgcc1 (>= 4.1.1), libpulse0 (>= 0.99.1), libqtcore4 (>= 4.7.0~beta1), libqtgui4 (>= 4.6.1),
 libstdc++6 (>= 4.7), libswscale2 (>= 0.8.3-1~) | libswscale-extra-2 (>= 0.8.7), libx11-6, libxext6, libxfixes3

I jak to wywnioskować przy budowaniu paczki?

Ostatnio edytowany przez morfik (2013-11-25 17:09:25)

Offline

 

#2  2013-11-25 19:14:38

  kiko80 - Użytkownik

kiko80
Użytkownik
Skąd: /mnt/podlasie
Zarejestrowany: 2007-04-03

Re: Zależnośći budowanych pakietów

A nie prościej dać
aptitude build-dep nazwa pakietu który chcemy kompilować
aptitude lub apt-get


Wirusy w Linuxie to jak krasnoludki,
podobno są ale nikt ich nie widział :D
http://filefox.pl/poleca/kiko80
Linux register users: #445562

Offline

 

#3  2013-11-25 19:30:32

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Zależnośći budowanych pakietów

No tylko tego pakietu nie ma w debianie, i dlatego paczkę pierw trzeba zrobić i dopiero jak masz paczkę, to możesz ją przebudowywać i ciągnąć zależności przy pomocy build-dep . A pytanie jest, jak te zależności ustalić na początku.

Offline

 

#4  2013-11-25 20:37:59

  mati75 - Psuj

mati75
Psuj
Skąd: default city
Zarejestrowany: 2010-03-14
Serwis

Re: Zależnośći budowanych pakietów

Jak potrzebuje tego:

Kod:

Packages needed:
  libglib2.0-0:amd64
  libmagic1:amd64
  perl-modules
  pkg-config
  ccache
  mawk
  cpio
  colorgcc
  file
  mime-support
  libpopt0:amd64

to trzeba ci: [deb]debhelper[/deb] [deb]libglib2.0-dev[/deb] [deb]libmagic-dev[/deb] [deb]perl-modules[/deb] [deb]pkg-config[/deb] [deb]ccache[/deb] [deb]libpopt-dev[/deb]
i buduj na chroot za pomocą pbuilder.


[img]https://l0calh0st.pl/obrazki/userbar.png[/img]

Offline

 

#5  2013-11-25 22:22:20

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Zależnośći budowanych pakietów

Ciekawe narzędzie, obadam je sobie, tylko muszę przebić się przez:

http://www.netfort.gr.jp/~dancer/software/pbuilder-doc/pbuilder-doc.html
https://wiki.ubuntu.com/PbuilderHowto
http://manpages.ubuntu.com/manpages/lucid/man8/pbuilder.8.html

Offline

 

#6  2013-11-26 02:56:40

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Zależnośći budowanych pakietów

Ogarnąłem to mniej więcej, choć jeszcze nie doczytałem do końca ale 4 paczki się zbudowały, jedna miała problemy -- ten libsodium, bo wyrzuciło:

Kod:

dh: unable to load addon autoreconf: Can't locate Debian/Debhelper/Sequence/autoreconf.pm in @INC (you may need to install the Debian::Debhelper::Sequence::autoreconf module) (@INC contains: /etc/perl /usr/local/lib/perl/5.18.1 /usr/local/share/perl/5.18.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.18 /usr/share/perl/5.18 /usr/local/lib/site_perl .) at (eval 29) line 2.
BEGIN failed--compilation aborted at (eval 29) line 2.

Dodałem mu w zależnościach dh-autoreconf i przeszło na czystym chroot, nie trzeba było nawet dodawać perl-modules . I te zależności to się w taki sposób dobiera? Jak wyrzuci błąd na czysty to trza dopisać co tam w logu wyrzuci i czekać na nasŧepny błąd i jak się pojawi to ponownie dopisać co trzeba i tyle?

Sprawdziłem jak wyszła paczka i faktycznie ona ma już w zależnościach przy instalacji odpowiednie pakiety, nic nie dodawałem, zostawiłem tylko w debian/control

Kod:

Pre-Depends: ${misc:Pre-Depends}
Depends: ${shlibs:Depends}, ${misc:Depends}

Ale w sumie to jest kilka pytań, ten pbuilder służy tylko do testowania? Całą procedurę budowania się przeprowadza przy pomocy dh_make i dpkg-buildpackage , edytując przy tym pliki w katalogu debian/ ?

I jeszcze taka sprawa jak mam jedno źródło i z niego mają wyjść dwa pakiety -- jeden program, a drugi lib to przy tworzeniu katalogu debian co wybrać, single binary, indep binary, multiple binary, library -- multi? Póki co tylko na single się buduje tyle, że struktura data.tar.gz w paczce wygląda jak poniżej:

Kod:

$  tree
└── usr
    ├── bin
    │   └── simplescreenrecorder
    ├── lib
    │   └── x86_64-linux-gnu
    │       ├── libssr-glinject.la
    │       └── libssr-glinject.so
    └── share
        ├── applications
        │   └── simplescreenrecorder.desktop
        ├── doc
        │   └── ssr
        │       ├── README.Debian
        │       ├── README.md.gz
        │       ├── changelog.Debian.gz
        │       ├── copyright
        │       ├── notes.txt.gz
        │       └── todo.txt
        ├── icons
        │   └── hicolor
        │       └── 256x256
        │           └── apps
        │               └── simplescreenrecorder.png
        └── simplescreenrecorder
            └── translations
                ├── simplescreenrecorder_de.qm
                ├── simplescreenrecorder_nl.qm
                ├── simplescreenrecorder_pl.qm
                └── simplescreenrecorder_zh_CN.qm

To jest testowe póki co jeszcze, i tylko plik control zmieniałem

I jeszcze ostatnia sprawa, jak budować pakiety dla i386 i amd64 w jednym podejściu?

EDIT:

Znalazłem to jak budować 2 paczki z jednego źródła, była opcja w configure.

Ostatnio edytowany przez morfik (2013-11-26 04:14:23)

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)

[ Generated in 0.010 seconds, 11 queries executed ]

Informacje debugowania

Time (s) Query
0.00012 SET CHARSET latin2
0.00013 SET NAMES latin2
0.00168 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.144.101.75' WHERE u.id=1
0.00097 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.144.101.75', 1732596761)
0.00047 SELECT * FROM punbb_online WHERE logged<1732596461
0.00051 SELECT topic_id FROM punbb_posts WHERE id=246711
0.00009 SELECT id FROM punbb_posts WHERE topic_id=24687 ORDER BY posted
0.00059 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=24687 AND t.moved_to IS NULL
0.00004 SELECT search_for, replace_with FROM punbb_censoring
0.00161 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=24687 ORDER BY p.id LIMIT 0,25
0.00095 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=24687
Total query time: 0.00716 s