web-dev-qa-db-ja.com

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

ルーターに接続された外部ハードドライブにラップトップといくつかのリポジトリのローカルコピーがあります。私のルーターは、これらのファイルへのアクセス(資格情報付き)をsamba共有やftpサーバーとして提供します。

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

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

3
Marcelo Ruiz

私はついにこれを解決することができ、かなりうまく機能しているので、似たようなものを実装したい人々と共有したいと思います。

私の最初の問題は、私のシステムがマルチアーチをサポートしていることです。そのため、エラーをダウンロードしないように、ミラーリポジトリには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

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

LAN内の他のコンピューターからミラー化されたリポジトリにアクセスしたかったので、ソリューションの他の部分はFTPリポジトリ定義を追加することですat the] in / etc/apt/sources.list。このセットアップでは、ファイルをダウンロードするときに最初にFTPリポジトリを使用し、次に/ etc/apt/sources.list.dで定義されているものを使用するようにapt-getを作成します。最新のものです。

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

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

serをFTPサーバーへのアクセスが許可されているユーザー名に、:passwordを接続(必要な場合は削除)が必要な場合はパスワードに置き換え、lan-resource LAN内のFTPサーバーのアドレス(/ etc/hostsを編集することにしました。ハードコードされたIPアドレスの繰り返しを避けるため、192.168.0.1は- lanftpserverこのフィールドで使用します)。

0
Marcelo Ruiz

独自のリポジトリを設定するには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-get_、_apt-cache_など。apt-getをインストールしようとすると、依存関係が解決されます。彼らは会うことができます。

1
jamiejackherer