A leggyorsabb módja az apt letöltések gyorsítótárának egy LAN-on?

147

Több Ubuntu gép van otthon és egy nagyon lassú internetkapcsolat, és néha több gépet kell frissíteni egyszerre (különösen az új Ubuntu kiadások alatt).

Van-e mód arra, hogy csak az egyik gépem töltse le a csomagokat, és a többi gép használhatja az első gépet, hogy megkapja a hibákat? Ez magában foglalja a saját helyi tükör létrehozását? Vagy egy proxy szerver? Vagy könnyebbé válik?

    
készlet Ken Simon 03.09.2010 01:34
forrás

6 válasz

126
Néhány kutatást készítettem egy csomó megoldásról, és néhány Ubuntu fejlesztő 10,04-es és újabb proxykonfigurációt hozott létre (a Squid alapján). Eztsquid-deb-proxy -nak hívják. Ez csak akkor szükséges, ha a gép szerverként működik. A nagy szervezetek általában teljes tükröket futtatnak, de a legtöbb ember számára a keresett tükrözés elég.

Miért tintahal-deb-proxy?

  • Nincs fájlok szerkesztése az ügyfél oldalán.
  • Használja a zeroconf-ot, hogy az ügyfelek "nulla konfiguráció" legyenek
  • Használjon meglévő, megbízható proxy megoldást az új eszköz írása helyett.
  • Könnyű beállítani egy tipikus Linux rendszergazdát.

Server Config

A kiszolgálóként működő gépen a szerszámot telepítheti:

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

Indítsa el a szolgáltatás bitjeit:

 sudo start squid-deb-proxy

És a avahi bitek (erre nincs szükséged, ha 12.04 + -án vagyunk):

 sudo start squid-deb-proxy-avahi

Ezzel telepíti a proxykiszolgálót (amely alapértelmezés szerint a 8000-es portot hallgatja) és a szerverhez szükséges avahi eszközöket, amelyek a zeroconf-on keresztül hirdetnek magukat a hálózaton.

Client Config

A cache-t (az ügyfeleket és magát a kiszolgálót, így a cache-t is használhatja) mindegyik számítógépen telepítenie kell az ügyféloldali eszközt, keresse meg a kiszolgálót, és kattintson ide:

vagy a parancssorból:

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

Opcionális : A maximális hatékonyság érdekében egy gépet kell beállítania a frissítések automatikus letöltéséhez, így ha más gépeknek szüksége van rá, már a gyorsítótárban van. Ehhez lépjen a Rendszer-> Felügyelet-> Frissítéskezelő-ra, majd kattintson a "Beállítások ..." gombra a Frissítés fül alatt, hogy automatikusan letölti az összes frissítést.

A harmadik fél forrásainak gyorsítótárazása

Alapértelmezés szerint a gyorsítótár csak a hivatalos Ubuntu tárhelyek gyorsítótárának beállítására szolgál. Ha többet szeretne hozzáadni, akkor hozzá kell adnia a/etc/squid-deb-proxy/mirror-dstdomain.acl forrásforrások listájához. Itt adhatod hozzá a ppa.launchpad.net-t, vagy más olyan szolgáltatásokat, amelyeket használhatsz. A fájl módosítása után asudo restart squid-deb-proxy -ot futtatni kell annak érdekében, hogy a módosítások hatékonyak legyenek.

Kézi konfiguráció

Ha valamilyen oknál fogva nem szeretné használni a zeroconf-ot (hálózati okokból vagy bármi más), manuálisan beállíthat egy klienst a proxy használatára a/etc/apt/apt.conf szerkesztésével, és hozzáadhatja a következő rovatot (a 0.0.0.0 a kiszolgáló IP-címe):

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

tűzfal

Ha tűzfalat használ, az avahi 5353-at használ a 224.0.0.0/4 címen, és olyan szabályt igényel, amely így néz ki:

# 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

Ezután meg kell nyitnia a 8000 TCP portot a proxyon keresztül történő aktuális kommunikációhoz. Valami többé-kevésbé hasonlít:

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

Ezek a szabályok csak segítenek neked. Valószínűleg nem felelnek meg a beállításoknak egyenként. (pl. hibás interfész, rossz magánhálózati IP-cím stb.)

Megerősítve működik

Először a logot a kiszolgálón végezze el, így megtekintheti:tail -F /var/log/squid-deb-proxy/access.log, majd futtathat egy frissítést minden olyan gépen, amelyen az ügyfél telepítve van; a naplónak a következő bejegyzésekkel kell kezdenie:

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

Ez azt jelenti, hogy az ügyfelek látják a gyorsítótárat, de hiányoznak, ami várható, mivel még nem tárolt semmit. Minden további futásnak TCP_HIT-ként kell megjelennie. Maga a tintahalat tartalmazó cache fájlok megtalálhatók a (z)/var/cache/squid-deb-proxy -ban.

Használja

Ettől kezdve a hálózat minden gépje ellenőrizni fogja a gyorsítótárat, mielőtt a külső hálózatot elérné a csomagok letöltéséhez. Ha új csomagok állnak rendelkezésre, akkor az első gép le fogja tölteni a hálózatot, miután a későbbi csomagkérések a kiszolgálótól az ügyfelekhez érkeznek.

TODO

Továbbra is engedélyeznünk kell, hogy a hirdetett gyorsítótárat csak a hálózaton használjuk ki a dobozból és alapértelmezés szerint, így nem kell telepítenünk az ügyféldarabot. Azt is ki kell javítanunk a hibát , amelyre a 403 deb nem a tükörlistát.

    
válasz adott Jorge Castro 03.09.2010 01:52
forrás
37

apt-cacher-ng a válasz számomra - nem találkoztam problémák a kis környezetben (kb. 20 ügyfelet), úgy gondolom, hogy a problémák @ MagicFab említéseit a jelenlegi verzióban oldották meg (telepítve az Ubuntu 10.04 és 10.10 verziójára). A kiszolgálónak nincs konfigurálása, és csak arra kell utasítania ügyfeleit, hogy a kiszolgálót a csomagkezelő proxyjaként használják.

A kiszolgáló teljesen telepítve van , és konfigurálva van aapt-cacher-ng csomag telepítésével.

Az ügyfeleket az APT proxy beállításával kell konfigurálni - a/etc/apt/apt.conf.d/01proxy fájlt hozzá kell adni, amely tartalmazza ezt (ahol a "your-apt-server" a szerver neve vagy IP-címe):

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

Kész - mostantól a kiszolgáló tárolja a csomagokat, függetlenül attól, hogy milyen forrásokat használ, vagy milyen rendszerverziót tartalmaz (pl. a 10.04 szervert a 9.10, 10.04 és 11.04 kliensek használhatják minden probléma vagy konfliktus).

Ha kliens-laptop (ok) van, amely a hálózatok között mozog, kicsit bonyolultabbá válik - szkriptet készítettem, amely a megfelelő címet határozza meg a hálózati címtől függően; a parancsfájl végrehajtható és a/etc/network/if-up.d/apt-proxy -ban. Ha egy DHCP-kiszolgálóról fogad IPv4-címet, a szkript megadja a megfelelő apt-cacher kiszolgálót az adott hálózathoz:

#!/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
    
válasz adott Piskvor 12.02.2011 11:45
forrás
6

Az egyik legegyszerűbb megoldás az apt-proxy beállítása.

Olvassa el az Ubuntu dokumentációját itt: link

    
válasz adott sandaru1 03.09.2010 01:51
forrás
6

Nagyon kedvelem a helyi tükör beállítását adebmirror segédprogram használatával.

Íme egy példa a varázslatra.

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

Ezt körülbelül hetente egyszer futtatom, és használom fel egy vagy több "patchlevel" létrehozásának alapjaként. Például ...

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

Ez létrehozza a fa kapcsolt példányát (szinte zérus lemezterületet használ), amellyel mindegyik helyi kiszolgálót az apt sources.list címre mutathatom.

    
válasz adott delimiter 08.09.2010 17:07
forrás
2

Kis hálózatokban (például otthoni vagy kis irodában) jó eredménnyel használtam apt-cacher-ng-ot. Nem ellenőriztem a legújabb verziókat, de tudom, hogy mind a kiszolgáló, mind az ügyfelek gondos beállítását igényli, és a legmegfelelőbb az ügyfelek számára, akik csak frissítéseket kapnak a helyi hálózatból.

Megpróbáltam a fent említett tintahalalapú megoldást, de több kerülő megoldást és több ügyfélkonfigurációt kellett alkalmazni, mint amire szeretnék, tehát nem érzi még tetszik, mert helyettesítheti az apt-cacher- ng kis készletekben.

    
válasz adott MagicFab 29.11.2010 03:35
forrás
1

Aapt-cacher nem volt a legkönnyebb beállítani, és nem fog élni egy dist-frissítéssel.

Asquid-deb-proxy telepítése a kiszolgálón,squid-deb-proxy-client az ügyfeleken. Használja a zeroconf Avahi-t, ezért nincs szükség konfigurációra.

Ha többet akarsz gyorsítótárazni, mint a debs, akkor nem fogok zavarni a Squid-ot. Az Apache Traffic Server a következő nagy dolog. link

    
válasz adott caduceus 19.12.2013 13:19
forrás