diff --git a/documentation/content/ja/books/handbook/mirrors/_index.adoc b/documentation/content/ja/books/handbook/mirrors/_index.adoc index be16ec79dc..bb36436def 100644 --- a/documentation/content/ja/books/handbook/mirrors/_index.adoc +++ b/documentation/content/ja/books/handbook/mirrors/_index.adoc @@ -1,927 +1,928 @@ --- title: 付録A FreeBSD の入手方法 part: パートV. 付録 prev: books/handbook/partv next: books/handbook/bibliography description: "FreeBSD の入手方法: CD および DVD セット, FTP サイト, Git のインストールおよび利用方法" --- [appendix] [[mirrors]] = FreeBSD の入手方法 :doctype: book :icons: font :sectnums: :sectnumlevels: 6 :source-highlighter: rouge :experimental: :skip-front-matter: :toc-title: 目次 :table-caption: 表 :figure-caption: 図 :example-caption: 例 :xrefstyle: basic :relfileprefix: ../ :outfilesuffix: :sectnumoffset: A include::shared/mirrors.adoc[] include::shared/authors.adoc[] include::shared/releases.adoc[] include::shared/ja/mailing-lists.adoc[] include::shared/ja/teams.adoc[] include::shared/ja/urls.adoc[] [[mirrors-cdrom]] == CD および DVD セット FreeBSD の CD および DVD のセットは以下のオンライン業者から入手できます。 * FreeBSD Mall, Inc. + 2420 Sand Creek Rd C-1 #347 + Brentwood, CA + 94513 + USA + Phone: +1 925 240-6652 + Fax: +1 925 674-0821 + Email: + WWW: https://www.freebsdmall.com * Getlinux + 78 Rue de la Croix Rochopt + Épinay-sous-Sénart + 91860 + France + Email: + WWW: http://www.getlinux.fr/ * Dr. Hinner EDV + Kochelseestr. 11 + D-81371 München + Germany + Phone: (0177) 428 419 0 + Email: + WWW: http://www.hinner.de/linux/freebsd.html [[mirrors-ftp]] == FTP サイト FreeBSD の公式な情報は anonymous FTP によって世界中のミラーサイトより入手できます。link:ftp://ftp.FreeBSD.org/pub/FreeBSD/[ftp://ftp.FreeBSD.org/pub/FreeBSD/] サイトは、HTTP および FTP 経由で利用できます。 これは、プロジェクトクラスタの管理者により運用されている数多くのコンピュータから構成されています。 また、GeoDNS により、近くの利用可能なミラーをユーザに提供します。 さらに、FreeBSD は以下のミラーサイトから anonymous FTP によって入手できます。 FreeBSD を anonymous FTP から入手する場合には、近くのサイトを利用するようにしてください。 "一次ミラーサイト" としてあげられているサイトには、 FreeBSD の各アーキテクチャで利用可能なすべてのバージョンのアーカイブ一式が用意されていますが、 あなたが住んでいる国や地域には、 おそらくより高速にダウンロードできるサイトが用意されています。 各国のミラーサイトには、 人気のあるアーキテクチャの最新のバージョンが置いてありますが、 FreeBSD のアーカイブ全体はもしかするとないかもしれません。 すべてのサイトは anonymous FTP 別の方法によるアクセスを提供しているサイトもあります。 各サイトで提供しているアクセス方法は、 ホスト名に続く括弧の中に記載されています。 <>, <>, <>, <>, <>, <>, <>, <>, <>, <>, <>, <>, <>, <>, <>, <>, <>, <>, <>, <>, <>, <>, <>, <>, <>, <>, <>, <>, <>, <>, <>, <>, <>, <>. (as of UTC) [[central]] *{central}* {central-ftp} (ftp / ftpv6 / {central-http} / {central-httpv6}) [[primary]] *{mirrors-primary}* In case of problems, please contact the hostmaster `<{mirrors-primary-email}>` for this domain. * {mirrors-primary-ftp1} (ftp) * {mirrors-primary-ftp2} (ftp) * {mirrors-primary-ftp3} (ftp) * {mirrors-primary-ftp4} (ftp / ftpv6 / {mirrors-primary-ftp4-http} / {mirrors-primary-ftp4-httpv6}) * {mirrors-primary-ftp5} (ftp) * {mirrors-primary-ftp6} (ftp) * {mirrors-primary-ftp7} (ftp) * {mirrors-primary-ftp10} (ftp / ftpv6 / {mirrors-primary-ftp10-http} / {mirrors-primary-ftp10-httpv6}) * {mirrors-primary-ftp11} (ftp) * {mirrors-primary-ftp13} (ftp) * {mirrors-primary-ftp14} (ftp / {mirrors-primary-ftp14-http}) [[armenia]] *{mirrors-armenia}* In case of problems, please contact the hostmaster `<{mirrors-armenia-email}>` for this domain. * {mirrors-armenia-ftp} (ftp / {mirrors-armenia-ftp-http} / rsync) [[australia]] *{mirrors-australia}* In case of problems, please contact the hostmaster `<{mirrors-australia-email}>` for this domain. * {mirrors-australia-ftp} (ftp) * {mirrors-australia-ftp2} (ftp) * {mirrors-australia-ftp3} (ftp) [[austria]] *{mirrors-austria}* In case of problems, please contact the hostmaster `<{mirrors-austria-email}>` for this domain. * {mirrors-austria-ftp} (ftp / ftpv6 / {mirrors-austria-ftp-http} / {mirrors-austria-ftp-httpv6}) [[brazil]] *{mirrors-brazil}* In case of problems, please contact the hostmaster `<{mirrors-brazil-email}>` for this domain. * {mirrors-brazil-ftp2} (ftp / {mirrors-brazil-ftp2-http}) * {mirrors-brazil-ftp3} (ftp / rsync) * {mirrors-brazil-ftp4} (ftp) [[czech-republic]] *{mirrors-czech}* In case of problems, please contact the hostmaster `<{mirrors-czech-email}>` for this domain. * {mirrors-czech-ftp} (ftp / {mirrors-czech-ftpv6} / {mirrors-czech-ftp-http} / {mirrors-czech-ftp-httpv6} / rsync / rsyncv6) * {mirrors-czech-ftp2} (ftp / {mirrors-czech-ftp2-http}) [[denmark]] *{mirrors-denmark}* In case of problems, please contact the hostmaster `<{mirrors-denmark-email}>` for this domain. * {mirrors-denmark-ftp} (ftp / ftpv6 / {mirrors-denmark-ftp-http} / {mirrors-denmark-ftp-httpv6}) [[estonia]] *{mirrors-estonia}* In case of problems, please contact the hostmaster `<{mirrors-estonia-email}>` for this domain. * {mirrors-estonia-ftp} (ftp) [[finland]] *{mirrors-finland}* In case of problems, please contact the hostmaster `<{mirrors-finland-email}>` for this domain. * {mirrors-finland-ftp} (ftp) [[france]] *{mirrors-france}* In case of problems, please contact the hostmaster `<{mirrors-france-email}>` for this domain. * {mirrors-france-ftp} (ftp) * {mirrors-france-ftp1} (ftp / {mirrors-france-ftp1-http} / rsync) * {mirrors-france-ftp3} (ftp) * {mirrors-france-ftp5} (ftp) * {mirrors-france-ftp6} (ftp / rsync) * {mirrors-france-ftp7} (ftp) * {mirrors-france-ftp8} (ftp) [[germany]] *{mirrors-germany}* In case of problems, please contact the hostmaster `<{mirrors-germany-email}>` for this domain. * ftp://ftp.de.FreeBSD.org/pub/FreeBSD/ (ftp) * ftp://ftp1.de.FreeBSD.org/freebsd/ (ftp / http://www1.de.FreeBSD.org/freebsd/ / rsync://rsync3.de.FreeBSD.org/freebsd/) * ftp://ftp2.de.FreeBSD.org/pub/FreeBSD/ (ftp / http://ftp2.de.FreeBSD.org/pub/FreeBSD/ / rsync) * ftp://ftp4.de.FreeBSD.org/FreeBSD/ (ftp / http://ftp4.de.FreeBSD.org/pub/FreeBSD/) * ftp://ftp5.de.FreeBSD.org/pub/FreeBSD/ (ftp) * ftp://ftp7.de.FreeBSD.org/pub/FreeBSD/ (ftp / http://ftp7.de.FreeBSD.org/pub/FreeBSD/) * ftp://ftp8.de.FreeBSD.org/pub/FreeBSD/ (ftp) [[greece]] *{mirrors-greece}* In case of problems, please contact the hostmaster `<{mirrors-greece-email}>` for this domain. * {mirrors-greece-ftp} (ftp) * {mirrors-greece-ftp2} (ftp) [[hong-kong]] *{mirrors-hongkong}* {mirrors-hongkong-ftp} (ftp) [[ireland]] *{mirrors-ireland}* In case of problems, please contact the hostmaster `<{mirrors-ireland-email}>` for this domain. * {mirrors-ireland-ftp} (ftp / rsync) [[japan]] *{mirrors-japan}* In case of problems, please contact the hostmaster `<{mirrors-japan-email}>` for this domain. * {mirrors-japan-ftp} (ftp) * {mirrors-japan-ftp2} (ftp) * {mirrors-japan-ftp3} (ftp) * {mirrors-japan-ftp4} (ftp) * {mirrors-japan-ftp5} (ftp) * {mirrors-japan-ftp6} (ftp) * {mirrors-japan-ftp7} (ftp) * {mirrors-japan-ftp8} (ftp) * {mirrors-japan-ftp9} (ftp) [[korea]] *{mirrors-korea}* In case of problems, please contact the hostmaster `<{mirrors-korea-email}>` for this domain. * {mirrors-korea-ftp} (ftp / rsync) * {mirrors-korea-ftp2} (ftp / {mirrors-korea-ftp2-http}) [[latvia]] *{mirrors-latvia}* In case of problems, please contact the hostmaster `<{mirrors-latvia-email}>` for this domain. * {mirrors-latvia-ftp} (ftp / {mirrors-latvia-ftp-http}) [[lithuania]] *{mirrors-lithuania}* In case of problems, please contact the hostmaster `<{mirrors-lithuania-email}>` for this domain. * {mirrors-lithuania-ftp} (ftp / {mirrors-lithuania-ftp-http}) [[netherlands]] *{mirrors-netherlands}* In case of problems, please contact the hostmaster `<{mirrors-netherlands-email}>` for this domain. * {mirrors-netherlands-ftp} (ftp / {mirrors-netherlands-ftp-http} / rsync) * {mirrors-netherlands-ftp2} (ftp) [[new-zealand]] *{mirrors-new-zealand}* * {mirrors-new-zealand-ftp} (ftp / {mirrors-new-zealand-ftp-http}) [[norway]] *{mirrors-norway}* In case of problems, please contact the hostmaster `<{mirrors-norway-email}>` for this domain. * {mirrors-norway-ftp} (ftp / rsync) [[poland]] *{mirrors-poland}* In case of problems, please contact the hostmaster `<{mirrors-poland-email}>` for this domain. * {mirrors-poland-ftp} (ftp) * ftp2.pl.FreeBSD.org [[russia]] *{mirrors-russia}* In case of problems, please contact the hostmaster `<{mirrors-russia-email}>` for this domain. * {mirrors-russia-ftp} (ftp / {mirrors-russia-ftp-http} / rsync) * {mirrors-russia-ftp2} (ftp / {mirrors-russia-ftp2-http} / rsync) * {mirrors-russia-ftp4} (ftp) * {mirrors-russia-ftp5} (ftp / {mirrors-russia-ftp5-http} / rsync) * {mirrors-russia-ftp6} (ftp) [[saudi-arabia]] *{mirrors-saudi-arabia}* In case of problems, please contact the hostmaster `<{mirrors-saudi-arabia-email}>` for this domain. * {mirrors-saudi-arabia-ftp} (ftp) [[slovenia]] *{mirrors-slovenia}* In case of problems, please contact the hostmaster `<{mirrors-slovenia-email}>` for this domain. * {mirrors-slovenia-ftp} (ftp) [[south-africa]] *{mirrors-south-africa}* In case of problems, please contact the hostmaster `<{mirrors-south-africa-email}>` for this domain. * {mirrors-south-africa-ftp} (ftp) * {mirrors-south-africa-ftp2} (ftp) * {mirrors-south-africa-ftp4} (ftp) [[spain]] *{mirrors-spain}* In case of problems, please contact the hostmaster `<{mirrors-spain-email}>` for this domain. * {mirrors-spain-ftp} (ftp / {mirrors-spain-ftp-http}) * {mirrors-spain-ftp3} (ftp) [[sweden]] *{mirrors-sweden}* In case of problems, please contact the hostmaster `<{mirrors-sweden-email}>` for this domain. * {mirrors-sweden-ftp} (ftp) * {mirrors-sweden-ftp2} (ftp / {mirrors-sweden-ftp2-rsync}) * {mirrors-sweden-ftp3} (ftp) * {mirrors-sweden-ftp4} (ftp / {mirrors-sweden-ftp4v6} / {mirrors-sweden-ftp4-http} / {mirrors-sweden-ftp4-httpv6} / {mirrors-sweden-ftp4-rsync} / {mirrors-sweden-ftp4-rsyncv6}) * {mirrors-sweden-ftp6} (ftp / {mirrors-sweden-ftp6-http}) [[switzerland]] *{mirrors-switzerland}* In case of problems, please contact the hostmaster `<{mirrors-switzerland-email}>` for this domain. * {mirrors-switzerland-ftp} (ftp / {mirrors-switzerland-ftp-http}) [[taiwan]] *{mirrors-taiwan}* In case of problems, please contact the hostmaster `<{mirrors-taiwan-email}>` for this domain. * {mirrors-taiwan-ftp} (ftp / {mirrors-taiwan-ftpv6} / rsync / rsyncv6) * {mirrors-taiwan-ftp2} (ftp / {mirrors-taiwan-ftp2v6} / {mirrors-taiwan-ftp2-http} / {mirrors-taiwan-ftp2-httpv6} / rsync / rsyncv6) * {mirrors-taiwan-ftp4} (ftp) * {mirrors-taiwan-ftp5} (ftp) * {mirrors-taiwan-ftp6} (ftp / {mirrors-taiwan-ftp6v6} / rsync) * {mirrors-taiwan-ftp7} (ftp) * {mirrors-taiwan-ftp8} (ftp) * {mirrors-taiwan-ftp11} (ftp / {mirrors-taiwan-ftp11-http}) * {mirrors-taiwan-ftp12} (ftp) * {mirrors-taiwan-ftp13} (ftp) * {mirrors-taiwan-ftp14} (ftp) * {mirrors-taiwan-ftp15} (ftp) [[ukraine]] *{mirrors-ukraine}* * {mirrors-ukraine-ftp} (ftp / {mirrors-ukraine-ftp-http}) * {mirrors-ukraine-ftp6} (ftp / {mirrors-ukraine-ftp6-http} / {mirrors-ukraine-ftp6-rsync}) * {mirrors-ukraine-ftp7} (ftp) [[uk]] *{mirrors-uk}* In case of problems, please contact the hostmaster `<{mirrors-uk-email}>` for this domain. * {mirrors-uk-ftp} (ftp) * {mirrors-uk-ftp2} (ftp / {mirrors-uk-ftp2-rsync}) * {mirrors-uk-ftp3} (ftp) * {mirrors-uk-ftp4} (ftp) * {mirrors-uk-ftp5} (ftp) [[usa]] *{mirrors-us}* In case of problems, please contact the hostmaster `<{mirrors-us-email}>` for this domain. * {mirrors-us-ftp} (ftp) * {mirrors-us-ftp2} (ftp) * {mirrors-us-ftp3} (ftp) * {mirrors-us-ftp4} (ftp / ftpv6 / {mirrors-us-ftp4-http} / {mirrors-us-ftp4-httpv6}) * {mirrors-us-ftp5} (ftp) * {mirrors-us-ftp6} (ftp) * {mirrors-us-ftp8} (ftp) * {mirrors-us-ftp10} (ftp) * {mirrors-us-ftp11} (ftp) * {mirrors-us-ftp13} (ftp / {mirrors-us-ftp13-http} / rsync) * {mirrors-us-ftp14} (ftp / {mirrors-us-ftp14-http}) * {mirrors-us-ftp15} (ftp) [[git]] == Git の利用 [[git-intro]] === はじめに 2020 年 12 月から、FreeBSD はソースコード、ドキュメントのすべてを管理するメインのバージョン管理システムに git を使っています。 +2021 年 4 月から、FreeBSD は Ports Collection のすべてを管理するバージョン管理システムに git を使っています。 [NOTE] ==== 一般的には Git は開発用ツールです。 ユーザによっては、FreeBSD ベースシステムのアップデートに `freebsd-update` (crossref:cutting-edge[updating-upgrading-freebsdupdate,“FreeBSD Update”])、 FreeBSD Ports Collection のアップデートに `portsnap` (crossref:ports[ports-using,“Ports Collection の利用”]) を好んで使用するでしょう。 ==== この章では、FreeBSD 上への Git のインストール方法および、 FreeBSD リポジトリのローカルコピーの作成方法について説明します。 Git の使用方法についても紹介します。 [[git-ssl-certificates]] === ルート SSL 証明書 12._x_ より前の古い FreeBSD システムは、適切なルート証明書を持っていません。 これらのシステムに package:security/ca_root_nss[] をインストールすることで、 Git は HTTPS リポジトリサーバを検証できるようになります。 ルート SSL 証明書は port からインストールできます。 [source,shell] .... # cd /usr/ports/security/ca_root_nss # make install clean .... または package からインストールしてください。 [source,shell] .... # pkg install ca_root_nss .... [[git-install]] === インストール package を使って Git をインストールできます。 [source,shell] .... # pkg install git .... Ports Collection からも Git をインストールできます。 [source,shell] .... # cd /usr/ports/devel/git # make install clean .... [[git-usage]] === Git の実行 ソースコードをローカルディレクトリに新しくコピーするには、`git` を使ってください。 このファイルのあるディレクトリのことを _ワークツリー_ と呼びます。 [WARNING] ==== コピー先のディレクトリが既に存在する場合は、`git clone` をはじめて使う前にディレクトリを移動するか削除してください。 git 以外の方法で用意されたディレクトリに対するリポジトリのクローンは失敗するでしょう。 ==== Git は、リポジトリの指定に _protocol://hostname/path_ 形式の URL を用います。 path の最初でアクセスする FreeBSD リポジトリを指定します。 リポジトリには `base`, `doc` および `ports` の 3 種類あります。 `base` は FreeBSD ベースシステムのソースコード、`doc` はドキュメント、そして `ports` は FreeBSD Ports Collection のリポジトリです。 たとえば、`https://git.FreeBSD.org/src.git` という URL は、`https` プロトコルによる src リポジトリの main ブランチを示します。 [[git-url-table]] .FreeBSD Git リポジトリの URL テーブル [options="header,foooter"] |======================================================= |項目 | Git URL | ウェブベースの src リポジトリブラウザ | `https://cgit.freebsd.org/src` | HTTPS 経由の読み取り専用 src リポジトリ | `https://git.freebsd.org/src.git` | Anonymous ssh による読み取り専用 src リポジトリ | `ssh://anongit@git.freebsd.org/src.git` | コミッタのための読み取り/書き込み用 src リポジトリ | `ssh://git@gitrepo.freebsd.org/src.git` (*) | ウェブベースの doc リポジトリブラウザ | `https://cgit.freebsd.org/doc` | HTTPS 経由の読み取り専用 doc リポジトリ | `https://git.freebsd.org/doc.git` | Anonymous ssh による読み取り専用 doc リポジトリ | `ssh://anongit@git.freebsd.org/doc.git` | コミッタのための読み取り/書き込み用 doc リポジトリ | `ssh://git@gitrepo.freebsd.org/doc.git` (*) | ウェブベースの ports リポジトリブラウザ | `https://cgit.freebsd.org/ports` | HTTPS 経由の読み取り専用 ports リポジトリ| `https://git.freebsd.org/ports.git` | Anonymous ssh による読み取り専用 ports リポジトリ | `ssh://anongit@git.freebsd.org/ports.git` | コミッタのための読み取り/書き込み用 ports リポジトリ | `ssh://git@gitrepo.freebsd.org/ports.git` (*) |======================================================= - (*) `git` は、リポジトリサーバ上の特別なユーザです。 リポジトリサーバは、FreeBSD.org に登録されている ssh 鍵からユーザを識別するので、変更する必要はありません。 [WARNING] ==== git への移行完了後、`gitrepo.freebsd.org` は単純な `repo.freebsd.org` に変更される予定です。 ==== 利用開始には、FreeBSD リポジトリを clone してください。 [source,shell] .... # git clone -o freebsd [ -b branch ] https://git.FreeBSD.org/repo.git wcdir .... ここで * _repo_ は、プロジェクトリポジトリの `src`, `ports`, または `doc` のどれかになります。 * _branch_ は、使用しているリポジトリに依存します。 `ports` および `doc` では、ほとんどの変更が `main` ブランチで行われる一方で、`src` では -CURRENT の最新版を `main` で管理し、各 -STABLE ブランチの最新版を `stable/12` (12._x_) および `stable/13` (13._x_) で管理しています。 * _wcdir_ は、指定したブランチの内容が置かれるターゲットディレクトリです。 通常、`ports` では [.filename]#/usr/ports#、 `src` では [.filename]#/usr/src#、そして `doc` では [.filename]#/usr/doc# です。 * _freebsd_ は、使用する origin の名前です。 FreeBSD のドキュメントの慣例で、origin は `freebsd` とします。 この例では、FreeBSD リポジトリからシステムのソースの 'main' ブランチを HTTPS プロトコルを用いてチェックアウトし、ローカルのワーキングコピーを [.filename]#/usr/src# に作成します。 もし、[.filename]#/usr/src# がすでに存在していて、`git` により作成されたものでなければ、チェックアウトの前に、名前を変更するか削除しておいてください。 そうでなければ、git は何も行わないでしょう。 [source,shell] .... # git clone -o freebsd https://git.FreeBSD.org/src.git /usr/src .... 初めてチェックアウトする際には、リモートリポジトリのすべてのブランチをダウンロードするので時間がかかります。 初めてのチェックアウト後は、 以下を実行することでローカルのワーキングコピーをアップデートできます。 [source,shell] .... # cd wcdir # git pull --rebase .... この例で作成された [.filename]#/usr/src# をアップデートするには、以下のようになります。 [source,shell] .... # cd /usr/src # git pull --rebase .... チェックアウトと比較すると、このアップデートでは変更点のあるファイルのみが転送されるので高速です。 プロジェクトのメンバーが管理する外部のミラーも存在します。 <> の節を参照してください。 === SSH 関連情報 * `ssh://${user}@${url}/${repo}.git` は、`${user}@${url}:${repo}.git` と書くこともできます。すなわち git 上では以下の二つの URL は両方とも使えます。 -- ** `ssh://anongit@git.freebsd.org/${repo}.git` ** `anongit@git.freebsd.org:${repo}.git` 読み書き用リポジトリでも同様です。 ** `ssh://git@(git)repo.freebsd.org/${repo}.git` ** `git@(git)repo.freebsd.org:${repo}.git` -- * gitrepo.FreeBSD.org ホスト鍵のフィンガープリントは以下です。 ** ECDSA 鍵のフィンガープリントは `SHA256:seWO5D27ySURcx4bknTNKlC1mgai0whP443PAKEvvZA` です。 ** ED25519 鍵のフィンガープリントは `SHA256:lNR6i4BEOaaUhmDHBA1WJsO7H3KtvjE2r5q4sOxtIWo` です。 ** RSA 鍵のフィンガープリントは `SHA256:f453CUEFXEJAXlKeEHV+ajJfeEfx9MdKQUD7lIscnQI` です。 * git.FreeBSD.org ホスト鍵のフィンガープリントは以下です。 ** ECDSA 鍵のフィンガープリントは `SHA256:/UlirUAsGiitupxmtsn7f9b7zCWd0vCs4Yo/tpVWP9w` です。 ** ED25519 鍵のフィンガープリントは `SHA256:y1ljKrKMD3lDObRUG3xJ9gXwEIuqnh306tSyFd1tuZE` です。 ** RSA 鍵のフィンガープリントは `SHA256:jBe6FQGoH4HjvrIVM23dcnLZk9kmpdezR/CvQzm7rJM` です。 これらは DNS の SSHFP レコードとしても公開されています。 === ウェブベースのリポジトリブラウザ FreeBSD プロジェクトは、現在 cgit をウェブベースのリポジトリブラウザ (https://cgit.freebsd.org/) として使用しています。 各リポジトリの URL は、<> にまとめられています。 === ユーザ向けの説明 公式の配布用のミラーから`git clone` および `git pull` することが推奨されています。 GeoDNS により、近くの利用可能なミラーがユーザに提供されます。 === 開発者向けの説明 この節では、コミッタがリモートリポジトリに読み書きアクセスし、開発者や貢献者からのコミットをリモートリポジトリに反映する方法について説明します。 読み取り専用のアクセスについては、上記のユーザ向けの説明を参照してください。 ==== 日々の利用 * リポジトリを clone してください。 + [source,shell] .... % git clone -o freebsd --config remote.freebsd.fetch='+refs/notes/*:refs/notes/*' https://git.freebsd.org/${repo}.git .... + 実行すると、公式ミラーがリモートリポジトリに設定されます。 + [source,shell] .... % git remote -v freebsd https://git.freebsd.org/${repo}.git (fetch) freebsd https://git.freebsd.org/${repo}.git (push) .... * FreeBSD コミッタ情報の設定 + repo.freebsd.org のコミットのフックは、"Commit" フィールドが FreeBSD.org のコミッタ情報にマッチするかを確認します。 freefall 上で `/usr/local/bin/gen-gitconfig.sh` スクリプトを実行すると、これらの設定を簡単に行うことができます。 + [source,shell] .... % gen-gitconfig.sh [...] % git config user.name (your name in gecos) % git config user.email (your login)@FreeBSD.org .... * push 先の URL を設定してください。 + [source,shell] .... % git remote set-url --push freebsd git@gitrepo.freebsd.org:${repo}.git .... + 実行すると、最も効率的な fetch と push が別の URL に設定されます。 + [source,shell] .... % git remote -v freebsd https://git.freebsd.org/${repo}.git (fetch) freebsd git@gitrepo.freebsd.org:${repo}.git (push) .... + 繰り返しになりますが、将来的に、`gitrepo.freebsd.org` は `repo.freebsd.org` に正規化される予定です。 * コミットメッセージのテンプレートのフックをインストールしてください。 + [source,shell] .... % fetch https://cgit.freebsd.org/src/plain/tools/tools/git/hooks/prepare-commit-msg -o .git/hooks % chmod 755 .git/hooks/prepare-commit-msg .... ==== "admin" ブランチ `access` および `mentors` ファイルは、各リポジトリの orphan ブランチ `internal/admin` で管理されています。 以下の例では、`internal/admin` ブランチをローカルブランチ `admin` にチェックアウトする方法を示しています。 [source,shell] .... % git config --add remote.freebsd.fetch '+refs/internal/*:refs/internal/*' % git fetch % git checkout -b admin internal/admin .... または、`admin` ブランチ用にワークツリーを追加する方法もあります。 [source,shell] .... git worktree add -b admin ../${repo}-admin internal/admin .... `internal/admin` ブランチはウェブブラウザを使って https://cgit.freebsd.org/${repo}/log/?h=internal/admin で閲覧できます。 push の際には、以下のように完全な refspec を指定するか [source,shell] .... git push freebsd HEAD:refs/internal/admin .... または、`push.default` を `upstream` に設定してください。 この設定を行うと、`git push` は、現在のブランチをデフォルトで upstream に push します。 このこれは、プロジェクトのワークフローにより適しています。 [source,shell] .... git config push.default upstream .... [WARNING] ==== この節で説明した内部の詳細は頻繁に変更されます。 ==== [[external-mirrors]] === 外部ミラー FreeBSD.org は以下のミラーを管理しておらず、プロジェクトのメンバーが現在も維持しています。 ユーザおよび開発者は自由にこれらのミラーのリポジトリを pull したりブラウザで見ることができます。 これらのミラーとのプロジェクトワークフローは議論中です。 ==== Codeberg - doc: https://codeberg.org/FreeBSD/freebsd-doc - ports: https://codeberg.org/FreeBSD/freebsd-ports - src: https://codeberg.org/FreeBSD/freebsd-src ==== GitHub - doc: https://github.com/freebsd/freebsd-doc - ports: https://github.com/freebsd/freebsd-ports - src: https://github.com/freebsd/freebsd-src ==== GitLab - doc: https://gitlab.com/FreeBSD/freebsd-doc - ports: https://gitlab.com/FreeBSD/freebsd-ports - src: https://gitlab.com/FreeBSD/freebsd-src === メーリングリスト FreeBSD プロジェクトにおける git の一般的な使用方法や質問について: [freebsd-git](https://lists.freebsd.org/mailman/listinfo/freebsd-git) コミットメッセージは以下のメーリングリストに送信されます。 - https://lists.freebsd.org/mailman/listinfo/dev-commits-doc-all[dev-commits-doc-all]: doc リポジトリに対するすべての変更 - https://lists.freebsd.org/mailman/listinfo/dev-commits-ports-all[dev-commits-ports-all]: ports リポジトリに対するすべての変更 - https://lists.freebsd.org/mailman/listinfo/dev-commits-ports-main[dev-commits-ports-main]: ports リポジトリの "main" ブランチに対するすべての変更 - https://lists.freebsd.org/mailman/listinfo/dev-commits-ports-branches[dev-commits-ports-branches]: ports リポジトリの quarterly ブランチに対するすべての変更 - https://lists.freebsd.org/mailman/listinfo/dev-commits-src-all[dev-commits-src-all]: src リポジトリに対するすべての変更 - https://lists.freebsd.org/mailman/listinfo/dev-commits-src-main[dev-commits-src-main]: src リポジトリの "main" ブランチ (FreeBSD-CURRENT ブランチ) に対するすべての変更 - https://lists.freebsd.org/mailman/listinfo/dev-commits-src-branches[dev-commits-src-branches]: src リポジトリの stable ブランチに対するすべての変更 詳細については、ハンドブックの C.2. 「メーリングリスト」 https://www.freebsd.org/doc/ja/books/handbook/eresources-mail.html の "コミットメッセージリスト" の節を参照してください。 [[svn]] == Subversion の利用 [[svn-intro]] === はじめに 2020 年 12 月より、FreeBSD のソースコード、ドキュメントのすべてを管理するメインのバージョン管理システムは git に移行しました。 git リポジトリの `stable/11`, `stable/12` および関連するリリースのブランチは、subversion リポジトリにエクスポートされます。 このエクスポートは、各ブランチの保守終了予定日まで行われる予定です。 2012 年 7 月から 2021 年 3 月までの間 FreeBSD は、FreeBSD Ports Collection のすべてを管理するバージョン管理システムに Subversion を使用していました。 2021 年 4 月より、FreeBSD の Ports Collection のすべてを管理するメインのバージョン管理システムは git に移行しました。 [NOTE] ==== -一般的には Subversion は開発者向けのツールです。 ユーザは好みに応じて、FreeBSD のベースシステムのアップデートに `freebsd-update` (crossref:cutting-edge[updating-upgrading-freebsdupdate,「FreeBSD Update」])、Ports Collection のアップデートには `portsnap` (crossref:ports[ports-using,「Ports Collection の利用」]) を使用できます。 2021 年 3 月以降、subversion はレガシーブランチ (`stable/11` および `stable/12`) でのみ使用されます。 ==== この節では、FreeBSD システムへの Subversion のインストール方法、および FreeBSD リポジトリをローカルに作成する方法について説明します。 さらに Subversion を利用するための情報についても紹介します。 [[svn-ssl-certificates]] === ルート SSL 証明書 12._x_ より前の古い FreeBSD システムは、適切なルート証明書を持っていません。 これらのシステムに package:security/ca_root_nss[] をインストールすることで、 Subversion は HTTPS リポジトリサーバを検証できるようになります。 インストールの手順については、<> で説明されています。 [[svn-svnlite]] === Svnlite FreeBSD には、Subversion より軽い `svnlite` がインストールされています。 Subversion の port または package は、 Python もしくは Perl API が必要な時や、 最新の Subversion を使用したい時のみ必要となります。 通常の Subversion と、 `svnlite` との違いは、 使用する時のコマンド名が異なるだけです。 [[svn-install]] === インストール `svnlite` を利用できない場合や、 フルバージョンの Subversion を使いたいのであれば、 事前に Subversion をインストールしておく必要があります。 Subversion は Ports Collection からインストールできます。 [source,shell] .... # cd /usr/ports/devel/subversion # make install clean .... package を使って Subversion をインストールすることもできます。 [source,shell] .... # pkg install subversion .... [[svn-usage]] === Subversion の実行 ローカルディレクトリにソースコードをダウンロードするには、 `svn` コマンドを使ってください。 このディレクトリにあるファイルを、 _ローカル作業コピー_ と呼びます。 [WARNING] ==== `checkout` をはじめて使う前に、 ローカルディレクトリを移動するか削除してください。 `svn` 以外の方法で用意されたディレクトリでチェックアウトすると、 すでに存在するファイルと、 リポジトリから持ってきたファイルとの間で衝突が起きてしまいます。 ==== Subversion では、リポジトリの指定に _protocol://hostname/path_ 形式の URL を用います。 以下に記載されているように、 アクセスする FreeBSD リポジトリは、パス (path) の最初で指定します。 リポジトリは 3 つあります。 `base` は FreeBSD ベースシステムのソースコード、`ports` は Ports Collection、 そして `doc` はドキュメントのリポジトリです。 -たとえば、`https://svn.FreeBSD.org/base/head/` という URL は、`https` プロトコルによる ports リポジトリのメインブランチを示しています。 +たとえば、`https://svn.FreeBSD.org/base/head/` という URL は、`https` プロトコルによる src リポジトリのメインブランチを示しています。 以下のように入力して、リポジトリからチェックアウトしてください。 [source,shell] .... # svn checkout https://svn.FreeBSD.org/repository/branch lwcdir .... ここで、_repository_, _branch_ および _root_ は以下のとおりです。 * _repository_ には、 プロジェクトリポジトリの `base`, `ports` または `doc` のどれかひとつを指定します。 -* _branch_ は、使うリポジトリによります。 `ports` および `doc` では、ほとんどの変更が `head` ブランチで行われます。 `base` リポジトリでは、`head` ブランチで -CURRENT の最新バージョンを管理しています。 -STABLE ブランチの最新バージョンは、 9._x_ は `stable/9`, そして 10._x_ は `stable/10` で管理しています。 +* _branch_ は、使うリポジトリによります。 `ports` および `doc` では、ほとんどの変更が `head` ブランチで行われます。 `base` リポジトリでは、`head` ブランチで -CURRENT の最新バージョンを管理しています。 -STABLE ブランチの最新バージョンは、 11._x_ は `stable/11`, そして 12._x_ は `stable/12` で管理しています。 * _lwcdir_ は、 指定したブランチの中身が置かれるターゲットのディレクトリです。 通常 `ports` は [.filename]#/usr/ports#、 `base` は [.filename]#/usr/src#、 そして `doc` では [.filename]#/usr/doc# と指定します。 以下の例では、ソースツリーを FreeBSD リポジトリから HTTPS プロトコルを使ってチェックアウトします。 それらは、[.filename]#/usr/src# のローカル作業コピーに置かれます。 もし [.filename]#/usr/src# がすでに存在していて、それが `svn` によって生成されたものでなければ、チェックアウトする前に、名前を変更するか削除してください。 [source,shell] .... # svn checkout https://svn.FreeBSD.org/base/head /usr/src .... 初めてチェックアウトする際には、 リモートリポジトリのすべてのブランチをダウンロードする必要があるので、 時間がかかります。 我慢してください。 初めてのチェックアウト後は、 以下を実行することでローカル作業コピーをアップデートできます。 [source,shell] .... # svn update lwcdir .... -この例で作成された [.filename]#/usr/ports# をアップデートするには、 以下のようにしてください。 +この例で作成された [.filename]#/usr/src# をアップデートするには、 以下のようにしてください。 [source,shell] .... # svn update /usr/src .... アップデートはチェックアウトにくらべ、 変更点のあるファイルのみが転送されるので高速です。 チェックアウト後、ローカル作業コピーをアップデートするもうひとつの方法は、 [.filename]#/usr/ports#, [.filename]#/usr/src# または [.filename]#/usr/doc# ディレクトリの [.filename]#Makefile# で提供されています。 `SVN_UPDATE` を設定して `update` ターゲットを使ってください。 たとえば、[.filename]#/usr/src# をアップデートするには、以下のようにしてください。 [source,shell] .... # cd /usr/src # make update SVN_UPDATE=yes .... [[svn-mirrors]] === Subversion ミラーサイト FreeBSD Subversion リポジトリは、 [.programlisting] .... svn.FreeBSD.org .... です。これは、公にアクセス可能なミラーネットワークで、 GeoDNS を用いて適切なバックエンドサーバを選択しています。 ブラウザを用いて FreeBSD の Subversion リポジトリを参照するには、link:https://svnweb.FreeBSD.org/[https://svnweb.FreeBSD.org/] を利用してください。 HTTPS は推奨されているプロトコルです。 自動的に証明書を検証するために、package:security/ca_root_nss[] port をインストールする必要があります。 === より詳しい情報 Subversion の利用に関する他の情報は、 http://svnbook.red-bean.com/[Version Control with Subversion] や http://subversion.apache.org/docs/[Subversion Documentation] といった "Subversion Book" をご覧ください。 [[mirrors-rsync]] == rsync を使用する 次のサイトは、FreeBSD を rsync プロトコルで提供しています。 rsync ユーティリティは送り側と受け側の差分だけを転送します。 FreeBSD FTP サーバのミラーサイトを作成する時に便利でしょう。 rsync は、多くのオペレーティングシステムで 利用することができます。FreeBSD 版は、package:net/rsync[] の port か、package を使ってください。 チェコ共和国:: rsync://ftp.cz.FreeBSD.org/ + 提供しているコレクション: ** ftp: FreeBSD FTP サーバの部分ミラー ** FreeBSD: FreeBSD FTP サーバの全体ミラー オランダ:: rsync://ftp.nl.FreeBSD.org/ + 提供しているコレクション: ** FreeBSD: FreeBSD FTP サーバの全体ミラー ロシア:: rsync://ftp.mtu.ru/ + 提供しているコレクション: ** FreeBSD: FreeBSD FTP サーバの全体ミラー ** FreeBSD-Archive: FreeBSD アーカイブ FTP サーバのミラー スウェーデン:: rsync://ftp4.se.freebsd.org/ + 提供しているコレクション: ** FreeBSD: FreeBSD FTP サーバの全体ミラー 台湾:: rsync://ftp.tw.FreeBSD.org/ + rsync://ftp2.tw.FreeBSD.org/ + rsync://ftp6.tw.FreeBSD.org/ + 提供しているコレクション: ** FreeBSD: FreeBSD FTP サーバの全体ミラー イギリス:: rsync://rsync.mirrorservice.org/ + 提供しているコレクション: ** ftp.freebsd.org: FreeBSD FTP サーバの全体ミラー アメリカ合衆国:: rsync://ftp-master.FreeBSD.org/ + このサーバは、FreeBSD の一次ミラーサイトとしてのみ使われています。 + 提供しているコレクション: + -- ** FreeBSD: FreeBSD FTP サーバのマスタアーカイブ ** acl: The FreeBSD マスタ ACL リスト -- + rsync://ftp13.FreeBSD.org/ + 提供しているコレクション: ** FreeBSD: FreeBSD FTP サーバの全体ミラー