- Update more translation progress on handbook/cutting-edge

Obtained from:		The FreeBSD Traditional Chinese Project
			https://opensvn.csie.org/traccgi/freebsddoc/wiki
This commit is contained in:
Chin-San Huang 2007-12-01 18:27:02 +00:00
parent 0a2b508ca5
commit c345c79dd7
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=31077

View file

@ -44,7 +44,8 @@
<para>&os; 是個持續發展的作業系統。對於喜歡追求新鮮、刺激的使用者而言,
有很多方法可以使您的系統輕鬆更新為最新版。
注意:並非每個人都適合這麼做! 本章主要是協助您決定到底要跟開發版本,或是要使用較穩定的釋出版。
注意:並非每個人都適合這麼做! 本章主要是協助您決定到底要跟開發版本,
或是要使用較穩定的釋出版。
</para>
<para>讀完這章,您將了解︰</para>
@ -58,8 +59,8 @@
<application>CVS</application> 或
<application>CTM</application> 來更新你的系統</para>
</listitem>
<listitem><para>如何以 <command>make buildworld</command> 等指令來重新編譯、安裝整個
base system。</para>
<listitem><para>如何以 <command>make buildworld</command>
等指令來重新編譯、安裝整個 base system。</para>
</listitem>
</itemizedlist>
@ -67,9 +68,11 @@
<para>在開始閱讀這章之前,您需要︰</para>
<itemizedlist>
<listitem><para>先設好你的網路(<xref linkend="advanced-networking">)。</para>
<listitem><para>先設好你的網路(<xref linkend="advanced-networking">)。
</para>
</listitem>
<listitem><para>知道如何透過 port/package 安裝軟體(<xref linkend="ports">)。</para></listitem>
<listitem><para>知道如何透過 port/package 安裝軟體(<xref
linkend="ports">)。</para></listitem>
</itemizedlist>
</sect1>
@ -83,101 +86,89 @@
首先,先介紹 &os.current;,接著再介紹 &os.stable;。</para>
<sect2 id="current">
<title>Staying Current with &os;</title>
<title>使用最新的 &os; CURRENT</title>
<para>As you read this, keep in mind that &os.current; is the
<quote>bleeding edge</quote> of &os; development.
&os.current; users are expected to have a high degree of
technical skill, and should be capable of solving difficult
system problems on their own. If you are new to &os;, think
twice before installing it. </para>
<para>這裡再次強調,&os.current; 是 &os; 開發的 <quote>最前線</quote>。
&os.current; 使用者須有較強的技術能力,
而且應該要有能力自己解決困難的系統問題。 若您是 &os; 新手,
那麼請在安裝前最好先三思。</para>
<sect3>
<title>什麼是 &os.current;</title>
<indexterm><primary>snapshot</primary></indexterm>
<para>&os.current; 是 &os; 的最新版。它包含: work in progress, experimental changes, and
transitional mechanisms that might or might not be present
in the next official release of the software. While many
&os; developers compile the &os.current; source code daily,
there are periods of time when the sources are not
buildable. These problems are resolved as expeditiously as
possible, but whether or not &os.current; brings disaster or
greatly desired functionality can be a matter of which exact
moment you grabbed the source code in!</para>
<para>&os.current; 是 &os; 的最新版。它包含:
仍在研發階段、實驗性質的修改、過渡時期的機制,
這些東西在下一次正式 relase 的版本可能會有,也可能不會有的。
儘管有許多 &os; 開發者每天都會編譯 &os.current; source code
但有時這些原始碼是無法編譯成功。 雖然,這些問題通常會儘快解決,
但 &os.current; 到底是帶來浩劫或是多了想要用的新功能、改善,
這點主要取決於您更新原始碼的時機為何而定!</para>
</sect3>
<sect3>
<title>Who Needs &os.current;?</title>
<title>誰需要 &os.current;</title>
<para>&os.current; is made available for 3 primary
interest groups:</para>
<para>&os.current; 適合下列這三類人:</para>
<orderedlist>
<listitem>
<para>Members of the &os; community who are actively working
on some part of the source tree and for whom keeping
<quote>current</quote> is an absolute
requirement.</para>
<para>&os; 社群成員:積極專注於 source tree 的某一部份,
以及認為保持為 <quote>current(最新狀態)</quote>
為絕對需求的人。</para>
</listitem>
<listitem>
<para>Members of the &os; community who are active testers,
willing to spend time solving problems in order to
ensure that &os.current; remains as sane as possible.
These are also people who wish to make topical
suggestions on changes and the general direction of
&os;, and submit patches to implement them.</para>
<para>&os; 社群成員:為了確保 &os.current;
能夠儘可能地維持在最穩定的狀態,
而主動花時間解決問題的測試者。 此外,還有對 &os;
能提出具體建議以及改善方向,並提出 patch 修正檔的人。</para>
</listitem>
<listitem>
<para>Those who merely wish to keep an eye on things, or
to use the current sources for reference purposes
(e.g. for <emphasis>reading</emphasis>, not running).
These people also make the occasional comment or
contribute code.</para>
<para>只是關心或者想參考(比如,只是<emphasis>閱讀</emphasis>
而非執行)的人。
這些人有時也會做些註解,或貢獻原始碼。</para>
</listitem>
</orderedlist>
</sect3>
<sect3>
<title>What Is &os.current; <emphasis>Not</emphasis>?</title>
<title>&os.current; <emphasis>並不是</emphasis> 什麼?</title>
<orderedlist>
<listitem>
<para>A fast-track to getting pre-release bits because you
heard there is some cool new feature in there and you
want to be the first on your block to have it. Being
the first on the block to get the new feature means that
you are the first on the block to get the new
bugs.</para>
<para>追求最新功能。 聽說裡面有些很酷的新功能,
並希望成為您周圍的人中第一個嘗試的人,
因此將 &os.current; 視為取得搶鮮版的捷徑。
儘管,您能夠因此首先瞭解到最新的功能,
但這也意味著若出現新的 bug 時,您也是首當其衝。</para>
</listitem>
<listitem>
<para>A quick way of getting bug fixes. Any given version
of &os.current; is just as likely to introduce new bugs
as to fix existing ones.</para>
<para>修復 bug 的速成法。 因為 &os.current;
的任何版本在修復已知 bug 的同時,又可能會產生新的 bug。
</para>
</listitem>
<listitem>
<para>In any way <quote>officially supported</quote>. We
do our best to help people genuinely in one of the 3
<quote>legitimate</quote> &os.current; groups, but we
simply <emphasis>do not have the time</emphasis> to
provide tech support. This is not because we are mean
and nasty people who do not like helping people out (we
would not even be doing &os; if we were). We simply
cannot answer hundreds messages a day
<emphasis>and</emphasis> work on FreeBSD! Given the
choice between improving &os; and answering lots of
questions on experimental code, the developers opt for
the former.</para>
<para>無所不在的 <quote>officially supported</quote>。
我們會盡力協助上述 &os.current; 的那三種類別的
<quote>legitimate</quote> 使用者,
但我們<emphasis>沒時間</emphasis>為他們提供技術支援。
這不代表我們很惡劣,或是不想幫助人(若是的話,
我們也不會為 &os; 努力了)
,實在是因為我們分身乏術,無法每天回答數百個問題,
<emphasis>而同時</emphasis>繼續開發 &os;。
可以確定的一點就是,
在改善 &os; 或是回答大量有關實驗碼的問題之間,
若要做個選擇的話,開發者會選擇前者。</para>
</listitem>
</orderedlist>
</sect3>
<sect3>
<title>Using &os.current;</title>
<title>使用 &os.current;</title>
<indexterm>
<primary>-CURRENT</primary>
@ -185,29 +176,24 @@
</indexterm>
<orderedlist>
<listitem>
<para>Join the &a.current.name; and the &a.cvsall.name; lists. This is not
just a good idea, it is <emphasis>essential</emphasis>. If
you are not on the <emphasis>&a.current.name;</emphasis> list,
you will not see the comments that people are
making about the current state of the system and thus will
probably end up stumbling over a lot of problems that others
have already found and solved. Even more importantly, you
will miss out on important bulletins which may be critical
to your system's continued health.</para>
<para>加入 &a.current.name; 及 &a.cvsall.name; 論壇。
這不單只是個建議,也是 <emphasis>必須</emphasis> 作的。
若您沒訂閱 <emphasis>&a.current.name;</emphasis>
,那麼就會錯過別人對目前系統狀態的說明,而枯耗在別人已解的問題。
更重要的是,可能會錯失一些對己身所管系統安危相當重要的公告。
</para>
<para>The &a.cvsall.name; list will allow you to see the
commit log entry for each change as it is made along with
any pertinent information on possible side-effects.</para>
<para>在 &a.cvsall.name; 上則可以看到每個 commit 紀錄,
因為這些記錄會連帶影響其他相關資訊。</para>
<para>To join these lists, or one of the others available
go to &a.mailman.lists.link; and click on the list that
you wish to subscribe to. Instructions on the rest of
the procedure are available there.</para>
<para>要訂閱這些論壇或其他論壇,請參考 &a.mailman.lists.link;
並點選想訂閱的部分即可。 至於其他後續步驟如何進行,
在那裡會有說明。</para>
</listitem>
<listitem>
<para>Grab the sources from a &os; <link linkend="mirrors">mirror
site</link>. You can do this in one of two ways:</para>
<para> &os; <link linkend="mirrors">mirror 站</link>
取得原始碼。 有兩種方式可以達成:</para>
<orderedlist>
<indexterm>
@ -222,17 +208,19 @@
</indexterm>
<listitem>
<para>Use the <link linkend="cvsup">cvsup</link> program
with the <filename>supfile</filename> named <filename>standard-supfile</filename>
available from <filename>/usr/share/examples/cvsup</filename>.
This is the most recommended
method, since it allows you to grab the entire
collection once and then only what has changed from then
on. Many people run <command>cvsup</command> from
<command>cron</command> and keep their
sources up-to-date automatically. You have to
customize the sample <filename>supfile</filename> above, and configure
<link linkend="cvsup">cvsup</link> for your environment.</para>
<para>以 <link linkend="cvsup">csup</link> 或
<link linkend="cvsup">cvsup</link> 程式搭配位於
<filename>/usr/share/examples/cvsup</filename> 檔名為
<filename>standard-supfile</filename> 的
<filename>supfile</filename>。
這是大家最常推薦的方式,因為它可以讓您把整個 tree 都抓回來,
之後就只取有更新的部分即可。
此外,許多人會把 <command>csup</command> 或
<command>cvsup</command> 放到
<command>cron</command> 以定期自動更新。
您須要自訂前述的 <filename>supfile</filename> 範例檔,
並針對自身網路環境以調整 <link linkend="cvsup">csup</link>
或 <link linkend="cvsup">cvsup</link> 相關設定。</para>
</listitem>
<indexterm>
@ -240,115 +228,99 @@
<secondary>Syncing with CTM</secondary>
</indexterm>
<listitem>
<para>Use the <application><link
linkend="ctm">CTM</link></application> facility. If you
have very bad connectivity (high price connections or
only email access) <application>CTM</application> is an option.
However, it is a lot of hassle and can give you broken files.
This leads to it being rarely used, which again increases
the chance of it not working for fairly long periods of
time. We recommend using
<para>使用 <application><link
linkend="ctm">CTM</link></application> 工具。 若網路環境不佳
(上網費用貴,或只能用 email 而已)
<application>CTM</application> 會比較適合您的需求。
然而,這也有一些爭議並且常抓到一些有問題的檔案。 因此,
很少人會用它。 這也註定了不能長期依賴這個更新方式。
若是使用 9600&nbsp;bps modem 或頻寬更大的上網者,建議使用
<application><link linkend="cvsup">CVSup</link></application>
for anybody with a 9600&nbsp;bps modem or faster connection.
</para>
。</para>
</listitem>
</orderedlist>
</listitem>
<listitem>
<para>If you are grabbing the sources to run, and not just
look at, then grab <emphasis>all</emphasis> of &os.current;, not
just selected portions. The reason for this is that various
parts of the source depend on updates elsewhere, and trying
to compile just a subset is almost guaranteed to get you
into trouble.</para>
<para>若抓 source code 是要用來跑的,而不僅只是看看而已,
那麼就抓 <emphasis>整個</emphasis> &os.current;,而不要只抓部分。
因為大部分的 source code 都會相依到其他 source code 環節部分,
若是您只編譯其中一部份,保證會很麻煩。</para>
<indexterm>
<primary>-CURRENT</primary>
<secondary>compiling</secondary>
</indexterm>
<para>Before compiling &os.current;, read the
<filename>Makefile</filename> in <filename>/usr/src</filename>
carefully. You should at least <link
linkend="makeworld">install a new kernel and rebuild the world</link> the first time through
as part of the upgrading process. Reading the &a.current;
and <filename>/usr/src/UPDATING</filename> will keep you up-to-date on other bootstrapping procedures
that sometimes become necessary as we move toward the next
release.</para>
<para>在編譯 &os.current; 之前,請仔細閱讀
<filename>/usr/src</filename> 內的 <filename>Makefile</filename>。
儘管只是升級部分東西而已,您至少也要先 <link linkend="makeworld">
裝新的 kernel 以及重新編譯 world</link>。 此外,多多閱讀
&a.current; 以及 <filename>/usr/src/UPDATING</filename>
也是必須的,
才能知道目前進度是怎樣以及下一版會有什麼新東西。</para>
</listitem>
<listitem>
<para>Be active! If you are running &os.current;, we want
to know what you have to say about it, especially if you
have suggestions for enhancements or bug fixes. Suggestions
with accompanying code are received most
enthusiastically!</para>
<para>熱血!若您正在跑 &os.current;
我們很想知道您對於它的想法是什麼,尤其是加強哪些功能,
或該修正哪些錯誤的建議。 如果您在建議時能附上相關程式碼的話,
那真是太棒了!</para>
</listitem>
</orderedlist>
</sect3>
</sect2>
<sect2 id="stable">
<title>Staying Stable with &os;</title>
<title>使用最新的 &os; STABLE</title>
<sect3>
<title>What Is &os.stable;?</title>
<title>什麼是 &os.stable;</title>
<indexterm><primary>-STABLE</primary></indexterm>
<para>&os.stable; is our development branch from which major releases
are made. Changes go into this branch at a different pace, and
with the general assumption that they have first gone into
&os.current; for testing. This is <emphasis>still</emphasis>
a development branch, however, and this means that at any given time,
the sources for &os.stable; may or may not be suitable for any
particular purpose. It is simply another engineering development
track, not a resource for end-users.</para>
<para>&os.stable; 是我們的開發分支,主要的發行版就由此而來。
這個分支會以不同速度作修改變化,並且假設這些是第一次進入 &os.current;
進行測試。 然而,這 <emphasis>仍然</emphasis> 屬於開發中的分支,
也就是說在某些時候,&os.stable; 可能會、也可能不會符合一些特殊需求。
它只不過是另一個開發分支而已,可能不太適合一般使用者。</para>
</sect3>
<sect3>
<title>Who Needs &os.stable;?</title>
<title>誰需要 &os.stable;</title>
<para>If you are interested in tracking or contributing to the
FreeBSD development process, especially as it relates to the
next <quote>point</quote> release of FreeBSD, then you should
consider following &os.stable;.</para>
<para>若您有興趣去追蹤、貢獻 FreeBSD 開發過程或作些貢獻,
尤其是會跟 FreeBSD 接下來的 <quote>關鍵性</quote> 發行有關,
應該考慮採用 &os.stable;。</para>
<para>While it is true that security fixes also go into the
&os.stable; branch, you do not <emphasis>need</emphasis> to
track &os.stable; to do this. Every security advisory for
FreeBSD explains how to fix the problem for the releases it
affects
<footnote><para>That is not quite true. We can not continue to
support old releases of FreeBSD forever, although we do
support them for many years. For a complete description
of the current security policy for old releases of
FreeBSD, please see <ulink
url="&url.base;/security/">http://www.FreeBSD.org/security/</ulink>.</para>
<para>雖然安全漏洞的修補也會進入 &os.stable; 分支,
但不必僅僅因此而 <emphasis>需要</emphasis> 去用 &os.stable;。
FreeBSD 每項 security advisory(安全公告)
都會解說如何去修復有受到影響的版本
<footnote><para>然而,這也不一定是正確,我們不可能永遠支援 FreeBSD
昔日的各種發行版本,儘管每個發行版發佈之後,都仍會持續支援數年之久。
若欲瞭解 FreeBSD 目前對於舊版的支援政策細節,請參閱 <ulink
url="&url.base;/security/">http://www.FreeBSD.org/security/</ulink>
。</para>
</footnote>
, and tracking an entire development branch just
for security reasons is likely to bring in a lot of unwanted
changes as well.</para>
,若僅因為安全因素而去採用開發分支,雖然會解決現有已知問題,
但也可能帶來一些潛藏的問題。</para>
<para>Although we endeavor to ensure that the &os.stable; branch
compiles and runs at all times, this cannot be guaranteed. In
addition, while code is developed in &os.current; before including
it in &os.stable;, more people run &os.stable; than &os.current;, so
it is inevitable that bugs and corner cases will sometimes be found
in &os.stable; that were not apparent in &os.current;.</para>
<para>儘管我們盡力確保 &os.stable; 分支在任何時候均能正確編譯、運作,
但沒人能夠擔保它隨時都可以符合上述目的。 此外,雖然原始碼在進入
&os.stable; 之前,都會先在 &os.current; 開發完畢,但使用 &os.current;
的人畢竟遠比 &os.stable; 使用者來的少,所以通常有些問題,可能在
&os.current; 比較沒人注意到,隨著 &os.stable;
使用者的廣泛使用才會浮現。</para>
<para>For these reasons, we do <emphasis>not</emphasis> recommend that
you blindly track &os.stable;, and it is particularly important that
you do not update any production servers to &os.stable; without
first thoroughly testing the code in your development
environment.</para>
<para>由於上述這些理由,我們<emphasis>並不推薦</emphasis> 盲目追隨
&os.stable;,而且更重要的是,別在原始碼尚未經完整測試之前,
就衝動把 production server 轉移到 &os.stable; 環境。</para>
<para>If you do not have the resources to do this then we recommend
that you run the most recent release of FreeBSD, and use the binary
update mechanism to move from release to release.</para>
<para>若您沒有這些多的時間、精神的話,那推薦您使用最新的 FreeBSD
發行版即可,並採用其所提供的 binary 更新機制來完成升級轉移。</para>
</sect3>
<sect3>
<title>Using &os.stable;</title>
<title>使用 &os.stable;</title>
<indexterm>
<primary>-STABLE</primary>
@ -356,40 +328,30 @@
</indexterm>
<orderedlist>
<listitem>
<para>Join the &a.stable.name; list. This will keep you informed of
build-dependencies that may appear in &os.stable;
or any other issues requiring
special attention. Developers will also make announcements
in this mailing list when they are contemplating some
controversial fix or update, giving the users a chance to
respond if they have any issues to raise concerning the
proposed change.</para>
<para>訂閱 &a.stable.name; list。 可以讓您隨時瞭解 &os.stable;
的軟體編譯時的相依關係,以及其他需特別注意的問題。
開發者在考慮一些有爭議的修正或更新時,就會先在這裡發信說明,
給使用者有機會可以反應,
看他們對所提的更改是否有什麼建議或問題。</para>
<para>The &a.cvsall.name; list will allow you to see the
commit log entry for each change as it is made along with
any pertinent information on possible side-effects.</para>
<para>而 &a.cvsall.name; list 這邊可以看到每個 commit log
其中包括了許多中肯的資訊,例如一些可能發生的邊際效應等等。</para>
<para>To join these lists, or one of the others available
go to &a.mailman.lists.link; and click on the list that
you wish to subscribe to. Instructions on the rest of
the procedure are available there.</para>
<para>想要加入這些通信論壇的話,只要到 &a.mailman.lists.link;
點下想訂閱的 list 即可。 其餘的步驟在網頁上會有說明。</para>
</listitem>
<listitem>
<para>If you are going to install a new system and want it
to run monthly snapshot built from &os.stable;, please
check the <ulink url="&url.base;/snapshots/">
Snapshots</ulink> web page for more information.
Alternatively, it is possible to
install the most recent &os.stable; release from the
<link linkend="mirrors">mirror sites</link> and follow
the instructions below to upgrade your system to the
most up to date &os.stable; source code.</para>
<para>若打算要安裝一個全新的系統,並且希望裝 &os.stable;
每月定期的 snapshot那麼請參閱 <ulink
url="&url.base;/snapshots/">Snapshots</ulink> 網頁以瞭解相關細節。
此外,也可從 <link linkend="mirrors">mirror 站</link>
來安裝最新的 &os.stable; 發行版,並透過下列的的說明來更新到最新的
&os.stable; 原始碼。</para>
<para>If you are already running a previous release of &os;
and wish to upgrade via sources then you can easily do so
from &os; <link linkend="mirrors">mirror site</link>. This can
be done in one of two ways:</para>
<para>若已裝的是 &os; 以前的版本,而想透過原始碼方式來升級,
那麼也是可以利用 &os; <link linkend="mirrors">mirror 站</link>
來完成。 以下介紹兩種方式:</para>
<orderedlist>
<indexterm>
@ -403,19 +365,19 @@
<secondary>syncing with <application>CVSup</application></secondary>
</indexterm>
<listitem>
<para>Use the <link linkend="cvsup">cvsup</link> program
with the <filename>supfile</filename> named <filename>stable-supfile</filename>
from the directory
<filename>/usr/share/examples/cvsup</filename>.
This is the most recommended
method, since it allows you to grab the entire
collection once and then only what has changed from then
on. Many people run <command>cvsup</command> from
<command>cron</command> to keep their
sources up-to-date automatically. You have to
customize the sample <filename>supfile</filename> above,
and configure <link linkend="cvsup">cvsup</link> for your
environment.</para>
<para>以 <link linkend="cvsup">csup</link> 或
<link linkend="cvsup">cvsup</link> 程式搭配位於
<filename>/usr/share/examples/cvsup</filename> 檔名為
<filename>stable-supfile</filename> 的
<filename>supfile</filename>。 這是大家最常推薦的方式,
因為它可以讓你把整個 tree 都抓回來,
之後就只取有更新的部分即可。
此外,許多人會把 <command>csup</command> 或
<command>cvsup</command> 放到 <command>cron</command>
以定期自動更新。 您須要自訂前述的
<filename>supfile</filename> 範例檔,並針對自身網路環境以調整
<link linkend="cvsup">csup</link> 或
<link linkend="cvsup">cvsup</link> 相關設定。</para>
</listitem>
<indexterm>
@ -423,21 +385,18 @@
<secondary>syncing with CTM</secondary>
</indexterm>
<listitem>
<para>Use the <application><link
linkend="ctm">CTM</link></application> facility. If
you do not have a fast and inexpensive connection to
the Internet, this is the method you should consider
using.
</para>
<para>使用 <application><link
linkend="ctm">CTM</link></application> 更新工具。
若網路不快或網路費用貴,那麼可以考慮採用。</para>
</listitem>
</orderedlist>
</listitem>
<listitem>
<para>Essentially, if you need rapid on-demand access to the
source and communications bandwidth is not a consideration,
use <command>cvsup</command> or <command>ftp</command>.
Otherwise, use <application>CTM</application>.</para>
<para>一般而言,若常需存取最新原始碼,而不計較網路頻寬的話,
可以使用 <command>csup</command> 或 <command>cvsup</command>
或 <command>ftp</command>。 否則,就考慮
<application>CTM</application>。</para>
</listitem>
<indexterm>
@ -445,14 +404,13 @@
<secondary>compiling</secondary>
</indexterm>
<listitem>
<para>Before compiling &os.stable;, read the
<filename>Makefile</filename> in <filename>/usr/src</filename>
carefully. You should at least <link
linkend="makeworld">install a new kernel and rebuild the world</link> the first time through
as part of the upgrading process. Reading the &a.stable; and <filename>/usr/src/UPDATING</filename> will
keep you up-to-date on other bootstrapping procedures that
sometimes become necessary as we move toward the next
release.</para>
<para>在編譯 &os.stable; 之前,請先仔細閱讀
<filename>/usr/src</filename> 內的 <filename>Makefile</filename>
檔。 儘管只是升級部分東西而已,您至少也要先 <link
linkend="makeworld">裝新的 kernel 以及重新編譯 world</link>。
此外,多多閱讀 &a.stable; 以及
<filename>/usr/src/UPDATING</filename> 也是必備的,
這樣才能知道目前進度是怎樣,以及下一版會有哪些新東西。</para>
</listitem>
</orderedlist>
</sect3>
@ -462,22 +420,19 @@
<sect1 id="synching">
<title>更新你的 Source</title>
<para>There are various ways of using an Internet (or email)
connection to stay up-to-date with any given area of the &os;
project sources, or all areas, depending on what interests you. The
primary services we offer are <link linkend="anoncvs">Anonymous
CVS</link>, <link linkend="cvsup">CVSup</link>, and <link
linkend="ctm">CTM</link>.</para>
<para>&os; 計劃原始碼有許多透過網路(或 email)的方式來更新,
無論是更新那一塊領域,這些全由您自行決定。 我們主要提供的是 <link
linkend="anoncvs">Anonymous CVS</link>、<link linkend="cvsup">CVSup</link>
、<link linkend="ctm">CTM</link>。</para>
<warning>
<para>While it is possible to update only parts of your source tree,
the only supported update procedure is to update the entire tree
and recompile both userland (i.e., all the programs that run in
user space, such as those in <filename>/bin</filename> and
<filename>/sbin</filename>) and kernel sources. Updating only part
of your source tree, only the kernel, or only userland will often
result in problems. These problems may range from compile errors
to kernel panics or data corruption.</para>
<para>雖然可以只更新部分原始碼,但唯一支援的更新流程是更新整個 tree
並且重編 userland(比如:由使用者去執行的所有程式,像是
<filename>/bin</filename>、<filename>/sbin</filename> 內的程式)以及
kernel 原始碼。
若只更新部分的 source tree、或只有 kernel 部分、或只有 userland
部分通常會造成一些錯誤像是編譯錯誤、kernel panic、資料毀損等
。</para>
</warning>
<indexterm>
@ -485,125 +440,104 @@
<secondary>anonymous</secondary>
</indexterm>
<para><application>Anonymous CVS</application> and
<application>CVSup</application> use the <emphasis>pull</emphasis>
model of updating sources. In the case of
<application>CVSup</application> the user (or a
<command>cron</command> script) invokes
the <command>cvsup</command> program, and it interacts with a
<command>cvsupd</command> server somewhere to bring your files
up-to-date. The updates you receive are up-to-the-minute and you
get them when, and only when, you want them. You can easily
restrict your updates to the specific files or directories that are
of interest to you. Updates are generated on the fly by the server,
according to what you have and what you want to have.
<application>Anonymous CVS</application> is quite a bit more
simplistic than <application>CVSup</application> in that it is just an extension to
<application>CVS</application> which allows it to pull changes
directly from a remote CVS repository.
<application>CVSup</application> can do this far more efficiently,
but <application>Anonymous CVS</application> is easier to
use.</para>
<para><application>Anonymous CVS</application> 及
<application>CVSup</application> 均是採 <emphasis>pull</emphasis>
模式來更新原始碼。 以 <application>CVSup</application> 為例,
使用者(或 <command>cron</command> script)會執行 <command>cvsup</command>
程式,後者會與某一台 <command>cvsupd</command> 伺服器作些互動,
以更新相關原始碼檔案。 您所收到更新會是當時最新的,
而且只會收到需更新的部分。 此外,也可以很輕鬆去設定要更新的範圍。
更新會由伺服器跟本機比對之後,丟出當時您所需要的更新檔案給你。
<application>Anonymous CVS</application> 的概念相對於
<application>CVSup</application> 來得更簡單些,因為它只是
<application>CVS</application> 的延伸而已,一樣讓你可從遠端的
CVS repository 取出最新原始碼。 然而 <application>CVSup</application>
在這方面會更有效率,不過 <application>Anonymous CVS</application>
對新手而言,是用起來比較簡單。</para>
<indexterm>
<primary><application>CTM</application></primary>
</indexterm>
<para><application>CTM</application>, on the other hand, does not
interactively compare the sources you have with those on the master
archive or otherwise pull them across. Instead, a script which
identifies changes in files since its previous run is executed
several times a day on the master CTM machine, any detected changes
being compressed, stamped with a sequence-number and encoded for
transmission over email (in printable ASCII only). Once received,
these <quote>CTM deltas</quote> can then be handed to the
&man.ctm.rmail.1; utility which will automatically decode, verify
and apply the changes to the user's copy of the sources. This
process is far more efficient than <application>CVSup</application>,
and places less strain on our server resources since it is a
<emphasis>push</emphasis> rather than a <emphasis>pull</emphasis>
model.</para>
<para>另一種方式則是 <application>CTM</application>。
它並不是以交談式介面來比對您所擁有的 sources 和伺服器上的 sources
或是您取得的更新部份。 相反的,會有一個 script
檔專門用來辨識變更過的檔案,這個程式是由 CTM 伺服器來執行,
每天會比對數次,並把兩次執行期間內變更過的檔案加以壓縮,
並給它們一個序號,然後就加以編碼(只用 printable ASCII 字元)
並以 email 的方式寄出。 當您收到它的時候,這些 <quote>CTM deltas</quote>
就可以由 &man.ctm.rmail.1; 程式來處理,該程式會自動解碼、確認、
套用這些變更。 這程序比 <application>CVSup</application> 來說是快得多了,
而且,這個模式對我們的伺服器來說是比較輕鬆的,因為這是一個
<emphasis>push</emphasis> 的模式,而非 <emphasis>pull</emphasis>
的模式。</para>
<para>There are other trade-offs, of course. If you inadvertently
wipe out portions of your archive, <application>CVSup</application>
will detect and rebuild the damaged portions for you.
<application>CTM</application> will not do this, and if you wipe some
portion of your source tree out (and do not have it backed up) then
you will have to start from scratch (from the most recent CVS
<quote>base delta</quote>) and rebuild it all with <application>CTM</application> or, with
<application>Anonymous CVS</application>, simply delete the bad bits and resync.</para>
<para>當然,這樣做也會帶來一些不便。 若不小心把您部份的程式清除掉了,
<application>CVSup</application> 會偵測出來,並自動為您把不足的部份補齊。
<application>CTM</application> 並不會為您做這些動作。
若清掉了您的部份 source (而且沒備份),您可以從頭開始(從最新的 CVS
<quote>base delta</quote>)並用 <application>CTM</application> 來重建它們
,或是用 <application>Anonymous CVS</application> 來完成,
只要把不正確的地方砍掉,再重新做同步的動作即可。</para>
</sect1>
<sect1 id="makeworld">
<title>Rebuilding <quote>world</quote></title>
<title>重新編譯 <quote>world</quote></title>
<indexterm>
<primary>Rebuilding <quote>world</quote></primary>
</indexterm>
<para>Once you have synchronized your local source tree against a
particular version of &os; (&os.stable;, &os.current;, and so on)
you can then use the source
tree to rebuild the system.</para>
<para>在更新 &os; 的 source tree 到最新之後(無論是 &os.stable;、
&os.current; 等等),接下來就可以用這些 source tree 來重新編譯系統
。</para>
<warning>
<title>Make a Backup</title>
<title>做好備份</title>
<para>It cannot be stressed enough how important it is to make a
backup of your system <emphasis>before</emphasis> you do this.
While rebuilding the world is (as long as you follow these
instructions) an easy task to do, there will inevitably be times
when you make mistakes, or when mistakes made by others in the
source tree render your system unbootable.</para>
<para>在作任何大動作 <emphasis>之前</emphasis>
要記得先把系統作備份的重要性無須強調。 儘管重新編譯 world 是
(只要有照文件指示去作的話)一件很簡單的事情,但出錯也是在所難免的。
另外,別人在 source tree 不慎搞混的錯誤,也可能會造成系統無法開機
。</para>
<para>Make sure you have taken a backup. And have a fixit floppy or
bootable CD at
hand. You will probably never have to use it, but it is better to be
safe than sorry!</para>
<para>請確認自己已作妥相關備份,並且手邊有 fixit 磁片或開機光碟。
您可能永遠也用不到這些東西,
但安全第一總比事後說抱歉來得好吧!</para>
</warning>
<warning>
<title>Subscribe to the Right Mailing List</title>
<title>訂閱相關的 Mailing List</title>
<indexterm><primary>mailing list</primary></indexterm>
<para>The &os.stable; and &os.current; branches are, by their
nature, <emphasis>in development</emphasis>. People that
contribute to &os; are human, and mistakes occasionally
happen.</para>
<para>&os.stable; 以及 &os.current; 分支,本質上就是屬於 <emphasis>
開發階段</emphasis>。 為 &os; 作貢獻的也都是人,偶爾也會犯錯誤。</para>
<para>Sometimes these mistakes can be quite harmless, just causing
your system to print a new diagnostic warning. Or the change may
be catastrophic, and render your system unbootable or destroy your
file systems (or worse).</para>
<para>有時候這些錯誤並無大礙,只是會讓系統產生新的錯誤警告而已。
有時則是災難,可能會導致不能開機或檔案系統的毀損(或更糟)。</para>
<para>If problems like these occur, a <quote>heads up</quote> is
posted to the appropriate mailing list, explaining the nature of
the problem and which systems it affects. And an <quote>all
clear</quote> announcement is posted when the problem has been
solved.</para>
<para>若遇到類似問題,貼封標題為 <quote>heads up(注意)</quote>
開頭的信到相關的 mailing list並講清楚問題點以及會影響哪些系統。
在問題獲解決後,再貼標題為 <quote>all clear(已解決)</quote>
開頭的聲明信。</para>
<para>If you try to track &os.stable; or &os.current; and do
not read the &a.stable; or the
&a.current; respectively, then you are
asking for trouble.</para>
<para>若用的是 &os.stable; 或 &os.current;,卻又不閱讀 &a.stable; 或
&a.current; 的討論,那麼會是自找麻煩而已。</para>
</warning>
<warning>
<title>Do not use <command>make world</command></title>
<title>不要用 <command>make world</command></title>
<para>A lot of older documentation recommends using
<command>make world</command> for this. Doing that skips
some important steps and should only be used if you are
sure of what you are doing. For almost all circumstances
<command>make world</command> is the wrong thing to do, and
the procedure described here should be used instead.</para>
<para>一堆早期的舊文件都會建議說使用 <command>make world</command>。
這樣做會跳過一些重要步驟,建議只有在你知道自己在作什麼,再這麼做。
在絕大多數的情況下,請不要亂用 <command>make world</command>
而該改用下面介紹的方式。</para>
</warning>
<sect2>
<title>The Canonical Way to Update Your System</title>
<title>更新系統的標準方式</title>
<para>To update your system, you should check
<filename>/usr/src/UPDATING</filename> for any pre-buildworld steps
necessary for your version of the sources and then use the following
procedure:</para>
<para>要升級系統前,一定要先查閱 <filename>/usr/src/UPDATING</filename>
文件,以瞭解 buildworld 之前需要作哪些事情或注意事項,
然後才用下列步驟:</para>
<screen>&prompt.root; <userinput>make buildworld</userinput>
&prompt.root; <userinput>make buildkernel</userinput>
@ -611,18 +545,16 @@
&prompt.root; <userinput>reboot</userinput></screen>
<note>
<para>There are a few rare cases when an extra run of
<command>mergemaster -p</command> is needed before the
<maketarget>buildworld</maketarget> step. These are
described in <filename>UPDATING</filename>. In general,
though, you can safely omit this step if you are not
updating across one or more major &os; versions.</para>
<para>在少數狀況,可能需要先在 <maketarget>buildworld</maketarget>
步驟之前先作 <command>mergemaster -p</command> 才能完成。
至於何時需要或不需要,請參閱 <filename>UPDATING</filename> 內的說明。
一般來說,只要不是進行跨版號(major)的 &os; 版本升級,
就可略過這步驟。</para>
</note>
<para>After <maketarget>installkernel</maketarget> finishes
successfully, you should boot in single user mode
(i.e.&nbsp;using <command>boot -s</command> from the loader
prompt). Then run:</para>
<para>完成 <maketarget>installkernel</maketarget> 之後,需要重開機並切到
single user 模式(舉例:也可以在 loader 提示符號後面加上
<command>boot -s</command>)。 接下來執行:</para>
<screen>&prompt.root; <userinput>mergemaster -p</userinput>
&prompt.root; <userinput>make installworld</userinput>
@ -632,63 +564,55 @@
<warning>
<title>Read Further Explanations</title>
<para>The sequence described above is only a short resume to
help you getting started. You should however read the
following sections to clearly understand each step, especially
if you want to use a custom kernel configuration.</para>
<para>上述步驟只是協助您升級的簡單說明而已,若要清楚瞭解每一步驟,
尤其是若欲自行打造 kernel 設定,就更該閱讀下面的內容。</para>
</warning>
</sect2>
<sect2>
<title>Read <filename>/usr/src/UPDATING</filename></title>
<title>閱讀 <filename>/usr/src/UPDATING</filename></title>
<para>Before you do anything else, read
<filename>/usr/src/UPDATING</filename> (or the equivalent file
wherever you have a copy of the source code). This file should
contain important information about problems you might encounter, or
specify the order in which you might have to run certain commands.
If <filename>UPDATING</filename> contradicts something you read here,
<filename>UPDATING</filename> takes precedence.</para>
<para>在作任何事情之前,請務必先閱讀
<filename>/usr/src/UPDATING</filename> (或在 source code 內類似的文件)
。 這份文件會寫到可能遭遇的問題,或指定那些會執行的指令順序為何。
如果你機器現在的 <filename>UPDATING</filename>
文件與這邊的描述有衝突、矛盾之處,那麼請以機器上的
<filename>UPDATING</filename> 為準。</para>
<important>
<para>Reading <filename>UPDATING</filename> is not an acceptable
substitute for subscribing to the correct mailing list, as described
previously. The two requirements are complementary, not
exclusive.</para>
<para>然而,如同先前所述,單單只靠閱讀 <filename>UPDATING</filename>
並不能完全取代 mailing list。 這兩者都是互補的,而不相排斥。</para>
</important>
</sect2>
<sect2>
<title>Check <filename>/etc/make.conf</filename></title>
<title>檢查 <filename>/etc/make.conf</filename></title>
<indexterm>
<primary><filename>make.conf</filename></primary>
</indexterm>
<para>Examine the files
<para>檢查
<filename>/usr/share/examples/etc/make.conf</filename>
and
<filename>/etc/make.conf</filename>. The first contains some
default defines &ndash; most of which are commented out. To
make use of them when you rebuild your system from source, add
them to <filename>/etc/make.conf</filename>. Keep in mind that
anything you add to <filename>/etc/make.conf</filename> is also
used every time you run <command>make</command>, so it is a good
idea to set them to something sensible for your system.</para>
以及
<filename>/etc/make.conf</filename>。 第一份文件乃是一些系統預設值
&ndash; 不過,大部分都被註解起來。 為了在重新編譯時能夠使用這些,
請把這些設定加到 <filename>/etc/make.conf</filename>。 請注意在
<filename>/etc/make.conf</filename> 的任何設定也會影響到每次使用
<command>make</command> 的結果,
因此設定一些適合自己系統的選項會是不錯的作法。</para>
<para>A typical user will probably want to copy the
<makevar>CFLAGS</makevar> and
<makevar>NO_PROFILE</makevar> lines found in
<filename>/usr/share/examples/etc/make.conf</filename>
to
<filename>/etc/make.conf</filename> and uncomment them.</para>
<para>一般使用者通常會從
<filename>/usr/share/examples/etc/make.conf</filename> 複製
<makevar>CFLAGS</makevar> 以及 <makevar>NO_PROFILE</makevar>
之類的設定到 <filename>/etc/make.conf</filename>,並解除相關註解印記
。</para>
<para>Examine the other definitions (<makevar>COPTFLAGS</makevar>,
<makevar>NOPORTDOCS</makevar> and so
on) and decide if they are relevant to you.</para>
<para>此外,也可以試試看其他設定 (<makevar>COPTFLAGS</makevar>、
<makevar>NOPORTDOCS</makevar> 等等),是否符合自己所需。</para>
</sect2>
<sect2>
<title>Update the Files in <filename>/etc</filename></title>
<title>更新 <filename>/etc</filename> 內的設定檔</title>
<para>The <filename>/etc</filename> directory contains a large part
of your system's configuration information, as well as scripts