今日のトラフィックや一般的なインターネットのスピードはティーンのギガで測定されているため、LAN内にローカルリポジトリキャッシュを設定する目的は何かと思うかもしれません。

その理由の1つは、インターネットの帯域幅を削減し、ローカルキャッシュからパッケージを高速で取得することです。しかしながら、もう1つの主な理由はプライバシーです。組織内のクライアントがインターネット制限されている場合でも、彼らのLinuxボックスがソフトウェアやセキュリティの定期的なシステム更新が必要であったり、新しいソフトウェアパッケージが必要である場合があります。さらに進んで考えると、プライベートネットワーク上で実行され、制限されたネットワークセグメントのみに機密情報を含み、一般のインターネットに公開されるべきではないサーバーが存在すると想像してみてください。
これは、LANにローカルリポジトリミラーを構築し、この作業用にエッジサーバーを割り当て、内部クライアントをキャッシュミラーからソフトウェアを取り出すように構成するべき理由のいくつかです。
Ubuntuは、公式のUbuntuリポジトリとローカルキャッシュを同期するためのapt-mirrorパッケージを提供しており、このミラーはHTTPやFTPサーバーを介して構成され、そのソフトウェアパッケージをローカルシステムクライアントと共有します。
完全なミラーキャッシュを作成するには、サーバーには少なくとも120Gの無料スペースが必要です。
必要条件
- 少なくとも120Gの無料スペース
- 匿名モードでインストールおよび構成されたProftpdサーバー
ステップ1:サーバーの構成
1. まず最初にやるべきことは、Ubuntu Archive Mirrorページを訪れて、最寄りで最速のUbuntuミラーを特定することです。あなたの国を選択してください。

もし貴国に複数のミラーがある場合は、ミラーアドレスを特定し、pingやtracerouteの結果に基づいてテストを行う必要があります。

2. 次のステップは、ローカルミラーリポジトリを設定するために必要なソフトウェアをインストールすることです。apt-mirrorとproftpdパッケージをインストールし、proftpdをスタンドアロンのシステムデーモンとして設定してください。
$ sudo apt-get install apt-mirror proftpd-basic


3. さて、apt-mirrorサーバーを構成する準備が整いました。最寄りの場所(ステップ1)を追加して、パッケージをダウンロードするシステムパスを選択するために、/etc/apt/mirror.listファイルを開いて編集してください。デフォルトのミラーが十分に速い場合や急いでいない場合には、任意で、それを行う必要はありません。デフォルトでは、apt-mirrorはローカルキャッシュとして/var/spool/apt-mirrorを使用しますが、このチュートリアルではシステムパスを変更し、set base_pathディレクティブを/opt/apt-mirrorに設定します。
$ sudo nano /etc/apt/mirror.list

また、クリーンディレクティブの前に、Debianソースを含めた他のソースリストをコメントアウトまたは追加することができます。これは、クライアントが使用するUbuntuバージョンに依存します。お好みで12.04などのソースを追加することもできますが、より多くのソースを追加するとより多くの空き容量が必要です。
Debianのソースリストについては、Debian WikiまたはDebian Sourcesリストジェネレーターを参照してください。
4.今すぐ必要なことは、パスディレクトリを作成し、apt-mirrorコマンドを実行して公式のUbuntuリポジトリをローカルミラーと同期させることです。
$ sudo mkdir -p /opt/apt-mirror $ sudo apt-mirror

apt-mirrorは、インデックス作成とアーカイブのダウンロードを進め、ダウンロードされたパッケージの総数とサイズを表示します。110-120 GBのダウンロードにはかなりの時間がかかることが想像できます。
lsコマンドを実行してディレクトリの内容を表示できます。

初回のダウンロードが完了すると、将来のダウンロードは小さくなります。
5.apt-mirrorがパッケージをダウンロードする間に、Proftpdサーバを設定できます。まずやるべきことは、次のコマンドを実行してproftpdの匿名構成ファイルを作成することです。
$ sudo nano /etc/proftpd/conf.d/anonymous.conf
その後、次の内容をanonymous.confファイルに追加し、proftdサービスを再起動します。
<Anonymous ~ftp> User ftp Group nogroup UserAlias anonymous ftp RequireValidShell off # MaxClients 10 <Directory *> <Limit WRITE> DenyAll </Limit> </Directory> </Anonymous>

6.次のステップは、バインドマウントを発行してapt-mirrorのパスをproftpdのパスにリンクすることです。
$ sudo mount --bind /opt/apt-mirror/mirror/archive.ubuntu.com/ /srv/ftp/

確認するには、パラメータやオプションを指定せずにmountコマンドを実行してください。
$ mount

7.最後のステップは、Proftpdサーバーがシステム再起動後に自動的に起動することを確認し、mirror-cacheディレクトリがftpサーバーパスに自動的にマウントされるようにすることです。Proftpdを自動的に有効にするには、次のコマンドを実行してください。
$ sudo update-rc.d proftpd enable
Proftpdにapt-mirrorキャッシュを自動的にマウントするには、/etc/rc.localファイルを開いて編集してください。
$ sudo nano /etc/rc.local
exit 0ディレクティブの前に次の行を追加してください。マウントを試行する前に5秒の遅延を使用してください。
sleep 5 sudo mount --bind /opt/apt-mirror/mirror/archive.ubuntu.com/ /srv/ftp/

Debianリポジトリからパッケージを取得する場合は、以下のコマンドを実行し、上記のrc.localファイルの適切な設定が有効になっていることを確認してください。
$ sudo mkdir /srv/ftp/debian $ sudo mount --bind /opt/apt-mirror/mirror/ftp.us.debian.org/debian/ /srv/ftp/debian/

8.毎日のapt-mirror同期のために、毎日深夜2時に実行されるシステムスケジュールジョブを作成することもできます。crontabコマンドを実行し、好きなエディターを選択して、以下の行構文を追加してください。
$ sudo crontab –e

最後の行に以下の行を追加してください。
0 2 * * * /usr/bin/apt-mirror >> /opt/apt-mirror/mirror/archive.ubuntu.com/ubuntu/apt-mirror.log

これにより、毎日2時にシステムリポジトリキャッシュがUbuntu公式ミラーと同期され、ログファイルが作成されます。
ステップ2:クライアントの設定
9.ローカルのUbuntuクライアントを構成するには、クライアントコンピューターの/etc/apt/source.listを編集し、httpプロトコルをftpに置き換えて、apt-mirrorサーバーのIPアドレスまたはホスト名を指すようにしてシステムを更新してください。
deb ftp://192.168.1.13/ubuntu trusty universe deb ftp://192.168.1.13/ubuntu trusty main restricted deb ftp://192.168.1.13/ubuntu trusty-updates main restricted ## Ad so on….

10.リポジトリを表示するには、ブラウザを開いてFTPプロトコルを使用してサーバーのIPアドレスまたはドメイン名を指すことができます。

同じシステムはDebianのクライアントとサーバーにも適用され、必要な変更はDebianミラーとソースリストだけです。
また、新しいUbuntuやDebianシステムをインストールする場合は、インストーラーがどのリポジトリを使用するか尋ねるときに、ローカルミラーを手動でFTPプロトコルで指定してください。
独自のローカルミラーリポジトリを持つ利点は、常に最新の状態にあり、ローカルクライアントがアップデートやソフトウェアをインストールするためにインターネットに接続する必要がないことです。
Source:
https://www.tecmint.com/setup-local-repositories-in-ubuntu/