2016-01-02 2 views
0

Я хочу использовать geonames для адресов на веб-сайте. Я разрабатываю его с помощью Laravel 5.1. Я нашел это полезным в качестве учебника для начала работы: Ipalaus Laravel 4.* for Geonames.Lonel-5.1 geonames, клонирование хранилища с использованием Composer

Из-за несовместимости версии я связался с сотрудником проекта, который перенаправил меня на использование своего репозитория: My conversation with Javier Martinz on L-5.1 compatible update. Простое решение заключалось в том, чтобы добавить его репозиторий, который я сделал в composer.json. После запуска я ожидал, что клонированный репозиторий будет иметь команду artisan для geonames, к моему удивлению, ничего подобного. Я не использую контроль версий, например git, просто сохраняя локально.

Как клонировать хранилище? Я написал ему, но ответа пока нет. Полагаю, он сделал перерыв на праздники.

Это мой composer.json файл

{ 
    "name": "laravel/laravel", 
    "description": "The Laravel Framework.", 
    "keywords": ["framework", "laravel"], 
    "license": "MIT", 
    "type": "project", 
    "require": { 
     "php": ">=5.5.9", 
     "laravel/framework": "5.1.*", 
     "laravelcollective/html": "5.1.*", 
     "laravel/socialite": "^2.0", 
     "toin0u/geocoder-laravel": "@stable", 
     "ext-zip": "*", 
     "illuminate/config": ">=5.1.0", 
     "illuminate/console": ">=5.1.0", 
     "illuminate/database": ">=5.1.0", 
     "illuminate/filesystem": ">=5.1.0", 
     "illuminate/support": ">=5.1.0", 
     "symfony/process": "2.7.*", 
     "guzzle/http": "^3.9", 
     "guzzlehttp/guzzle": "~4.0" 
    }, 
    "require-dev": { 
     "fzaninotto/faker": "~1.4", 
     "mockery/mockery": "0.9.*", 
     "phpunit/phpunit": "~4.0", 
     "phpspec/phpspec": "~2.1" 
    }, 
    "autoload": { 
     "classmap": [ 
      "database" 
     ], 
     "psr-4": { 
      "App\\": "app/" 
     } 
    }, 
    "autoload-dev": { 
     "classmap": [ 
      "tests/TestCase.php" 
     ] 
    }, 

    "repositories": [ 
     { 
      "type": "vcs", 
      "url": "https://github.com/JavierMartinz/geonames" 
     } 
    ],  
    "scripts": { 
     "post-install-cmd": [ 
      "php artisan clear-compiled", 
      "php artisan optimize" 
     ], 
     "pre-update-cmd": [ 
      "php artisan clear-compiled" 
     ], 
     "post-update-cmd": [ 
      "php artisan optimize" 
     ], 
     "post-root-package-install": [ 
      "php -r \"copy('.env.example', '.env');\"" 
     ], 
     "post-create-project-cmd": [ 
      "php artisan key:generate" 
     ] 
    }, 
    "config": { 
     "preferred-install": "dist" 
    } 
} 

Это ошибка я получил, когда я добавил: "ipalaus/geonames": "1.0.*"

C:\Users\ken4ward\Documents\xampp\htdocs\tradersmart>composer update 
> php artisan clear-compiled 
Loading composer repositories with package information 
Updating dependencies (including require-dev) 
    - Removing guzzlehttp/psr7 (1.2.1) 
    - Removing psr/http-message (1.0) 
    - Removing guzzlehttp/promises (1.0.3) 
    - Installing guzzlehttp/streams (2.1.0) 
    Downloading: 100% 

    - Removing guzzlehttp/guzzle (6.1.1) 
    - Installing guzzlehttp/guzzle (4.2.3) 
    Downloading: 100% 

    - Removing laravel/socialite (v2.0.14) 
    - Installing laravel/socialite (v2.0.4) 
    Downloading: 100% 

Writing lock file 
Generating autoload files 
> php artisan optimize 
Generating optimized class loader 

C:\Users\ken4ward\Documents\xampp\htdocs\tradersmart>composer update 
> php artisan clear-compiled 
Loading composer repositories with package information 
Updating dependencies (including require-dev) 
Your requirements could not be resolved to an installable set of packages. 

    Problem 1 
    - ipalaus/geonames v1.0.0 requires illuminate/config 4.2.* -> no matching pa 
ckage found. 
    - ipalaus/geonames v1.0.1 requires illuminate/config 4.2.* -> no matching pa 
ckage found. 
    - ipalaus/geonames v1.0.2 requires illuminate/config 4.2.* -> no matching pa 
ckage found. 
    - ipalaus/geonames v1.0.1 requires illuminate/config 4.2.* -> no matching pa 
ckage found. 
    - ipalaus/geonames v1.0.0 requires illuminate/config 4.2.* -> no matching pa 
ckage found. 
    - Installation request for ipalaus/geonames 1.0.* -> satisfiable by ipalaus/ 
geonames[v1.0.0, v1.0.1, v1.0.2]. 

Potential causes: 
- A typo in the package name 
- The package is not available in a stable-enough version according to your min 
imum-stability setting 
    see <https://groups.google.com/d/topic/composer-dev/_g3ASeIFlrc/discussion> f 
or more details. 

Read <https://getcomposer.org/doc/articles/troubleshooting.md> for further commo 
n problems. 
+0

У ИМО недостаточно подробностей о том, что вы сделали или чего не случилось, ответить на это. Вы запустили 'композиционное обновление' после обновления JSON-файла? Что случилось? Появилась ли новая зависимость в папке 'vendors'? Должен ли Geonames dep быть связанным в Laravel каким-то образом, чтобы появиться в команде Artisan? – halfer

+0

(Запросы на срочность, направленные на добровольцев на проекты переполнения стека или F/OSS на GitHub, могут быть, кстати, контрпродуктивными - я бы посоветовал вам сохранить эти запросы, когда вы нанимаете кого-то! Кроме того, запрос на вытягивание не является подходящий форум для запроса поддержки. PR - это разговор, связанный с предлагаемым изменением.) – halfer

+0

Вы прочитали [документацию] (https://github.com/ipalaus/geonames)?Он показывает, как обновлять через Composer, а затем, как настроить плагин, используя регистрацию поставщика. Просто измените свою зависимость согласно примечанию Хавьера. – halfer

ответ

2

Я также пытался использовать ipalaus/geonames, и это было не так хорошо. Он не функционировал, и билеты на выпуск, которые я создал несколько месяцев назад, не получили ответа. Таким образом, я сделал my own package, который импортируется намного быстрее, чем ipalaus/geonames, и уже более совершенен. Потребовалось 15 часов, чтобы импортировать базы данных с помощью ipalaus/geonames, и для моего пакета требуется всего 30 минут.

+1

Очень проста в использовании. Я ценю твою доброту. – kehinde

+1

Evren, ваше изменение что-то, что можно объединить обратно в исходный проект, или ваш по сути является вилкой? – halfer

+0

@halfer Я написал это с нуля, поэтому его нельзя объединить, это не вилка. Я не мог заставить ipalaus/geonames функционировать, и автор никогда не отвечал на мой отчет о проблеме. Вместо этого ответил другой человек, у которого была такая же проблема (но с тех пор он также переключился на моего импортера geonames) -> https://github.com/ipalaus/geonames/issues/30 <- Также владелец этого вопроса переключился на мой пакет также. (как видно из его комментария) –

1

После того, как я видел ваш composer.json, я подумал, что это будет просто зарегистрируйте Git repo как доступный источник, но не запросите его в качестве зависимости. Поэтому я ran this search и нашел this blog article.

Чтобы обобщить то, что говорится в этой статье, в нем говорится, что зависимости Git repo должны использовать слово dev-, за которым следует имя ветки, которое вы хотели бы (обычно это master, но может варьироваться). Таким образом, в вашем случае, решение в массиве require JSON было:

"ipalaus/geonames": "dev-master" 

Из разговора по запросу тянущего, кажется, что изменения вы хотели теперь слились вниз в любом случае. Так что теперь вы должны быть в состоянии следовать этим инструкциям, и удалить Git репозиторий:

вы должны быть в состоянии необходимой v2.0 для Laravel 5.1 композитора требует ~ 2.0 или v3.0 для Laravel 5.2 композитора требует ~ 3.0

Если это так, вы можете использовать версию Packagist, не чувствуйте, что ваше время было потрачено впустую - изучение того, как использовать Composer со специальными требованиями (например, зависимости репо), действительно стоит.