からFreeBSDへのアップグレード

よくあることですが、一目見ただけで、すべてをすばやく見つけてすべてをセットアップしたいという小さなトピックをつかむには、密な野生を掘り下げて、複数の記事やマニュアルを読む必要があります。 それで、今回は私に起こりました。 当初は、必要に応じて古いソフトウェアをインストールしないように、ポート(またはポートのソースコード)の更新方法を簡単に学習したいという要望がありましたが、もう少し掘り下げなければなりませんでした。
この記事はFreeBSDの初心者を対象としていますが、ここで経験を積んだプロは一般に目新しいものではありません。 したがって、このシステムで「あなた」にいる場合は、以降のテキストを安全にスキップできます。
このトピックに関する十分な情報はありますが、6〜10のメモと記事から、いわば、ベストプラクティスと経験をまとめて、より完全な記事へのリンクを付けてメモしました。 。
記事の内容:
1)ソースコードを更新するためのソフトウェアの選択。
2)システムおよびポートのソースコードを更新するプロセス。
3)システムアップデート(コアおよびワールド)。
4)pkg_ *、portupgrade、portdowngradeを使用してポートをアップグレードします。
5)結論
6)さらに読む。

ソースを更新するソフトウェアの選択


そのため、ソースコードを更新するときに、2つのサブセクションを強調しました。これらはシステムのソースコードとポートのソースコードです。
1)システムのソースを更新する場合、 CVSまたはSVNリポジトリを使用できます。 SVNはより新しい開発であり、廃止されたcvsを置き換えることを目的としているため、svnはソースバージョンで作業する際により広い機能を備えています。 しかし、以来 私はFreeBSDをゲートウェイとして使用し、数日ごとにシステムを更新するつもりはなく、追加のユーティリティを使用するつもりもありません。 svnでは、少数の追加ソフトウェアをインストールする必要はありませんが、svnでのタスクに対するグローバルな利点は見ていません。 cvsリポジトリを操作するには、 csupユーティリティ(cvsupと同じですがCで記述されています)が使用されます。これは、標準のfreebsd構造の一部です。つまり、他のものをインストールする必要はありません(SVNによる更新については、記事の最後にある追加の文献で説明されています)。
2)ポートのソースコードの更新は、CVSリポジトリからのみ可能です。このため、csupまたはportsnapを使用できます。 Portsnapは、ポートを更新するための推奨システムであり、システムにもプリインストールされています。これを使用します。

システムのソースとポートを更新するプロセス。


システムソースを更新するようにcsupを設定します。

更新設定を構成するには、ファイル/ etc / supfileを作成します。
*default host=cvsup6.ru.FreeBSD.org
*default base=/var/db
*default prefix=/usr
*default release=cvs
*default delete use-rel-suffix
*default compress
#*default release=cvs tag=RELENG_8_1_0_RELEASE
*default release=cvs tag=RELENG_8
src-all


src-allツリーのタグの例:
RELENG_8-FreeBSD 8-STABLEブランチ
RELENG_8_1-セキュリティパッチが適用されるFreeBSD 8.1ブランチ
RELENG_8_1_0_RELEASE-リリース時のFreeBSD 8.1コードのステータスの「凍結」スナップショット

すべての準備ができたら、更新を開始します。
# csup -L 2 /etc/supfile
-zスイッチ(圧縮)を追加して、トラフィックを節約できます。

構成ファイルが作成されたばかりで、このプログラムが以前に使用されたことがない場合、すべてがうまくいくかどうか心配することができます...貴重なファイルに影響を与えずに試用を実行する簡単な方法があります。 空のディレクトリをどこかに作成し、追加のコマンドライン引数として配置するだけです。
# mkdir /var/tmp/dest
# cvsup supfile /var/tmp/dest

指定されたディレクトリは、すべての更新の宛先として使用されます。 CVSupは/ usr / srcのファイルを処理しますが、それらを変更または削除しません。 代わりに、すべてのファイルの更新は/ var / tmp / dest / usr / srcに配置されます。 この方法で起動した場合、CVSupはベースディレクトリもそのままにします。 これらのファイルの新しいバージョンは、指定されたディレクトリに書き込まれます。 / usr / srcディレクトリへの読み取り権限がある場合、トライアルアップグレードを実行するためにrootとして作業する必要さえありません。

portsnapによるポートのアップグレード

最初の実行の場合:
$ portsnap fetch
$ portsnap extract

後続のすべての起動の場合:
$ portsnap fetch
$ portsnap update


最速のcvsup

fastest_cvsupユーティリティのタスクは、アクセス速度が最適なCVSリポジトリを持つサーバーを見つけることです。
$ cd /usr/ports/sysutils/fastest_cvsup/
$ make install clean & rehash

アプリケーション:
$ fastest_cvsup -q -c ru

システムアップデート(コアおよびワールド)、理論。


焼きたてのFreeBSD 8.1-RELEASEをインストールし、それをFreeBSD 8-STABLEブランチにアップグレードしたいとします。 ディスク上にあるソーステキストとリポジトリを同期する必要があります-新しいパーツをダウンロードします。
アクションのシーケンスは次のとおりです。
1) supfileをコンパイルし、それにlistディレクティブを入れます。 ここで、チェックアウトファイルが保存される名前を示します。
src-allタグ= RELENG_8_1_0_RELEASEリスト= RELENG_8
2)コマンド(#csup -L 2 / etc / supfile)とリリースRELENG_8_1_0_RELEASEの凍結ブランチを使用して、最初の同期を実行します。
3) supfileからlistディレクティブを削除します:
src-allタグ= RELENG_8
4) RELENG_8ブランチとの2番目の同期を実行します-ソースコードをSTABLEに更新します

アイデアの本質は次のとおりです。csupを使用する場合、チェックアウトファイルを使用して、ローカルディスクとサーバー上のファイルのバージョンに関する情報を比較し、変更されたファイルのみを同期します。 システムをインストールした直後の/ var / db / supディレクトリには、同期するコレクションのチェックアウトファイルがまだありません。 最初に作成するのがコツです。 リリース8.1があり、ソースがそこからインストールされているため、同じリリースRELENG_8_1_0_RELEASEの「凍結」タグとの最初の「同期」の後、現在のチェックアウトファイルをビルドできます。 最初の同期は基本的に同期せず、ディスクとリポジトリ内のファイルを列挙し、データベース、つまりチェックアウトファイルを構築するだけです。 最初の同期の後、/ var / db / supディレクトリ内のsrc-allサブディレクトリを取得します。
checkouts.cvsというファイルがあります:RELENG_8-なぜなら listディレクティブで指定しました。 サーバーとの2回目の同期を開始すると、csupは転送するファイルバージョンと削除するファイルを正確に認識します。 同期はよりきれいに実行され、時間がかからず、トラフィックも少なくて済みます。

点滅システム(コアおよびワールド)、prkatika。


uname –v現在のカーネルバージョンを調べる
uname –rシステムの現在のバージョンを調べる
アップデートは、アセンブリ-ソースコードのコンパイルと追加インストールの2つの部分に分割するのが最適です。 このため、これを頻繁に行う必要はありません。私にとっては、すべてを模式的に行うことが最善であり、可能性のある妨害を簡単にキャッチできます。

I)組み立て

1.コア
1) cd /usr/src/
2) rm -R /usr/obj/*
(削除によって設定フラグに関するエラーが生成された場合、コマンド#chflags -R noschg *を実行する必要があります)
3) make clean && make clean
4) make -sj4 buildkernel KERNCONF=YOUR_KERNEL_HERE
(YOUR_KERNEL_HEREは/ usr / src / sys / i386 / confフォルダーにあるカーネルの名前です。ただし、パスは指定せず、ファイル名のみを指定してください。更新前のファイルではなく、新しいカーネルがコンパイルされるようにファイル名を変更することをお勧めしますシステム)
どこj4-4つのスレッドにコンパイルします。 ユニプロセッサマシンに推奨 コンパイルは、プロセッサではなく、入出力システムにより多くを要求します。 マルチプロセッサの場合、この値を増やすことができます。 s-画面に表示される情報の量を減らします。

2.世界(システム)
1) cd /usr/src/
2) rm -R /usr/obj/*
3) make cleandir && make cleandir (make cleandirはハンドブックを2回実行することを推奨します)
4) make -sj4 buildworld

II)インストール

1.コア
1) make installkernel KERNCONF=YOUR_KERNEL_HERE
2) reboot
2.世界(システム)
世界は、grep、awk、sh、chmodなどのユーザープログラムです。 要するに、カーネルとカーネルモジュールに含まれていないすべてのものです。 組み立てる前に、標準ビュー/etc/make.confに戻ることをお勧めします。 問題が発生した場合-何かがインストールされない場合やインストールされない場合-そこにあるものを確認し、余分なものを削除する価値があります。
ワールドをインストールするプロセスでは、理想的にはmergemasterプログラムを実行する必要があります。 このプログラムは、/ etcディレクトリの設定ファイルと/ usr / src / etcソースツリーの設定ファイルの違いを判断します。 これは、システム構成ファイルをソースツリーにあるファイルと同期するための推奨される方法です。
世界を再構築するには、シングルユーザーモード(シングルユーザー)に移行することをお勧めします。
1) mount -u /
2) mount -a
3) rm -R /usr/obj/*
4) /usr/src/usr.sbin/mergemaster –p
違いがある場合、これに関するメッセージが画面に表示されます。
その最初の行は、新しい要件を満たしていないファイルの名前であり、違い自体の下にあります。
記号「-」は、ユーティリティが削除しようとしている行を示します。
および追加する「+」。
最後に、次のオプションが提供されます。
d-提案されたオプションを削除して、古いオプションを残します。
i-古いオプションを削除して、提案されたオプションをインストールします。
m-古いオプションと提案されたオプションを1行ずつ比較します。
v-ファイルの違いをもう一度確認します。
5) cd /usr/src/
6) make installworld
7) mergemaster
8) reboot
9) cd /usr/src/
10) make delete-old

pkg_ *、portupgrade、portdowngradeを使用したポートのアップグレード。


1) #portsnap fetch updateポートを更新します。
2) # pkg_version -v | grep “need” # pkg_version -v | grep “need” -更新するポートを一覧表示します
3) #pkg_create -b port_name -pkg_addを使用した後続のインストールで、目的のポート用のパッケージを作成する機能
4) #pkg_add -i -f port_name.tbz依存関係なしでパッケージをインストールします。 このようなインストール後、最も簡単な方法は、以前のバージョンにロールバックすることです。

portupgradeユーティリティの使用

ここで見つけることができます-/ usr / ports / ports-mgmt / portupgrade
1) portupgrade -nr port_nameパッケージの今後のインストールに関する詳細情報を表示します(どのファイルと依存関係が更新されるか)
2) portupgrade -ir port_name
-iスイッチは、アップグレード時に、選択がある場合(yes / no)にユーザーがポーリングされることを示します。
-rスイッチは、ポートの依存関係の子チェーンを更新するように指示します。

portupgradeで更新する場合、重要な切り札は設定ファイル/usr/local/etc/pkgtools.confです。このファイルには、アセンブリ中にポートに渡されるパラメーター(MAKE_ARGSハッシュ)が含まれています。 このファイルのこのような設定をニーズに合わせて編集すると、その後の更新が不必要な問題なく行われるので便利です。
ポートを再インストールする場合、または新しいバージョンに切り替える場合に必要なパラメーターを削除することもできます。また、サーバー間のインストールの互換性を維持することも役立ちます。 たとえば、インストールされたmysqlの異なるエンコーディングは、サーバー間でサイトを転送するときに多くの神経を殺す可能性があります。
特定のポートの鉄の更新を禁止する必要がある場合があります。 このようなポートの名前は、pkgtools.confファイルのHOLD_PKGSハッシュで指定できます。たとえば、真夜中の司令官の更新は禁止されています。
HOLD_PKGS = [
'mc-*',
]

Portdowngradeユーティリティ

以前のバージョンにロールバックできます。
インストール:
# cd /usr/ports/ports-mgmt/portdowngrade
# make DEFAULT_CVS_SERVER="anoncvs@anoncvs1.FreeBSD.org:/home/ncvs" install clean


使用法:
#portdowngrade port_name以前のポートバージョンのリストを表示し、目的のバージョンを選択してインストールできます。

おわりに


これは、FreeBSDの完全なアップグレードに関するマニュアルです。 私はこのためにこのOSを勉強していますが、何か新しいものを開くふりはしませんが、個人的には5日、6日などよりも1つの記事を使用する方がはるかに便利です 個々のユーティリティごとに、このために自分用にマニュアルをまとめましたが、誰かにとっても役立つかもしれません!

文学


Subversionのバージョン管理
ソースの更新:cvsup、csup、svn、portsnap
csupを使用する
より細かいソース管理の例
mergemasterの起動に関する追加情報
portdowngrade-目的のポートを以前のバージョンにロールバックします
portupgrade-インストールされたポートのʻupdate`。

Source: https://habr.com/ru/post/J113441/


All Articles