This translation is older than the original page and might be outdated. See what has changed.

FIXME This page is not fully translated, yet. Please help completing the translation.
(remove this paragraph once the translation is finished)

Opkg paket yöneticisi

Çoğu Linux dağıtımı gibi (veya Android veya iOS gibi mobil cihaz işletim sistemleri gibi), sistemin işlevselliği hazır paketleri paket depolarından (yerel veya Internet'ten) indirip yükleyerek oldukça belirgin biçimde yükseltilebilir.

opkg yardımcısı bu iş için kullanılan hafif paket yöneticisidir. Opkg bir ipkg çatalıdır, NSLU2'nin gömülü cihazların stok bellenimlerine yazılım eklemek için tasarlanmış olan Optware'ında kullanılan paket yöneticisi.

Ipkg sadece ayrı bir dizine (/opt gibi) yazılım ekleme yolu iken, Opkg kök dosya sistemi için, çekirdek modüllerini ve sürücülerini de kapsayan bir tam paket yöneticisidir.

Opkg, gömülü cihazlar için Entware deposunda da (bir OpenWrt topluluk paketleri debosu çatallanması) kullanıldığından bazen Entware olarak da anılır.

Paket yöneticisi opkg bağımlılıkları depolardaki paketlerle çözmeye girişir - başarısız olursa, bir hata bildirir ve o paketin yüklenmesini iptal eder.

Üçüncü-taraf paketler içeren eksik bağımlılıklar muhtemelen o paketin kaynağında bulunurlar.
Bağımlılık hatalarını yoksaymak için, -force-depends bayrağını geçirin.

:!: Eğer bir enstantane / gövde / uç versiyon kullanıyorsan, depodaki paket senin çekirdek versiyonundan daha yeni bir çekirdek versiyonu için ise paket yükleme başarısız olabilir.
Bu durumda, “Cannot satisfy the following dependencies for...” (“... için şu bağımlılıklar tatmin edilemiyor”) hata mesajını alırsın.
OpenWrt bellenimin bu gibi kullanımı için, gerekli tüm paketleri içeren çakılabilir bir imaj yapmak için İmaj Oluşturucu kullanılması sıcakça önerilir.

:!: Gövde/enstantane'deyken, çekirdek ve kmod paketleri hold(“sabitle”) ile işaretlenmişlerdir, opkg upgrade komutu onları yükseltmeyi denemeyecektir.

# opkg
opkg must have one sub-command argument:
usage: opkg [options...] sub-command [arguments...]
where sub-command is one of:

glob desenleri kullanabilirsin.

update Uygulanabilir paket listesini güncelle
Bu sizin yüklemeniz için, basitçe şunun gibi bir dosya getirir: örnek, ve onu RAM bölümü üstünde /tmp/opkg-lists altına depolar. LEDE 17.01 itiparı ile, opkg yükseltmesi sonrası, bu dizin yaklaşık 450 KiB (kibibyte) alan işgal eder. OPKG paketleri yüklemek veya yükseltmek için veya haklarında bilgi yazmak için, bu dizinin içeriğine gereksinir. Bu dizinin içeriğini biraz RAM boşaltmak için güvenle silebilirsiniz (içeriği yeniden başlada da kaybedilir), yeni bir paket yüklemeden önce yeniden opkg update çalıştırmayı unutma.
upgrade <pkgs> Paketleri yükselt
Bir grup paketi yükseltmek için, opkg upgrade paketadı1 paketadı2 çalıştır. Yükseltilebilir paketlerin br listesi opkg list-upgrdadable komutuyla elde edilebilir.
------------
:!: OpenWrt bellenimi temel sistemi sıkıştırılmış sadece-okunur bir bölümde depoladığından, temel sistem paketlerine her güncelleme okunur-yazılır bölüme yazılacaktır ve bu nedenle sadece, sıkıştırılmış temel sistem bölümündeki daha eski versiyonun üzerine yazıyor olsa kaplayacağı alandan, daha çok alan kullanacaktır. Dahili çakma belleğindeki kullanılabilir alanın ve temel sistem paketlerinin güncellemeleri için gereken alanın kontrol edilmesi önerilir.
Yüklenmiş paketlerin güncellenmesinde, zaten okunur-yazılır bölümde olduklarından bu meselenin olmaması gerekir, yenisi öncekinin üzerine yazılır, yine de yükseltmeden önce kontrol etmenin zararı olmaz.
Genel bir temel kural olarak, 8 MiB veya daha çok toplam balkı bellek boyutuna sahip ve sonradan yüklenmiş paket içermeyen cihazlarda temel paketleri guncellerken alan meselesi olmamalı, ve elbette Extroota ayarlanmış cihazlarda da alan sorunu olmayacaktır.
Serbest alanı kontrol etmek için SSH'tan df -h / yaz veya Luci web arayüzünden Yazılım sayfasına (System submenu → Software) git.
Güncellemek istediğin paketlerin büyüklüğünü, SSH'tan opkg info paket-adı yazarak veya Yazılım sayfasından (Software page) kontrol edebilirsin, veya vikide Paket Tablosu'nu kontrol edebilirsin. OPKG'de “büyüklük” sıkıştırılmış arşivdeki paket boyutuyken, jffs2 veya ubifs okunur-yazılır bölüm yüklenen dosyalarda aynı sıkıştırma algoritmasını kullanacaktır, böylece yüklendiğinde benzer boyutta olacaktır.
:!: Geliştirme enstantanelerindeki paket depoları inşa botlarınca yeni sürümlere oldukça sık güncellenirler, bu yüzden bazı paketleri kırık çekirdek bağımlılıkları veya çekirdekle ilgili paketler sebebiyle güncelleyemeyecek olman çok olası. O durumda, opkg ile yükseltmek yerine İmaj İnşacısı kullanman ve ihtiyacın olan tüm paketlerle yeni bir bellenim yapman ve çakman önerilir.
install <pkgs|url> Paket(ler)i yükle
Örnekler:
opkg install hiawatha
opkg install http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/hiawatha_7.7-2_ar71xx.ipk
opkg install /tmp/hiawatha_7.7-2_ar71xx.ipk
configure <pkgs> Açılmış paket(ler)i yapılandır
remove <pkgs|globp> Paket(ler)i kaldır
flag <flag> <pkgs> Bir veya birçok paketi işaretle. Çağrı başına sadece bir işarete izin verilir. Kullanılabilir işaretler:
hold • noprune • user • ok • installed • unpacked
list [pkg|globp] Kullanılabilir paketleri listele
Package name - Version - Description

Tanım satır sonları içerebilir, haliyle basitçe grep kullanmak, grep satır-temelli olduğundan uygunsuz olacaktır.

list-installed Kurulu paketleri listele
list-upgradable Kurulu ve yükseltilebilir paketleri listele
list-changed-conffiles Kullanıcıca değişiklik yapılmış yapılandırma dosyalarını listele
files <pkg> <paket>e ait dosyaları listele. Bunun çalıması için paketin halihazırda kurulmuş olması gerekir. Örnek:
opkg files asterisk18
Package asterisk18 (1.8.4.4-1) is installed on root and has the following files:
/usr/lib/asterisk/modules/res_rtp_multicast.so
/usr/lib/asterisk/modules/codec_ulaw.so
/etc/asterisk/features.conf
/usr/lib/asterisk/modules/format_wav_gsm.so
/usr/lib/asterisk/modules/app_macro.so
/usr/lib/asterisk/modules/chan_sip.so
/usr/lib/asterisk/modules/app_dial.so
/usr/lib/asterisk/modules/app_playback.so
/usr/lib/asterisk/modules/format_gsm.so
/usr/lib/asterisk/modules/func_callerid.so
/usr/lib/asterisk/modules/func_timeout.so
/etc/asterisk/asterisk.conf
/etc/asterisk/modules.conf
/usr/lib/asterisk/modules/format_wav.so
/etc/asterisk/extensions.conf
/etc/init.d/asterisk
/etc/asterisk/manager.conf
/usr/lib/asterisk/modules/res_rtp_asterisk.so
/etc/asterisk/logger.conf
/etc/asterisk/rtp.conf
/usr/lib/asterisk/modules/codec_gsm.so
/etc/asterisk/indications.conf
/usr/lib/asterisk/modules/func_strings.so
/usr/lib/asterisk/modules/app_echo.so
/usr/lib/asterisk/modules/format_pcm.so
/etc/asterisk/sip_notify.conf
/etc/asterisk/sip.conf
/etc/default/asterisk
/usr/sbin/asterisk
/usr/lib/asterisk/modules/pbx_config.so
/usr/lib/asterisk/modules/func_logic.so
search <file|globp> <dosya>'yı sağlayan paketi bul
info [pkg|globp] <paket> için düm bilgiyi göster
Package: horst
Version: 2.0-rc1-2
Depends: libncurses
Provides:
Status: install user installed
Section: net
Architecture: ar71xx
Maintainer: Bruno Randolf <br1@einfach.org>
MD5Sum: 378cea9894ec971c419876e822666a6a
Size: 19224
Filename: horst_2.0-rc1-2_ar71xx.ipk
Source: feeds/packages/net/horst
Description: [horst] is a scanning and analysis tool for 802.11 wireless networks and
 especially IBSS (ad-hoc) mode and mesh networks (OLSR).

Not 1: Boyut gzip ile sıkıştırılmş tar arşivinin boyutudur. Kurulumda paket tar'dan çıkarılır ve açılır, ama tekrar JFFS2 kendisi sıkıştırma kullanır.
Not 2: JFFS2 sıkıştırması şeffaf olduğundan ls gibi komutlar herzaman açılmış dosya boyutunu gösterir.

status [pkg|globp] <pkt> için tüm durumu göster
download <pkg> Geçerli dizine <paket>i indir
compare-versions <v1> <op> <v2> v1 ve v2 versiyonlarını <=, <, >, >=, =, << veya >> işleçlerini kullanarak karşılaştır
print-architecture Yüklenebilir paket mimarilerini listele
whatdepends [-A] [pkgname|pat]+ Bu sadece kurulu paketler için işler. Bir paket ve tüm bağımlılıklarının ihtiyaç duyacağı depolama alanını bilmek istersen, bu bilgiyi info-seçeneğiyle birleştirmek zorunda olacaksın.
whatdependsrec [-A] [pkgname|pat]+ Bu sadece kurulu paketlerde çalışır. Bir paket ve tüm bağımlılıklarının ihtiyaç duyacağı depolama alanını bilmek istersen, bu bilgiyi info-seçeneğiyle birleştirmek zorunda olacaksın.
whatprovides [-A] [pkgname|pat]+
whatconflicts [-A] [pkgname|pat]+
whatreplaces [-A] [pkgname|pat]+
Seçenek Uzun Açıklama
-A Sadece kurulu olanları değil tüm paketleri sorgula
-V[<level>] --verbosity[=<level>] Ayrıntı seviyesini <seviye> olarak ayarla. Kullanılabilir ayrıntı seviyeleri:
0 sadece hatalar
1 normal mesajlar (varsayılan)
2 tanıtıcı mesajlar
3 hataayıklama
4 hata ayıklama seviye 2
-f <conf_file> --conf <conf_file> <conf_file> doyasını opkg yapılandırma dosyası olarak kullan. Varsayılanı /etc/opkg.conf
--cache <directory> Paket önbelleğini kullan
-d <dest_name> --dest <dest_name> <dest_name>'i paket yükleme, kaldırma, yükseltme için kök dizin olarak kullan. <dest_name> yapılandırma dosyasından tanımlı bir hedef adı olmalı, (gerektiğin bir dizin adı olabilir).
-o <dir> --offline-root <dir> Use <dir>'i çevrimdışı paket yüklemesi için kök dizin olarak kullan.
--add-arch <arch>:<prio> Mimariyi verili öncelikle kaydet
--add-dest <name>:<path> Hedefi veili yol ile kaydet
Zorlama Seçenekleri
--force-depends Arızalı bağımlılıklara rağmen yükle/kaldır
--force-maintainer Önceden varolan yapılandırma dosyalarının üzerine yaz
--force-reinstall Paket(ler)i yeniden yükle
--force-overwrite Diğer paket dosyalarının üzerine yaz
--force-downgrade Opkg'ye paket alçaltması için izin ver
--force-space Boş alan kontrollerini devredışı bırak
--force-checksum Doğrulama özeti uyumsuzluklarını yoksay
--force-postinstall Kurulum sonrası betikleri çevrimdışı kipte de olsa çalıştır
--noaction İşlem yapma -- sadece sına
--download-only İşlem yapma -- sadece indir
--nodeps Bağımlılıkları takip etme
--force-removal-of-dependent-packages Paketi ve tüm bağımlılıklarını kaldır
--autoremove Bağımlılıkları tatmin etmek için kurulmuş paketleri kaldır
-t --tmp-dir tmp dizinini belirt.
# Install a package
opkg update
opkg install <package>
 
# List packages
opkg list
 
# Display package information
opkg info <package>

glob örüntülerinden doğrudan yararlanabilirsin ve aynı zamanda regular expressions(düzenli ifadeler) kullanmak için ya da enformasyonu başka ileri işleme tabi tutmak için küçük bir shell script(kabuk betiği) yazabilirsin. O çıktıyı filtrelemek için bir pipeline(veri hattı) ve grep, veya awk, veya sed kullanabilirsin:

opkg list | grep -e <pattern1> -e <pattern2>
opkg list | awk -e '/<pattern>/{print $0}'
opkg info kmod-ipt-* | awk -e '/length/{print $0}'
opkg list-installed | awk -e '{print $1}' | tr '\n' ' '
for pkg in <package1> <package2> <package3>; do opkg info ${pkg}; done
opkg depends dropbear

:!: Tüm paketlere toplu güncelleme asla önerilmez. Yine de ilerlemek istiyorsanız, Opkg eklerini kurun veya şu tek satırlığı kullanın:

# Upgrade all installed packages
opkg list-upgradable | cut -f 1 -d ' ' | xargs opkg upgrade

Ana yapılandırma dosyası /etc/opkg.conf'tur. Şöyle görünebilir:

dest root /
dest ram /tmp
lists_dir ext /var/opkg-lists
option overlay_root /overlay

Gördüğün gibi, varsayılan klasörleri araylar:

  • varsayılan kök dizin (varsayılan / )
  • varsayılan ram disk (varsayılan /tmp )
  • paket listelerinin depolanacağı varsayılan klasör (varsayılan /var/opkg-lists, hala bir ram disk'tir )
  • bindirme dizini nedir (varsayılan /overlay)

Bu seçeneklerin çoğu varsayılan olarak bırakılmalıdır, veya değiştirilmeleri için gerçek bir sebepleri yoktur.

Eğer cihazın 32 MiB veya daha az RAM sahibiyse ve belleniminin depolamana alanını bir harici sürücüye genişletmiş isen, lists_dir ext /var/opkg-lists satırını lists_dir ext /path/on/disk olarak değiştirmek isteyebilirsin, böylece opkg'yi Yetersiz Hafıza hatalarına neden olmadan kullanabilirsin.

Bu dosya Luci Web arayüzünden de erişilebilir ve değiştirilebilir, Servisler(Services) ardından Yazılım(Software)'a tıkla. Yapılandırma(Configuration) sekmesine tıkla.

Besiler /etc/opkg/distfeeds.conf'ta ayarlanmıştır:

src/gz reboot_core http://downloads.lede-project.org/snapshots/targets/ramips/mt7620/packages
src/gz reboot_base http://downloads.lede-project.org/snapshots/packages/mipsel_24kc/base
src/gz reboot_telephony http://downloads.lede-project.org/snapshots/packages/mipsel_24kc/telephony
src/gz reboot_packages http://downloads.lede-project.org/snapshots/packages/mipsel_24kc/packages
src/gz reboot_routing http://downloads.lede-project.org/snapshots/packages/mipsel_24kc/routing
src/gz reboot_luci http://downloads.lede-project.org/snapshots/packages/mipsel_24kc/luci

Özel besiler için bir dosya daha vardır /etc/opkg/customfeeds.conf:

# add your custom package feeds here
#
# src/gz example_feed_name http://www.example.com/path/to/files

Her iki dosyada Luci Web arayüzünden de erişilebilir ve değiştirilebilirdir, Servisler ardından Yazılım'a tıklayın. Yapılandırma sekmesine tıklayıp, aşağı kaydırın.

Yerel depolar

Opkg'yi, paketleri yerel olarak çekmesi için yapılandırabilirsin:

src/gz local file:///path/to/packagesDirectory

OpenWrt, her birinin kendi tanımlayıcısına gerek duyduğu birçok depo kullanır, Asıl adlarını kullanmak mantıklı olur, örneğin:

...
src/gz base file:///path/to/packages/directory/packages/base
src/gz luci file:///path/to/packages/directory/packages/luci
src/gz packages file:///path/to/packages/directory/packages/packages
src/gz oldpackages file:///path/to/packages/directory/packages/oldpackages
... etc ...

OpenWrt paket mimarileri kullanıyor. Pek çok cihaz paketlerini aynı havuzdan çeker.

Takip eden paragraf redaksiyon ve güncel OpenWrt durumuna uydurmak için bazı değişiklikler gerektirir.

Varsayılan olarak, opkg sadece mimarisi all olan (= mimariden bağımsız) paketleri ve kurulu olduğu hedef mimarideki paketleri yüklemeye izin verir. Bir yabancı hedef mimari için paketler indirip kurmak amacı ile, izin verilen mimariler listesi /etc/opkg.conf'ta, arch seçeneklerinin kullanımıyla değiştirilebilir:

arch all 100
arch brcm4716 200
arch brcm47xx 300

Bu örnek brcm47xx paketlerinin (brcm47xx ailesi SoC/cihazlarda çalışmak üzere derlenmiş) brcm4716 (belirli bir SoC) hedef üzerine kurulmasını sağlayacaktır. Sayı opkg tarafından, çoklu mimari için mevcut olan paketlerde, tercih edilecek paket mimarisini belirlemek için kullanılan bir öncelik sıralaması belirtir.

OpenWrt 21.02:

# Configure profile
mkdir -p /etc/profile.d
cat << "EOF" > /etc/profile.d/custom.sh
export https_proxy=http://proxy.example.org:8080/
EOF
. /etc/profile
 
# Workaround
sed -i -e "s/https/http/" /etc/opkg/distfeeds.conf

opkg'yi proxy üzerinden kullanmak için, aşağıdakini /etc/opkg.conf'a ekle:

option http_proxy http://proxy.example.org:8080/
option ftp_proxy ftp://proxy.example.org:2121/

Aşağıdaki seçenekleri proxy sunucusuna kimlik doğrulaması için kullan:

option proxy_user xxxx
option proxy_passwd xxxx

Bunun yerine, busybox wget yüklenmiş ise, kullanıcı adı ve parola URL'in parçası olarak sağlanabilir:

option http_proxy http://username:password@proxy.example.org:8080/
option ftp_proxy http://username:password@proxy.example.org:2121/

:!: Kimlik doğrulama, wget olarak uclient-fetch kullanırken, Proxy-Authorization henüz uygulanmadığından şimdilik başarısız olmakta.

Eğer apt-cacher-ng çalıştırıyor ve OpenWrt için kullanmak istiyorsan, apt-cacher-ng üzerinden .sig dosyaları indirirken sorunlar deneyimleyebilirsin. O durumda şu satırı acng.conf dosyasına koy:

VfilePatternEx: |\.sig$
cat << "EOF" > opkg-update.sh
#!/bin/sh
rm -f -R /tmp/opkg-lists
mkdir -p /tmp/opkg-lists
while read TYPE REPO URL
do
wget -O /tmp/opkg-lists/"${REPO}".gz "${URL}"/Packages.gz
wget -O /tmp/opkg-lists/"${REPO}".sig "${URL}"/Packages.sig
gunzip -k /tmp/opkg-lists/"${REPO}".gz
usign -V -P /etc/opkg/keys -m /tmp/opkg-lists/"${REPO}" 2>&1 \
| grep -e "^OK$" \
&& mv -f /tmp/opkg-lists/"${REPO}".gz /tmp/opkg-lists/"${REPO}"
done < /etc/opkg/distfeeds.conf
EOF
chmod +x ./opkg-update.sh
./opkg-update.sh

opkg bir işlem sırasında boş alan biterse, kısmen yüklenmiş paketleri ve bağımlılıklarını kaldır.

# Save the script
cat << "EOF" > opkg-rm-pkg-deps.sh
#!/bin/sh
opkg update
URLS="$(opkg --force-space --noaction install "${@}" \
| sed -n -e "/^Downloading\s*/s///p")"
rm -f /usr/lib/opkg/lock
for URL in ${URLS}
do FILES="$(wget -q -O - "${URL}" \
| tar -O -x -z ./data.tar.gz \
| tar -t -z \
| sort -r \
| sed -e "s|^\.|/overlay/upper|")"
for FILE in ${FILES}
do if [ -f "${FILE}" ]
then rm -f "${FILE}"
elif [ -d "${FILE}" ]
then rmdir "${FILE}"
fi
done
done
EOF
chmod +x ./opkg-rm-pkg-deps.sh
 
# Run the script
./opkg-rm-pkg-deps.sh <package_name>
 
# Reboot to make the free space visible
reboot

Cihazın kendisinde bir paket deposu bulunmasının avantajlı olduğu kullanım durumları olabilir. Bu gibi durumlar şunları içerebilir:

  • Güvenilmez WANlar; cihazın uzak bir depoya bağlantı akışı kabul edilemez bir süre boyunca kesildiğinde.
  • Bant genişliği sınırları; cihazın uzak bir depoya bağlantı akışı, veri sınırlandırmasının sıfırlanacağı bir sonraki devire kadar, bağlantı daraltılmadan veya kesilmeden önce çekilebilecek veri miktarı sınırlandırıldığında
  • Özelleştirmeli bir depo; kaynaktan oluşturulmuş, uzak depolarda bulunmayan.
  • Ağdaki yerel cihazlardaki paketlerin sürümlerinin tutarlılığı için cihaz, diğer cihazlar için bir referans konumundaysa.

FIXME Convert this into LEDE and explain what it is actually doing.

Depo kaynağını “downloads.openwrt.org/snapshots/trunk/ar71xx/generic” uzak deposundan, cihaz tarafından bindirilmiş yerel bir depoya değiştirmek ve gömülü web sunucusunu kullanarak depo dosyalarını paylaşmak maksadıyla, opkg.conf dosyasını sed aracını kullanarak düzenleme örneği:

r=44685
search="http://downloads.openwrt.org/snapshots/trunk/ar71xx/generic"
replace="file:///mnt/sdcard/shared/users/www/r$r"
sed -i -e "s!$search!$replace!" /etc/opkg.conf

Ağdaki yerel cihazlarla depoyu paylaşmak için takip eden kabuk kodunu kullan. Bu bindirilmiş dizinden web sunucusu kök dizinine bir katı bağlantı yaratır, böylece web sunucusu bağlantıyı aşar ve bindirilmiş dosyasistemini görür:

ln -s /mnt/sdcard/shared/users/www /www/pendrive

İkinci cihazda, sed kullanarak benzer bir arama ve değiştirme yap, ama yerine ilk cihazın IP adresini (burada 192.168.1.1) ve web yolunu işaret et, hepsi /etc/opkg.conf dosyasında:

r=44685
search="downloads.openwrt.org/snapshots/trunk/ar71xx/generic"
replace="192.168.1.1/pendrive/r$r"
sed -i -e "s!$search!$replace!" /etc/opkg.conf

Geçmişi nedeniyle (ipkg çatalı), opkg paket yüklemeleri için kök dizinden farklı bir konum belirtebilir, ama aslen çoğu paket bunu çoğu paket bunu desteklemediğinden, bu gerçekten yararlı olmaktan çok merak konusudur.

Paketlerinizi yüklemek için daha çok alana sahip olmanın önerilen yöntemi Extroot

Bu çozüm çoğu durumda olduğu gibi çalışmayacaktır, OpenWrt paketleri kök dosyasistemine yüklenmek üzere tasarlanmışlardır ve değiştirilmiş yol altında çalışmak için ek sembolik-bağlantılar ve düzenlemeler gerektireceklerdir!

Öntanımlı opkg.conf aslında üç hedef içerir:

dest root /
dest ram /tmp
dest mnt /mnt

Hedef satırlarının yapısı basitçe dest anahtar sözcüğünü takip eden bu hedef için bir isim (herhangi bir şey olabilir), son olaraktan dosyasistemi konumu. Böyle yapılandırılmış her konum opkg komut satırında şu şekilde belirtilebilir:

opkg -d destination_name install somepackage

dest değişkeni /etc/opkg.conf içinde tanımlanmış hedeflerden birine atfetmek zorundadır, örneğin paketleri /tmp/'ye yüklemek için -d ram.

Kökten başka herhangi bir konuma çekirdek modülleri yüklemek istiyorsanız, önce şunu okumak isteyebilirsini: https://dev.openwrt.org/ticket/10739

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
  • Last modified: 2022/01/03 19:37
  • by sorcun