ローカルのaptリポジトリサーバーのセットアップを検討する理由の1つは、更新するUbuntuのインスタンスが複数ある場合に必要な帯域幅を最小限に抑えるためです。たとえば、サーバーが20台ほどあり、すべてを週に2回更新する必要がある状況を考えてみましょう。ローカルリポジトリサーバーからLAN経由ですべてのシステムを更新するだけなので、帯域幅を大幅に節約できます。
このガイドでは、Ubuntu20.04LTSでローカルaptリポジトリサーバーをセットアップする方法を学習します。
前提条件
- Ubuntu20.04LTSシステム
- ApacheWebサーバー
- / var / www/htmlファイルシステムに最低170GBの空きディスク容量
- 安定したインターネット接続
ステップ1)ローカルのApacheWebサーバーを作成する
まず、Ubuntu 20.04にログインし、図のようにApacheWebサーバーをセットアップします。
$ sudo apt install -y apache2
Apache2サービスを有効にして、再起動後も持続するようにします。次のコマンドを実行します
$ sudo systemctl enable apache2
Apacheのデフォルトのドキュメントルートディレクトリは、/ var / www/htmlパスにあります。後で、必要なパッケージを含むリポジトリディレクトリをこのパスに作成します。
ステップ2)パッケージリポジトリディレクトリを作成します
次に、/ var / www/htmlパスにubuntuというローカルリポジトリディレクトリを作成します。
$ sudo mkdir -p /var/www/html/ubuntu
上記で作成したディレクトリに必要な権限を設定します。
$ sudo chown www-data:www-data /var/www/html/ubuntu
ステップ3)apt-mirrorをインストールします
次のステップはapt-mirrorパッケージをインストールすることです。このパッケージをインストールした後、リモートdebianパッケージをダウンロードしてサーバー上のローカルリポジトリに同期するapt-mirrorコマンドまたはツールを取得します。したがって、インストールするには、次の手順を実行します
$ sudo apt update $ sudo apt install -y apt-mirror
ステップ4)ミラーリングまたは同期するようにリポジトリを構成する
apt-mirrorがインストールされると、その構成「/etc/apt/mirrror.list」が自動的に作成されます。このファイルには、Ubuntuサーバーのローカルフォルダーにダウンロードまたは同期されるリポジトリのリストが含まれています。この場合、ローカルフォルダは「/ var / www / html /ubuntu/」です。このファイルに変更を加える前に、まずバックアップを取りましょう。
$ sudo cp /etc/apt/mirror.list /etc/apt/mirror.list-bak
次に、viエディターを使用してファイルを編集し、以下に示すようにbase_pathとリポジトリーを更新します。
$ sudo vi /etc/apt/mirror.list ############# config ################### set base_path /var/www/html/ubuntu set nthreads 20 set _tilde 0 ############# end config ############## deb http://archive.ubuntu.com/ubuntu focal main restricted universe \ multiverse deb http://archive.ubuntu.com/ubuntu focal-security main restricted \ universe multiverse deb http://archive.ubuntu.com/ubuntu focal-updates main restricted \ universe multiverse clean http://archive.ubuntu.com/ubuntu
ファイルを保存して終了します。
私がUbuntu20.04LTSパッケージリポジトリを使用していることに気付いたかもしれませんが、システムに十分なスペースがないため、srcパッケージリポジトリをコメントアウトしています。 srcパッケージもダウンロードまたは同期する場合は、「deb-src」で始まる行のコメントを解除します。
ステップ5)リモートリポジトリのローカルフォルダへのミラーリングを開始します
ミラーリングまたは同期を開始する前に、まず、以下のcpコマンドを使用してpostmirror.shスクリプトをフォルダー/ var / www / html / ubuntu/varにコピーします。
$ sudo mkdir -p /var/www/html/ubuntu/var $ sudo cp /var/spool/apt-mirror/var/postmirror.sh /var/www/html/ubuntu/var
次に、リモートリポジトリからシステムのローカルフォルダへのパッケージのミラーリングを開始します。以下を実行します:
$ sudo apt-mirror
上記のコマンドは、以下のnohupコマンドを使用してバックグラウンドで開始することもできます
$ nohup sudo apt-mirror &
ミラーリングの進行状況を監視するには、以下を使用してください。
$ tail nohup.out
Ubuntu 20.04 LTSでは、apt-mirrorはCNFディレクトリとそのファイルを同期するため、フォルダとそのファイルを手動でダウンロードしてコピーする必要があります。したがって、CNFディレクトリを手動でダウンロードしないようにするには、以下の内容のシェルスクリプトを作成します。
$ vi cnf.sh #!/bin/bash for p in "${1:-focal}"{,-{security,updates}}\ /{main,restricted,universe,multiverse};do >&2 echo "${p}" wget -q -c -r -np -R "index.html*"\ "http://archive.ubuntu.com/ubuntu/dists/${p}/cnf/Commands-amd64.xz" wget -q -c -r -np -R "index.html*"\ "http://archive.ubuntu.com/ubuntu/dists/${p}/cnf/Commands-i386.xz" done
スクリプトを保存して閉じます。
スクリプトを実行して、CNFディレクトリとそのファイルをダウンロードします。
$ chmod +x cnf.sh $ bash cnf.sh
このスクリプトは、現在の作業ディレクトリに「archive.ubuntu.com」という名前のフォルダを作成します。このフォルダをミラーフォルダにコピーします
$ sudo cp -av archive.ubuntu.com /var/www/html/ubuntu/mirror/
注: cnfディレクトリを同期しないと、クライアントマシンで次のエラーが発生するため、これらのエラーを解決するには、上記のスクリプトを作成して実行する必要があります。
E: Failed to fetch http://x.x.x.x/ubuntu/mirror/archive.ubuntu.com/ubuntu/dists/\ focal/restricted/cnf/Commands-amd64 404 Not Found [IP:169.144.104.219 80] E: Failed to fetch http://x.x.x.x/ubuntu/mirror/archive.ubuntu.com/ubuntu/dists/\ focal-updates/main/cnf/Commands-amd64 404 Not Found [IP:169.144.104.219 80] E: Failed to fetch http://x.x.x.x/ubuntu/mirror/archive.ubuntu.com/ubuntu/dists/\ focal-security/main/cnf/Commands-amd64 404 Not Found [IP:169.144.104.219 80]
自動リポジトリ同期のスケジュール
ローカルのaptリポジトリを自動的に更新するようにcronジョブを設定します。このcronジョブを毎日夜間に設定することをお勧めします。
「crontab-e」を実行し、次のコマンドを追加して、毎日午前1時に実行します。
$ sudo crontab -e 00 01 * * * /usr/bin/apt-mirror
保存して閉じます。
注:ファイアウォールがUbuntuサーバーで実行されている場合は、次のコマンドを使用してポート80を許可します
$ sudo ufw allow 80
ステップ6)Webブラウザを介したローカルAPTリポジトリへのアクセス
Webブラウザを介してローカルに設定されたaptリポジトリにアクセスするには、次のURLを入力します。
http://
ステップ7)ローカルaptリポジトリサーバーを使用するようにUbuntu20.04クライアントを構成します
aptリポジトリサーバーが正常に機能しているかどうかをテストおよび確認するために、別のUbuntu 20.04 ltsシステムを使用して、aptコマンドがリモートではなくローカルリポジトリを指すように/etc/apt/sources.listファイルを更新します。
>したがって、システムにログインし、sources.listで以下を変更します
http://archive.ubuntu.com/ubuntu to http://169.144.104.219/ubuntu/mirror/archive.ubuntu.com/ubuntu
ここで、「169.144.104.219」は私のaptリポジトリサーバーのIPアドレスです。ご使用の環境に適したこのIPアドレスを置き換えてください。
また、aptリポジトリサーバーにミラーリングされていない他のすべてのリポジトリをコメントアウトしてください。したがって、sources.listファイルに変更を加えると、次のようになります。
次に、「apt update」コマンドを実行して、クライアントマシンがローカルのaptリポジトリサーバーから更新を取得していることを確認します。
$ sudo apt update
上記の完璧な出力は、クライアントマシンがパッケージと更新をフェッチするためにリポジトリに正常に接続できることを確認します。この記事の内容は以上です。このガイドが、Ubuntu20.04システムでローカルのaptリポジトリサーバーをセットアップするのに役立つことを願っています。
また読む :Linuxでの14の便利な「ls」コマンドの例