mirror of
https://github.com/aptly-dev/aptly.git
synced 2026-06-15 07:00:52 +00:00
Imported Upstream version 1.0.1
This commit is contained in:
@@ -0,0 +1 @@
|
||||
System test for aptly
|
||||
@@ -0,0 +1,91 @@
|
||||
from lib import BaseTest
|
||||
import time
|
||||
import json
|
||||
import random
|
||||
import string
|
||||
import os
|
||||
import inspect
|
||||
import shutil
|
||||
|
||||
try:
|
||||
import requests
|
||||
except ImportError:
|
||||
requests = None
|
||||
|
||||
|
||||
class APITest(BaseTest):
|
||||
"""
|
||||
BaseTest + testing aptly API
|
||||
"""
|
||||
aptly_server = None
|
||||
base_url = "127.0.0.1:8765"
|
||||
|
||||
def fixture_available(self):
|
||||
return super(APITest, self).fixture_available() and requests is not None
|
||||
|
||||
def prepare(self):
|
||||
if APITest.aptly_server is None:
|
||||
super(APITest, self).prepare()
|
||||
|
||||
APITest.aptly_server = self._start_process("aptly api serve -no-lock -listen=%s" % (self.base_url),)
|
||||
time.sleep(1)
|
||||
|
||||
if os.path.exists(os.path.join(os.environ["HOME"], ".aptly", "upload")):
|
||||
shutil.rmtree(os.path.join(os.environ["HOME"], ".aptly", "upload"))
|
||||
|
||||
def run(self):
|
||||
pass
|
||||
|
||||
def get(self, uri, *args, **kwargs):
|
||||
return requests.get("http://%s%s" % (self.base_url, uri), *args, **kwargs)
|
||||
|
||||
def post(self, uri, *args, **kwargs):
|
||||
if "json" in kwargs:
|
||||
kwargs["data"] = json.dumps(kwargs.pop("json"))
|
||||
if not "headers" in kwargs:
|
||||
kwargs["headers"] = {}
|
||||
kwargs["headers"]["Content-Type"] = "application/json"
|
||||
return requests.post("http://%s%s" % (self.base_url, uri), *args, **kwargs)
|
||||
|
||||
def put(self, uri, *args, **kwargs):
|
||||
if "json" in kwargs:
|
||||
kwargs["data"] = json.dumps(kwargs.pop("json"))
|
||||
if not "headers" in kwargs:
|
||||
kwargs["headers"] = {}
|
||||
kwargs["headers"]["Content-Type"] = "application/json"
|
||||
return requests.put("http://%s%s" % (self.base_url, uri), *args, **kwargs)
|
||||
|
||||
def delete(self, uri, *args, **kwargs):
|
||||
if "json" in kwargs:
|
||||
kwargs["data"] = json.dumps(kwargs.pop("json"))
|
||||
if not "headers" in kwargs:
|
||||
kwargs["headers"] = {}
|
||||
kwargs["headers"]["Content-Type"] = "application/json"
|
||||
return requests.delete("http://%s%s" % (self.base_url, uri), *args, **kwargs)
|
||||
|
||||
def upload(self, uri, *filenames, **kwargs):
|
||||
upload_name = kwargs.pop("upload_name", None)
|
||||
directory = kwargs.pop("directory", "files")
|
||||
assert kwargs == {}
|
||||
|
||||
files = {}
|
||||
|
||||
for filename in filenames:
|
||||
fp = open(os.path.join(os.path.dirname(inspect.getsourcefile(BaseTest)), directory, filename), "rb")
|
||||
if upload_name is not None:
|
||||
upload_filename = upload_name
|
||||
else:
|
||||
upload_filename = filename
|
||||
files[upload_filename] = (upload_filename, fp)
|
||||
|
||||
return self.post(uri, files=files)
|
||||
|
||||
@classmethod
|
||||
def shutdown_class(cls):
|
||||
if cls.aptly_server is not None:
|
||||
cls.aptly_server.terminate()
|
||||
cls.aptly_server.wait()
|
||||
cls.aptly_server = None
|
||||
|
||||
def random_name(self):
|
||||
return ''.join(random.choice(string.ascii_letters + string.digits) for _ in range(15))
|
||||
@@ -0,0 +1,30 @@
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA1
|
||||
|
||||
Format: 1.0
|
||||
Source: hardlink
|
||||
Binary: hardlink
|
||||
Architecture: any
|
||||
Version: 0.2.1
|
||||
Maintainer: Julian Andres Klode <jak@debian.org>
|
||||
Homepage: http://jak-linux.org/projects/hardlink/
|
||||
Standards-Version: 3.9.3
|
||||
Vcs-Browser: http://git.debian.org/?p=users/jak/hardlink.git;a=summary
|
||||
Vcs-Git: git://git.debian.org/git/users/jak/hardlink.git
|
||||
Build-Depends: debhelper (>= 9), pkg-config, libpcre3-dev
|
||||
Package-List:
|
||||
hardlink deb utils optional
|
||||
Checksums-Sha1:
|
||||
6e95b8cba450343ab4dc01902e521f29fbd87ac2 12516 hardlink_0.2.1.tar.gz
|
||||
Checksums-Sha256:
|
||||
4df0adce005526a1f0e1b38171ddb1f017faae9205f5b1c6dfb0fb4207767271 12516 hardlink_0.2.1.tar.gz
|
||||
Files:
|
||||
8e2caa4d82f228bac08dc9a38bc6edb3 12516 hardlink_0.2.1.tar.gz
|
||||
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
Version: GnuPG v1.4.12 (GNU/Linux)
|
||||
|
||||
iEYEARECAAYFAlUFwywACgkQIdu4nBbbPm2M5wCg0pHD8adE1rY1/DpZ4efRuMXY
|
||||
MPMAni4xUtyAnwIvkk3MCE2rFrGP3L78
|
||||
=5CU1
|
||||
-----END PGP SIGNATURE-----
|
||||
Binary file not shown.
@@ -0,0 +1,39 @@
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA1
|
||||
|
||||
Format: 1.8
|
||||
Date: Sat, 12 May 2014 12:57:02 +0200
|
||||
Source: hardlink
|
||||
Binary: hardlink
|
||||
Architecture: source amd64
|
||||
Version: 0.2.1
|
||||
Distribution: unstable
|
||||
Urgency: low
|
||||
Maintainer: Julian Andres Klode <jak@debian.org>
|
||||
Changed-By: Aptly Tester (don't use it) <test@aptly.info>
|
||||
Description:
|
||||
hardlink - Hardlinks multiple copies of the same file
|
||||
Changes:
|
||||
hardlink (0.2.1) unstable; urgency=low
|
||||
.
|
||||
* Update just to try it out :)
|
||||
Checksums-Sha1:
|
||||
ff306b8f923653b78e00c45ebbc6c1c734859cdf 949 hardlink_0.2.1.dsc
|
||||
6e95b8cba450343ab4dc01902e521f29fbd87ac2 12516 hardlink_0.2.1.tar.gz
|
||||
1ac0e962854dff46f14fa7943746660d3cad1679 12468 hardlink_0.2.1_amd64.deb
|
||||
Checksums-Sha256:
|
||||
c0d7458aa2ca3886cd6885f395a289efbc9a396e6765cbbca45f51fde859ea70 949 hardlink_0.2.1.dsc
|
||||
4df0adce005526a1f0e1b38171ddb1f017faae9205f5b1c6dfb0fb4207767271 12516 hardlink_0.2.1.tar.gz
|
||||
668399580590bf1ffcd9eb161b6e574751e15f71820c6e08245dac7c5111a0ee 12468 hardlink_0.2.1_amd64.deb
|
||||
Files:
|
||||
4efce26825af5842f43961096dd890b3 949 utils optional hardlink_0.2.1.dsc
|
||||
8e2caa4d82f228bac08dc9a38bc6edb3 12516 utils optional hardlink_0.2.1.tar.gz
|
||||
2081e20b36c47f82811c25841cc0e41b 12468 utils optional hardlink_0.2.1_amd64.deb
|
||||
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
Version: GnuPG v1.4.12 (GNU/Linux)
|
||||
|
||||
iEYEARECAAYFAlUFwywACgkQIdu4nBbbPm1DLACgwW4V8qLQC/QHC/7+t3Iq47Ez
|
||||
eesAn3ZYLQvLYRw3wPTKVAPI+AW6Fjxi
|
||||
=hRBo
|
||||
-----END PGP SIGNATURE-----
|
||||
Binary file not shown.
@@ -0,0 +1,7 @@
|
||||
// no groups, no rules => deny all
|
||||
{
|
||||
"groups": {
|
||||
},
|
||||
"rules": [
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
|
||||
{
|
||||
"groups": {
|
||||
"developers": ["21DBB89C16DB3E6D", "37E1C17570096AD1"],
|
||||
},
|
||||
"rules": [
|
||||
{ "condition": "Source (dangerous) | Source (kernel)",
|
||||
"deny": ["*"],
|
||||
},
|
||||
{ "condition": "Source (hardlink)",
|
||||
"allow": ["developers", "admins"],
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
{
|
||||
@@ -0,0 +1,14 @@
|
||||
|
||||
{
|
||||
"groups": {
|
||||
"developers": ["21DBB89C16DB3E6D", "37E1C17570096AD1"],
|
||||
},
|
||||
"rules": [
|
||||
{ "condition": "Source (dangerous) | Source (kernel)",
|
||||
"deny": ["*"],
|
||||
},
|
||||
{ "condition": "Source (hardlink",
|
||||
"allow": ["developers", "admins"],
|
||||
}
|
||||
]
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,19 @@
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
Version: GnuPG v1.4.5 (GNU/Linux)
|
||||
|
||||
mQGiBEeWWZoRBADvY6hFi/SwuwZRLbT2yrW/l+/0zsNXusK/s2K6jjA3i5oDWwG+
|
||||
wky3ef+9au2qaxd2spt8iq0x5ph8aI/1YEkdFbHe/dfItcc7NAWl2RTworogkz+R
|
||||
4leJNU3tQJNJQYml33LQyNhgQsmMvmZ6xP4NxJZIrWT9nZxiGexb24uTGwCgkOWV
|
||||
CpqucQTHnow1ok75gVMRHdkD/3EOtaBAkj5gECBc2WnXk+UzCYBjV1QXmBaLy4sq
|
||||
vIq0b3ja+zBJzc2mAviWgNuo2h56dYEsBLaQjkEdJKUEGdfiRkDZQjZEPMrT1HZD
|
||||
L2oYzR4xlwSTqR3dtBzXbLhIvfRUNw1CuNVQG8I+r7aBEje7JAVH8X4poGV3oCBh
|
||||
faXDA/0a/01gn1d58uSLwDKmBQpUngX/K1U2PchUnJd88DSRqIpzX1Cwk2iu9lJS
|
||||
ukE9FV2FNb4heKS2HRXyEz/kEONbSC4G1jSzl0keKrc8RwaX2uTolDGqpyOkXSd+
|
||||
WHUcnbzQ5MLahLB3QOocrLc0w6wwPKk2fA5F51mckMUgDtdQ2rQ8aG9tZTptb25r
|
||||
ZXlpcSBPQlMgUHJvamVjdCA8aG9tZTptb25rZXlpcUBidWlsZC5vcGVuc3VzZS5v
|
||||
cmc+iGYEExECACYFAk/y8O8CGwMFCQx7R1UGCwkIBwMCBBUCCAMEFgIDAQIeAQIX
|
||||
gAAKCRCooNd/3/r8Q3MZAJ45GODOQT+bFI8Zjq0C93L7oMxptQCgh/lNR+pYmUcT
|
||||
hb1PQ20qsfV5gJuIRgQTEQIABgUCR5ZZmgAKCRA7MBG3a51lI0jzAJsHZxWi1Db3
|
||||
J76+37rmZ/2riTo93QCfS5pFjOdqaRPjbfb6bCHLedhhHlM=
|
||||
=p7/n
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
@@ -0,0 +1,112 @@
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
Version: GnuPG v1.4.9 (GNU/Linux)
|
||||
|
||||
mQGiBEmFQG0RBACXScOxb6BTV6rQE/tcJopAEWsdvmE0jNIRWjDDzB7HovX6Anrq
|
||||
n7+Vq4spAReSFbBVaYiiOx2cGDymj2dyx2i9NAI/9/cQXJOU+RPdDzHVlO1Edksp
|
||||
5rKn0cGPWY5sLxRf8s/tO5oyKgwCVgTaB5a8gBHaoGms3nNC4YYf+lqlpwCgjbti
|
||||
3u1iMIx6Rs+dG0+xw1oi5FUD/2tLJMx7vCUQHhPRupeYFPoD8vWpcbGb5nHfHi4U
|
||||
8/x4qZspAIwvXtGw0UBHildGpqe9onp22Syadn/7JgMWhHoFw5Ke/rTMlxREL7pa
|
||||
TiXuagD2G84tjJ66oJP1FigslJzrnG61y85V7THL61OFqDg6IOP4onbsdqHby4VD
|
||||
zZj9A/9uQxIn5250AGLNpARStAcNPJNJbHOQuv0iF3vnG8uO7/oscB0TYb8/juxr
|
||||
hs9GdSN0U0BxENR+8KWy5lttpqLMKlKRknQYy34UstQiyFgAQ9Epncu9uIbVDgWt
|
||||
y7utnqXN033EyYkcWx5EhLAgHkC7wSzeSWABV3JSXN7CeeOif7QiS29oc3VrZSBL
|
||||
YXdhZ3VjaGkgPGtrQGtvaHN1a2Uub3JnPohjBBMRAgAjAhsDBgsJCAcDAgQVAggD
|
||||
BBYCAwECHgECF4AFAko/7vYCGQEACgkQm30y8tUFguabhgCgi54IQR4rpJZ/uUHe
|
||||
ZB879zUWTQwAniQDBO+Zly7Fsvm0Mcvqvl02UzxCtC1Lb2hzdWtlIEthd2FndWNo
|
||||
aSA8a29oc3VrZS5rYXdhZ3VjaGlAc3VuLmNvbT6IYAQTEQIAIAUCSj/qbQIbAwYL
|
||||
CQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEJt9MvLVBYLm38gAoIGR2+TQeJaCeEa8
|
||||
CQhZYzDoiJkQAJ0cpmD+0VA+leOAr5LEccNVd70Z/dHNy83JARAAAQEAAAAAAAAA
|
||||
AAAAAAD/2P/gABBKRklGAAEBAQBgAGAAAP/hAGBFeGlmAABJSSoACAAAAAQAMQEC
|
||||
ABkAAAA+AAAAEFEBAAEAAAABQ5AAEVEEAAEAAAASCwAAElEEAAEAAAASCwAAAAAA
|
||||
AE1hY3JvbWVkaWEgRmlyZXdvcmtzIDQuMAAA/9sAQwAIBgYHBgUIBwcHCQkICgwU
|
||||
DQwLCwwZEhMPFB0aHx4dGhwcICQuJyAiLCMcHCg3KSwwMTQ0NB8nOT04MjwuMzQy
|
||||
/9sAQwEJCQkMCwwYDQ0YMiEcITIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy
|
||||
MjIyMjIyMjIyMjIyMjIyMjIyMjIy/8AAEQgArgCWAwEiAAIRAQMRAf/EAB8AAAEF
|
||||
AQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQEC
|
||||
AwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkq
|
||||
NDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqS
|
||||
k5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk
|
||||
5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkK
|
||||
C//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGx
|
||||
wQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFla
|
||||
Y2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2
|
||||
t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQAC
|
||||
EQMRAD8A9wEj/wB9vzpfMf8Avt+dRinCpGSeY398/nS72/vH86YKBQBJvb+8fzpd
|
||||
7f3j+dMFLQA/e394/nS7j6n86ZSimA7cfU07cfU1HnFOFADtx9aXJ9TTKUUxD8n1
|
||||
pc+9Mp1AC5ozSUtAC0maKKADNFJ2ooAoCnCmilzWZQ6lFJSimAopaQUtAC54rOvN
|
||||
dsLCTZPPGrdwXAry/wCKHxXfRppND0Mq16Bie5PIi9lHdv5V8/X+rXt/O8tzcyyy
|
||||
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
|
||||
=cjdq
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
@@ -0,0 +1,13 @@
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
Version: GnuPG v1
|
||||
|
||||
mI0ES+RoaQEEAOQ6QF8zfqHbXJ+ekkXRm3uP5TvVwp0loa7S2u3xYjSDKzRz4nSS
|
||||
aD6coQ8wVPw4ROZLNnDtkbv9dDK9Mm7Uke5A8QkUXQU4v3/qFgjFT+au64iBYDRO
|
||||
FqAFFmZZdI0WCRxKJLiLal5H4cWnAoFBe5JdhAR8ZON2lm7vuKndVeg7ABEBAAG0
|
||||
DUxhdW5jaHBhZCBzaW2ItgQTAQIAIAUCS+RoaQIbAwYLCQgHAwIEFQIIAwQWAgMB
|
||||
Ah4BAheAAAoJEKUnmpc7H1bAJAED/0hbSk3nV9D5VdeLrkuyrAINTO801I1AZBdC
|
||||
lmqtFiFFsYE5jMeAFYk75BLS2aa9c1cbNh5Pwg7Ujg8+4/NOmPjFjvqONn0sRebJ
|
||||
FVwsedeQx+YTjCvy4vnviZmY+6ieixrgvrqG2+xPncuZmjppeKgMzPenPC178crJ
|
||||
hXttP13F
|
||||
=fI+d
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
Binary file not shown.
@@ -0,0 +1,19 @@
|
||||
Format: 1.0
|
||||
Source: pyspi
|
||||
Binary: python-at-spi
|
||||
Architecture: any
|
||||
Version: 0.6.1-1.4
|
||||
Maintainer: Jose Carlos Garcia Sogo <jsogo@debian.org>
|
||||
Homepage: http://people.redhat.com/zcerza/dogtail
|
||||
Standards-Version: 3.7.3
|
||||
Vcs-Svn: svn://svn.tribulaciones.org/srv/svn/pyspi/trunk
|
||||
Build-Depends: debhelper (>= 5), cdbs, libatspi-dev, python-pyrex, python-support (>= 0.4), python-all-dev, libx11-dev
|
||||
Checksums-Sha1:
|
||||
9694b80acc171c0a5bc99f707933864edfce555e 29063 pyspi_0.6.1.orig.tar.gz
|
||||
95a2468e4bbce730ba286f2211fa41861b9f1d90 3456 pyspi_0.6.1-1.3.diff.gz
|
||||
Checksums-Sha256:
|
||||
64069ee828c50b1c597d10a3fefbba279f093a4723965388cdd0ac02f029bfb9 29063 pyspi_0.6.1.orig.tar.gz
|
||||
2e770b28df948f3197ed0b679bdea99f3f2bf745e9ddb440c677df9c3aeaee3c 3456 pyspi_0.6.1-1.3.diff.gz
|
||||
Files:
|
||||
def336bd566ea688a06ec03db7ccf1f4 29063 pyspi_0.6.1.orig.tar.gz
|
||||
22ff26db69b73d3438fdde21ab5ba2f1 3456 pyspi_0.6.1-1.3.diff.gz
|
||||
Binary file not shown.
@@ -0,0 +1,40 @@
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA256
|
||||
|
||||
Format: 1.0
|
||||
Source: pyspi
|
||||
Binary: python-at-spi
|
||||
Architecture: any
|
||||
Version: 0.6.1-1.3
|
||||
Maintainer: Jose Carlos Garcia Sogo <jsogo@debian.org>
|
||||
Homepage: http://people.redhat.com/zcerza/dogtail
|
||||
Standards-Version: 3.7.3
|
||||
Vcs-Svn: svn://svn.tribulaciones.org/srv/svn/pyspi/trunk
|
||||
Build-Depends: debhelper (>= 5), cdbs, libatspi-dev, python-pyrex, python-support (>= 0.4), python-all-dev, libx11-dev
|
||||
Checksums-Sha1:
|
||||
9694b80acc171c0a5bc99f707933864edfce555e 29063 pyspi_0.6.1.orig.tar.gz
|
||||
95a2468e4bbce730ba286f2211fa41861b9f1d90 3456 pyspi_0.6.1-1.3.diff.gz
|
||||
Checksums-Sha256:
|
||||
64069ee828c50b1c597d10a3fefbba279f093a4723965388cdd0ac02f029bfb9 29063 pyspi_0.6.1.orig.tar.gz
|
||||
2e770b28df948f3197ed0b679bdea99f3f2bf745e9ddb440c677df9c3aeaee3c 3456 pyspi_0.6.1-1.3.diff.gz
|
||||
Files:
|
||||
def336bd566ea688a06ec03db7ccf1f4 29063 pyspi_0.6.1.orig.tar.gz
|
||||
22ff26db69b73d3438fdde21ab5ba2f1 3456 pyspi_0.6.1-1.3.diff.gz
|
||||
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
Version: GnuPG v1.4.10 (GNU/Linux)
|
||||
|
||||
iQIcBAEBCAAGBQJLLl7qAAoJELs6aAGGSaoGMc4P/27jxlQ0J35Bg4yLmYhI4PQD
|
||||
xPWJvOd8MyrKyDjiw7xlP76tzpyNuysPoCNPKAdQHX4GQoZUPpXVEIE8VaQK9tDL
|
||||
HmSKT+bMkMairKZUc3c+kKTu+Oc+XMTARu1DwG4kFurnrgujriT62U3GspnT4Xyf
|
||||
7F9TmDMKOPGYGlLfeEUxfKhFAG4X82/d1b9z43ClhPGCJFDM908tdEyg7b/4uClx
|
||||
HwdiPsRe1UXa9xITWnFtEiJ7575ZAq4GnAKWmjROQH3esxxxDygiuq8LzRjNGCXH
|
||||
oG949ekl7DlsKbLn2TbJntk69WT0mbZTgCSpl/maeJVp1jXnhpHW/ZTOvR8WlX/T
|
||||
H10ICHhoJWXltDOOZuJGzkWheSwkAS2rPrW8xDn8B9zDUkyEEajxqIASUNTGWShD
|
||||
miq3IHFfkZiVgnrIDFd9BXe2gTmgyJfg61QTjOJ1DWTo8D+U2MqrgsOqAQ27/avK
|
||||
tl5ZuMRY8rB1hOARx5E6PKzVvdWnw1IptWIwGmUhF5qpme8vFVrST93NbZ7UcT8g
|
||||
chj3TCz0JdRmFSLeS7WJv06Mb7awFVQf32BhWMdSW7eTPj1cPm4ewnfj1iR5n1ke
|
||||
I6+/Yr/r2yVh0nMkezUEPkCbXkb175mT5egNpDnyYf5C7+ZF0IZORJDud1B7fFwJ
|
||||
fHrvmF3nQIUsVsFTCfV9
|
||||
=8mVA
|
||||
-----END PGP SIGNATURE-----
|
||||
Binary file not shown.
@@ -0,0 +1,32 @@
|
||||
aptly -architectures=i386,amd64 mirror create wheezy-main http://mirror.yandex.ru/debian/ wheezy main
|
||||
aptly -architectures=i386,amd64 mirror create wheezy-contrib http://mirror.yandex.ru/debian/ wheezy contrib
|
||||
aptly -architectures=i386,amd64 mirror create wheezy-non-free http://mirror.yandex.ru/debian/ wheezy non-free
|
||||
aptly -architectures=i386,amd64 mirror create wheezy-updates http://mirror.yandex.ru/debian/ wheezy-updates
|
||||
aptly -architectures=i386,amd64 mirror create wheezy-backports http://mirror.yandex.ru/debian/ wheezy-backports
|
||||
|
||||
aptly mirror update wheezy-main
|
||||
aptly mirror update wheezy-contrib
|
||||
aptly mirror update wheezy-non-free
|
||||
aptly mirror update wheezy-updates
|
||||
aptly mirror update wheezy-backports
|
||||
|
||||
aptly -architectures=i386,amd64 mirror create -with-sources wheezy-main-src http://mirror.yandex.ru/debian/ wheezy main
|
||||
aptly -architectures=i386,amd64 mirror create -with-sources wheezy-contrib-src http://mirror.yandex.ru/debian/ wheezy contrib
|
||||
aptly -architectures=i386,amd64 mirror create -with-sources wheezy-non-free-src http://mirror.yandex.ru/debian/ wheezy non-free
|
||||
aptly -architectures=i386,amd64 mirror create -with-sources wheezy-updates-src http://mirror.yandex.ru/debian/ wheezy-updates
|
||||
aptly -architectures=i386,amd64 mirror create -with-sources wheezy-backports-src http://mirror.yandex.ru/debian/ wheezy-backports
|
||||
|
||||
aptly mirror update wheezy-main-src
|
||||
aptly mirror update wheezy-contrib-src
|
||||
aptly mirror update wheezy-non-free-src
|
||||
aptly mirror update wheezy-updates-src
|
||||
aptly mirror update wheezy-backports-src
|
||||
|
||||
aptly mirror create gnuplot-maverick http://ppa.launchpad.net/gladky-anton/gnuplot/ubuntu/ maverick
|
||||
aptly mirror update gnuplot-maverick
|
||||
|
||||
aptly mirror create -with-sources gnuplot-maverick-src http://ppa.launchpad.net/gladky-anton/gnuplot/ubuntu/ maverick
|
||||
aptly mirror update gnuplot-maverick-src
|
||||
|
||||
aptly mirror create sensu http://repos.sensuapp.org/apt sensu
|
||||
aptly mirror update sensu
|
||||
@@ -0,0 +1,13 @@
|
||||
Key-Type: DSA
|
||||
Key-Length: 1024
|
||||
Subkey-Type: ELG-E
|
||||
Subkey-Length: 1024
|
||||
Name-Real: Aptly Tester
|
||||
Name-Comment: don't use it
|
||||
Name-Email: test@aptly.info
|
||||
Expire-Date: 0
|
||||
%pubring aptly.pub
|
||||
%secring aptly.sec
|
||||
# Do a commit here, so that we can later print "done" :-)
|
||||
%commit
|
||||
%echo done
|
||||
+331
@@ -0,0 +1,331 @@
|
||||
"""
|
||||
Test library.
|
||||
"""
|
||||
|
||||
import difflib
|
||||
import inspect
|
||||
import json
|
||||
import subprocess
|
||||
import os
|
||||
import posixpath
|
||||
import shlex
|
||||
import shutil
|
||||
import string
|
||||
import threading
|
||||
import urllib
|
||||
#import time
|
||||
import pprint
|
||||
import SocketServer
|
||||
import SimpleHTTPServer
|
||||
|
||||
|
||||
class ThreadedTCPServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer):
|
||||
pass
|
||||
|
||||
|
||||
class FileHTTPServerRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
|
||||
def translate_path(self, path):
|
||||
"""Translate a /-separated PATH to the local filename syntax.
|
||||
|
||||
Components that mean special things to the local file system
|
||||
(e.g. drive or directory names) are ignored. (XXX They should
|
||||
probably be diagnosed.)
|
||||
|
||||
"""
|
||||
# abandon query parameters
|
||||
path = path.split('?', 1)[0]
|
||||
path = path.split('#', 1)[0]
|
||||
path = posixpath.normpath(urllib.unquote(path))
|
||||
words = path.split('/')
|
||||
words = filter(None, words)
|
||||
path = self.rootPath
|
||||
for word in words:
|
||||
drive, word = os.path.splitdrive(word)
|
||||
head, word = os.path.split(word)
|
||||
if word in (os.curdir, os.pardir):
|
||||
continue
|
||||
path = os.path.join(path, word)
|
||||
return path
|
||||
|
||||
def log_message(self, format, *args):
|
||||
pass
|
||||
|
||||
|
||||
class BaseTest(object):
|
||||
"""
|
||||
Base class for all tests.
|
||||
"""
|
||||
|
||||
longTest = False
|
||||
fixturePool = False
|
||||
fixturePoolCopy = False
|
||||
fixtureDB = False
|
||||
fixtureGpg = False
|
||||
fixtureWebServer = False
|
||||
|
||||
expectedCode = 0
|
||||
configFile = {
|
||||
"rootDir": "%s/.aptly" % os.environ["HOME"],
|
||||
"downloadConcurrency": 4,
|
||||
"downloadSpeedLimit": 0,
|
||||
"architectures": [],
|
||||
"dependencyFollowSuggests": False,
|
||||
"dependencyFollowRecommends": False,
|
||||
"dependencyFollowAllVariants": False,
|
||||
"dependencyFollowSource": False,
|
||||
"gpgDisableVerify": False,
|
||||
"gpgDisableSign": False,
|
||||
"ppaDistributorID": "ubuntu",
|
||||
"ppaCodename": "",
|
||||
}
|
||||
configOverride = {}
|
||||
environmentOverride = {}
|
||||
|
||||
fixtureDBDir = os.path.join(os.environ["HOME"], "aptly-fixture-db")
|
||||
fixturePoolDir = os.path.join(os.environ["HOME"], "aptly-fixture-pool")
|
||||
|
||||
outputMatchPrepare = None
|
||||
|
||||
captureResults = False
|
||||
|
||||
def test(self):
|
||||
self.prepare()
|
||||
self.run()
|
||||
self.check()
|
||||
|
||||
def prepare_remove_all(self):
|
||||
if os.path.exists(os.path.join(os.environ["HOME"], ".aptly")):
|
||||
shutil.rmtree(os.path.join(os.environ["HOME"], ".aptly"))
|
||||
if os.path.exists(os.path.join(os.environ["HOME"], ".aptly.conf")):
|
||||
os.remove(os.path.join(os.environ["HOME"], ".aptly.conf"))
|
||||
if os.path.exists(os.path.join(os.environ["HOME"], ".gnupg", "aptlytest.gpg")):
|
||||
os.remove(os.path.join(os.environ["HOME"], ".gnupg", "aptlytest.gpg"))
|
||||
|
||||
def prepare_default_config(self):
|
||||
cfg = self.configFile.copy()
|
||||
cfg.update(**self.configOverride)
|
||||
f = open(os.path.join(os.environ["HOME"], ".aptly.conf"), "w")
|
||||
f.write(json.dumps(cfg))
|
||||
f.close()
|
||||
|
||||
def fixture_available(self):
|
||||
if self.fixturePool and not os.path.exists(self.fixturePoolDir):
|
||||
return False
|
||||
if self.fixtureDB and not os.path.exists(self.fixtureDBDir):
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
def prepare_fixture(self):
|
||||
if self.fixturePool:
|
||||
#start = time.time()
|
||||
os.makedirs(os.path.join(os.environ["HOME"], ".aptly"), 0755)
|
||||
os.symlink(self.fixturePoolDir, os.path.join(os.environ["HOME"], ".aptly", "pool"))
|
||||
#print "FIXTURE POOL: %.2f" % (time.time()-start)
|
||||
|
||||
if self.fixturePoolCopy:
|
||||
os.makedirs(os.path.join(os.environ["HOME"], ".aptly"), 0755)
|
||||
shutil.copytree(self.fixturePoolDir, os.path.join(os.environ["HOME"], ".aptly", "pool"), ignore=shutil.ignore_patterns(".git"))
|
||||
|
||||
if self.fixtureDB:
|
||||
#start = time.time()
|
||||
shutil.copytree(self.fixtureDBDir, os.path.join(os.environ["HOME"], ".aptly", "db"))
|
||||
#print "FIXTURE DB: %.2f" % (time.time()-start)
|
||||
|
||||
if self.fixtureWebServer:
|
||||
self.webServerUrl = self.start_webserver(os.path.join(os.path.dirname(inspect.getsourcefile(self.__class__)),
|
||||
self.fixtureWebServer))
|
||||
|
||||
if self.fixtureGpg:
|
||||
self.run_cmd(["gpg", "--no-default-keyring", "--trust-model", "always", "--batch", "--keyring", "aptlytest.gpg", "--import",
|
||||
os.path.join(os.path.dirname(inspect.getsourcefile(BaseTest)), "files", "debian-archive-keyring.gpg"),
|
||||
os.path.join(os.path.dirname(inspect.getsourcefile(BaseTest)), "files", "launchpad.key"),
|
||||
os.path.join(os.path.dirname(inspect.getsourcefile(BaseTest)), "files", "flat.key"),
|
||||
os.path.join(os.path.dirname(inspect.getsourcefile(BaseTest)), "files", "jenkins.key")])
|
||||
|
||||
if hasattr(self, "fixtureCmds"):
|
||||
for cmd in self.fixtureCmds:
|
||||
self.run_cmd(cmd)
|
||||
|
||||
def run(self):
|
||||
self.output = self.output_processor(self.run_cmd(self.runCmd, self.expectedCode))
|
||||
|
||||
def _start_process(self, command, stderr=subprocess.STDOUT, stdout=None):
|
||||
if not hasattr(command, "__iter__"):
|
||||
params = {
|
||||
'files': os.path.join(os.path.dirname(inspect.getsourcefile(BaseTest)), "files"),
|
||||
'changes': os.path.join(os.path.dirname(inspect.getsourcefile(BaseTest)), "changes"),
|
||||
'udebs': os.path.join(os.path.dirname(inspect.getsourcefile(BaseTest)), "udebs"),
|
||||
'testfiles': os.path.join(os.path.dirname(inspect.getsourcefile(self.__class__)), self.__class__.__name__),
|
||||
'aptlyroot': os.path.join(os.environ["HOME"], ".aptly"),
|
||||
}
|
||||
if self.fixtureWebServer:
|
||||
params['url'] = self.webServerUrl
|
||||
|
||||
command = string.Template(command).substitute(params)
|
||||
|
||||
command = shlex.split(command)
|
||||
environ = os.environ.copy()
|
||||
environ["LC_ALL"] = "C"
|
||||
environ.update(self.environmentOverride)
|
||||
return subprocess.Popen(command, stderr=stderr, stdout=stdout, env=environ)
|
||||
|
||||
def run_cmd(self, command, expected_code=0):
|
||||
try:
|
||||
#start = time.time()
|
||||
proc = self._start_process(command, stdout=subprocess.PIPE)
|
||||
output, _ = proc.communicate()
|
||||
#print "CMD %s: %.2f" % (" ".join(command), time.time()-start)
|
||||
if proc.returncode != expected_code:
|
||||
raise Exception("exit code %d != %d (output: %s)" % (proc.returncode, expected_code, output))
|
||||
return output
|
||||
except Exception, e:
|
||||
raise Exception("Running command %s failed: %s" % (command, str(e)))
|
||||
|
||||
def gold_processor(self, gold):
|
||||
return gold
|
||||
|
||||
def output_processor(self, output):
|
||||
return output
|
||||
|
||||
def expand_environ(self, gold):
|
||||
return string.Template(gold).substitute(os.environ)
|
||||
|
||||
def get_gold_filename(self, gold_name="gold"):
|
||||
return os.path.join(os.path.dirname(inspect.getsourcefile(self.__class__)), self.__class__.__name__ + "_" + gold_name)
|
||||
|
||||
def get_gold(self, gold_name="gold"):
|
||||
return self.gold_processor(open(self.get_gold_filename(gold_name), "r").read())
|
||||
|
||||
def check_output(self):
|
||||
try:
|
||||
self.verify_match(self.get_gold(), self.output, match_prepare=self.outputMatchPrepare)
|
||||
except:
|
||||
if self.captureResults:
|
||||
if self.outputMatchPrepare is not None:
|
||||
self.output = self.outputMatchPrepare(self.output)
|
||||
with open(self.get_gold_filename(), "w") as f:
|
||||
f.write(self.output)
|
||||
else:
|
||||
raise
|
||||
|
||||
def check_cmd_output(self, command, gold_name, match_prepare=None, expected_code=0):
|
||||
output = self.run_cmd(command, expected_code=expected_code)
|
||||
try:
|
||||
self.verify_match(self.get_gold(gold_name), output, match_prepare)
|
||||
except:
|
||||
if self.captureResults:
|
||||
if match_prepare is not None:
|
||||
output = match_prepare(output)
|
||||
with open(self.get_gold_filename(gold_name), "w") as f:
|
||||
f.write(output)
|
||||
else:
|
||||
raise
|
||||
|
||||
def read_file(self, path):
|
||||
with open(os.path.join(os.environ["HOME"], ".aptly", path), "r") as f:
|
||||
return f.read()
|
||||
|
||||
def delete_file(self, path):
|
||||
os.unlink(os.path.join(os.environ["HOME"], ".aptly", path))
|
||||
|
||||
def check_file_contents(self, path, gold_name, match_prepare=None):
|
||||
contents = self.read_file(path)
|
||||
try:
|
||||
|
||||
self.verify_match(self.get_gold(gold_name), contents, match_prepare=match_prepare)
|
||||
except:
|
||||
if self.captureResults:
|
||||
if match_prepare is not None:
|
||||
contents = match_prepare(contents)
|
||||
with open(self.get_gold_filename(gold_name), "w") as f:
|
||||
f.write(contents)
|
||||
else:
|
||||
raise
|
||||
|
||||
def check_file(self):
|
||||
contents = open(self.checkedFile, "r").read()
|
||||
try:
|
||||
self.verify_match(self.get_gold(), contents)
|
||||
except:
|
||||
if self.captureResults:
|
||||
with open(self.get_gold_filename(), "w") as f:
|
||||
f.write(contents)
|
||||
else:
|
||||
raise
|
||||
|
||||
def check_exists(self, path):
|
||||
if not os.path.exists(os.path.join(os.environ["HOME"], ".aptly", path)):
|
||||
raise Exception("path %s doesn't exist" % (path, ))
|
||||
|
||||
def check_not_exists(self, path):
|
||||
if os.path.exists(os.path.join(os.environ["HOME"], ".aptly", path)):
|
||||
raise Exception("path %s exists" % (path, ))
|
||||
|
||||
def check_file_not_empty(self, path):
|
||||
if os.stat(os.path.join(os.environ["HOME"], ".aptly", path))[6] == 0:
|
||||
raise Exception("file %s is empty" % (path, ))
|
||||
|
||||
def check_equal(self, a, b):
|
||||
if a != b:
|
||||
self.verify_match(a, b, match_prepare=pprint.pformat)
|
||||
|
||||
def check_ge(self, a, b):
|
||||
if not a >= b:
|
||||
raise Exception("%s is not greater or equal to %s" % (a, b))
|
||||
|
||||
def check_gt(self, a, b):
|
||||
if not a > b:
|
||||
raise Exception("%s is not greater to %s" % (a, b))
|
||||
|
||||
def check_in(self, item, l):
|
||||
if not item in l:
|
||||
raise Exception("item %r not in %r", item, l)
|
||||
|
||||
def check_subset(self, a, b):
|
||||
diff = ''
|
||||
for k, v in a.items():
|
||||
if k not in b:
|
||||
diff += "unexpected key '%s'\n" % (k,)
|
||||
elif b[k] != v:
|
||||
diff += "wrong value '%s' for key '%s', expected '%s'\n" % (v, k, b[k])
|
||||
if diff:
|
||||
raise Exception("content doesn't match:\n" + diff)
|
||||
|
||||
def verify_match(self, a, b, match_prepare=None):
|
||||
if match_prepare is not None:
|
||||
a = match_prepare(a)
|
||||
b = match_prepare(b)
|
||||
|
||||
if a != b:
|
||||
diff = "".join(difflib.unified_diff([l + "\n" for l in a.split("\n")], [l + "\n" for l in b.split("\n")]))
|
||||
|
||||
raise Exception("content doesn't match:\n" + diff + "\n")
|
||||
|
||||
check = check_output
|
||||
|
||||
def prepare(self):
|
||||
self.prepare_remove_all()
|
||||
self.prepare_default_config()
|
||||
self.prepare_fixture()
|
||||
|
||||
def start_webserver(self, directory):
|
||||
FileHTTPServerRequestHandler.rootPath = directory
|
||||
self.webserver = ThreadedTCPServer(("localhost", 0), FileHTTPServerRequestHandler)
|
||||
|
||||
server_thread = threading.Thread(target=self.webserver.serve_forever)
|
||||
server_thread.daemon = True
|
||||
server_thread.start()
|
||||
|
||||
return "http://%s:%d/" % self.webserver.server_address
|
||||
|
||||
def shutdown(self):
|
||||
if hasattr(self, 'webserver'):
|
||||
self.shutdown_webserver()
|
||||
|
||||
def shutdown_webserver(self):
|
||||
self.webserver.shutdown()
|
||||
|
||||
@classmethod
|
||||
def shutdown_class(cls):
|
||||
pass
|
||||
Executable
+131
@@ -0,0 +1,131 @@
|
||||
#!/usr/local/bin/python
|
||||
|
||||
import glob
|
||||
import importlib
|
||||
import os
|
||||
import inspect
|
||||
import fnmatch
|
||||
import sys
|
||||
import traceback
|
||||
import random
|
||||
|
||||
from lib import BaseTest
|
||||
from s3_lib import S3Test
|
||||
from swift_lib import SwiftTest
|
||||
from api_lib import APITest
|
||||
|
||||
try:
|
||||
from termcolor import colored
|
||||
except ImportError:
|
||||
def colored(s, **kwargs):
|
||||
return s
|
||||
|
||||
|
||||
def run(include_long_tests=False, capture_results=False, tests=None, filters=None):
|
||||
"""
|
||||
Run system test.
|
||||
"""
|
||||
if not tests:
|
||||
tests = glob.glob("t*_*")
|
||||
fails = []
|
||||
numTests = numFailed = numSkipped = 0
|
||||
lastBase = None
|
||||
|
||||
for test in tests:
|
||||
|
||||
testModule = importlib.import_module(test)
|
||||
|
||||
for name in dir(testModule):
|
||||
o = getattr(testModule, name)
|
||||
|
||||
if not (inspect.isclass(o) and issubclass(o, BaseTest) and o is not BaseTest and
|
||||
o is not SwiftTest and o is not S3Test and o is not APITest):
|
||||
continue
|
||||
|
||||
newBase = o.__bases__[0]
|
||||
if lastBase is not None and lastBase is not newBase:
|
||||
lastBase.shutdown_class()
|
||||
|
||||
lastBase = newBase
|
||||
|
||||
if filters:
|
||||
matches = False
|
||||
|
||||
for filt in filters:
|
||||
if fnmatch.fnmatch(o.__name__, filt):
|
||||
matches = True
|
||||
break
|
||||
|
||||
if not matches:
|
||||
continue
|
||||
|
||||
t = o()
|
||||
if t.longTest and not include_long_tests or not t.fixture_available():
|
||||
numSkipped += 1
|
||||
continue
|
||||
|
||||
numTests += 1
|
||||
|
||||
sys.stdout.write("%s:%s... " % (test, o.__name__))
|
||||
|
||||
try:
|
||||
t.captureResults = capture_results
|
||||
t.test()
|
||||
except BaseException:
|
||||
numFailed += 1
|
||||
typ, val, tb = sys.exc_info()
|
||||
fails.append((test, t, typ, val, tb, testModule))
|
||||
sys.stdout.write(colored("FAIL\n", color="red"))
|
||||
else:
|
||||
sys.stdout.write(colored("OK\n", color="green"))
|
||||
|
||||
t.shutdown()
|
||||
|
||||
if lastBase is not None:
|
||||
lastBase.shutdown_class()
|
||||
|
||||
print "TESTS: %d SUCCESS: %d FAIL: %d SKIP: %d" % (numTests, numTests - numFailed, numFailed, numSkipped)
|
||||
|
||||
if len(fails) > 0:
|
||||
print "\nFAILURES (%d):" % (len(fails), )
|
||||
|
||||
for (test, t, typ, val, tb, testModule) in fails:
|
||||
print "%s:%s %s" % (test, t.__class__.__name__, testModule.__doc__.strip() + ": " + t.__doc__.strip())
|
||||
#print "ERROR: %s" % (val, )
|
||||
traceback.print_exception(typ, val, tb)
|
||||
print "=" * 60
|
||||
|
||||
sys.exit(1)
|
||||
|
||||
if __name__ == "__main__":
|
||||
if 'APTLY_VERSION' not in os.environ:
|
||||
try:
|
||||
os.environ['APTLY_VERSION'] = os.popen("make version").read().strip()
|
||||
except BaseException, e:
|
||||
print "Failed to capture current version: ", e
|
||||
|
||||
os.chdir(os.path.realpath(os.path.dirname(sys.argv[0])))
|
||||
random.seed()
|
||||
include_long_tests = False
|
||||
capture_results = False
|
||||
tests = None
|
||||
args = sys.argv[1:]
|
||||
|
||||
while len(args) > 0 and args[0].startswith("--"):
|
||||
if args[0] == "--long":
|
||||
include_long_tests = True
|
||||
elif args[0] == "--capture":
|
||||
capture_results = True
|
||||
|
||||
args = args[1:]
|
||||
|
||||
tests = []
|
||||
filters = []
|
||||
|
||||
for arg in args:
|
||||
if arg.startswith('t'):
|
||||
tests.append(arg)
|
||||
else:
|
||||
filters.append(arg)
|
||||
|
||||
run(include_long_tests, capture_results, tests, filters)
|
||||
@@ -0,0 +1,78 @@
|
||||
from lib import BaseTest
|
||||
import uuid
|
||||
import os
|
||||
|
||||
try:
|
||||
import boto
|
||||
|
||||
if 'AWS_SECRET_ACCESS_KEY' in os.environ and 'AWS_ACCESS_KEY_ID' in os.environ:
|
||||
s3_conn = boto.connect_s3()
|
||||
else:
|
||||
s3_conn = None
|
||||
except ImportError:
|
||||
s3_conn = None
|
||||
|
||||
|
||||
class S3Test(BaseTest):
|
||||
"""
|
||||
BaseTest + support for S3
|
||||
"""
|
||||
|
||||
def fixture_available(self):
|
||||
return super(S3Test, self).fixture_available() and s3_conn is not None
|
||||
|
||||
def prepare(self):
|
||||
self.bucket_name = "aptly-sys-test-" + str(uuid.uuid1())
|
||||
self.bucket = s3_conn.create_bucket(self.bucket_name)
|
||||
self.configOverride = {"S3PublishEndpoints": {
|
||||
"test1": {
|
||||
"region": "us-east-1",
|
||||
"bucket": self.bucket_name,
|
||||
}
|
||||
}}
|
||||
|
||||
super(S3Test, self).prepare()
|
||||
|
||||
def shutdown(self):
|
||||
if hasattr(self, "bucket_name"):
|
||||
if hasattr(self, "bucket"):
|
||||
keys = self.bucket.list()
|
||||
if keys:
|
||||
self.bucket.delete_keys(keys)
|
||||
s3_conn.delete_bucket(self.bucket_name)
|
||||
|
||||
super(S3Test, self).shutdown()
|
||||
|
||||
def check_path(self, path):
|
||||
if not hasattr(self, "bucket_contents"):
|
||||
self.bucket_contents = [key.name for key in self.bucket.list()]
|
||||
|
||||
if path.startswith("public/"):
|
||||
path = path[7:]
|
||||
|
||||
if path in self.bucket_contents:
|
||||
return True
|
||||
|
||||
if not path.endswith("/"):
|
||||
path = path + "/"
|
||||
|
||||
for item in self.bucket_contents:
|
||||
if item.startswith(path):
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
def check_exists(self, path):
|
||||
if not self.check_path(path):
|
||||
raise Exception("path %s doesn't exist" % (path, ))
|
||||
|
||||
def check_not_exists(self, path):
|
||||
if self.check_path(path):
|
||||
raise Exception("path %s exists" % (path, ))
|
||||
|
||||
def read_file(self, path):
|
||||
if path.startswith("public/"):
|
||||
path = path[7:]
|
||||
|
||||
key = self.bucket.get_key(path)
|
||||
return key.get_contents_as_string()
|
||||
@@ -0,0 +1,87 @@
|
||||
from lib import BaseTest
|
||||
import uuid
|
||||
import os
|
||||
|
||||
try:
|
||||
import swiftclient
|
||||
|
||||
if 'OS_USERNAME' in os.environ and 'OS_PASSWORD' in os.environ:
|
||||
auth_username = os.environ.get('OS_USERNAME')
|
||||
auth_password = os.environ.get('OS_PASSWORD')
|
||||
# Using auth version 2 /v2.0/
|
||||
auth_url = os.environ.get('OS_AUTH_URL')
|
||||
auth_tenant = os.environ.get('OS_TENANT_NAME')
|
||||
|
||||
account_username = "%s:%s" % (auth_tenant, auth_username)
|
||||
swift_conn = swiftclient.Connection(auth_url, account_username,
|
||||
auth_password, auth_version=2)
|
||||
elif 'ST_USER' in os.environ and 'ST_KEY' in os.environ:
|
||||
auth_username = os.environ.get('ST_USER')
|
||||
auth_password = os.environ.get('ST_KEY')
|
||||
auth_url = os.environ.get('ST_AUTH')
|
||||
# Using auth version 1 (/auth/v1.0)
|
||||
swift_conn = swiftclient.Connection(auth_url, auth_username,
|
||||
auth_password, auth_version=1)
|
||||
else:
|
||||
swift_conn = None
|
||||
except ImportError:
|
||||
swift_conn = None
|
||||
|
||||
|
||||
class SwiftTest(BaseTest):
|
||||
"""
|
||||
BaseTest + support for Swift
|
||||
"""
|
||||
|
||||
def fixture_available(self):
|
||||
return super(SwiftTest, self).fixture_available() and swift_conn is not None
|
||||
|
||||
def prepare(self):
|
||||
self.container_name = "aptly-sys-test-" + str(uuid.uuid1())
|
||||
swift_conn.put_container(self.container_name)
|
||||
|
||||
self.configOverride = {"SwiftPublishEndpoints": {
|
||||
"test1": {
|
||||
"container": self.container_name,
|
||||
}
|
||||
}}
|
||||
|
||||
super(SwiftTest, self).prepare()
|
||||
|
||||
def shutdown(self):
|
||||
if hasattr(self, "container_name"):
|
||||
for obj in swift_conn.get_container(self.container_name,
|
||||
full_listing=True)[1]:
|
||||
swift_conn.delete_object(self.container_name, obj.get("name"))
|
||||
|
||||
swift_conn.delete_container(self.container_name)
|
||||
super(SwiftTest, self).shutdown()
|
||||
|
||||
def check_path(self, path):
|
||||
if not hasattr(self, "container_contents"):
|
||||
self.container_contents = [obj.get('name') for obj in
|
||||
swift_conn.get_container(self.container_name)[1]]
|
||||
|
||||
if path in self.container_contents:
|
||||
return True
|
||||
|
||||
if not path.endswith("/"):
|
||||
path = path + "/"
|
||||
|
||||
for item in self.container_contents:
|
||||
if item.startswith(path):
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
def check_exists(self, path):
|
||||
if not self.check_path(path):
|
||||
raise Exception("path %s doesn't exist" % (path, ))
|
||||
|
||||
def check_not_exists(self, path):
|
||||
if self.check_path(path):
|
||||
raise Exception("path %s exists" % (path, ))
|
||||
|
||||
def read_file(self, path):
|
||||
hdrs, body = swift_conn.get_object(self.container_name, path)
|
||||
return body
|
||||
@@ -0,0 +1 @@
|
||||
aptly version: ${APTLY_VERSION}
|
||||
@@ -0,0 +1,14 @@
|
||||
"""
|
||||
Test aptly version
|
||||
"""
|
||||
|
||||
from lib import BaseTest
|
||||
|
||||
|
||||
class VersionTest(BaseTest):
|
||||
"""
|
||||
version should match
|
||||
"""
|
||||
gold_processor = BaseTest.expand_environ
|
||||
|
||||
runCmd = "aptly version"
|
||||
@@ -0,0 +1 @@
|
||||
ERROR: error loading config file ${HOME}/.aptly.conf: invalid character 's' looking for beginning of object key string
|
||||
@@ -0,0 +1 @@
|
||||
No mirrors found, create one with `aptly mirror create ...`.
|
||||
@@ -0,0 +1 @@
|
||||
ERROR: open nosuchfile.conf: no such file or directory
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"rootDir": "${HOME}/.aptly",
|
||||
"downloadConcurrency": 4,
|
||||
"downloadSpeedLimit": 0,
|
||||
"architectures": [],
|
||||
"dependencyFollowSuggests": false,
|
||||
"dependencyFollowRecommends": false,
|
||||
"dependencyFollowAllVariants": false,
|
||||
"dependencyFollowSource": false,
|
||||
"gpgDisableSign": false,
|
||||
"gpgDisableVerify": false,
|
||||
"downloadSourcePackages": false,
|
||||
"ppaDistributorID": "ubuntu",
|
||||
"ppaCodename": "",
|
||||
"skipContentsPublishing": false,
|
||||
"S3PublishEndpoints": {},
|
||||
"SwiftPublishEndpoints": {}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"rootDir": "${HOME}/.aptly",
|
||||
"downloadConcurrency": 4,
|
||||
"downloadSpeedLimit": 0,
|
||||
"architectures": [],
|
||||
"dependencyFollowSuggests": false,
|
||||
"dependencyFollowRecommends": false,
|
||||
"dependencyFollowAllVariants": false,
|
||||
"dependencyFollowSource": false,
|
||||
"gpgDisableSign": false,
|
||||
"gpgDisableVerify": false,
|
||||
"downloadSourcePackages": false,
|
||||
"ppaDistributorID": "ubuntu",
|
||||
"ppaCodename": "",
|
||||
"skipContentsPublishing": false,
|
||||
"S3PublishEndpoints": {},
|
||||
"SwiftPublishEndpoints": {}
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
"""
|
||||
Test config file
|
||||
"""
|
||||
|
||||
import os
|
||||
import re
|
||||
import inspect
|
||||
from lib import BaseTest
|
||||
|
||||
|
||||
class CreateConfigTest(BaseTest):
|
||||
"""
|
||||
new file is generated if missing
|
||||
"""
|
||||
runCmd = "aptly mirror list"
|
||||
checkedFile = os.path.join(os.environ["HOME"], ".aptly.conf")
|
||||
|
||||
check = BaseTest.check_file
|
||||
gold_processor = BaseTest.expand_environ
|
||||
prepare = BaseTest.prepare_remove_all
|
||||
|
||||
|
||||
class BadConfigTest(BaseTest):
|
||||
"""
|
||||
broken config file
|
||||
"""
|
||||
runCmd = "aptly mirror list"
|
||||
expectedCode = 1
|
||||
|
||||
gold_processor = BaseTest.expand_environ
|
||||
|
||||
def prepare(self):
|
||||
self.prepare_remove_all()
|
||||
|
||||
f = open(os.path.join(os.environ["HOME"], ".aptly.conf"), "w")
|
||||
f.write("{some crap")
|
||||
f.close()
|
||||
|
||||
|
||||
class ConfigInFileTest(BaseTest):
|
||||
"""
|
||||
config in other file test
|
||||
"""
|
||||
runCmd = ["aptly", "mirror", "list",
|
||||
"-config=%s" % (os.path.join(os.path.dirname(inspect.getsourcefile(BadConfigTest)), "aptly.conf"), )]
|
||||
prepare = BaseTest.prepare_remove_all
|
||||
|
||||
outputMatchPrepare = lambda _, s: re.sub(r' -(cpuprofile|memprofile|memstats|meminterval)=.*\n', '', s, flags=re.MULTILINE)
|
||||
|
||||
|
||||
class ConfigInMissingFileTest(BaseTest):
|
||||
"""
|
||||
config in other file test
|
||||
"""
|
||||
runCmd = ["aptly", "mirror", "list", "-config=nosuchfile.conf"]
|
||||
expectedCode = 1
|
||||
prepare = BaseTest.prepare_remove_all
|
||||
|
||||
|
||||
class ConfigShowTest(BaseTest):
|
||||
"""
|
||||
config showing
|
||||
"""
|
||||
runCmd = ["aptly", "config", "show"]
|
||||
gold_processor = BaseTest.expand_environ
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"rootDir": "/tmp/aptly",
|
||||
"downloadConcurrency": 4,
|
||||
"architectures": [],
|
||||
"dependencyFollowSuggests": false,
|
||||
"dependencyFollowRecommends": false,
|
||||
"dependencyFollowAllVariants": false,
|
||||
"gpgDisableSign": false,
|
||||
"gpgDisableVerify": false
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
aptly is a tool to create partial and full mirrors of remote
|
||||
repositories, manage local repositories, filter them, merge,
|
||||
upgrade individual packages, take snapshots and publish them
|
||||
back as Debian repositories.
|
||||
|
||||
aptly's goal is to establish repeatability and controlled changes
|
||||
in a package-centric environment. aptly allows one to fix a set of packages
|
||||
in a repository, so that package installation and upgrade becomes
|
||||
deterministic. At the same time aptly allows one to perform controlled,
|
||||
fine-grained changes in repository contents to transition your
|
||||
package environment to new version.
|
||||
|
||||
Options:
|
||||
-architectures="": list of architectures to consider during (comma-separated), default to all available
|
||||
-config="": location of configuration file (default locations are /etc/aptly.conf, ~/.aptly.conf)
|
||||
-dep-follow-all-variants=false: when processing dependencies, follow a & b if dependency is 'a|b'
|
||||
-dep-follow-recommends=false: when processing dependencies, follow Recommends
|
||||
-dep-follow-source=false: when processing dependencies, follow from binary to Source packages
|
||||
-dep-follow-suggests=false: when processing dependencies, follow Suggests
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
aptly - Debian repository management tool
|
||||
|
||||
Commands:
|
||||
|
||||
api start API server/issue requests
|
||||
config manage aptly configuration
|
||||
db manage aptly's internal database and package pool
|
||||
graph render graph of relationships
|
||||
mirror manage mirrors of remote repositories
|
||||
package operations on packages
|
||||
publish manage published repositories
|
||||
repo manage local package repositories
|
||||
serve HTTP serve published repositories
|
||||
snapshot manage snapshots of repositories
|
||||
task manage aptly tasks
|
||||
version display version
|
||||
|
||||
Use "aptly help <command>" for more information about a command.
|
||||
|
||||
|
||||
Options:
|
||||
-architectures="": list of architectures to consider during (comma-separated), default to all available
|
||||
-config="": location of configuration file (default locations are /etc/aptly.conf, ~/.aptly.conf)
|
||||
-dep-follow-all-variants=false: when processing dependencies, follow a & b if dependency is 'a|b'
|
||||
-dep-follow-recommends=false: when processing dependencies, follow Recommends
|
||||
-dep-follow-source=false: when processing dependencies, follow from binary to Source packages
|
||||
-dep-follow-suggests=false: when processing dependencies, follow Suggests
|
||||
ERROR: unable to parse command
|
||||
@@ -0,0 +1,30 @@
|
||||
Usage: aptly mirror create <name> <archive url> <distribution> [<component1> ...]
|
||||
|
||||
Creates mirror <name> of remote repository, aptly supports both regular and flat Debian repositories exported
|
||||
via HTTP and FTP. aptly would try download Release file from remote repository and verify its' signature. Command
|
||||
line format resembles apt utlitily sources.list(5).
|
||||
|
||||
PPA urls could specified in short format:
|
||||
|
||||
$ aptly mirror create <name> ppa:<user>/<project>
|
||||
|
||||
Example:
|
||||
|
||||
$ aptly mirror create wheezy-main http://mirror.yandex.ru/debian/ wheezy main
|
||||
|
||||
Options:
|
||||
-architectures="": list of architectures to consider during (comma-separated), default to all available
|
||||
-config="": location of configuration file (default locations are /etc/aptly.conf, ~/.aptly.conf)
|
||||
-dep-follow-all-variants=false: when processing dependencies, follow a & b if dependency is 'a|b'
|
||||
-dep-follow-recommends=false: when processing dependencies, follow Recommends
|
||||
-dep-follow-source=false: when processing dependencies, follow from binary to Source packages
|
||||
-dep-follow-suggests=false: when processing dependencies, follow Suggests
|
||||
-filter="": filter packages in mirror
|
||||
-filter-with-deps=false: when filtering, include dependencies of matching packages as well
|
||||
-force-architectures=false: (only with architecture list) skip check that requested architectures are listed in Release file
|
||||
-force-components=false: (only with component list) skip check that requested components are listed in Release file
|
||||
-ignore-signatures=false: disable verification of Release file signatures
|
||||
-keyring=: gpg keyring to use when verifying Release file (could be specified multiple times)
|
||||
-with-sources=false: download source packages in addition to binary packages
|
||||
-with-udebs=false: download .udeb packages (Debian installer support)
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
Usage: aptly mirror create <name> <archive url> <distribution> [<component1> ...]
|
||||
|
||||
aptly mirror create - create new mirror
|
||||
|
||||
|
||||
Options:
|
||||
-architectures="": list of architectures to consider during (comma-separated), default to all available
|
||||
-config="": location of configuration file (default locations are /etc/aptly.conf, ~/.aptly.conf)
|
||||
-dep-follow-all-variants=false: when processing dependencies, follow a & b if dependency is 'a|b'
|
||||
-dep-follow-recommends=false: when processing dependencies, follow Recommends
|
||||
-dep-follow-source=false: when processing dependencies, follow from binary to Source packages
|
||||
-dep-follow-suggests=false: when processing dependencies, follow Suggests
|
||||
-filter="": filter packages in mirror
|
||||
-filter-with-deps=false: when filtering, include dependencies of matching packages as well
|
||||
-force-architectures=false: (only with architecture list) skip check that requested architectures are listed in Release file
|
||||
-force-components=false: (only with component list) skip check that requested components are listed in Release file
|
||||
-ignore-signatures=false: disable verification of Release file signatures
|
||||
-keyring=: gpg keyring to use when verifying Release file (could be specified multiple times)
|
||||
-with-sources=false: download source packages in addition to binary packages
|
||||
-with-udebs=false: download .udeb packages (Debian installer support)
|
||||
ERROR: unable to parse command
|
||||
@@ -0,0 +1,23 @@
|
||||
aptly mirror - manage mirrors of remote repositories
|
||||
|
||||
Commands:
|
||||
|
||||
create create new mirror
|
||||
drop delete mirror
|
||||
edit edit mirror settings
|
||||
list list mirrors
|
||||
rename renames mirror
|
||||
search search mirror for packages matching query
|
||||
show show details about mirror
|
||||
update update mirror
|
||||
|
||||
Use "mirror help <command>" for more information about a command.
|
||||
|
||||
|
||||
Options:
|
||||
-architectures="": list of architectures to consider during (comma-separated), default to all available
|
||||
-config="": location of configuration file (default locations are /etc/aptly.conf, ~/.aptly.conf)
|
||||
-dep-follow-all-variants=false: when processing dependencies, follow a & b if dependency is 'a|b'
|
||||
-dep-follow-recommends=false: when processing dependencies, follow Recommends
|
||||
-dep-follow-source=false: when processing dependencies, follow from binary to Source packages
|
||||
-dep-follow-suggests=false: when processing dependencies, follow Suggests
|
||||
@@ -0,0 +1,24 @@
|
||||
aptly mirror - manage mirrors of remote repositories
|
||||
|
||||
Commands:
|
||||
|
||||
create create new mirror
|
||||
drop delete mirror
|
||||
edit edit mirror settings
|
||||
list list mirrors
|
||||
rename renames mirror
|
||||
search search mirror for packages matching query
|
||||
show show details about mirror
|
||||
update update mirror
|
||||
|
||||
Use "mirror help <command>" for more information about a command.
|
||||
|
||||
|
||||
Options:
|
||||
-architectures="": list of architectures to consider during (comma-separated), default to all available
|
||||
-config="": location of configuration file (default locations are /etc/aptly.conf, ~/.aptly.conf)
|
||||
-dep-follow-all-variants=false: when processing dependencies, follow a & b if dependency is 'a|b'
|
||||
-dep-follow-recommends=false: when processing dependencies, follow Recommends
|
||||
-dep-follow-source=false: when processing dependencies, follow from binary to Source packages
|
||||
-dep-follow-suggests=false: when processing dependencies, follow Suggests
|
||||
ERROR: unable to parse command
|
||||
@@ -0,0 +1,22 @@
|
||||
flag provided but not defined: -fxz
|
||||
Usage: aptly mirror create <name> <archive url> <distribution> [<component1> ...]
|
||||
|
||||
aptly mirror create - create new mirror
|
||||
|
||||
|
||||
Options:
|
||||
-architectures="": list of architectures to consider during (comma-separated), default to all available
|
||||
-config="": location of configuration file (default locations are /etc/aptly.conf, ~/.aptly.conf)
|
||||
-dep-follow-all-variants=false: when processing dependencies, follow a & b if dependency is 'a|b'
|
||||
-dep-follow-recommends=false: when processing dependencies, follow Recommends
|
||||
-dep-follow-source=false: when processing dependencies, follow from binary to Source packages
|
||||
-dep-follow-suggests=false: when processing dependencies, follow Suggests
|
||||
-filter="": filter packages in mirror
|
||||
-filter-with-deps=false: when filtering, include dependencies of matching packages as well
|
||||
-force-architectures=false: (only with architecture list) skip check that requested architectures are listed in Release file
|
||||
-force-components=false: (only with component list) skip check that requested components are listed in Release file
|
||||
-ignore-signatures=false: disable verification of Release file signatures
|
||||
-keyring=: gpg keyring to use when verifying Release file (could be specified multiple times)
|
||||
-with-sources=false: download source packages in addition to binary packages
|
||||
-with-udebs=false: download .udeb packages (Debian installer support)
|
||||
ERROR: unable to parse flags
|
||||
@@ -0,0 +1,63 @@
|
||||
"""
|
||||
Test help screens
|
||||
"""
|
||||
|
||||
import re
|
||||
from lib import BaseTest
|
||||
|
||||
|
||||
class MainTest(BaseTest):
|
||||
"""
|
||||
main
|
||||
"""
|
||||
expectedCode = 2
|
||||
runCmd = "aptly"
|
||||
|
||||
outputMatchPrepare = lambda _, s: re.sub(r' -(cpuprofile|memprofile|memstats|meminterval)=.*\n', '', s, flags=re.MULTILINE)
|
||||
|
||||
|
||||
class MirrorTest(BaseTest):
|
||||
"""
|
||||
main
|
||||
"""
|
||||
expectedCode = 2
|
||||
runCmd = "aptly mirror"
|
||||
|
||||
|
||||
class MirrorCreateTest(BaseTest):
|
||||
"""
|
||||
main
|
||||
"""
|
||||
expectedCode = 2
|
||||
runCmd = "aptly mirror create"
|
||||
|
||||
|
||||
class MainHelpTest(BaseTest):
|
||||
"""
|
||||
main
|
||||
"""
|
||||
runCmd = "aptly help"
|
||||
|
||||
outputMatchPrepare = lambda _, s: re.sub(r' -(cpuprofile|memprofile|memstats|meminterval)=.*\n', '', s, flags=re.MULTILINE)
|
||||
|
||||
|
||||
class MirrorHelpTest(BaseTest):
|
||||
"""
|
||||
main
|
||||
"""
|
||||
runCmd = "aptly help mirror"
|
||||
|
||||
|
||||
class MirrorCreateHelpTest(BaseTest):
|
||||
"""
|
||||
main
|
||||
"""
|
||||
runCmd = "aptly help mirror create"
|
||||
|
||||
|
||||
class WrongFlagTest(BaseTest):
|
||||
"""
|
||||
main
|
||||
"""
|
||||
expectedCode = 2
|
||||
runCmd = "aptly mirror create -fxz=sss"
|
||||
@@ -0,0 +1,10 @@
|
||||
Downloading http://mirror.yandex.ru/debian-backports/dists/squeeze-backports/InRelease...
|
||||
gpgv: keyblock resource `${HOME}/.gnupg/aptlytest.gpg': file open error
|
||||
gpgv: RSA key ID 46925553
|
||||
gpgv: Can't check signature: public key not found
|
||||
Downloading http://mirror.yandex.ru/debian-backports/dists/squeeze-backports/Release...
|
||||
Downloading http://mirror.yandex.ru/debian-backports/dists/squeeze-backports/Release.gpg...
|
||||
gpgv: keyblock resource `${HOME}/.gnupg/aptlytest.gpg': file open error
|
||||
gpgv: RSA key ID 46925553
|
||||
gpgv: Can't check signature: public key not found
|
||||
ERROR: unable to fetch mirror: verification of detached signature failed: exit status 2
|
||||
@@ -0,0 +1,12 @@
|
||||
Downloading http://mirror.yandex.ru/debian/dists/wheezy/InRelease...
|
||||
Downloading http://mirror.yandex.ru/debian/dists/wheezy/Release...
|
||||
Downloading http://mirror.yandex.ru/debian/dists/wheezy/Release.gpg...
|
||||
gpgv: RSA key ID 46925553
|
||||
gpgv: Good signature from "Debian Archive Automatic Signing Key (7.0/wheezy) <ftpmaster@debian.org>"
|
||||
gpgv: RSA key ID 2B90D010
|
||||
gpgv: Good signature from "Debian Archive Automatic Signing Key (8/jessie) <ftpmaster@debian.org>"
|
||||
gpgv: RSA key ID 65FFB764
|
||||
gpgv: Good signature from "Wheezy Stable Release Key <debian-release@lists.debian.org>"
|
||||
|
||||
Mirror [mirror11]: http://mirror.yandex.ru/debian/ wheezy successfully added.
|
||||
You can run 'aptly mirror update mirror11' to download repository contents.
|
||||
@@ -0,0 +1,20 @@
|
||||
Name: mirror11
|
||||
Archive Root URL: http://mirror.yandex.ru/debian/
|
||||
Distribution: wheezy
|
||||
Components: main, contrib, non-free
|
||||
Architectures: amd64, armel, armhf, i386, ia64, kfreebsd-amd64, kfreebsd-i386, mips, mipsel, powerpc, s390, s390x, sparc
|
||||
Download Sources: no
|
||||
Download .udebs: no
|
||||
Last update: never
|
||||
|
||||
Information from release file:
|
||||
Architectures: amd64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc s390 s390x sparc
|
||||
Codename: wheezy
|
||||
Components: main contrib non-free
|
||||
Date: Sat, 04 Jun 2016 11:47:54 UTC
|
||||
Description: Debian 7.11 Released 04 June 2016
|
||||
|
||||
Label: Debian
|
||||
Origin: Debian
|
||||
Suite: oldstable
|
||||
Version: 7.11
|
||||
@@ -0,0 +1,11 @@
|
||||
Downloading http://mirror.yandex.ru/debian/dists/wheezy/InRelease...
|
||||
Downloading http://mirror.yandex.ru/debian/dists/wheezy/Release...
|
||||
Downloading http://mirror.yandex.ru/debian/dists/wheezy/Release.gpg...
|
||||
|
||||
gpgv: RSA key ID 46925553
|
||||
|
||||
gpgv: RSA key ID 2B90D010
|
||||
|
||||
gpgv: RSA key ID 65FFB764
|
||||
|
||||
ERROR: unable to fetch mirror: verification of detached signature failed: exit status 2
|
||||
@@ -0,0 +1,4 @@
|
||||
Downloading http://mirror.yandex.ru/debian/dists/wheezy/Release...
|
||||
|
||||
Mirror [mirror13]: http://mirror.yandex.ru/debian/ wheezy successfully added.
|
||||
You can run 'aptly mirror update mirror13' to download repository contents.
|
||||
@@ -0,0 +1,20 @@
|
||||
Name: mirror13
|
||||
Archive Root URL: http://mirror.yandex.ru/debian/
|
||||
Distribution: wheezy
|
||||
Components: main, contrib, non-free
|
||||
Architectures: amd64, armel, armhf, i386, ia64, kfreebsd-amd64, kfreebsd-i386, mips, mipsel, powerpc, s390, s390x, sparc
|
||||
Download Sources: no
|
||||
Download .udebs: no
|
||||
Last update: never
|
||||
|
||||
Information from release file:
|
||||
Architectures: amd64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc s390 s390x sparc
|
||||
Codename: wheezy
|
||||
Components: main contrib non-free
|
||||
Date: Sat, 04 Jun 2016 11:47:54 UTC
|
||||
Description: Debian 7.11 Released 04 June 2016
|
||||
|
||||
Label: Debian
|
||||
Origin: Debian
|
||||
Suite: oldstable
|
||||
Version: 7.11
|
||||
@@ -0,0 +1,8 @@
|
||||
Downloading http://download.opensuse.org/repositories/home:/monkeyiq/Debian_7.0/InRelease...
|
||||
Downloading http://download.opensuse.org/repositories/home:/monkeyiq/Debian_7.0/Release...
|
||||
Downloading http://download.opensuse.org/repositories/home:/monkeyiq/Debian_7.0/Release.gpg...
|
||||
gpgv: DSA key ID DFFAFC43
|
||||
gpgv: Good signature from "home:monkeyiq OBS Project <home:monkeyiq@build.opensuse.org>"
|
||||
|
||||
Mirror [mirror14]: http://download.opensuse.org/repositories/home:/monkeyiq/Debian_7.0/ ./ successfully added.
|
||||
You can run 'aptly mirror update mirror14' to download repository contents.
|
||||
@@ -0,0 +1,18 @@
|
||||
Name: mirror14
|
||||
Archive Root URL: http://download.opensuse.org/repositories/home:/monkeyiq/Debian_7.0/
|
||||
Distribution: ./
|
||||
Components:
|
||||
Architectures:
|
||||
Download Sources: no
|
||||
Download .udebs: no
|
||||
Last update: never
|
||||
|
||||
Information from release file:
|
||||
Architectures: i386 amd64
|
||||
Archive: Debian_7.0
|
||||
Codename: Debian_7.0
|
||||
Date: Fri Apr 25 04:32:23 2014
|
||||
Description: monkeyiq's Home Project (Debian_7.0)
|
||||
|
||||
Label: home:monkeyiq
|
||||
Origin: obs://build.opensuse.org/home:monkeyiq/Debian_7.0
|
||||
@@ -0,0 +1 @@
|
||||
ERROR: unable to create mirror: components aren't supported for flat repos
|
||||
@@ -0,0 +1,2 @@
|
||||
Downloading http://mirror.yandex.ru/debian/dists/wheezy/Release...
|
||||
ERROR: unable to fetch mirror: architecture source not available in repo [mirror16]: http://mirror.yandex.ru/debian/ wheezy, use -force-architectures to override
|
||||
@@ -0,0 +1,4 @@
|
||||
Downloading http://mirror.yandex.ru/debian/dists/wheezy/Release...
|
||||
|
||||
Mirror [mirror17]: http://mirror.yandex.ru/debian/ wheezy [src] successfully added.
|
||||
You can run 'aptly mirror update mirror17' to download repository contents.
|
||||
@@ -0,0 +1,20 @@
|
||||
Name: mirror17
|
||||
Archive Root URL: http://mirror.yandex.ru/debian/
|
||||
Distribution: wheezy
|
||||
Components: main, contrib, non-free
|
||||
Architectures: i386
|
||||
Download Sources: yes
|
||||
Download .udebs: no
|
||||
Last update: never
|
||||
|
||||
Information from release file:
|
||||
Architectures: amd64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc s390 s390x sparc
|
||||
Codename: wheezy
|
||||
Components: main contrib non-free
|
||||
Date: Sat, 04 Jun 2016 11:47:54 UTC
|
||||
Description: Debian 7.11 Released 04 June 2016
|
||||
|
||||
Label: Debian
|
||||
Origin: Debian
|
||||
Suite: oldstable
|
||||
Version: 7.11
|
||||
@@ -0,0 +1,8 @@
|
||||
Downloading http://ppa.launchpad.net/gladky-anton/gnuplot/ubuntu/dists/maverick/InRelease...
|
||||
Downloading http://ppa.launchpad.net/gladky-anton/gnuplot/ubuntu/dists/maverick/Release...
|
||||
Downloading http://ppa.launchpad.net/gladky-anton/gnuplot/ubuntu/dists/maverick/Release.gpg...
|
||||
gpgv: RSA key ID 3B1F56C0
|
||||
gpgv: Good signature from "Launchpad sim"
|
||||
|
||||
Mirror [mirror18]: http://ppa.launchpad.net/gladky-anton/gnuplot/ubuntu/ maverick successfully added.
|
||||
You can run 'aptly mirror update mirror18' to download repository contents.
|
||||
@@ -0,0 +1,20 @@
|
||||
Name: mirror18
|
||||
Archive Root URL: http://ppa.launchpad.net/gladky-anton/gnuplot/ubuntu/
|
||||
Distribution: maverick
|
||||
Components: main
|
||||
Architectures: amd64, armel, i386, powerpc
|
||||
Download Sources: no
|
||||
Download .udebs: no
|
||||
Last update: never
|
||||
|
||||
Information from release file:
|
||||
Architectures: amd64 armel i386 powerpc
|
||||
Codename: maverick
|
||||
Components: main
|
||||
Date: Mon, 22 Oct 2012 13:19:50 UTC
|
||||
Description: Ubuntu Maverick 10.10
|
||||
|
||||
Label: gnuplot
|
||||
Origin: LP-PPA-gladky-anton-gnuplot
|
||||
Suite: maverick
|
||||
Version: 10.10
|
||||
@@ -0,0 +1,8 @@
|
||||
Downloading http://security.debian.org/dists/wheezy/updates/InRelease...
|
||||
gpgv: RSA key ID C857C906
|
||||
gpgv: Good signature from "Debian Security Archive Automatic Signing Key (8/jessie) <ftpmaster@debian.org>"
|
||||
gpgv: RSA key ID 46925553
|
||||
gpgv: Good signature from "Debian Archive Automatic Signing Key (7.0/wheezy) <ftpmaster@debian.org>"
|
||||
|
||||
Mirror [mirror19]: http://security.debian.org/ wheezy/updates [src] successfully added.
|
||||
You can run 'aptly mirror update mirror19' to download repository contents.
|
||||
@@ -0,0 +1,19 @@
|
||||
Name: mirror19
|
||||
Archive Root URL: http://security.debian.org/
|
||||
Distribution: wheezy/updates
|
||||
Components: main
|
||||
Architectures: i386
|
||||
Download Sources: yes
|
||||
Download .udebs: no
|
||||
Last update: never
|
||||
|
||||
Information from release file:
|
||||
Architectures: amd64 armel armhf i386
|
||||
Codename: wheezy
|
||||
Components: updates/main updates/contrib updates/non-free
|
||||
Description: Long Term Support for Debian 7
|
||||
|
||||
Label: Debian-Security
|
||||
Origin: Debian
|
||||
Suite: oldstable
|
||||
Version: 7.0
|
||||
@@ -0,0 +1,4 @@
|
||||
Downloading http://mirror.yandex.ru/debian/dists/wheezy/Release...
|
||||
|
||||
Mirror [mirror1]: http://mirror.yandex.ru/debian/ wheezy successfully added.
|
||||
You can run 'aptly mirror update mirror1' to download repository contents.
|
||||
@@ -0,0 +1,20 @@
|
||||
Name: mirror1
|
||||
Archive Root URL: http://mirror.yandex.ru/debian/
|
||||
Distribution: wheezy
|
||||
Components: main, contrib, non-free
|
||||
Architectures: amd64, armel, armhf, i386, ia64, kfreebsd-amd64, kfreebsd-i386, mips, mipsel, powerpc, s390, s390x, sparc
|
||||
Download Sources: no
|
||||
Download .udebs: no
|
||||
Last update: never
|
||||
|
||||
Information from release file:
|
||||
Architectures: amd64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc s390 s390x sparc
|
||||
Codename: wheezy
|
||||
Components: main contrib non-free
|
||||
Date: Sat, 04 Jun 2016 11:47:54 UTC
|
||||
Description: Debian 7.11 Released 04 June 2016
|
||||
|
||||
Label: Debian
|
||||
Origin: Debian
|
||||
Suite: oldstable
|
||||
Version: 7.11
|
||||
@@ -0,0 +1,3 @@
|
||||
Downloading http://security.debian.org/dists/wheezy/updates/InRelease...
|
||||
Downloading http://security.debian.org/dists/wheezy/updates/Release...
|
||||
ERROR: unable to fetch mirror: http://security.debian.org/dists/wheezy/updates/Release: Get http://security.debian.org/dists/wheezy/updates/Release: http: error connecting to proxy http://127.0.0.1:3137: dial tcp 127.0.0.1:3137: connection refused
|
||||
@@ -0,0 +1,10 @@
|
||||
Downloading http://pkg.jenkins-ci.org/debian-stable/binary/InRelease...
|
||||
Downloading http://pkg.jenkins-ci.org/debian-stable/binary/Release...
|
||||
Downloading http://pkg.jenkins-ci.org/debian-stable/binary/Release.gpg...
|
||||
gpgv: DSA key ID D50582E6
|
||||
gpgv: Good signature from "Kohsuke Kawaguchi <kk@kohsuke.org>"
|
||||
gpgv: aka "Kohsuke Kawaguchi <kohsuke.kawaguchi@sun.com>"
|
||||
gpgv: aka "[invalid image]"
|
||||
|
||||
Mirror [mirror21]: http://pkg.jenkins-ci.org/debian-stable/ ./binary/ successfully added.
|
||||
You can run 'aptly mirror update mirror21' to download repository contents.
|
||||
@@ -0,0 +1,14 @@
|
||||
Name: mirror21
|
||||
Archive Root URL: http://pkg.jenkins-ci.org/debian-stable/
|
||||
Distribution: ./binary/
|
||||
Components:
|
||||
Architectures:
|
||||
Download Sources: no
|
||||
Download .udebs: no
|
||||
Last update: never
|
||||
|
||||
Information from release file:
|
||||
Architectures: all
|
||||
Date: Wed, 28 Jan 2015 02:32:16 UTC
|
||||
Origin: jenkins.io
|
||||
Suite: binary
|
||||
@@ -0,0 +1,4 @@
|
||||
Downloading http://security.debian.org/dists/wheezy/updates/Release...
|
||||
|
||||
Mirror [mirror22]: http://security.debian.org/ wheezy/updates successfully added.
|
||||
You can run 'aptly mirror update mirror22' to download repository contents.
|
||||
@@ -0,0 +1,21 @@
|
||||
Name: mirror22
|
||||
Archive Root URL: http://security.debian.org/
|
||||
Distribution: wheezy/updates
|
||||
Components: main
|
||||
Architectures: amd64, armel, armhf, i386
|
||||
Download Sources: no
|
||||
Download .udebs: no
|
||||
Filter: nginx | Priority (required)
|
||||
Filter With Deps: no
|
||||
Last update: never
|
||||
|
||||
Information from release file:
|
||||
Architectures: amd64 armel armhf i386
|
||||
Codename: wheezy
|
||||
Components: updates/main updates/contrib updates/non-free
|
||||
Description: Long Term Support for Debian 7
|
||||
|
||||
Label: Debian-Security
|
||||
Origin: Debian
|
||||
Suite: oldstable
|
||||
Version: 7.0
|
||||
@@ -0,0 +1 @@
|
||||
ERROR: unable to create mirror: parsing failed: unexpected token <EOL>: expecting field or package name
|
||||
@@ -0,0 +1,8 @@
|
||||
Downloading http://security.debian.org/dists/wheezy/updates/InRelease...
|
||||
gpgv: RSA key ID C857C906
|
||||
gpgv: Good signature from "Debian Security Archive Automatic Signing Key (8/jessie) <ftpmaster@debian.org>"
|
||||
gpgv: RSA key ID 46925553
|
||||
gpgv: Good signature from "Debian Archive Automatic Signing Key (7.0/wheezy) <ftpmaster@debian.org>"
|
||||
|
||||
Mirror [mirror24]: http://security.debian.org/ wheezy/updates successfully added.
|
||||
You can run 'aptly mirror update mirror24' to download repository contents.
|
||||
@@ -0,0 +1,4 @@
|
||||
Downloading http://mirror.yandex.ru/debian/dists/wheezy/Release...
|
||||
|
||||
Mirror [mirror25]: http://mirror.yandex.ru/debian/ wheezy [udeb] successfully added.
|
||||
You can run 'aptly mirror update mirror25' to download repository contents.
|
||||
@@ -0,0 +1,20 @@
|
||||
Name: mirror25
|
||||
Archive Root URL: http://mirror.yandex.ru/debian/
|
||||
Distribution: wheezy
|
||||
Components: main, contrib, non-free
|
||||
Architectures: i386
|
||||
Download Sources: no
|
||||
Download .udebs: yes
|
||||
Last update: never
|
||||
|
||||
Information from release file:
|
||||
Architectures: amd64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc s390 s390x sparc
|
||||
Codename: wheezy
|
||||
Components: main contrib non-free
|
||||
Date: Sat, 04 Jun 2016 11:47:54 UTC
|
||||
Description: Debian 7.11 Released 04 June 2016
|
||||
|
||||
Label: Debian
|
||||
Origin: Debian
|
||||
Suite: oldstable
|
||||
Version: 7.11
|
||||
@@ -0,0 +1 @@
|
||||
ERROR: unable to create mirror: debian-installer udebs aren't supported for flat repos
|
||||
@@ -0,0 +1,4 @@
|
||||
Downloading http://linux.dell.com/repo/community/ubuntu/dists/wheezy/Release...
|
||||
|
||||
Mirror [mirror27]: http://linux.dell.com/repo/community/ubuntu/ wheezy successfully added.
|
||||
You can run 'aptly mirror update mirror27' to download repository contents.
|
||||
@@ -0,0 +1,19 @@
|
||||
Name: mirror27
|
||||
Archive Root URL: http://linux.dell.com/repo/community/ubuntu/
|
||||
Distribution: wheezy
|
||||
Components: openmanage/740
|
||||
Architectures: amd64, i386
|
||||
Download Sources: no
|
||||
Download .udebs: no
|
||||
Last update: never
|
||||
|
||||
Information from release file:
|
||||
Architectures: amd64 i386 source
|
||||
Codename: wheezy
|
||||
Components: openmanage openmanage/820 openmanage/810 openmanage/801 openmanage/740 openmanage/730
|
||||
Date: Mon, 14 Sep 2015 21:24:43 UTC
|
||||
Description: Unofficial Dell OMSA build for Ubuntu
|
||||
|
||||
Label: Dell OMSA Archive
|
||||
Origin: Dell Inc
|
||||
Suite: wheezy
|
||||
@@ -0,0 +1,4 @@
|
||||
Downloading http://downloads-distro.mongodb.org/repo/ubuntu-upstart/dists/dist/Release...
|
||||
|
||||
Mirror [mirror28]: http://downloads-distro.mongodb.org/repo/ubuntu-upstart/ dist successfully added.
|
||||
You can run 'aptly mirror update mirror28' to download repository contents.
|
||||
@@ -0,0 +1,19 @@
|
||||
Name: mirror28
|
||||
Archive Root URL: http://downloads-distro.mongodb.org/repo/ubuntu-upstart/
|
||||
Distribution: dist
|
||||
Components: 10gen
|
||||
Architectures: amd64, i386
|
||||
Download Sources: no
|
||||
Download .udebs: no
|
||||
Last update: never
|
||||
|
||||
Information from release file:
|
||||
Architectures: i386 amd64
|
||||
Codename: dist
|
||||
Components: 10gen
|
||||
Description: mongodb packages
|
||||
|
||||
Label: mongodb
|
||||
Origin: mongodb
|
||||
Suite: mongodb
|
||||
Version: dist
|
||||
@@ -0,0 +1,4 @@
|
||||
Downloading http://mirror.yandex.ru/debian/dists/wheezy/Release...
|
||||
|
||||
Mirror [mirror2]: http://mirror.yandex.ru/debian/ wheezy successfully added.
|
||||
You can run 'aptly mirror update mirror2' to download repository contents.
|
||||
@@ -0,0 +1,20 @@
|
||||
Name: mirror2
|
||||
Archive Root URL: http://mirror.yandex.ru/debian/
|
||||
Distribution: wheezy
|
||||
Components: main
|
||||
Architectures: amd64, armel, armhf, i386, ia64, kfreebsd-amd64, kfreebsd-i386, mips, mipsel, powerpc, s390, s390x, sparc
|
||||
Download Sources: no
|
||||
Download .udebs: no
|
||||
Last update: never
|
||||
|
||||
Information from release file:
|
||||
Architectures: amd64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc s390 s390x sparc
|
||||
Codename: wheezy
|
||||
Components: main contrib non-free
|
||||
Date: Sat, 04 Jun 2016 11:47:54 UTC
|
||||
Description: Debian 7.11 Released 04 June 2016
|
||||
|
||||
Label: Debian
|
||||
Origin: Debian
|
||||
Suite: oldstable
|
||||
Version: 7.11
|
||||
@@ -0,0 +1,4 @@
|
||||
Downloading http://mirror.yandex.ru/debian/dists/wheezy/Release...
|
||||
|
||||
Mirror [mirror3]: http://mirror.yandex.ru/debian/ wheezy successfully added.
|
||||
You can run 'aptly mirror update mirror3' to download repository contents.
|
||||
@@ -0,0 +1,20 @@
|
||||
Name: mirror3
|
||||
Archive Root URL: http://mirror.yandex.ru/debian/
|
||||
Distribution: wheezy
|
||||
Components: main, contrib
|
||||
Architectures: i386, amd64
|
||||
Download Sources: no
|
||||
Download .udebs: no
|
||||
Last update: never
|
||||
|
||||
Information from release file:
|
||||
Architectures: amd64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc s390 s390x sparc
|
||||
Codename: wheezy
|
||||
Components: main contrib non-free
|
||||
Date: Sat, 04 Jun 2016 11:47:54 UTC
|
||||
Description: Debian 7.11 Released 04 June 2016
|
||||
|
||||
Label: Debian
|
||||
Origin: Debian
|
||||
Suite: oldstable
|
||||
Version: 7.11
|
||||
@@ -0,0 +1,2 @@
|
||||
Downloading http://mirror.yandex.ru/debian/dists/wheezy/Release...
|
||||
ERROR: unable to fetch mirror: component life not available in repo [mirror4]: http://mirror.yandex.ru/debian/ wheezy, use -force-components to override
|
||||
@@ -0,0 +1,2 @@
|
||||
Downloading http://mirror.yandex.ru/debian/dists/wheezy/Release...
|
||||
ERROR: unable to fetch mirror: architecture nano68 not available in repo [mirror5]: http://mirror.yandex.ru/debian/ wheezy, use -force-architectures to override
|
||||
@@ -0,0 +1,3 @@
|
||||
Downloading http://mirror.yandex.ru/debian/dists/suslik/InRelease...
|
||||
Downloading http://mirror.yandex.ru/debian/dists/suslik/Release...
|
||||
ERROR: unable to fetch mirror: HTTP code 404 while fetching http://mirror.yandex.ru/debian/dists/suslik/Release
|
||||
@@ -0,0 +1,4 @@
|
||||
Downloading http://mirror.yandex.ru/debian/dists/wheezy/Release...
|
||||
|
||||
Mirror [mirror7]: http://mirror.yandex.ru/debian/ wheezy successfully added.
|
||||
You can run 'aptly mirror update mirror7' to download repository contents.
|
||||
@@ -0,0 +1,20 @@
|
||||
Name: mirror7
|
||||
Archive Root URL: http://mirror.yandex.ru/debian/
|
||||
Distribution: wheezy
|
||||
Components: main, contrib
|
||||
Architectures: i386, amd64
|
||||
Download Sources: no
|
||||
Download .udebs: no
|
||||
Last update: never
|
||||
|
||||
Information from release file:
|
||||
Architectures: amd64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc s390 s390x sparc
|
||||
Codename: wheezy
|
||||
Components: main contrib non-free
|
||||
Date: Sat, 04 Jun 2016 11:47:54 UTC
|
||||
Description: Debian 7.11 Released 04 June 2016
|
||||
|
||||
Label: Debian
|
||||
Origin: Debian
|
||||
Suite: oldstable
|
||||
Version: 7.11
|
||||
@@ -0,0 +1,2 @@
|
||||
Downloading http://mirror.yandex.ru/debian/dists/wheezy/Release...
|
||||
ERROR: unable to add mirror: mirror with name mirror8 already exists
|
||||
@@ -0,0 +1,8 @@
|
||||
Downloading http://mirror.yandex.ru/debian/dists/wheezy-backports/InRelease...
|
||||
gpgv: RSA key ID 46925553
|
||||
gpgv: Good signature from "Debian Archive Automatic Signing Key (7.0/wheezy) <ftpmaster@debian.org>"
|
||||
gpgv: RSA key ID 2B90D010
|
||||
gpgv: Good signature from "Debian Archive Automatic Signing Key (8/jessie) <ftpmaster@debian.org>"
|
||||
|
||||
Mirror [mirror9]: http://mirror.yandex.ru/debian/ wheezy-backports successfully added.
|
||||
You can run 'aptly mirror update mirror9' to download repository contents.
|
||||
@@ -0,0 +1,21 @@
|
||||
Name: mirror9
|
||||
Archive Root URL: http://mirror.yandex.ru/debian/
|
||||
Distribution: wheezy-backports
|
||||
Components: main, contrib, non-free
|
||||
Architectures: amd64, armel, armhf, i386, ia64, kfreebsd-amd64, kfreebsd-i386, mips, mipsel, powerpc, s390, s390x, sparc
|
||||
Download Sources: no
|
||||
Download .udebs: no
|
||||
Last update: never
|
||||
|
||||
Information from release file:
|
||||
Architectures: amd64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc s390 s390x sparc
|
||||
ButAutomaticUpgrades: yes
|
||||
Codename: wheezy-backports
|
||||
Components: main contrib non-free
|
||||
Description: Backports for the Wheezy Distribution
|
||||
|
||||
Label: Debian Backports
|
||||
NotAutomatic: yes
|
||||
Origin: Debian Backports
|
||||
Suite: wheezy-backports
|
||||
Version:
|
||||
@@ -0,0 +1 @@
|
||||
Mirror `mirror1` has been removed.
|
||||
@@ -0,0 +1 @@
|
||||
ERROR: unable to show: mirror with name mirror1 not found
|
||||
@@ -0,0 +1,3 @@
|
||||
Mirror `wheezy-main` was used to create following snapshots:
|
||||
* [wheez]: Snapshot from mirror [wheezy-main]: http://mirror.yandex.ru/debian/ wheezy
|
||||
ERROR: won't delete mirror with snapshots, use -force to override
|
||||
@@ -0,0 +1 @@
|
||||
Mirror `wheezy-main` has been removed.
|
||||
@@ -0,0 +1 @@
|
||||
ERROR: unable to drop: mirror with name mirror1 not found
|
||||
@@ -0,0 +1 @@
|
||||
Mirror [wheezy-main]: http://mirror.yandex.ru/debian/ wheezy [src] successfully updated.
|
||||
@@ -0,0 +1,22 @@
|
||||
Name: wheezy-main
|
||||
Archive Root URL: http://mirror.yandex.ru/debian/
|
||||
Distribution: wheezy
|
||||
Components: main
|
||||
Architectures: i386, amd64
|
||||
Download Sources: yes
|
||||
Download .udebs: no
|
||||
Filter: nginx
|
||||
Filter With Deps: yes
|
||||
Number of packages: 56121
|
||||
|
||||
Information from release file:
|
||||
Architectures: amd64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc s390 s390x sparc
|
||||
Codename: wheezy
|
||||
Components: main contrib non-free
|
||||
Date: Sat, 26 Apr 2014 09:27:11 UTC
|
||||
Description: Debian 7.5 Released 26 April 2014
|
||||
|
||||
Label: Debian
|
||||
Origin: Debian
|
||||
Suite: stable
|
||||
Version: 7.5
|
||||
@@ -0,0 +1 @@
|
||||
ERROR: unable to edit: mirror with name wheezy-main not found
|
||||
@@ -0,0 +1 @@
|
||||
Mirror [wheezy-main]: http://mirror.yandex.ru/debian/ wheezy successfully updated.
|
||||
@@ -0,0 +1,20 @@
|
||||
Name: wheezy-main
|
||||
Archive Root URL: http://mirror.yandex.ru/debian/
|
||||
Distribution: wheezy
|
||||
Components: main
|
||||
Architectures: i386, amd64
|
||||
Download Sources: no
|
||||
Download .udebs: no
|
||||
Number of packages: 56121
|
||||
|
||||
Information from release file:
|
||||
Architectures: amd64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc s390 s390x sparc
|
||||
Codename: wheezy
|
||||
Components: main contrib non-free
|
||||
Date: Sat, 26 Apr 2014 09:27:11 UTC
|
||||
Description: Debian 7.5 Released 26 April 2014
|
||||
|
||||
Label: Debian
|
||||
Origin: Debian
|
||||
Suite: stable
|
||||
Version: 7.5
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user