ルーターに接続された外部ハードドライブにラップトップといくつかのリポジトリのローカルコピーがあります。私のルーターは、これらのファイルへのアクセス(資格情報付き)をsamba共有やftpサーバーとして提供します。
これらのリポジトリが利用可能になったらチェックし、更新をダウンロードしてプロセスを高速化するようにapt-getを設定したいと思います。
もっと明確にするために、ラップトップがWi-Fiに接続されているときに、apt-getでインターネットの定期的なリポジトリとローカルのリポジトリの両方をチェックするようにします。外部リポジトリ内のファイルがローカルミラー内のファイルよりも新しい場合、またはミラーが利用できない場合、apt-getはインターネットからファイルをダウンロードする必要があります。
私はついにこれを解決することができ、かなりうまく機能しているので、似たようなものを実装したい人々と共有したいと思います。
私の最初の問題は、私のシステムがマルチアーチをサポートしていることです。そのため、エラーをダウンロードしないように、ミラーリポジトリには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このフィールドで使用します)。
独自のリポジトリを設定するには4つのステップがあります
dpkg-dev
_をインストールしますapt-get update
_が読み取り可能なファイルを作成するスクリプトを作成します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
_
これで完了です。
.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をインストールしようとすると、依存関係が解決されます。彼らは会うことができます。