Subversion arşivinize PEAR paketleri eklemek?

3 Cevap php

Ben PEAR paketlerini kullanmak olacak bir proje üzerinde çalışıyorum. (Ben paketlerinden birine uygulanan bir yama gerektiren ve özellikle çünkü) barındırma sağlayıcı kurulacak PEAR paketin hangi sürümünü asla bilemezsiniz çünkü, ben sağ içine benim proje için PEAR kaynağı koymak istiyorum SVN, bu nedenle diğer geliştiricilerin hemen bağımlılıkları olabilir.

Ama PEAR ile ilgili her şey mutlak dizinleri var gibi görünüyor! Yeni ARMUT dizin kurmak ". Armut config-yaratmak pear.conf" Running bile hata iletisiyle başarısız olur:

Kök dizin bir mutlak yol olmalıdır

Ben diğer bazı sunucularda armut yapılandırma dosyaları kontrol ve onlar da, mutlak yolları var gibi görünüyor.

Bir geliştirici kendi makineye bu denetler, ya da biz bir sunucuya tüm ihracat zaman, biz mutlak yol ne olacağını bilmiyorum.

Bunu ayarlamak için herhangi bir yolu var mı?

3 Cevap

PHP 5.3.1 kullanımı Pyrus, PEAR2 yükleyici varsa. Hoşunuza nereye kadar pyrus yönetilen sistemler taşınmış olabilir.

Pyrus indir -

$> wget http://pear2.php.net/pyrus.phar

Lütfen pyrus yüklü paketlerini saklamak için bir dizin oluşturun:

$> mkdir mylibs

Paketlerini kurun -

$> php pyrus.phar mylibs install pear/Net_URL

Yüklü paket mylibs/php/Net/URL.php şimdi de

Biz yüklemek ne dizin göstermek, hem de kanal adı 'armut' (Pyrus varsayılan pear2.php.net olduğu) mylibs dizini geçti unutmayın. Eğer + x chmod eğer kolaylık sağlamak için, pyrus.phar dosya cli dan infaz edilebilir.

İstediğiniz her yerde mylibs dizini taşıyabilirsiniz. Hatta depo bunu taahhüt.

Üzerinde dokümanlar sürü PEAR website.

Ben istediğim PEAR kütüphaneleri yüklemek benim Hosting sağlayıcısı alamadım. İşte benim kaynak ağacının ARMUT parçası haline nasıl.

1. Create a remote.conf file

Lütfen remote.conf oluşturma kılavuzda biraz daha farklı. I vendor/PEAR bir projenin içinde PEAR yüklemek istiyorsunuz diyelim. Böyle yapacağını:

#from the root of the project
$ cd vendor ; mkdir PEAR ; cd PEAR
$ pear config-create <absolute path to project>/vendor/PEAR/ remote.conf

2.Update the channels

$ pear -c remote.conf channel-update pear.php.net

3. install PEAR

$ pear -c remote.conf install --alldeps pear

4. install any other libraries

$ pear -c remote.conf install --alldeps <libname>

Voila ... PEAR kaynak ağacının bir parçasıdır.

The Catches:

  • remote.conf olarak yolları mutlak olsa kütüphaneleri kendilerini hala çalışacaktır. Bu sadece herhangi bir yerde çalışmak olmaz güncelleme oluyor. vendor/PEAR gelen, yukarıdaki durumda - Bunu oluşturulduğu aynı yoldan güncellemeniz gerekir.
  • Bazı kütüphaneler yolu dışında olmak istemiyorum, bu yüzden vendor/PEAR yoluna eklemek zorunda kalabilirsiniz (ben kodu var ihtiyacınız varsa sadece isteyin.)

Bu sorunuza cevap ise tamamen emin not değilim, ama komut üzerinde PEAR deposundan için konum belirtebilirsiniz, böylece kullanarak, yerel bir depo oluşturabilirsiniz:

pear install --force --installroot=/path/to/my/pear/ PEAR

Sonra kullanarak ek paketlerini yükleyebilirsiniz:

pear install --installroot=/path/to/my/pear/ SomePackage

App içinde yerel repo kullanmak için, emin, yerel repo yerine, varsayılan (küresel yüklü) depo için include_path puan o yapmak zorunda. Yani bu gibi bakmak isterdim:

include_path = ".:/path/to/my/pear/usr/share/php"

Re:

Aslında, o çözüm, her biri yüklü bir havuz vardır yoluna bağlı olmaksızın birçok makineden kontrol edilebilir ve böylece mutlak yolları önlemek istiyor.

- Carlos Lima

Haklısın görünüyor. Bu durumda, ben size SVN depo içine PEAR depoyu kontrol yok ki tavsiye değil, sunucuda / güncelleyin depo yüklemek için bir açılma komut dosyası kullanabilirsiniz. Sadece belirli bir sürümünü yüklemek için emin olun. (Sen do Doğru, otomatik dağıtma var?)