base
This commit is contained in:
parent
e9f8d9a714
commit
3e77434882
21 changed files with 1549 additions and 0 deletions
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
/deb.apt-mirror/var
|
||||||
|
/root
|
||||||
|
/squashfs
|
59
apk.alpine.py
Executable file
59
apk.alpine.py
Executable file
|
@ -0,0 +1,59 @@
|
||||||
|
#! /usr/bin/env python3
|
||||||
|
|
||||||
|
import os
|
||||||
|
import subprocess
|
||||||
|
|
||||||
|
ROOT = 'rsync://rsync.kyberorg.fi/alpine'
|
||||||
|
ROOT = 'rsync://alpine.mirror.wearetriple.com/alpine'
|
||||||
|
ROOT = 'rsync://mirrors.dotsrc.org/alpine'
|
||||||
|
ROOT = 'rsync://uk.alpinelinux.org/alpine'
|
||||||
|
ARCH = 'x86_64'
|
||||||
|
VERSIONS = [
|
||||||
|
'latest-stable',
|
||||||
|
]
|
||||||
|
|
||||||
|
TARGETS = {
|
||||||
|
'latest-stable': [
|
||||||
|
'releases',
|
||||||
|
'main',
|
||||||
|
'community',
|
||||||
|
],
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def sync(source, target):
|
||||||
|
args = ['rsync',
|
||||||
|
'--archive',
|
||||||
|
# '--checksum',
|
||||||
|
'--delete-before',
|
||||||
|
# '--dry-run',
|
||||||
|
'--no-motd',
|
||||||
|
'--partial',
|
||||||
|
'--progress',
|
||||||
|
'--verbose',
|
||||||
|
source,
|
||||||
|
target,
|
||||||
|
]
|
||||||
|
print()
|
||||||
|
print()
|
||||||
|
print('←', source)
|
||||||
|
print('→', target)
|
||||||
|
subprocess.call(args)
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
file = os.path.realpath(__file__)
|
||||||
|
root = os.path.dirname(file)
|
||||||
|
root = os.path.join(root, 'root', 'apk', 'alpine')
|
||||||
|
sources = []
|
||||||
|
for version in VERSIONS:
|
||||||
|
for target in TARGETS[version]:
|
||||||
|
sources.append(os.path.join(version, target, ARCH) + os.sep)
|
||||||
|
for source in sources:
|
||||||
|
target = os.path.join(root, source)
|
||||||
|
os.makedirs(os.path.dirname(target), exist_ok=True)
|
||||||
|
sync(os.path.join(ROOT, source), target)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
1
deb.apt-mirror/mirror/deb
Symbolic link
1
deb.apt-mirror/mirror/deb
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
../../root/deb
|
1
deb.apt-mirror/mirror/deb.debian.org
Symbolic link
1
deb.apt-mirror/mirror/deb.debian.org
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
deb/debian
|
1
deb.apt-mirror/mirror/download.docker.com
Symbolic link
1
deb.apt-mirror/mirror/download.docker.com
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
deb/docker
|
1
deb.apt-mirror/mirror/packages.gitlab.com
Symbolic link
1
deb.apt-mirror/mirror/packages.gitlab.com
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
deb/gitlab
|
1
deb.apt-mirror/mirror/pkgs.zabbly.com
Symbolic link
1
deb.apt-mirror/mirror/pkgs.zabbly.com
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
deb/incus
|
44
deb.check.py
Executable file
44
deb.check.py
Executable file
|
@ -0,0 +1,44 @@
|
||||||
|
#! /usr/bin/python3 -B
|
||||||
|
|
||||||
|
import os
|
||||||
|
import shutil
|
||||||
|
import subprocess
|
||||||
|
|
||||||
|
ALGO_NAME = "SHA256"
|
||||||
|
VAR_NAME = "var"
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
root_directory = os.path.dirname(os.path.realpath(__file__))
|
||||||
|
root_directory = os.path.join(root_directory, 'deb.apt-mirror')
|
||||||
|
hashes_file = os.path.join(root_directory, VAR_NAME, ALGO_NAME)
|
||||||
|
with open(hashes_file) as f:
|
||||||
|
lines = f.readlines()
|
||||||
|
hashes_by_names = {}
|
||||||
|
for line in lines:
|
||||||
|
hash, name = line.split()
|
||||||
|
hashes_by_names[name] = hash
|
||||||
|
files = len(hashes_by_names)
|
||||||
|
i = 1
|
||||||
|
ko = 0
|
||||||
|
os.chdir(os.path.join(root_directory, "mirror"))
|
||||||
|
command = ALGO_NAME.lower() + 'sum "{}"'
|
||||||
|
for name, hash in sorted(hashes_by_names.items()):
|
||||||
|
columns, rows = shutil.get_terminal_size()
|
||||||
|
progress = " ".join([str(files), str(ko), str(i), ""])
|
||||||
|
available = columns - len(progress) - 1
|
||||||
|
short_name = name[-available:]
|
||||||
|
padding = " " * (available- len(short_name))
|
||||||
|
print("\r", progress, short_name, padding, sep="", end="", flush=True)
|
||||||
|
output = subprocess.getoutput(command.format(name))
|
||||||
|
h, *_ = output.split()
|
||||||
|
if h != hash:
|
||||||
|
print()
|
||||||
|
try:
|
||||||
|
os.remove(name)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
ko += 1
|
||||||
|
i += 1
|
||||||
|
print()
|
||||||
|
print(ko)
|
25
deb.fix.sh
Executable file
25
deb.fix.sh
Executable file
|
@ -0,0 +1,25 @@
|
||||||
|
#! /usr/bin/env bash
|
||||||
|
FILE="$(realpath "${BASH_SOURCE[0]}")"
|
||||||
|
ROOT="$(dirname "${FILE}")"
|
||||||
|
|
||||||
|
ERROR='→ ERROR! ERROR! ERROR! ←'
|
||||||
|
DISTS=(
|
||||||
|
'bookworm' 'bookworm-backports' 'bookworm-updates'
|
||||||
|
)
|
||||||
|
MISSING='Contents-all.gz'
|
||||||
|
SECTIONS=('main' 'non-free-firmware' 'contrib' 'non-free')
|
||||||
|
|
||||||
|
DEBIAN_ROOT='debian/dists'
|
||||||
|
LOCAL_ROOT="${ROOT}/root/deb/debian/${DEBIAN_ROOT}"
|
||||||
|
REMOTE_ROOT="https://deb.debian.org/${DEBIAN_ROOT}"
|
||||||
|
|
||||||
|
for dist in "${DISTS[@]}" ; do
|
||||||
|
for section in "${SECTIONS[@]}" ; do
|
||||||
|
cd "${LOCAL_ROOT}/${dist}/${section}"
|
||||||
|
rm --force "${MISSING}"
|
||||||
|
wget "${REMOTE_ROOT}/${dist}/${section}/${MISSING}" &> /dev/null
|
||||||
|
if [ ${?} -ne 0 ] ; then
|
||||||
|
echo "${ERROR}"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
3
deb.list.d/bookworm/gitlab.list
Normal file
3
deb.list.d/bookworm/gitlab.list
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
#deb-amd64 https://packages.gitlab.com/gitlab/gitlab-ce/debian bookworm main
|
||||||
|
deb-amd64 https://packages.gitlab.com/runner/gitlab-runner/debian bookworm main
|
||||||
|
clean https://packages.gitlab.com
|
2
deb.list.d/bookworm/incus.list
Normal file
2
deb.list.d/bookworm/incus.list
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
deb-amd64 https://pkgs.zabbly.com/incus/stable bookworm main
|
||||||
|
clean https://pkgs.zabbly.com
|
8
deb.list.d/debian.list
Normal file
8
deb.list.d/debian.list
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
deb-amd64 https://deb.debian.org/debian bookworm main non-free-firmware contrib non-free
|
||||||
|
deb-amd64 https://deb.debian.org/debian bookworm-backports main non-free-firmware contrib non-free
|
||||||
|
deb-amd64 https://deb.debian.org/debian bookworm-updates main non-free-firmware contrib non-free
|
||||||
|
deb-amd64 https://deb.debian.org/debian-security bookworm-security main non-free-firmware contrib non-free
|
||||||
|
|
||||||
|
deb-amd64 https://deb.debian.org/debian-security bullseye-security main
|
||||||
|
|
||||||
|
clean https://deb.debian.org
|
2
deb.list.d/docker.list
Normal file
2
deb.list.d/docker.list
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
deb-amd64 https://download.docker.com/linux/debian bookworm stable
|
||||||
|
clean https://download.docker.com
|
2
deb.list.d/mirror.list
Normal file
2
deb.list.d/mirror.list
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
set postmirror_script "$var_path/clean.sh"
|
||||||
|
set nthreads 16
|
41
deb.sync.py
Executable file
41
deb.sync.py
Executable file
|
@ -0,0 +1,41 @@
|
||||||
|
#! /usr/bin/python3 -B
|
||||||
|
|
||||||
|
import os
|
||||||
|
import shutil
|
||||||
|
import subprocess
|
||||||
|
|
||||||
|
LIST_DIRECTORY = "deb.list.d"
|
||||||
|
LIST_FILE = "deb.list"
|
||||||
|
SKELETON = "skel"
|
||||||
|
VARIABLE = "var"
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
# directories
|
||||||
|
root_directory = os.path.dirname(os.path.realpath(__file__))
|
||||||
|
command_directory = os.path.join(root_directory, 'deb.apt-mirror')
|
||||||
|
# files
|
||||||
|
lines = ['set base_path "{}"'.format(command_directory) + os.linesep]
|
||||||
|
os.chdir(root_directory)
|
||||||
|
for directory, _, files in os.walk(LIST_DIRECTORY):
|
||||||
|
for file in files:
|
||||||
|
with open(os.path.join(directory, file)) as f:
|
||||||
|
lines.append(os.linesep)
|
||||||
|
lines.extend(f.readlines())
|
||||||
|
# write
|
||||||
|
os.chdir(root_directory)
|
||||||
|
string = "".join(lines)
|
||||||
|
print(string, end="")
|
||||||
|
with open(LIST_FILE, "w") as file:
|
||||||
|
file.write(string)
|
||||||
|
# wipe
|
||||||
|
os.chdir(command_directory)
|
||||||
|
shutil.rmtree(SKELETON, ignore_errors=True)
|
||||||
|
shutil.rmtree(VARIABLE, ignore_errors=True)
|
||||||
|
# run
|
||||||
|
os.chdir(root_directory)
|
||||||
|
subprocess.call([os.path.join(root_directory, "deb.fork"), LIST_FILE])
|
||||||
|
os.remove(LIST_FILE)
|
||||||
|
# wipe
|
||||||
|
os.chdir(command_directory)
|
||||||
|
shutil.rmtree(SKELETON, ignore_errors=True)
|
13
msys2.fix.sh
Executable file
13
msys2.fix.sh
Executable file
|
@ -0,0 +1,13 @@
|
||||||
|
#! /usr/bin/env bash
|
||||||
|
FILE="$(realpath "${BASH_SOURCE[0]}")"
|
||||||
|
cd "$(dirname "${FILE}")"
|
||||||
|
|
||||||
|
ROOT='root/msys2'
|
||||||
|
|
||||||
|
rm s/msys/*.tar
|
||||||
|
rm i/mingw/mingw64/*.tar
|
||||||
|
|
||||||
|
rm -fr "${ROOT}/msys/x86_64" ; mv -i s/msys "${ROOT}/msys/x86_64"
|
||||||
|
rm -fr "${ROOT}/mingw" ; mv -i i/mingw "${ROOT}/"
|
||||||
|
|
||||||
|
rmdir s i
|
60
msys2.i.py
Executable file
60
msys2.i.py
Executable file
|
@ -0,0 +1,60 @@
|
||||||
|
#! /usr/bin/python3 -B
|
||||||
|
|
||||||
|
import os
|
||||||
|
import requests
|
||||||
|
import shutil
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
import tarfile
|
||||||
|
|
||||||
|
ARCHITECTURE = 'x86_64'
|
||||||
|
REPOSITORY = 'https://repo.msys2.org'
|
||||||
|
|
||||||
|
|
||||||
|
def download(url, file):
|
||||||
|
print(file)
|
||||||
|
response = requests.get(f'{url}/{file}')
|
||||||
|
open(file, 'bw').write(response.content)
|
||||||
|
|
||||||
|
|
||||||
|
def download_subrepo(root, directory, prefix):
|
||||||
|
path = os.path.join(root, directory)
|
||||||
|
print()
|
||||||
|
print(path)
|
||||||
|
os.makedirs(path)
|
||||||
|
os.chdir(path)
|
||||||
|
url = f'{REPOSITORY}/{directory}'
|
||||||
|
for suffix in ['files', 'db']:
|
||||||
|
archive = f'{prefix}.{suffix}'
|
||||||
|
download(url, f'{archive}.sig')
|
||||||
|
download(url, f'{archive}')
|
||||||
|
subprocess.run(['unzstd',
|
||||||
|
f'{archive}',
|
||||||
|
'-o', f'{archive}.tar'])
|
||||||
|
archive = tarfile.open(f'{archive}.tar')
|
||||||
|
packages = [m for m in archive.getmembers() if m.isfile()]
|
||||||
|
names = []
|
||||||
|
for package in packages:
|
||||||
|
desc = archive.extractfile(package)
|
||||||
|
desc.readline()
|
||||||
|
names.append(desc.readline().strip().decode('u8'))
|
||||||
|
archive.close()
|
||||||
|
for name in names:
|
||||||
|
archive = f'{name}'
|
||||||
|
signature = f'{archive}.sig'
|
||||||
|
download(url, f'{archive}.sig')
|
||||||
|
download(url, f'{archive}')
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
_, directory, *_ = sys.argv
|
||||||
|
output_directory = os.path.realpath(directory)
|
||||||
|
print(output_directory)
|
||||||
|
if os.path.exists(output_directory):
|
||||||
|
shutil.rmtree(output_directory)
|
||||||
|
# download_subrepo(output_directory, 'msys', 'msys')
|
||||||
|
download_subrepo(output_directory, 'mingw/mingw64', 'mingw64')
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
60
msys2.s.py
Executable file
60
msys2.s.py
Executable file
|
@ -0,0 +1,60 @@
|
||||||
|
#! /usr/bin/python3 -B
|
||||||
|
|
||||||
|
import os
|
||||||
|
import requests
|
||||||
|
import shutil
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
import tarfile
|
||||||
|
|
||||||
|
ARCHITECTURE = 'x86_64'
|
||||||
|
REPOSITORY = 'https://repo.msys2.org'
|
||||||
|
|
||||||
|
|
||||||
|
def download(url, file):
|
||||||
|
print(file)
|
||||||
|
response = requests.get(f'{url}/{file}')
|
||||||
|
open(file, 'bw').write(response.content)
|
||||||
|
|
||||||
|
|
||||||
|
def download_subrepo(root, directory, prefix):
|
||||||
|
path = os.path.join(root, directory)
|
||||||
|
print()
|
||||||
|
print(path)
|
||||||
|
os.makedirs(path)
|
||||||
|
os.chdir(path)
|
||||||
|
url = f'{REPOSITORY}/{directory}/{ARCHITECTURE}'
|
||||||
|
for suffix in ['files', 'db']:
|
||||||
|
archive = f'{prefix}.{suffix}'
|
||||||
|
download(url, f'{archive}.sig')
|
||||||
|
download(url, f'{archive}')
|
||||||
|
subprocess.run(['unzstd',
|
||||||
|
f'{archive}',
|
||||||
|
'-o', f'{archive}.tar'])
|
||||||
|
archive = tarfile.open(f'{archive}.tar')
|
||||||
|
packages = [m for m in archive.getmembers() if m.isfile()]
|
||||||
|
names = []
|
||||||
|
for package in packages:
|
||||||
|
desc = archive.extractfile(package)
|
||||||
|
desc.readline()
|
||||||
|
names.append(desc.readline().strip().decode('u8'))
|
||||||
|
archive.close()
|
||||||
|
for name in names:
|
||||||
|
archive = f'{name}'
|
||||||
|
signature = f'{archive}.sig'
|
||||||
|
download(url, f'{archive}.sig')
|
||||||
|
download(url, f'{archive}')
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
_, directory, *_ = sys.argv
|
||||||
|
output_directory = os.path.realpath(directory)
|
||||||
|
print(output_directory)
|
||||||
|
if os.path.exists(output_directory):
|
||||||
|
shutil.rmtree(output_directory)
|
||||||
|
download_subrepo(output_directory, 'msys', 'msys')
|
||||||
|
# download_subrepo(output_directory, 'mingw', 'mingw64')
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
95
rpm.alma.py
Executable file
95
rpm.alma.py
Executable file
|
@ -0,0 +1,95 @@
|
||||||
|
#! /usr/bin/env python3
|
||||||
|
|
||||||
|
import os
|
||||||
|
import subprocess
|
||||||
|
|
||||||
|
ROOT = 'rsync://rsync.repo.almalinux.org/almalinux'
|
||||||
|
ARCH = 'x86_64'
|
||||||
|
VERSIONS = [
|
||||||
|
'8',
|
||||||
|
'9',
|
||||||
|
]
|
||||||
|
|
||||||
|
KEY = 'RPM-GPG-KEY-AlmaLinux'
|
||||||
|
TARGETS = {
|
||||||
|
'8': [
|
||||||
|
'AppStream',
|
||||||
|
'BaseOS',
|
||||||
|
# 'HighAvailability',
|
||||||
|
# 'NFV',
|
||||||
|
# 'PowerTools',
|
||||||
|
# 'RT',
|
||||||
|
# 'ResilientStorage',
|
||||||
|
# 'SAP',
|
||||||
|
# 'SAPHANA',
|
||||||
|
'cloud',
|
||||||
|
# 'devel',
|
||||||
|
'extras',
|
||||||
|
# 'isos',
|
||||||
|
# 'live',
|
||||||
|
'metadata',
|
||||||
|
# 'plus',
|
||||||
|
# 'raspberrypi',
|
||||||
|
# 'synergy',
|
||||||
|
],
|
||||||
|
'9': [
|
||||||
|
'AppStream',
|
||||||
|
'BaseOS',
|
||||||
|
# 'CRB',
|
||||||
|
# 'HighAvailability',
|
||||||
|
# 'NFV',
|
||||||
|
# 'RT',
|
||||||
|
# 'ResilientStorage',
|
||||||
|
# 'SAP',
|
||||||
|
# 'SAPHANA',
|
||||||
|
'cloud',
|
||||||
|
# 'devel',
|
||||||
|
'extras',
|
||||||
|
# 'isos',
|
||||||
|
# 'live',
|
||||||
|
'metadata',
|
||||||
|
# 'plus',
|
||||||
|
# 'raspberrypi',
|
||||||
|
# 'synergy',
|
||||||
|
],
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def sync(source, target):
|
||||||
|
args = ['rsync',
|
||||||
|
'--archive',
|
||||||
|
# '--checksum',
|
||||||
|
'--delete-before',
|
||||||
|
# '--dry-run',
|
||||||
|
'--inplace',
|
||||||
|
'--no-motd',
|
||||||
|
'--partial',
|
||||||
|
'--progress',
|
||||||
|
'--verbose',
|
||||||
|
source,
|
||||||
|
target,
|
||||||
|
]
|
||||||
|
print()
|
||||||
|
print()
|
||||||
|
print('←', source)
|
||||||
|
print('→', target)
|
||||||
|
subprocess.call(args)
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
file = os.path.realpath(__file__)
|
||||||
|
root = os.path.dirname(file)
|
||||||
|
root = os.path.join(root, 'root', 'rpm', 'alma')
|
||||||
|
sources = [KEY]
|
||||||
|
for version in VERSIONS:
|
||||||
|
sources.append(f'{KEY}-{version}')
|
||||||
|
for target in TARGETS[version]:
|
||||||
|
sources.append(os.path.join(version, target, ARCH) + os.sep)
|
||||||
|
for source in sources:
|
||||||
|
target = os.path.join(root, source)
|
||||||
|
os.makedirs(os.path.dirname(target), exist_ok=True)
|
||||||
|
sync(os.path.join(ROOT, source), target)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
62
rpm.epel.py
Executable file
62
rpm.epel.py
Executable file
|
@ -0,0 +1,62 @@
|
||||||
|
#! /usr/bin/env python3
|
||||||
|
|
||||||
|
import os
|
||||||
|
import subprocess
|
||||||
|
|
||||||
|
ROOT = 'rsync://fr2.rpmfind.net/linux/epel'
|
||||||
|
ARCH = 'x86_64'
|
||||||
|
VERSIONS = [
|
||||||
|
'8',
|
||||||
|
'9',
|
||||||
|
]
|
||||||
|
|
||||||
|
KEY = 'RPM-GPG-KEY-EPEL'
|
||||||
|
TARGETS = {
|
||||||
|
'8': [
|
||||||
|
'Everything',
|
||||||
|
# 'Modular',
|
||||||
|
],
|
||||||
|
'9': [
|
||||||
|
'Everything',
|
||||||
|
],
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def sync(source, target):
|
||||||
|
args = ['rsync',
|
||||||
|
'--archive',
|
||||||
|
# '--checksum',
|
||||||
|
'--delete-before',
|
||||||
|
# '--dry-run',
|
||||||
|
'--inplace',
|
||||||
|
'--no-motd',
|
||||||
|
'--partial',
|
||||||
|
'--progress',
|
||||||
|
'--verbose',
|
||||||
|
source,
|
||||||
|
target,
|
||||||
|
]
|
||||||
|
print()
|
||||||
|
print()
|
||||||
|
print('←', source)
|
||||||
|
print('→', target)
|
||||||
|
subprocess.call(args)
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
file = os.path.realpath(__file__)
|
||||||
|
root = os.path.dirname(file)
|
||||||
|
root = os.path.join(root, 'root', 'rpm', 'epel')
|
||||||
|
sources = [KEY]
|
||||||
|
for version in VERSIONS:
|
||||||
|
sources.append(f'{KEY}-{version}')
|
||||||
|
for target in TARGETS[version]:
|
||||||
|
sources.append(os.path.join(version, target, ARCH) + os.sep)
|
||||||
|
for source in sources:
|
||||||
|
target = os.path.join(root, source)
|
||||||
|
os.makedirs(os.path.dirname(target), exist_ok=True)
|
||||||
|
sync(os.path.join(ROOT, source), target)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
Loading…
Reference in a new issue