Jak správně nastavit satis

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Oli
Člen | 1215
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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“

Filip Procházka
Moderator | 4668
+
0
-

Skvělá práce @bazo!

Oli
Člen | 1215
+
0
-

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
+
0
-

@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
+
0
-

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
+
0
-

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
+
0
-

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
+
+1
-
  1. vytvoris satis pristupny z webu – to je ok
  2. do https://bitbucket.org/Olicek/nextras pridas composer.json s nazvem balicku – to vypada taky ok
  3. 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
+
0
-

Připadám si jak debil. Tak pěkně jsi to popsal a mě to stejně nefunguje.

  1. Tohle mám
  2. Tohle taky
  3. Tohle mám taky
  4. .

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

  1. .
"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
+
+1
-

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
+
0
-

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.

David Matějka
Moderator | 6445
+
0
-

Asi se nejak perou zavislosti sandboxu se zavislostmi olicek/extras

Oli
Člen | 1215
+
0
-

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
+
0
-

zkus nastavit minimum-stability na „dev“

A v repositories nemusis mit packagist, ten je defaultni

Oli
Člen | 1215
+
0
-

To jsem tam mel. Smazal jsem to jen jak jsem to zkoušel , jestli to není tím.

s tím packagistem jsem si nebyl jistej, tak jsem ho tam pro jistotu dal

každopádně diky moc za trpělivost ;)

bazo
Člen | 620
+
0
-

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 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.

nevidim tam nic co by vyzadovalo 5.5. mozes mi nahlasit na github issue s presnou error hlaskou?

Oli
Člen | 1215
+
0
-

bazo: máš to tam.

Oli
Člen | 1215
+
0
-

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?