6

Quiero usar symfony2.1 para un nuevo proyecto. Intento instalar Symfony2 con el compositor. Pero hubo múltiples errores/problemas, así que también tengo preguntas para cada problema en negrita estilo de fuente. A veces no sé si lo hago de la manera correcta.confusión de la versión del paquete symfony2.1, para symfony y sonata admin/paquete de menú knp

Quiero usar una versión estable así que elegí la versión 2.1.0 y no el desarrollador/maestro.

php composer.phar create-project symfony/framework-standard-edition symfony v2.1.0 

el resultado fue el siguiente:

Installing symfony/framework-standard-edition (v2.1.0) 
    - Installing symfony/framework-standard-edition (v2.1.0) 
    Downloading: 100% 

    Created project in symfony 
    Loading composer repositories with package information 
    Installing dependencies from lock file 
    Your requirements could not be resolved to an installable set of packages. 

     Problem 1 
     - Installation request for symfony/symfony == 2.1.9999999.9999999-dev -> satisfiable by            symfony/symfony 2.1.x-dev. 
     - Can only install one of: symfony/symfony dev-master, symfony/symfony 2.1.x-dev. 
     - Installation request for symfony/symfony == 9999999-dev -> satisfiable by symfony/sym            fony dev-master. 

por lo que un php composer.phar update y las dependencias se ha instalado sin errores.

Pero noté que la mayoría de los paquetes no tienen una versión estable. Por ejemplo doctrina/común (2.3.x-dev), aquí está la lista completa

Loading composer repositories with package information 
Updating dependencies 
    - Installing doctrine/common (2.3.x-dev 605b1b8) 
    Cloning 605b1b8b5a7bc8daf9111fb35483e5708e30de35 

    - Installing doctrine/dbal (2.3.x-dev 239630b) 
    Cloning 239630b61f03f39d198441eced1bfffb7b0e61d1 

    - Installing twig/twig (dev-master 68b8c46) 
    Cloning 68b8c4619c5bbe82bd345fe56070dec8c356610a 

    - Installing symfony/symfony (2.1.x-dev e7059b4) 
    Cloning e7059b44c78ca8e1e892adb4d93b5a482f4eb9b3 

    - Installing swiftmailer/swiftmailer (dev-master e12e4ef) 
    Cloning e12e4ef3a9d6dd60fb734a01984a6e6627aea764 

    - Installing doctrine/orm (2.3.x-dev 4d9f24b) 
    Cloning 4d9f24b2eef3af3a3e76c773994c19bbb0706f88 

    - Installing doctrine/doctrine-bundle (dev-master v1.0.0) 
    Cloning v1.0.0 

    - Installing twig/extensions (dev-master f904575) 
    Cloning f904575642b1213db69b4a98f08397e722ba1cae 

    - Installing kriswallsmith/assetic (dev-master dfbb776) 
    Cloning dfbb776288baf9319d1693195af2cb6e00729901 

    - Installing symfony/assetic-bundle (dev-master 4e7e8a0) 
    Cloning 4e7e8a039fa19434f04558473adbb201118af942 

    - Installing symfony/swiftmailer-bundle (dev-master d2eae93) 
    Cloning d2eae9385c029cbac031a90e6d2abc74b889a562 

    - Installing monolog/monolog (dev-master a929570) 
    Cloning a929570bb7688b39fefe4106f0ecf0ac35f37647 

    - Installing symfony/monolog-bundle (dev-master v2.1.0-RC2) 
    Cloning v2.1.0-RC2 

    - Installing sensio/distribution-bundle (dev-master 9892129) 
    Cloning 98921298951598e8707258cba2b6180b96faa91c 

    - Installing sensio/framework-extra-bundle (dev-master v2.1.0) 
    Cloning v2.1.0 

    - Installing sensio/generator-bundle (dev-master v2.1.0-RC2) 
    Cloning v2.1.0-RC2 

    - Installing jms/metadata (1.1.1) 
    Downloading: 100% 

    - Installing jms/cg (1.0.0) 
    Downloading: 100% 

    - Installing jms/aop-bundle (1.0.0) 
    Downloading: 100% 

    - Installing jms/di-extra-bundle (1.1.x-dev af21952) 
    Cloning af219527024c584d7311aa855d7522429c5bdb67 

    - Installing jms/security-extra-bundle (1.2.x-dev 9ab6ace) 
    Cloning 9ab6aceda50fc7a2b07d741ba4b3f0695508afcb 

1a) ¿Es esto así? ¿O hay otra solución? Me refiero a usar paquetes que son estables y no están en modo dev

Al día siguiente vuelvo a hacer una actualización de compositor y noté que algunas bibliotecas se actualizaron: todas las librerías para la rama dev-master que tiene nuevos cambios en el último día .
1b) ¿Debo hacer una actualización del compositor a intervalos regulares mientras desarrollo mi aplicación, para unir nuevas correcciones de errores, etc.?

$ php composer.phar update 
Loading composer repositories with package information 
Updating dependencies 
    - Updating swiftmailer/swiftmailer dev-master (e12e4e => c97353) 
    Checking out c97353b1ebffe25a224146f69d17efe24c093def 

    - Updating monolog/monolog dev-master (a92957 => e5bf7b) 
    Checking out e5bf7ba5d1df622b68d004b3c0277bc94286e1b7 

    - Updating friendsofsymfony/user-bundle dev-master (24edb2 => 878b7c) 
    Checking out 878b7c8320159fb09e8e94d446c498b00142b206 

    - Updating sonata-project/notification-bundle dev-master (5e7b50 => 9cef7d) 
    Checking out 9cef7d224f224b4e4327f200f9bd57b798d4ab0a 

    - Updating knplabs/gaufrette dev-master (861110 => 5ac439) 
    Checking out 5ac439cd46eb461043e6bb73dae717528f674a57 

    - Updating sonata-project/media-bundle dev-master (d04a61 => 233511) 
    Checking out 2335114dab6ea9680d174df157f5a7b4551a54dc 

Porque no descubrí otra solución que continúo e instalar FOS UserBundle añadiendo esta línea "friendsofsymfony/user-bundle": "*" a la composer.json. Hago todo el trabajo de instalación y funciona perfectamente.

Luego empiezo a instalar Sonata AdminBundle agregando "sonata-project/admin-bundle": "dev-master" al composer.json. Elegí la versión dev-master porque en http://packagist.org/packages/sonata-project/admin-bundle descubrí que la versión 2.0.x-dev no es para symfony2.1.
Además, el AdminBundle tiene una depdency para knplabs/PNK-menu-paquete:. * 1.1
En http://packagist.org/packages/knplabs/knp-menu-bundle que veo para la versión v1.1.0 de que hay otra dependencia para knplabs/PNK-menú:. * 1.1
Entonces en http://packagist.org/packages/knplabs/knp-menu encontré 4 versiones que comienza con 1,1:

  • 1.1.x-dev
  • v1.1.2
  • v1.1.1
  • v1.1.0

2a) ¿Hay alguna diferencia si hay un v delante del número de versión?

2b) ¿Qué versión se utilizará de estos cuatro cuando la dependencia es 1.1 *?

Cuando comienzo a cargar los deps de paquete de administración que veo el resultado:

$ php composer.phar update 
Loading composer repositories with package information 
Updating dependencies 
    - Installing knplabs/knp-menu (1.1.x-dev v1.1.2) 
    Cloning v1.1.2 

    - Installing knplabs/knp-menu-bundle (v1.1.0) 
    Downloading: 100% 

    - Installing sonata-project/admin-bundle (dev-master 20d5e4a) 
    Cloning 20d5e4a659bddb5fc0bcfc4755643dbc4e3f7ec1 

instalar algunos más paquetes sonata (doctrina-ORM-admin-bundle, fácil de paquete, la página-bundle, los medios de comunicación -bundle) y hubo un error

- Installing imagine/imagine (v0.3.0) 
    Downloading: 100% 



    [ErrorException] 
    rename(C:\wamp\www\symfony\vendor/imagine/Imagine/avalanche123-Imagine-a23b4f5,afcc946468d0cf073686fe7e1ae19eb2): access denied 
    (code: 5) 

3) pero cuando repito el paso se había ido el error. ¿Esto es normal?

$ php composer.phar update 
Loading composer repositories with package information 
Updating dependencies 
    - Installing imagine/imagine (v0.3.0) 
    Downloading: 100% 

    - Installing knplabs/gaufrette (dev-master 8611109) 
    Cloning 8611109aeb0bd43fd88485c20fec7fc85b021b84 

    - Installing sonata-project/media-bundle (dev-master d04a617) 
    Cloning d04a617d81383a6e1ba65ee99c2ea4379e7daf4e 

Luego continué con la configuración de Sonata administrador haz. Después de agregar una creación de una entidad Post y una PostAdmin y configurar un servicio para ella (por cierto: la configuración del servicio es un poco pobre), me di cuenta de que olvidé instalar el menú Nudo (el error fue: non-existent service "knp_menu.factory)

Voy al https://github.com/KnpLabs/KnpMenuBundle/blob/master/Resources/doc/index.md y veo los detalles de la instrucción para instalarlo. Pero ahí estaban desactualizados. Desde smyfony2.1. el $loader en el autoload.php ya no tiene la función registerNamespaces, porque esta no es la clase UniversalClassLoader, es el cargador de clases del compositor. Así que tengo que crear una instancia propia de UniversalClassLoader. Y las rutas son completamente diferentes, ahora hay un directorio padre knplabs y el subdirectorio también ha cambiado.

use Symfony\Component\ClassLoader\UniversalClassLoader; 
use Doctrine\Common\Annotations\AnnotationRegistry; 

$loader = require __DIR__.'/../vendor/autoload.php'; 

// intl 
if (!function_exists('intl_get_error_code')) { 
    require_once __DIR__.'/../vendor/symfony/symfony/src/Symfony/Component/Locale/Resources/stubs/functions.php'; 

    $loader->add('', __DIR__.'/../vendor/symfony/symfony/src/Symfony/Component/Locale/Resources/stubs'); 
} 

$universalLoader = new UniversalClassLoader(); 
$universalLoader->registerNamespaces(array(
     'Knp\Menu' => __DIR__.'../vendor/knplabs/knp-menu/src', 
     'Knp\Bundle' => __DIR__.'/../vendor/knplabs/knp-menu-bundle' 
)); 
$universalLoader->register(); 


AnnotationRegistry::registerLoader(array($loader, 'loadClass')); 

return $loader; 

4) ¿Por qué la KnpMenu instalar construcción obsoleta y por qué no hay más que una rama principal en github y nada para las versiones que existen en http://packagist.org?

Soy nuevo en symfony2 y compositor y a veces es realmente difícil de entender todo esto.

+0

Me paso lo mismo. Quiero integrar elasticabundle pero el documento está desactualizado. Estaba destinado a symfony2.0 incluso vi que tienen commit frecuente pero nadie actualizó la guía de instalación. si la instalación no está actualizada, ¿cómo puede la gente usarla? –

Respuesta

7

1a) ¿Es esto correcto? ¿O hay otra solución? Me refiero a usar paquetes que son estables y no están en modo dev

Symfony21 elegirá estándar la mejor versión para usted. Puede ver estas versiones en el archivo composer.json del paquete symfony/framework-standard-edition (symfony/symfony-standard en github).

Como se puede ver que utiliza las versiones 2.1.* y no las versiones dev-master, pero debido a que la última versión del paquete comienza con 2.1 se carga el dev-master. Más adelante, con Symfony2.2 no debería usar dev-master, sino la versión más reciente 2.1 del paquete.

Si desea una versión estática, puede reemplazar el * con la subversión que desee, pero no lo recomiendo porque no obtiene las correcciones de errores.

1b) ¿Debo hacer una actualización del compositor a intervalos regulares mientras desarrollo mi aplicación, para unir nuevas correcciones de errores, etc.?

Sí, es bueno actualizar sus dependencias de vez en cuando. Por ejemplo, si cree que detecta un error o si lo inserta en production.

2a) ¿Hay alguna diferencia si hay una v antes del número de versión?

Como podemos leer en the packagist documentation (bajo versiones de paquetes General) no hay diferencia. Puede usar ambos y si usa 2.1.4 buscará una versión 2.1.4 o v2.1.4.

2b) ¿Qué versión se usará de estos cuatro cuando la dependencia es 1.1. *?

La última subversión 1.1. Por ejemplo, si su paquete foobar tiene estas versiones: 1.1.1, 1.1.2 .. 1.1.6. Y necesita 1.1.* se instalará el último (1.1.6).

3) pero cuando repito el paso, el error desapareció. ¿Esto es normal?

Parece que la CLI no puede acceder al archivo, quizás lo haya abierto en un programa. Cuando lo intentó la segunda vez, tuvo acceso.

4) ¿Por qué la KnpMenu instalar construcción obsoleta y por qué no hay más que una rama principal en github y nada para las versiones que existen en http://packagist.org?

Primera pregunta: No sé por qué la documentación no está actualizada. Debería ir al archivo vendor/composer/autoload_namespaces.php y poner los espacios de nombres allí, entonces debería funcionar. O bien, la mejor opción, agregue estos espacios de nombres a la configuración require en el archivo composer.json. Consulte composer autoload docs para obtener más información.

Segunda pregunta: Utiliza el tags en github también.

Cuestiones relacionadas