利用可能な場合に lan apt-mirror を使用してダウンロードを最適化するように apt-get を構成する簡単な方法はありますか?

利用可能な場合に lan apt-mirror を使用してダウンロードを最適化するように apt-get を構成する簡単な方法はありますか?

私はラップトップと、ルーターに接続された外付けハードドライブ内の複数のリポジトリのローカルコピーを持っています。私のルーターは、Samba 共有や FTP サーバーとしてそれらのファイルへのアクセス (資格情報付き) を提供します。

可能であればプロセスを高速化するために、これらのリポジトリが利用可能になったときにそれらをチェックし、そこから更新をダウンロードするように apt-get を設定したいと思います。

もっと明確に言うと、ラップトップが Wi-Fi に接続されているときに、apt-get でインターネット上の通常のリポジトリとローカル リポジトリの両方をチェックするようにします。外部リポジトリのファイルがローカル ミラーのファイルよりも新しい場合、またはミラーが利用できない場合は、apt-get でインターネットからファイルをダウンロードする必要があります。

答え1

独自のリポジトリを設定するには4つのステップがあります

  1. インストールdpkg-dev
  2. パッケージをディレクトリに置く
  3. パッケージをスキャンしてapt-get update読み取り可能な ファイルを作成するスクリプトを作成します。
  4. sources.listリポジトリを指す行を追加します

インストールdpkg-dev

ターミナルを開きます:

sudo apt-get install dpkg-dev

ディレクトリ

パッケージを保存するためのディレクトリを作成します。この例では、 を使用します/usr/local/lan-repo

sudo mkdir -p /usr/local/lan-repo

次に、すべてのパッケージを新しいディレクトリに移動します。

すでにダウンロードされているパッケージは、通常、システムの に保存されます/var/cache/apt/archives。 をインストールしている場合は、apt-cacher追加のパッケージが ディレクトリに保存されている可能性が高くなりますapt-cacher/packages

スクリプトを作成しますupdate-lan-repo

これは非常にシンプルな 3 行のスクリプトです。

#! /bin/bash
cd /usr/local/lan-repo
sudo dpkg-scanpackages . /dev/null | gzip -9c > packages.gz

上記をコピーして、お気に入りのテキスト エディターに貼り付け、 として保存しますupdate-lan-repo~/bin(~はホーム ディレクトリを意味します。~/binまだ存在しない場合は作成します。Ubuntu は自動的にそのディレクトリを PATH に追加します。これは、個人用スクリプトを配置するのに適した場所になります。)

次に、スクリプトを実行可能にします。

chmod u+x ~/bin/update-lan-repo

スクリプトの動作は次のとおりです。

dpkg-scanpackagesは 内のすべてのパッケージを調べlan-repo、出力を圧縮して ファイルに書き出しますpackages.gz。このファイルapt-get updateは で読み取ることができます (詳細については、以下を参照してください)。 は/dev/null空のファイルです。つまり、これは、パッケージに関する追加情報を保持するオーバーライド ファイルの代わりのファイルであり、この場合、実際には必要ありません。 を参照してください。deb-override(5)さらに詳しく知りたい場合は。

ローカルリポジトリをsources.listファイルに追加する必要があります

echo "deb file:/usr/local/lan-repo ./" >> /etc/apt/sources.list

これで完了です。

CD/DVD オプション

.deb ファイルを含むディレクトリを CD/DVD に保存し、それをリポジトリとして使用することもできます (コンピューター間で共有する場合に適しています)。CD をリポジトリとして使用するには、次の手順を実行します。

次のコマンドを実行するだけです:

sudo apt-cdrom add

新しいリポジトリを使用します。

その後、新しい Debian パッケージを lan-repo ディレクトリに保存するたびに、次のコマンドを実行します。

sudo update-lan-repo
sudo apt-get update

これで、Synaptic、aptitude、apt コマンド ( apt-getapt-cacheなど) を使用してローカル パッケージを操作できるようになります。apt-get install を実行しようとすると、依存関係が満たされている限り、依存関係が自動的に解決されます。

答え2

ようやくこの問題を解決でき、かなりうまく機能しているので、同様のことを実装したい人々と共有したいと思います。

最初の問題は、私のシステムがマルチアーキテクチャをサポートしているため、ダウンロードエラーを回避するために、ミラーリングされたリポジトリにi386とamd64の両方のパッケージが含まれている必要があることでした(ソースはミラーリングしませんでした)。これは次のように行われます。/etc/apt/mirror.list次の例のように:

deb-i386  http://archive.ubuntu.com/ubuntu trusty main restricted universe multiverse
deb-amd64 http://archive.ubuntu.com/ubuntu trusty-security main restricted universe multiverse

私のベースパスそのファイルで定義されているのは/mnt/apt-ミラー、ルーターの USB ポートに接続された外付けハードドライブを Samba 共有としてマウントするスクリプトを実行します (スクリプトはここで確認できます: apt-mirror を使用して LAN ルーターに接続された HDD にファイルを保存する方法

LAN内の他のコンピュータからミラーリングされたリポジトリにアクセスしたかったので、解決策のもう1つの部分はFTPリポジトリの定義を追加することです。初めに/etc/apt/sources.listこの設定によりapt-getファイルをダウンロードするときに最初にFTPリポジトリを使用し、次にソースリストただし、ミラーリングされたものが最新である場合に限ります。

ローカル リポジトリは次のように定義されます。

deb [arch=amd64,i386] ftp://user:password@lan-resource/apt-mirrors/mirror/archive.ubuntu.com/ubuntu trusty main restricted universe multiverse

交換する場所ユーザーFTPサーバーへのアクセスを許可されたユーザー名で、:パスワード接続に必要な場合はパスワードを入力し(そうでない場合は削除)、lanリソースLAN内のFTPサーバーのアドレスを入力します(私は編集することにしました/etc/ホストハードコードされたIPアドレスの繰り返しを避けるために、192.168.0.1を次のように定義しました。lanftpサーバこの分野で使用するために)。

関連情報