企業が徐々にGNU / Linuxに移行するため、適切なインフラストラクチャの変更が必要になります。 今日、ローカルリポジトリを作成して、クライアントマシンのグローバルな更新の問題を解決しています。 このプロセスは当初、将来のメモとして文書化されていたので、本文に不合理な点があることを事前に謝罪します。 だから。
まず、これを行う方が良い場所を決定する必要があります。 インターネットには
rsyncと
debmirrorの 2つのお気に入りがあり
ます 。 柔軟性が高いため、後者を選択しました。
1.キーの取得
リポジトリミラーを作成するには、キー「Ubuntu Archive Automatic Signing Key <ftpmaster@ubuntu.com>」を取得する必要があります。 これを行うには、スーパーバイザーからのターミナルで次を入力します。
gpg --no-default-keyring --keyring trustedkeys.gpg --recv-keys 437D05B5
2。 スペースの準備
リポジトリ用のフォルダーを作成します。
sudo mkdir /path/to/repository
重要! 示されたパスの空きスペースの可用性を監視するために、トラブルに対処してください。
i386と
amd64の 2つのアーキテクチャでさえ、かなりの量が必要です。
3.パッケージの受け取り
ミラーリングは次の3段階で行われます。
- インデックスファイルをダウンロードします。
- 不明なファイルを削除します(以下の--nocleanupオプションにより無効化されます)。
- インデックスアーカイブのリストを作成し、ローカルリポジトリで可用性を確認する上記を実装するには、次の内容のrepo_update.shファイルを作成します。
#!/bin/sh
# . ,
#, .
# cleanup. .
#. --nocleanup
clean=--nocleanup
# source. .
# (
# ), --no-source
src=--source
#Host. , .
servername=mirror.yandex.ru
#Root. .
rdir=/ubuntu
# Ubuntu. 10.04 .
release=lucid,lucid-backports,lucid-proposed,lucid-security,lucid-updates
#.
section=main,restricted,universe,multiverse
# . Debmirror : http,
#hftp, ftp, rsync
sync_protocol=rsync
#. 32 64 .
# . ,
# .
arch=i386,amd64
# . , . 2.
path=/path/to/repository
debmirror --progress --verbose $clean $src --md5sums --host=$servername --root=$rdir \
--dist=$release -s=$section --method=$sync_protocol -a=$arch $path
ここで
/ usr / local / binディレクトリに置き、実行可能にします。
chmod +x repo_update.sh
sudo cp repo_update.sh /usr/local/bin/
次に、結果のスクリプトを実行し、プロセスが完了するのを待ちます。 プロセスは非常に長いです。 リードタイムは、インターネットフィードの幅に大きく依存します。
sudo /usr/local/bin/repo_update.sh
注意! ダウンロードのサイズは数十ギガバイトを超え、財務省のインターネットが無制限になることはめったにありません。 さらに、
debmirrorは接続の安定性、120秒のダウンタイムに敏感であり、
最初からやり直す必要があります。
4. Webサーバーのセットアップ
タンバリンで不要なダンスを作らないように、リポジトリへのアクセスを提供する従来の方法として、
httpプロトコルを選択します。 Webサーバーの選択はあなた次第です。 お気に入りの
ngnix 、
apache 、および
lighttpdの中で 、経験がないため(後者は便利で、はい)後者を選択しました。 だから。
サーバーのインストール。
sudo apt-get install lighttpd
ここではすべてが簡単です。 デフォルトとして
www以外のディレクトリを使用する予定がない場合、サーバーを構成する必要はありません。
/ var / wwwディレクトリにシンボリックリンクを作成するだけです
ln -s /path/to/repository /var/www/ubuntu
ブラウザからリポジトリの可用性を確認します。http:// <ip_address_repository> / ubuntu /
5.クライアントの構成
ここで、ちょっとしたトリックを適用します。
/etc/apt/sources.listに変更を加えないために(何が起こるかわかりません)。
/ etc / hostsファイルに数行を追加
します 。
<ip_address_repository> ru.archive.ubuntu.com
<ip_address_repository> security.ubuntu.com
ご注意 DNSサーバーがある場合は、これをすべて書き込むことができます。リポジトリサーバーでは、上記の名前の実際のアドレスを書き込みます。
6。 自動化
そして今、最も甘いもの。 すべて自力で回転させましょう。
6.1サーバー部分
パラグラフ#3では、パケットを受信するスクリプトを作成しました。
cronデーモンを使用して自動実行を構成し
ます 。
sudo crontab -e
切望された行を追加します:
0 0 * * * /usr/local/bin/repo_update.sh
これで、毎日0:00にスクリプトがすべての日常業務を実行します。
6.2クライアント部分
クライアント上で、
/ usr / local / binディレクトリに次の内容の
system_upd.shスクリプトを作成します。
#!/bin/sh
apt-get -y update && apt-get -y upgrade && apt-get -y clean
実行可能にすることを忘れないでください。
sudo chmod +x /usr/local/bin/system_upd.sh
次に、
cronを開きます。
sudo crontab -e
そして次の行を追加します。
40 17 * * * /usr/local/bin/system_upd.sh
現在、毎日17:40にシステムはリポジトリを更新のためにポーリングし、見つかった場合は更新されます。
注意! crontabを使用する場合 、タスクのある行の後には空の行が必要であることを忘れないでください。空の行は '
# '記号で示されます。
ps :画像が添付されていないことをおaびしますが、この場合、それらの存在は単に不適切であると考えます。