ďťż
 
 
   Przy kompilacji PHP z MSSQL - ...zwrócił status błędu 2
 
 

Tematy

 
    
 

 

 

 

Przy kompilacji PHP z MSSQL - ...zwrócił status błędu 2





Shezzy - 29-12-2008 16:59
Witam,
Mam problem po kierowaniu się według opisu:
http://www.howtoforge.com/enabling-m...5-debian-lenny
Doszedłem do kroku 9 tj. dpkg-buildpackage.
Niestety kompilacja PHP 5-5.2.6 nie przebiega poprawnie. Po jakichś 40 minutach kończy się i wyświetla informację na ekranie: make[1]: *** [ext/imap/php_imap.lo] Błąd 1
make[1]: Opuszczenie katalogu `/usr/src/php5-5.2.6/apache2-build'
make: *** [build-apache2-stamp] Błąd 2
dpkg-buildpackage: niepowodzenie: debian/rules build zwrócił status błędu 2 W debian/rules dodawałem po MySQL linijkę: --with-mssql=shared,/usr/local/freetds tak, że wygląda to mniej więcej tak: --with-mysql=shared,/usr \
                --with-mssql=shared,/usr/local/freetds \
                --with-mysqli=shared,/usr/bin/mysql_config \ Oczywiście zgodnie z opisem. Nie wiem czego dotyczy błąd i co z nim zrobić?



fnmirk - 29-12-2008 17:44
Moim zdaniem to źle się zabierasz jeżeli chodzi ogólnie o instalację jak i sam system, z którego zamierzasz korzystać.

Zanim przystąpisz do kompilacji i instalacji jakiegoś programu (programów) ze źródeł - powinieneś w pierwszej kolejności przygotować sobie jakąś podstawę.
Czyli:
    linstalujesz wymagany system bazowy Debiana,
    konfigurujesz połączenie z internetem,
    sprawdzasz i uzupełniasz zawartość pliku /etc/apt/sources.list właściwymi i wymaganymi wpisami,
    wykonujesz aktualizację bazy dostępnych pakietów np.: apt-get update wykonujesz aktualizację kluczy gpg,
    wykonujesz teraz: apt-get upgrade instalujesz wymagane programy do dalszej pracy, w przypadku kompilacji przynajmniej: apt-get install build-essential instalujesz wymagane pakiety dev na podstawie informacji zawartej w pliku README pobranych źródeł programu,
    system przygotowany - przystępuję do kompilacji.l
Takie mam uwagi odnośnie tego problemu jak i problemu, który opisałeś odnośnie apta.



Shezzy - 29-12-2008 19:01
Nie wiem na jakiej podstawie osądzasz, że źle się zabieram jeżeli w swoim działaniu opisałem tylko czynności na danym kroku, a nie przed.
W każdym razie nie wiem czy chociaż zerknąłeś do opisu podanego w linku, tam jest też opis przygotowań, czyli dodanie wpisów do /etc/apt/source.list oraz między innymi: apt-get update
apt-get dist-upgrade
apt-get build-dep php5 Wykonałem jeszcze raz polecenia zawarte w Twoim poście i żadne poza update nie wprowadziło zmian. Widocznie co chwile wychodzą jakieś aktualizacje.
Mimo to dzięki za wypowiedź.

Generalnie wg tego tutka wszystko powinno działać, sama kompilacja prawie w całości przebiega bezproblemowo, jedynie ten debian/rules coś przeszkadza. Spróbuje może skompilować na oryginalnym debian/rules, może ta modyfikacja tutka przeszkadza? Aczkolwiek wtedy skompiluje się bez MSSQL jako Extension.



fnmirk - 29-12-2008 19:19
Shezzy, zacznij od początku.

Wklej zawartość pliku: cat /etc/apt/sources.list



Shezzy - 29-12-2008 19:41
Przepraszam za moje "niewiem". Dziwne przyzwyczajenia, które trzeba tępić ;).

Mój sources.list wygląda tak:
#deb cdrom:[Debian GNU/Linux 4.0 r3 _Etch_ - Official i386 CD Binary-1 20080217-11:50]/ etch contrib main

deb http://debian.ludost.net/debian/ testing main contrib non-free
deb-src http://debian.ludost.net/debian/ testing main contrib non-free
deb http://security.debian.org/ testing/updates main contrib
deb-src http://security.debian.org/ testing/updates main contrib

#deb http://ftp.vectranet.pl/debian/ etch main
#deb-src http://ftp.vectranet.pl/debian/ etch main
#deb http://security.debian.org/ etch/updates main contrib
#deb-src http://security.debian.org/ etch/updates main contrib Generalnie wkleiłem te źródła co gość w tutku kazał, ta skomentowane to moje normalne, z tym że CD-ROM z reguły jest cały czas wyłączony, bo mnie denerwuje.

EDIT:
Dodam, że jeśli nie dodam w debian/rules rozszerzenie MSSQL to kompilacja tak czy siak kończy sie tym samym błędem.



fnmirk - 29-12-2008 20:26
Opis dotyczy kompilacji pod wersją Debiana Lenny. Twój bazowy (wyjściowy) to Etch. Problem jest zapewne w tym, że system nie jest w pełni zaktualizowany do Lenny.

Zanim przystąpisz do tego co zamierzasz to jest kompilacji - wcześniej wykonasz pełną aktualizację systemu do wersji Lenny/Testimg.
Twoje aktywne wpisy odnoszące się do Debiana Lenny powinny wyglądać tak: deb http://debian.ludost.net/debian/ testing main contrib non-free
deb-src http://debian.ludost.net/debian/ testing main contrib non-free
deb http://ftp.pl.debian.org/debian/ lenny main non-free contrib
deb-src http://ftp.pl.debian.org/debian/ lenny main non-free contrib
deb http://security.debian.org/ lenny/updates main contrib non-free
deb-src http://security.debian.org/ lenny/updates main contrib non-free Zrezygnowałeś z czekania na rozwiązanie w tym temacie - rozwiązanie tamtego problemu dostajesz dzisiaj od ręki przy okazji.

Po zmianie w /etc/apt/sorces.list wykonujesz aktualizację systemu i jeżeli pojawią się błędy wklejasz na forum.



Shezzy - 29-12-2008 20:37
OK jestem w trakcie aktualizacji, ale nie zrozumiałem gdzie jest to okazyjne rozwiązanie tamtego problemu?
W sumie nadal jestem ciekaw jak to można było naprawić, stawiam na 10 sec roboty ;).



fnmirk - 29-12-2008 20:53
Jeżeli miałeś nie do końca zaktualizowany system to występowały problemy z niespełnionymi zależnościami ze strony starszych pakietów Etcha. Dlatego występowały konflikty. Poszukaj podobnych błędów w tematach na forum.
Można mieszać wersje Debiana jednak należy to robić z rozwagą i świadomością następstw ewentualnych kłopotów zabezpieczając się wcześniej przed nimi.
Zajrzyj do Debian reference.

Edit:

To co aktualnie wykonujesz mogło rozwiązać poprzedni problem.



Shezzy - 29-12-2008 21:07
Zgodzę się, że mogło by zapobiec choć jak dla mnie to nie była tego wina, ale ja znawcą w temacie akurat nie jestem.
W każdym razie nie mógłbym tego naprawić w ten sposób bo apt-get nie działał. Jedynie chyba przy znajomości dpkg można by było coś wgrać.
Ja próbowałem szukać źródeł apta ale coś słabo szukałem ;).

Obecnie trwa kompilacja, po zmienionych wpisach w /etc/apt/source.list jedynie polecenie update coś tam ściągało chwilkę.
Jednak błąd widzę po mojej stronie, co nie oznacza, że rozwiąże to problem.

W pliku debian/rules dla mojej wersji PHP (nowszej niż w tutorialu) już domyślnie dodano rozszerzenie MSSQL z domyślną ścieżką, którą trzeba zmienić na ścieżkę do FreeTDS-a.
Ja tego nie zdążyłem wcześniej zauważyć przez co miałem dwa wpisy dla MSSQL z różnymi ścieżkami. Zobaczymy jak będzie teraz ;).

EDIT:
Mimo poprawienia wpisów w /etc/apt/source.list i tego błędu z podwójnym dodaniem MSSQLa - nadal ten sam błąd.



fnmirk - 30-12-2008 22:16
Wpis w /etc/apt/sources.list: deb http://debian.ludost.net/debian/ testing main contrib non-free
deb-src http://debian.ludost.net/debian/ testing main contrib non-free
deb http://ftp.pl.debian.org/debian/ lenny main non-free contrib
deb-src http://ftp.pl.debian.org/debian/ lenny main non-free contrib
deb http://security.debian.org/ lenny/updates main contrib non-free
deb-src http://security.debian.org/ lenny/updates main contrib non-free

deb http://www.debian-multimedia.org testing main
deb-src http://www.debian-multimedia.org testing main
deb http://deb.opera.com/opera/ testing non-free (trzy ostatnie linijki są opcjonalne).

apt-get update Dodanie kluczy gpg jeśli wymagane
http://debian.linux.pl/viewtopic.php?p=282#282
Po ostatnim poprawnie dodadanym kluczu jeszcze raz: apt-get update Następnie: apt-get -u upgrade Pobieramy źródła: apt-get source php5 Sprawdzamy i instalujemy wymagane pakiety: apt-get build-dep php5 Instalujemy pakiety: apt-get install tdsodbc freetds-common freetds-dev Jako root wchodzimy do katalogu: cd /usr/src/php5-5.2.6 Wydajemy będąc już w katalogu /usr/src/php5-5.2.6 polecenie: nano debian/modulelist zamieniamy wpis: mysql MYSQL na: mssql MSSQL zapisujemy zmiany.
Następnie: nano debian/rules zmieniamy wpis: --with-mysql=shared,/usr na: --with-mssql=shared,/usr/local/freetds \ zapisujemy zmiany.

Następnie: nano debian/control na końcu pliku dodajemy: Package: php5-mssql
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}, ${php:Depends}, php5-common (= ${Source-Version})
Description: MSSQL module for php5
 This package provides a module for MSSQL using FreeTDS.
 .
 PHP5 is an HTML-embedded scripting language. Much of its syntax is borrowed
 from C, Java and Perl with a couple of unique PHP-specific features thrown
 in. The goal of the language is to allow web developers to write
 dynamically generated pages quickly. Zapisujemy zmiany.

Pamiętamy o dodatkowej pustej linijce na końcu zmienianych plików.

Będąc dalej w katalogu /usr/src/php5-5.2.6 wydajemy polecenie: dpkg-buildpackage Po pewnym czasie powstanie w katalogu /usr/src 29 pakietów *.deb. Reszty opisu nie sprawdzałem.

Wynik końcowy budowy: Błąd podpisu - należy zajrzeć do dokumentacji - można go pominąć.



Shezzy - 31-12-2008 01:41
Nadal ten sam błąd, postąpiłem zgodnie z Twoimi wskazówkami.
Po zmianie sources.list na ten w powyższym poście, musiałem metodą forumową dodać 2 klucze GPG, potem jeszcze raz update.

Komendy update -u
upgrade
apt-get build-dep php5
apt-get install tdsodbc freetds-common freetds-dev Nie wniosły nic nowego, wszystko już było.
Może źle kombinuje z tym debian/rules?

Kazałeś dać MSSQL zamiast MySQL, ja go po prostu dodałem do extensionlist, a w debian/rules tylko podmieniłem ścieżkę bo MSSQL już był (po prostu chce mieć i MSSQL i MySQL). Aha i nie robiłem tego przez nano tylko przez WinSCP i wbudowany edytor. Spróbuje jeszcze jutro przez nano, choć wątpię czy to coś zmieni, aczkolwiek wiem, że ten WinSCP lubił mi skopać UTF8 zamieniając na ANSI, może w tym też jest problem.
Nie mam już siły do tego, ale się nie poddaje. W Windows by dodać obsługę MSSQL dodawało się DLLkę ;)



fnmirk - 31-12-2008 03:40
W oryginalnym opisie jest sporo błędów - literówki. Jednak na pewno nie jest błędem korzystanie z nano lub nawet vima. Inne edytory mogą coś dopisywać lub zmieniać.
Wykonałem zamianę wspomnianych linijek aby sprawdzić czy ma to jakiś wpływ na budowę pakietów.

Pierwszą budowę wykonałem na samych czystych źródłach bez wstawiania dodatkowych opcji.
Trzeci raz, ze wszystkimi opcjami już nie próbowałem tego robić ze względu na czas.

Usuń wszystko. Pobierz jeszcze raz źródła i spróbuj zbudować pakiety bez zmieniania jakichkolwiek opcji. Potem skorzystaj jednak z nano.

Należy sprawdzić czy Twój system jest wstanie zbudować pakiety z pobranych źródeł.
Zajrzyj do tego.



Shezzy - 31-12-2008 17:27
Próbowałem to kompilować wcześniej nawet bez żadnych zmian w źródłach, ten sam błąd. Teraz spróbowałem, jeszcze raz. To samo.
W oryginalnym opisie znalazłem dwie literówki z Contro i tsdodbc.

Ten dokument co mi dałeś jeszcze bardziej utwierdza mnie w przekonaniu, że postępuje dobrze.
fnmirk podaj jaki masz system, z jakiego sources.list korzystałeś przy update?
Ja nie rozumiem tego...



fnmirk - 31-12-2008 19:14
To co robiłem to jest najnormalniejszy i zwyczajny Lenny. Zawartość /etc/apt.sources.list masz powyżej.
http://ftp.acc.umu.se/cdimage/daily-...t/i386/iso-cd/
http://ftp.acc.umu.se/cdimage/daily-...86-netinst.iso

Jaki masz kernel? uname -r Spróbuj pobrać źródła jakiegoś mniejszego programu i zbuduj pakiet.



Shezzy - 01-01-2009 13:52
Mój kernel: 2.6.26-1-686
Właśnie buduje mrtg, zobaczymy jak to wyjdzie.

EDIT:
MRTG zbudowały sie na czystych źródłach bezproblemowo.
FreeTDS również no problem.



fnmirk - 01-01-2009 19:10

Ja mam Etcha to może być problem? Wykonałeś aktualizację do wersji Lenny?



Shezzy - 01-01-2009 20:47
Cofam swoją wypowiedź, po prostu nie wiedziałem że tak szybko można dokonać aktualizacji systemu. Moja wersja to 5.0 czyli Lenny.
Po prostu miałem wątpliwosci, czy to przez aktualizacje.
Kombinuje, szukam i znaleźć rozwiązania nadal nie moge.



fnmirk - 01-01-2009 21:50

Kombinuję, szukam i znaleźć rozwiązania nadal nie mogę. Sprawdź jeszcze raz czystą budowę pakietu bez żadnych opcji. Następnie pozostaje analiza i porównywanie z tym co jest zawarte w manualu.
Spróbuj pobrać jakąś wersję livecd i z jego pomocą przeprowadzić budowę pakietu lub sprawdzić system.

Możesz pobrać takiego Linuksa: http://cdlinux.pl/index.php?id=2

Do aktualizacji należy podać do tej wersji repozytoria Lenny (takie jak powyżej).

Może masz jakąś wersję Livecd bazującą na Debianie i wystarczy porównać system?



Shezzy - 01-01-2009 22:26
Tak jak już wspomniałem, nie da rady nawet czystej wersji PHP skompilować. Teraz jeszcze próbuje configure i make, zobaczymy jaki wynik będzie.
Natomiast wydaje mi się, że metodą configure i make, gdzie dla configure nie podam żadnych parametrów nie uwzględnię chyba ustawień z folderu debian, gdzie ustawiałem ścieżki dla MSSQL, MySQL i ustawione były domyślnie inne rozszerzenia. Nie powinienem podać teraz parametrów dla configure, by uwzględnić wszystkie ustawienia?
Jestem w trakcie ściągania małej dystrybucji CDLinux, którą odpalę na USB, skompiluje na innym komputerze i przekopiuje package na serwer.
Będę już miał tutaj debianowe narzędzia jak apt-get, albo dpkg? Jeżeli nie to już nie wiem czy dałbym sobie radę, bowiem sources.list pasuje tylko do apta, a dpkg jest nieodzownym warunkiem skompilowania paczki z ustawieniami zawartymi w debian/rules, debian/modulelist.

Tak w ogóle jeszcze mam jedno pytanie, po co ja się przesiadłem na Lenny, czy na Etchu nie można było jakoś dodać obsługi MSSQL dla PHP?
Zauważyłem, że w tutorialu jest wersja php5-5.2.5, ja natomiast pobieram już nowszą php5-5.2.6 tym samym poleceniem apt-get source php5.
Być może tutaj jest jakaś różnica?
Znalazłem w php5-5.2.6/README.UNIX-BUILD-SYSTEM: Czy właśnie tutaj chodzi o Lennego?



fnmirk - 01-01-2009 22:52

po co ja się przesiadłem na Lenny, czy na Etchu nie można było jakoś dodać obsługi MSSQL dla PHP? W to, to ja się nie zagłębiałem i nie sprawdzałem czy jest czy nie ma takiej potrzeby zmiany dystrybucji. Przedstawiłeś howto według, którego chciałeś zbudować pakiet i tym się zajmujemy na podstawie wspomnianego opisu. Co i w jakim celu to chyba jest sprawa drugorzędna. Istotą jest problem z budową bezbłędnie pakietu.

Zauważyłem, że w tutorialu jest wersja php5-5.2.5, ja natomiast pobieram już nowszą php5-5.2.6 tym samym poleceniem apt-get source php5. To nie ma znaczenia. U mnie pakiety się budują.
Czy właśnie tutaj chodzi o Lennego? Według mnie nie.

Może jeszcze raz opisz kolejne kroki postępowania od początku do wystąpienia błędu.



Shezzy - 01-01-2009 23:09
Configure i Make i skompilowało sie jednakże make test przechodzi z błędami.

TEST RESULT SUMMARY
---------------------------------------------------------------------
Exts skipped    :  57
Exts tested    :  22
---------------------------------------------------------------------

Number of tests : 5811              4152
Tests skipped  : 1659 ( 28.5%) --------
Tests warned    :    0 (  0.0%) (  0.0%)
Tests failed    :  43 (  0.7%) (  1.0%)
Tests passed    : 4109 ( 70.7%) ( 99.0%)
---------------------------------------------------------------------
Time taken      :  639 seconds

You may have found a problem in PHP... ble ble ble Niewiem czy ma to znaczenie, czy jest to zależne od ilości modułów. Mniejsza o to.

Od początku? OK

1. Ustawiam sources.list
deb http://debian.ludost.net/debian/ testing main contrib non-free
deb-src http://debian.ludost.net/debian/ testing main contrib non-free
deb http://ftp.pl.debian.org/debian/ lenny main non-free contrib
deb-src http://ftp.pl.debian.org/debian/ lenny main non-free contrib
deb http://security.debian.org/ lenny/updates main contrib non-free
deb-src http://security.debian.org/ lenny/updates main contrib non-free Instalacje i kompilacje składników TDS pominełem. Nie ma to znaczenia dla kompilacji nawet z czystymi źródłami.

2. Aktualizuje
apt-get update apt-get dist-upgrade 3. Sciagam źródła
apt-get source php5 4. Instaluje wymagane biblioteki
apt-get build-dep php5 5. Zamieniam ustawienia w debian/rules, debian/contro i debian/modulelist. Bądź ich nie zmieniam, na czysto też nie działa.

6. Próbuje zbudować paczke
dpkg-buildpackage



fnmirk - 01-01-2009 23:23
Robisz dokładnie tak jak opisałem wcześniej. Na stronie i forum HowtoForge proponują w taki sposób zbudować pakiety jako rozwiązanie dla tego błędu.
http://www.howtoforge.com/how-to-reb...ed-for-headers

http://www.howtoforge.com/forums/sho...d.php?p=162116

Odnośnie Etcha to jest tylko tyle i jest to stare:
http://www.howtoforge.com/php5_mssql..._tds_unix_odbc



Shezzy - 01-01-2009 23:46
Tak sie składa, że to mój topic ;).
W najbliższym czasie dam znać jak to z tym wszystkim mi idzie. Mam pare rzeczy do wypróbowania.



fnmirk - 01-01-2009 23:53

Tak sie składa, że to mój topic ;). Jaki ten ÂŚwiat mały?



Shezzy - 02-01-2009 00:01
To samo miałem powiedzieć ;)

(1:34) EDIT: Ten drugi sposób kończy sie efektownie tym samym błędem, a na innej dystrybucji spróbuje już jutro.



fnmirk - 02-01-2009 02:14
Może zainstaluj, jak masz wolną partycję Debiana Lenny w wersji podstawowej (netinstall). Skonfiguruj internet i zbuduj tylko środowisko do budowy tych pakietów. Wydaje mnie się, że może być szybciej.

Nie instaluj żadnych serwerów i usług tylko to co wynika z zależności do budowy tych pakietów.



Shezzy - 02-01-2009 15:49
OK zainstalowałem Lennego i bezproblemowo skompilowałem paczke.
Następnie na serwerze zainstalowałem paczke:
dkpg -i php5-mssql_5.2.5-3_i386.deb Krok 11:
apt-get install php5-sybase Kończy sie niepowodzeniem, błąd:
dpkg: błąd przetwarzania /var/cache/apt/archives/php5-sybase_5.2.6-5_i386.deb (--unpack):
 próba nadpisania "/usr/lib/php5/20060613+lfs/mssql.so", który istnieje także w pakiecie php5-mssql
Wystąpiły błędy podczas przetwarzania:
 /var/cache/apt/archives/php5-sybase_5.2.6-5_i386.deb
E: Sub-process /usr/bin/dpkg returned an error code (1) Czyli już tam jest mssql.so.
Nadal jeszcze mysql_connect() nie działa.
W tutorialu wspominają coś o wprowadzenia DNS dla FreeTDS.

/etc/freetds/freetds.conf
#  $Id: freetds.conf,v 1.12 2007/12/25 06:02:36 jklowden Exp $
#
# This file is installed by FreeTDS if no file by the same
# name is found in the installation directory. 
#
# For information about the layout of this file and its settings,
# see the freetds.conf manpage "man freetds.conf". 

# Global settings are overridden by those in a database
# server specific section
[global]
        # TDS protocol version
;        tds version = 4.2

        # Whether to write a TDSDUMP file for diagnostic purposes
        # (setting this to /tmp is insecure on a multi-user system)
;        dump file = /tmp/freetds.log
;        debug flags = 0xffff

        # Command and connection timeouts
;        timeout = 10
;        connect timeout = 10
       
        # If you get out-of-memory errors, it may mean that your client
        # is trying to allocate a huge buffer for a TEXT field. 
        # Try setting 'text size' to a more reasonable limit
        text size = 64512

# A typical Sybase server
[egServer50]
        host = symachine.domain.com
        port = 5000
        tds version = 5.0

# A typical Microsoft server
[egServer70]
        host = ntmachine.domain.com
        port = 1433
        tds version = 7.0 Nie wiem jak postąpić. Nie wiem po co mu te dane, skoro host podaje jako parametr dla mysql_connect(), port domyślny, a wersja TDS nie wiem co to ma do rzeczy.



fnmirk - 02-01-2009 16:24

Nadal jeszcze mysql_connect() nie działa. Tu musisz poczekać na kogoś bardziej zaznajomionego z tym tematem.



Shezzy - 02-01-2009 16:57
Dodałem kod do php.ini ze ścieżką biblioteki.
extension_dir = "/usr/lib/php5/20060613+lfs/"
extension=mssql.so Chyba, działa bo mssql_connect() nie wyświetla już błędu ;)
Dzięki wielkie za pomoc. W razie czego jeszcze napisze, ale myśle że już będzie działać.
Nadal mnie zastanawia dlaczego na tym moim etchu nie działa kompilacja, zapewne musiałbym przestudiować cały artykuł o aktualizacji systemu.
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • minister.pev.pl

  •  

     


     

     
    Copyright 2003. MĂłj serwis