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: masz ten towar?
Zarejestrowany: 2010-03-14

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: debhelper libglib2.0-dev libmagic-dev perl-modules pkg-config ccache libpopt-dev
i buduj na chroot za pomocą pbuilder.


https://l0calh0st.pl/obrazki/userbar.png

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

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
Możesz wyłączyć AdBlock — tu nie ma reklam ;-)