私はapt-mirrorを設定しようとしていますが、ubuntuアップストリームではうまく機能していますが、GitLabのようなものに使用すると、すべてのパッケージバージョンがダウンロードされます。
たとえば、gitlab-ceは72GBで、各バージョンは300MB未満です。 459ではなく、最新または最後の1つまたは2つのパッケージだけを保持するにはどうすればよいですか?
APTミラーは、[リポジトリ全体mirror.list
エントリのみをミラーすることを目的としています。
apt-mirror
は次のように動作します:
リポジトリからインデックスファイルを取得して処理します(apt update
と同じプロセス)。
ローカルに存在しない場合は、収集されたインデックスファイルからファイルをダウンロードします。このプロセスでは、フォルダー構造が保持されます(wget -c -x <url_file_array>
と同様)。
apt-mirror
の動作の詳細と最新バージョンのみを取得するためにリポジトリを部分的にミラーリングすることは不可能の詳細については、 The source code of apt -mirror (Perlで記述)。
だから、大規模なリポジトリから最新バージョンを取得するにはどうすればよいですか?
あなたの状況に対する私の一時的な回避策(たとえば、Ubuntu 18.04-Bionicのgitlab-ce
リポジトリを使用):
ミラーリングのパスを入力します。
cd /path/to/mirroring
バックアップsources.list
:
Sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sources.list
のすべての行を開いてコメントします:
Sudo nano /etc/apt/sources.list
ミラーリングに必要なリポジトリを追加します。
4.1。これをsources.list
に追加し、ファイルを終了します:deb https://packages.gitlab.com/gitlab/gitlab-ce/ubuntu/ bionic main
4.2。 GPGを追加します。
curl -L https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey | Sudo apt-key add -
インデックスファイルを更新します。
Sudo apt update
追加されたリポジトリから最新のパッケージのURLを取得し、ファイルに書き込みます。
Sudo apt-get install '*' --allow-unauthenticated -y --print-uris | grep -o '\'http.*\' | tr "\'" " " > download-list
-c
オプションのため、フォルダー構造でURLをダウンロードします。存在するファイルはダウンロードされません。
wget -i download-list -c -x
楽しい!!!
すべてを元に戻すには、sources.list
ファイルを古いsources.list.bak
に置き換えるだけです。
Sudo apt update