سؤال أفضل طريقة لتخزين التنزيلات apta على شبكة محلية؟


لدي العديد من أجهزة Ubuntu في المنزل واتصال إنترنت بطيء جدًا ، وأحيانًا تحتاج أجهزة متعددة إلى التحديث في وقت واحد (خاصةً أثناء إصدارات Ubuntu الجديدة.)

هل هناك طريقة يحتاج فيها جهاز واحد فقط من أجهزتي إلى تنزيل الحزم ، ويمكن للآلات الأخرى استخدام الجهاز الأول للحصول على الدفاتر؟ هل يشمل إنشاء مرآة محلية خاصة بي؟ أو خادم وكيل؟ أم يمكن جعلها أكثر بساطة؟


147
2017-09-02 23:34


الأصل




الأجوبة:


لقد أجريت بعض الأبحاث في مجموعة من الحلول ، كما توصل بعض مطوري Ubuntu إلى تكوين بروكسي (يعتمد على Squid) لـ 10.04 وأحدث. تسمى squid-deb-proxy. إنه يتطلب فقط أن تعمل الآلة كخادم. عادة ما تقوم المنظمات الكبيرة بتشغيل مرايا كاملة خاصة بها ، لكن بالنسبة إلى معظم الناس ، تكون المرآة عند الطلب كافية.

لماذا الحبار deb-proxy؟

  • لا تحرير الملفات على جانب العميل.
  • استخدام zeroconf بحيث يكون العملاء "صفر التكوين"
  • استخدم حل وكيل خالص موجود بدلاً من كتابة أداة جديدة.
  • سهل الإعداد لمدير Linux نموذجي.

تكوين الخادم

على الجهاز الذي تريده بمثابة خادم ، قم بتثبيت الأداة مع:

sudo apt-get install squid-deb-proxy avahi-utils

الآن قم ببدء تشغيل وحدات الخدمة:

 sudo start squid-deb-proxy

و بت avahi (لا تحتاج هذا إذا كنت على 12.04+):

 sudo start squid-deb-proxy-avahi

سيؤدي هذا إلى تثبيت الخادم الوكيل (الذي يستمع إلى المنفذ 8000 افتراضيًا) وأدوات avahi اللازمة للخادم للإعلان عن نفسه على الشبكة عبر زروكوكون.

تكوين العميل

على كل من أجهزة الكمبيوتر أنك تريد استخدام ذاكرة التخزين المؤقت (العملاء ، والخادم نفسه حتى يتمكن من استخدام ذاكرة التخزين المؤقت أيضًا) ، تحتاج إلى تثبيت أداة جانب العميل التي تسمح لنا بالبحث عن الخادم تلقائيًا ، اجعلهم ينقرون هنا:

Install via the software center

أو عبر سطر الأوامر:

sudo apt-get install squid-deb-proxy-client

اختياري: للحصول على أقصى قدر من الكفاءة ، يجب عليك تعيين جهاز واحد لتنزيل التحديثات تلقائيًا ، بحيث عندما تكون الأجهزة الأخرى بحاجة إليها ، فإنها بالفعل في ذاكرة التخزين المؤقت. يمكنك القيام بذلك عن طريق الانتقال إلى System-> Administration-> Update Manager ، ثم النقر فوق الزر "Settings ..." ، في علامة التبويب Update لتعيين كل التحديثات تلقائيًا.

alt text

التخزين المؤقت لمصادر الطرف الثالث

بشكل افتراضي ، يتم إعداد ذاكرة التخزين المؤقت فقط لتخزين مستودعات Ubuntu الرسمية. لإضافة المزيد ، عليك إضافتها إلى قائمة المصادر على /etc/squid-deb-proxy/mirror-dstdomain.acl. يمكنك هنا إضافة ppa.launchpad.net أو الخدمات الأخرى التي قد تستخدمها. بعد إجراء تغييرات على هذا الملف ، يجب عليك تشغيل sudo restart squid-deb-proxy من أجل أن تكون التغييرات فعالة.

التكوين اليدوي

إذا كنت لا تريد استخدام zeroconf (لأسباب تتعلق بالشبكة أو أي شيء) لسبب ما ، فيمكنك تعيين العميل يدويًا لاستخدام البروكسي عن طريق التحرير /etc/apt/apt.conf وإضافة المقطع التالي ، (استبدل 0.0.0.0 بعنوان IP للخادم):

 Acquire { 
   Retries "0"; 
   HTTP { Proxy "http://0.0.0.0:8000"; };
 };

جدار الحماية

في حالة استخدامك لجدار ناري ، تستخدم avahi 5353 عبر العناوين 224.0.0.0.0 وتتطلب قاعدة تبدو كالتالي:

# Specifically port 5353 which avahi uses
-A INPUT -i eth2 -d 224.0.0.0/4 --dport 5353 -j ACCEPT

# OR

# Wide open so all local broadcasting works
-A INPUT -i eth2 -d 224.0.0.0/4 -j ACCEPT

بعد ذلك ، تحتاج إلى فتح منفذ TCP 8000 للاتصال الفعلي من خلال الوكيل. شيء أكثر أو أقل مثل هذا:

-A INPUT -i eth2 -p tcp -m tcp --dport 8000 -d 192.168.0.1 -s 192.168.0.0/24 --syn -j ACCEPT

هذه القواعد هي فقط لمساعدتك. من المحتمل ألا يتطابق الإعداد مع واحد إلى واحد. (على سبيل المثال ، الواجهة الخاطئة ، وعناوين IP الخاطئة للشبكات الخاصة ، وما إلى ذلك)

مؤكدا أنه يعمل

أول ذيل السجل على الخادم حتى تتمكن من النظر إليه: tail -F /var/log/squid-deb-proxy/access.log ثم قم بتشغيل تحديث على أي جهاز يحتوي على تثبيت العميل؛ يجب أن يبدأ السجل في التمرير بإدخالات مثل هذا:

1307310795.647     32 192.168.1.106 TCP_MISS/302 768 GET http://us.archive.ubuntu.com/ubuntu/dists/natty-proposed/universe/i18n/Translation-en.xz - DIRECT/141.210.26.10 text/html
1307310795.683     34 192.168.1.106 TCP_MISS/302 752 GET http://us.archive.ubuntu.com/ubuntu/dists/natty/main/i18n/Translation-en_US.lzma - DIRECT/141.210.26.10 text/html
1307310795.716     32 192.168.1.106 TCP_MISS/302 746 GET http://us.archive.ubuntu.com/ubuntu/dists/natty/main/i18n/Translation-en.lzma - DIRECT/141.210.26.10 text/html
1307310795.750     32 192.168.1.106 TCP_MISS/302 764 GET http://us.archive.ubuntu.com/ubuntu/dists/natty/multiverse/i18n/Translation-en_US.lzma - DIRECT/141.210.26.10 text/html
1307310795.784     32 192.168.1.106 TCP_MISS/302 758 GET http://us.archive.ubuntu.com/ubuntu/dists/natty/multiverse/i18n/Translation-en.lzma - DIRECT/141.210.26.10 text/html
1307310795.817     32 192.168.1.106 TCP_MISS/404 657 GET http://us.archive.ubuntu.com/dists/natty-proposed/multiverse/i18n/Translation-en_US.xz - DIRECT/141.210.26.10 text/html

مما يعني أن العملاء يشاهدون ذاكرة التخزين المؤقت ولكنهم ينقصونها ، وهو أمر متوقع نظرًا لعدم تخزينها مؤقتًا لأي شيء. يجب أن يظهر كل تشغيل لاحق باسم TCP_HIT. يمكنك العثور على ملفات ذاكرة التخزين المؤقت نفسها /var/cache/squid-deb-proxy.

استخدامه

من الآن فصاعدًا ، ستتحقق جميع الأجهزة الموجودة على الشبكة من ذاكرة التخزين المؤقت قبل الوصول إلى الشبكة الخارجية لجلب الحزم. إذا توفرت حزم جديدة ، فسيقوم الجهاز الأول بتنزيلها من الشبكة ، بعد أن تأتي الطلبات اللاحقة لهذه الحزمة من الخادم إلى العملاء.

لكى يفعل

ما زلنا بحاجة إلى تمكين apt من مجرد استخدام ذاكرة تخزين مؤقت معلن عنها على الشبكة وخارجها بشكل افتراضي حتى لا تحتاج إلى تثبيت قطعة العميل. نحن بحاجة أيضا إلى الإصلاح الحشرة أن 403 's deb's ليس في قائمة المرآة.


126
2017-09-02 23:52



2014/01/21 14: 56: 31 | خطأ: / var / cache / squid-deb-proxy / 03: (2) لا يوجد ملف أو دليل FATAL: فشل في التحقق من أحد دلائل التبديل ، تحقق من cache.log للحصول على التفاصيل. تشغيل "squid -z" لإنشاء دلائل مبادلة إذا لزم الأمر ، أو تشغيل Squid لأول مرة. الحبار ذاكرة التخزين المؤقت (الإصدار 3.3.8): تم إنهاؤها بشكل غير طبيعي. - thumper
تحتاج أيضا إلى تثبيت الحبار. - thumper
يبدو مثل التكوين اليدوي غير صالح بعد الآن. لا يوجد apt.conf ملف تحت /etc/apt. ومع ذلك ، هناك عدد كبير من الملفات مع إعدادات تحت /etc/apt/apt.conf.d. أتصور أنه يجب علينا الآن إنشاء ملف هناك؟ - Alexis Wilke
أيضا ، يبدو أن تم حل TODO. وهذا يعني ، لم يكن لدي للقيام بأي شيء ، وكان يستخدم ذاكرة التخزين المؤقت لأول مرة. على الرغم من أن الخطأ لا يبدو كما لو كان قد تم تحديده على أنه ثابت. - Alexis Wilke
بالتأكيد ، إذا كان apt.conf.d هو كيف يتم الآن ، فالرجاء إرسال تعديل على هذه الإجابة ، هتافات! - Jorge Castro


apt-cacher-ng هو الجواب بالنسبة لي - لم أواجه أي مشاكل في بيئات صغيرة (حوالي 20 عميل) ، لذلك أفترض أن المشكلات MagicFab تم حلها في النسخة الحالية (مثبتة على Ubuntu 10.04 و 10.10). لا يوجد أي تهيئة ضرورية للخادم ، وتحتاج فقط إلى إرشاد العملاء لديك لاستخدام الخادم كخادم وكيل حزمهم.

الخادم هو مثبتة بالكامل وتكوينها عن طريق تثبيت apt-cacher-ng صفقة.

يحتاج العملاء إلى التهيئة عن طريق إعداد وكيل APT - عن طريق إضافة الملف /etc/apt/apt.conf.d/01proxyالتي تحتوي على هذا (حيث "your-apt-server" هو اسم خادمك أو عنوان IP الخاص بك):

Acquire::http { Proxy "http://your-apt-server:3142"; };

فعله - الآن سيتم تخزين الحزم مؤقتًا بواسطة الخادم ، بغض النظر عن المصادر التي تستخدمها أو ما هو إصدار النظام لديك (على سبيل المثال ، يمكن استخدام خادم 10.04 بواسطة 9.10،10.04 و 11.04 عميل دون أي مشاكل أو تعارضات).


إذا كان لديك كمبيوتر محمول (جوال) العميل يتجول بين الشبكات ، فإنه يصبح أكثر تعقيدًا قليلاً - لقد قمت بعمل برنامج نصي يقوم بتعيين الوكيل الصحيح بناءً على عنوان الشبكة ؛ البرنامج النصي قابل للتنفيذ وفي /etc/network/if-up.d/apt-proxy. عند استلام عنوان IPv4 من خادم DHCP ، سيقوم البرنامج النصي بتعيين خادم apt-cacher المناسب للشبكة المعنية:

#!/bin/sh

set -e
# Don't bother when lo is configured.
if [ "$IFACE" = lo ]; then
    exit 0
fi
# Only run from ifup.
if [ "$MODE" != start ]; then
    exit 0
fi
# currently only cares about IPv4
if [ "$ADDRFAM" != inet ] && [ "$ADDRFAM" != NetworkManager ]; then
    exit 0
fi
# only run for DHCP-assigned addresses
if [ "$DHCP4_IP_ADDRESS" = "" ]; then
    exit 0
fi

# we're matching on network *broadcast* address,
#  not the specific IP address we were assigned
case "$DHCP4_BROADCAST_ADDRESS" in
    10.3.141.255)
        PROXY='Acquire::http::Proxy "http://my-home-server:3142";';
        ;;
    192.168.154.255)
        PROXY='Acquire::http::Proxy "http://work-server.foo.bar.example.com:3142";';
        ;;
    # add as needed
    *)
        # unknown, no proxying
        PROXY=""
        ;;
esac

# set the proxy
FNAME="/etc/apt/apt.conf.d/01proxy"
echo -n "$PROXY">$FNAME

exit 0

37
2018-02-12 10:45



يدعم apt-cacher-ng أيضًا IPv6 (أتذكر أن بعض الحلول الأخرى لم تكن كذلك). - Azendale
بعد عام ، ذهبت إلى squid-deb-proxy و squid-deb-proxy-client: zeroconf تعني في الواقع صفر التكوين على العملاء ، وهو أمر مفيد للغاية بالنسبة للمستخدمين الرحل - وفي حالة عدم استجابة الخادم ، يكون العميل مفترضًا للتنزيل المباشر. - Piskvor
apt-cacher-ng sucks، it's buggy verry، hangs on downloading packages. على سبيل المثال رأيت تنزيله 150 ميغابايت فقط لحزمة 30 ميغابايت - pylover
apt-cacher-ng يعمل بشكل مثالي. لديك شيء خاطئ جدا في نظامك. على دقيق الحبار ، الوكيل الوكيل يريد تثبيت الحبار. يصر على ذلك. - Ken Sharp
الآن هذا هو الحل الأفضل للحصول على ذاكرة تخزين مؤقت تعمل مع pbuilder. هذا العمل من خارج منطقة الجزاء. كما يبدو أن هناك دعم ل zeroconf (في عام 2016) ، لكنني لم أستطع (حتى الآن) الحصول على ذلك للعمل على نهايتي. - Alexis Wilke


أحد أسهل الحلول هو إعداد apt-proxy.

قراءة وثائق أوبونتو هنا: https://help.ubuntu.com/community/AptProxy


6
2017-09-02 23:51





أنا أفضل إعداد إعداد مرآة محلية باستخدام debmirror خدمة.

هنا مثال تعويذة.

debmirror --progress --verbose --nosource --method=ftp --passive \
 --host=ftp.osuosl.org --root=pub/ubuntu \
 --dist=lucid,lucid-updates,lucid-security,lucid-backports \
 --section=main,restricted,universe,multiverse --arch=amd64 \
 /d2/ftp/mirror/ubuntu-lucid

أنا أدير هذا مرة واحدة في الأسبوع ، واستخدامها كأساس لإنشاء واحد أو أكثر من "patchlevels". فمثلا...

 cd /d2/ftp/mirror/
 cp -al ubuntu-lucid ubuntu-lucid-20100908

يؤدي هذا إلى إنشاء نسخة مرتبطة من الشجرة (تستخدم مساحة خالية تقريبًا من القرص) يمكنني توجيه كل الخوادم المحلية إليها في apt sources sources.list


6
2017-09-08 15:07



يجب عليك التحقق من ubumirror ، انها حزمة الراحة في الأرشيف الذي لديه كل ما سبق لك. هذا ما تستخدمه المرايا الرسمية. - Jorge Castro


في الشبكات الصغيرة (مثل المنزل / المكتب الصغير) ، استخدمت apt-cacher-ng مع نتائج جيدة. لم أتحقق من أحدث الإصدارات ، لكنني أعلم أنها تحتاج إلى إعداد دقيق لكل من الخادم والعملاء ، وهي الأفضل ملاءمة للعملاء الذين سيحصلون فقط على التحديثات من شبكتك المحلية.

لقد جربت الحل المبني على الحبار أعلاه ولكنها تتطلب تطبيق عدة حلول للعميل وتكوينات أكثر مما تود ، لذلك لا أشعر بعد مثل ذلك يمكن أن يحل محل apt-cacher-ng في إعدادات صغيرة.


2
2017-11-29 02:35





apt-cacher لم يكن الأسهل إعدادًا ولن ينجو من الترقية عن بُعد.

التثبت squid-deb-proxy على الخادم ، squid-deb-proxy-client على العملاء. ويستخدم zeroconf Avahi ، لذلك لا يوجد تكوين ضروري.

إذا كنت تبحث عن مخبأ أكثر من مجرد نقاشات ، فلن أزعج الحبار. يعد Apache Traffic Server هو الشيء الكبير التالي. http://trafficserver.readthedocs.org


1
2017-12-19 12:19



الحبار deb-proxy يصر على تثبيت الحبار. و apt-cacher ميت منذ زمن طويل ، apt-cacher-ng هو المكان الذي فيه. - Ken Sharp