Jak správně nastavit satis
- Oli
- Člen | 1215
Ahoj,
zkouším si hrát s nastavením satis-u, ale strašně v tom plavu. Já teda
plavu i v composeru, ale přidat závislosti a updatovat ještě
zvládnu :-)
Takže vygeneroval jsem si SSH klíč podle hohodle návodu. Potom jsem přidal do rootu projektu satis.json, který obsahuje:
{
"name": "Example",
"homepage": "http://packages.example.org",
"repositories": [
{ "type": "vcs", "url": "git@bitbucket.org:Olicek/example.git" }
],
"require-all": true
}
Jestli to je správně nevím. Ale pochopil jsem to z tohodle, že to tak mám udělat.
No a potom jsem si založil projekt:
composer create-project nette/sandbox example
Do composer.json-u toho projektu jsem potom vložil tohle:
{
"name": "nette/sandbox",
"description": "The sandbox is a pre-packaged Nette Framework project, basic configured structure for your application.",
"homepage": "https://nette.org",
"type": "project",
"license": ["BSD-3-Clause", "GPL-2.0", "GPL-3.0"],
"authors": [
{
"name": "David Grudl",
"homepage": "http://davidgrudl.com"
},
{
"name": "Nette Community",
"homepage": "https://nette.org/en/contributors?lang=en"
}
],
"require": {
"php": ">= 5.3.7",
"nette/nette": "~2.2.0",
"dg/adminer-custom": "~1.0"
},
"repositories": [
{
"type": "git",
"url": "git@bitbucket.org:Olicek/example.git",
"options": {
"ssh2": {
"username": "Olicek",
"pubkey_file": "~/.ssh/id_rsa.pub",
"privkey_file": "~/.ssh/id_rsa"
}
}
}
],
"require-dev": {
"nette/tester": "~1.0"
},
"minimum-stability": "stable"
}
Když potom zavolám composer update
, tak mě to projde, ale nic
nenainstaluje. Jak přidám závislost, kterou chci nainstalovat?
Zkoušel jsem něco jako:
...
"require": {
"php": ">= 5.3.7",
"nette/nette": "~2.2.0",
"dg/adminer-custom": "~1.0",
"Olicek/example": "*"
},
...
Ale to mě napsalo akorát, že to nemůže takovej balíček najít.
Díky moc za nakopnutí.
- David Matějka
- Moderator | 6445
Nejdriv do Olicek/example git repozitare pridas composer.json, kde bude
uveden nazev balicku (olicek/example
) a dalsi potrebny veci
Bez satisu:
do composer.json nejakeho projektu (treba ten naklonovany sandbox) pridas
v podstate to, co si udelal (ty „options“ by nemely byt nutne, to, co
uvadis, by melo byt default). Pri composer update by jiz mel composer
proskenovat ten repo a nainstalovat olicek/example
Satis:
Satis dela to, ze centralizuje ono skenovani git repozitaru (a jinych zdroju) a
vytvari repozitar pro composer. Diky tomu nemusis do kazdeho projektu do sekce
„repositories“ uvadet vsechny git repozitare, kde jsou composer balicky, ale
pouze link na ten jeden satis/composer repozitar.
Takze dle navodu nainstalujes satis, do rootu toho satis projektu pridas
satis.json, kam das cestu k tomu git repozitari. Pak spustis build
(php bin/satis build.....
), ten sestavi repozitar pro composer.
V composer.json onoho sandboxu pak muzes ze sekce „repositories“ smazat ten
konkretni git repozitar a pridat tam composer repozitar ` { „type“:
„composer“, „url“: „http://packages.example.org/“ }`
Editoval matej21 (11. 6. 2014 1:14)
- Oli
- Člen | 1215
Dobře díky,
měl jsem blbě uvedenej název balíčku. Teď mám teda v rootu example
projektu v podstatě composer.json ze sendboxu, ale nazev balicku jako
olicek/example.
Nainstaloval jsem si satis a sestavil packages.json. (s tím se mě sestavil index.html a include/<silenej_nazev.json>)
To jsem vložil do složky satis, která je v rootu toho example projektu. A to jsem poslal na server.
Teď, když si vytvořím projekt
composer create-project nette/sandbox satis_test
Tak do composer.json toho satis_test mám vložit tohle?
"require": {
"php": ">= 5.3.7",
"nette/nette": "~2.2.0",
"dg/adminer-custom": "~1.0",
"olicek/nextras": "*"
},
"repositories": [
{
"type": "composer",
"url": "http://bitbucket.org/Olicek/cesta_k_packages.json",
"options": {
"ssh2": {
"username": "Olicek",
"pubkey_file": "~/.ssh/bitbucket_rsa.pub",
"privkey_file": "~/.ssh/bitbucket_rsa"
}
}
}
],
To mě při pokusu o stažení vrátí parsingException (vrací to html místo json).
Mám možná trochu zmatek v tom co do kterýho jsonu patří :-)
- David Matějka
- Moderator | 6445
V repositories nepouzivam cestu primo k packages.json, ale
http://satis.example.com
. Tedy k www rootu toho satis repozitare,
kde je v browseru videt seznam balicku, composer si uz pak asi najde ten
composer.json pod tou adresou.
A myslim, ze ani tentokrat tam nemusis uvadet ty „options“
- Oli
- Člen | 1215
matej21: Ikdyž cestu nastavím (předpokládám) do www, tak to nenajde. Kdyby se to tím SSH klíčem nepřipojilo, tak by mě to napsalo, ne? Nebo by se to snažilo stáhnout html soubor s chybou?
Kde to hostuješ ty? na nějakým git serveru (gitHub/bitbucket) nebo na normálním serveru?
bazo: Instalace podle návodu nefunguje.
Fungovalo mi
composer create-project bazo/satis-gui satis-gui @dev
Ale vyžaduje to PHP 5.5.0 a já mám na localhostu jen 5.4.x. Koukal jsem, v bazo/satis-gui máš PHP 5.4.0, takže to asi vyžaduje nějaká jiná závislost.
- David Matějka
- Moderator | 6445
@Oli: tak git repozitare hostuju na privatnim gitlabu, ale to na to nema vliv. Ten satis projekt musi byt na www serveru pristupny pres http (jako web)..
- Oli
- Člen | 1215
Tak abych byl konkrétní:nastavil jsem ten testovací projekt jako veřejný.
Pak se na něj snažím dostat jako
{
"name": "nette/sandbox",
"description": "The sandbox is a pre-packaged Nette Framework project, basic configured structure for your application.",
"homepage": "https://nette.org",
"type": "project",
"license": ["BSD-3-Clause", "GPL-2.0", "GPL-3.0"],
"authors": [
{
"name": "David Grudl",
"homepage": "http://davidgrudl.com"
},
{
"name": "Nette Community",
"homepage": "https://nette.org/en/contributors?lang=en"
}
],
"require": {
"php": ">= 5.3.7",
"nette/nette": "~2.2.0",
"dg/adminer-custom": "~1.0",
"olicek/nextras": "*"
},
"repositories": [
{
"type": "composer",
"url": "http://bitbucket.org/Olicek/nextras/src",
"options": {
"ssh": {
"username": "Olicek",
"pubkey_file": "~/.ssh/bitbucket_rsa.pub",
"privkey_file": "~/.ssh/bitbucket_rsa"
}
}
}
],
"require-dev": {
"nette/tester": "~1.0"
},
"minimum-stability": "stable"
}
Mohl by jsi to prosím prolítnout co dělám špatně? ;-)
- David Matějka
- Moderator | 6445
ten satis NEMA byt v zadnem repozitari. Satis ma byt na www serveru dostupny jako web a ma v satis.json obsahovat konfiguraci + vygenerovany packages.json
- Oli
- Člen | 1215
Aaha, takže: Bych měl odstranit satis z repository a vložit ho někam na
server example.com/satis. Do tohodle umístění vložit
satis.json + vygenerovany packages.json
. A v composer.json
nastavit url na example.com/satis
respektive
example.com
pokud tam ten satis být nemusí. Říkám
to dobře?
Takhle jsem to (snad) dobře udělal, ale dostávám chybu
Problem 1
– The requested package olicek/nextras could not be found in any version, there may be a typo in the package name.
ten satis mám tady
(zkoušel jsem jako url jak http://dev.olisar.eu/satis/
tak
git@bitbucket.org:Olicek
se stejným výsledkem).
- David Matějka
- Moderator | 6445
- vytvoris satis pristupny z webu – to je ok
- do https://bitbucket.org/Olicek/nextras pridas composer.json s nazvem balicku – to vypada taky ok
- do satis.json na tom webu pridas ten Olicek/nextras repozitar:
"repositories": [
{
"type": "git",
"url": "git@bitbucket.org:Olicek/nextras.git"
}
]
4. pomoci toho prikazu v satisu vybuildis packages.json
5. do nejakeho projektu, kde chces pouzivat Olicek/nextras pridas
repozitar:
"repositories": [
{
"type": "composer",
"url": "http://dev.olisar.eu/satis/"
}
]
- Oli
- Člen | 1215
Připadám si jak debil. Tak pěkně jsi to popsal a mě to stejně nefunguje.
- Tohle mám
- Tohle taky
- Tohle mám taky
- .
php bin/satis build http://dev.olisar.eu/…s/satis.json c:/server/www/satis/
Plus nakopírování toho co to vygenerovalo na server
- .
"require": {
"php": ">= 5.3.7",
"nette/nette": "~2.2.0",
"dg/adminer-custom": "~1.0",
"olicek/nextras": "*"
},
"repositories": [
{
"type": "composer",
"url": "http://dev.olisar.eu/satis/"
}
],
Přehlídl jsem něco?
Editoval Oli (11. 6. 2014 12:56)
- David Matějka
- Moderator | 6445
jo uz to vidim, problem je v
"olicek/nextras": "*"
jelikoz ten balicek neni ve stable verzi, tak bud musis vyzadat
"olicek/nextras": "@dev"
nebo upravit minimum-stability
- Oli
- Člen | 1215
Super, už to funguje :-) Díky MOC!
I když tak trochu prapodivně :-)
Blbnou mě závislosti na nextras/orm. Když odstraním ze závislostí
"nette/database": "~2.3@dev",
"nextras/orm": "@dev"
Tak to funguje dobře, ale když tam jsou ty závislosti, tak mě to hodí problém:
Problem 1
– olicek/nextras dev-master requires nette/database ~2.3@dev → no matching package found.
– olicek/nextras dev-master requires nette/database ~2.3@dev → no matching package found.
– Installation request for olicek/nextras @dev → satisfiable by olicek/nextras[dev-master].
Přitom, když zavolám composer update nad tím olicek/nextras tak to funguje…
Ostatní závislosti zdá se fungujou.
- Oli
- Člen | 1215
No to je právě to divný. To jsem si taky myslel, tak jsem tam všechno vyhodil. Tam se tedˇnemá co prát:
{
"name": "nette/sandbox",
"description": "The sandbox is a pre-packaged Nette Framework project, basic configured structure for your application.",
"homepage": "https://nette.org",
"type": "project",
"license": ["BSD-3-Clause", "GPL-2.0", "GPL-3.0"],
"authors": [
{
"name": "David Grudl",
"homepage": "http://davidgrudl.com"
},
{
"name": "Nette Community",
"homepage": "https://nette.org/en/contributors?lang=en"
}
],
"require": {
"php": ">= 5.3.7",
"olicek/nextras": "@dev"
},
"repositories": [
{ "type": "composer", "url": "http://dev.olisar.eu/satis/" },
{ "type": "composer", "url": "http://packagist.org/" }
],
"require-dev": {
"nette/tester": "~1.0"
}
}
- David Matějka
- Moderator | 6445
zkus nastavit minimum-stability na „dev“
A v repositories nemusis mit packagist, ten je defaultni
- bazo
- Člen | 620
Oli napsal(a):
matej21: Ikdyž cestu nastavím (předpokládám) do www, tak to nenajde. Kdyby se to tím SSH klíčem nepřipojilo, tak by mě to napsalo, ne? Nebo by se to snažilo stáhnout html soubor s chybou?
Kde to hostuješ ty? na nějakým git serveru (gitHub/bitbucket) nebo na normálním serveru?
bazo: Instalace podle návodu nefunguje.
Fungovalo micomposer create-project bazo/satis-gui satis-gui @dev
Ale vyžaduje to PHP 5.5.0 a já mám na localhostu jen 5.4.x. Koukal jsem, v bazo/satis-gui máš PHP 5.4.0, takže to asi vyžaduje nějaká jiná závislost.
nevidim tam nic co by vyzadovalo 5.5. mozes mi nahlasit na github issue s presnou error hlaskou?
- Oli
- Člen | 1215
Nefunguje mi získávání závislostí v závislosti. Tím myslím, že
mám například ArticleModule. Ten jako
require-dev
vyžaduje muj/sanbbox. A ten
muj/sandbox má spoustu dalších závislostí.
Mám to takhle:
ArticleModule
{
"require": {
"php": ">= 5.4.1",
"nette/nette": ">2.2.0",
"o5/grido": ">=2.0.8",
"olicek/form-selectize": "dev-master"
},
"require-dev": {
"nette/nette" : "~2.3.0",
"nette/tester": "~1.3",
"mockery/mockery": "~0.9",
"muj/sandbox": "dev-master"
},
"repositories": [
{
"type": "composer",
"url": "http://muj.cz/satis/"
}
],
"autoload": {
"classmap": ["src/"]
},
"autoload-dev": {
"classmap": ["tests/"]
}
}
Sandbox
{
"require": {
"kdyby/doctrine": "~2.1.0",
"hromada-dalsich": "zavislosti"
},
"require-dev": {
"mockery/mockery": "0.9.3",
"jsmitka/nette-xdebug-helper": "dev-master",
"nette/tester": "~1.0"
},
"repositories": [
{
"type": "composer",
"url": "http://muj.cz/satis/"
}
],
"autoload-dev": {
"classmap": ["tests/"]
}
}
No a teď, když spustím v tom articleModule composer update
,
tak mě to vždycky řekne, že to něco nenašlo. Aktuálně třeba:
Problem 1
- Installation request for muj/sandbox dev-master → satisfiable by muj/sandbox[dev-master].
– muj/sandbox dev-master requires kdyby/doctrine ~2.1.0 → no matching package found.
Nějaké nápady jak to fixnout?