1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
|
<!--
The FreeBSD Documentation Project
The FreeBSD Japanese Documentation Project
Original revision: 1.249
$FreeBSD$
-->
<chapter id="ports">
<title>アプリケーションのインストール - packages と ports</title>
<sect1 id="ports-synopsis">
<title>この章では</title>
<indexterm><primary>ports</primary></indexterm>
<indexterm><primary>packages</primary></indexterm>
<para>FreeBSD の基本システムには数多くのシステムツールが含まれています。
しかしながら、サードパーティ製のアプリケーションをインストールしないと
実用的にはそれほどたくさんのことはできません。
FreeBSD は、サードパーティ製のソフトウェアの導入を支援するために、
ソースコードをコンパイルしてインストールする Ports Collection と
コンパイル済みのバイナリをインストールする packages
という相補的な 2 つの技術を提供しています。
どちらのシステムを用いても、お気に入りのアプリケーションの最新版を
ローカルメディアやネットワーク上からインストールできます。</para>
<para>この章を読むと、以下のことがわかります。</para>
<itemizedlist>
<listitem>
<para>packages を用いてサードパーティ製のソフトウェアをバイナリからインストールする方法</para>
</listitem>
<listitem>
<para>Ports Collection を用いてサードパーティ製のソフトウェアをソースコードからコンパイルする方法</para>
</listitem>
<listitem>
<para>インストールした packages や ports を削除する方法</para>
</listitem>
<listitem>
<para>Ports Collection が用いるデフォルトの設定を変更する方法</para>
</listitem>
<listitem>
<para>お望みのソフトウェア package を探しだす方法</para>
</listitem>
<listitem>
<para>アプリケーションをアップグレードする方法</para>
</listitem>
</itemizedlist>
</sect1>
<sect1 id="ports-overview">
<title>ソフトウェアのインストール</title>
<para>&unix; システムを使ったことのある人なら、
サードパーティ製ソフトウェアの典型的なインストール手順が
以下のようになることをご存知でしょう。</para>
<procedure>
<step>
<para>ソースコード、またはバイナリ形式で
配布されているソフトウェアをダウンロードする。</para>
</step>
<step>
<para>配布時のフォーマット (一般的には
&man.compress.1;, &man.gzip.1; または &man.bzip2.1;
で圧縮された tarball) からソフトウェアを取り出す。</para>
</step>
<step>
<para>ドキュメント (<filename>INSTALL</filename> または
<filename>README</filename> ファイル、あるいは
<filename>doc/</filename> サブディレクト中のファイル) を探しだし、
ソフトウェアのインストール方法を調べる。</para>
</step>
<step>
<para>ソース形式でソフトウェアが配布されている場合はコンパイルを行う。
ここでは、<filename>Makefile</filename> の編集、
または、<command>configure</command> スクリプトの実行、
あるいは他の作業を伴うことがある。 </para>
</step>
<step>
<para>ソフトウェアの動作を確認し、インストールする。</para>
</step>
</procedure>
<para>すべてがうまくいったならば、インストール作業は以上です。
もしインストールしているソフトウェアパッケージが、
FreeBSD を意識して移植されたものでなければ、
適切に動くようコードを調べ、編集する必要があるかもしれません。</para>
<para>あなたが望むのであれば、FreeBSD 上へのソフトウェアのインストールに
<quote>従来</quote> の方法を使い続けることができます。
しかしながら、FreeBSD は
インストール時にかかるたくさんの労力を軽減する 2 つの技術、
すなわち packages と ports を提供しています。
この文書を書いている時点では、
&os.numports; を越えるサードパーティ製アプリケーションがこれらの方法で
利用可能となっています。</para>
<para>FreeBSD package では、いかなるアプリケーションに対しても
ダウンロードする必要のあるファイルはただ一つです。
package には、コンパイル済みのアプリケーションの全コマンド、
各種設定ファイルやドキュメントが含まれています。
FreeBSD に用意されている
&man.pkg.add.1;, &man.pkg.delete.1;, &man.pkg.info.1;
といった package 管理コマンドで、
ダウンロードした package ファイルを扱うことができます。
新しいアプリケーションをインストールするには、
たった一つのコマンドを実行するだけです。</para>
<para>FreeBSD port は、アプリケーションをソースコードからコンパイルする際の
処理を自動化するように設計されたファイルの集まりです。</para>
<para>プログラムをコンパイルする時のことを思い出して下さい。
通常、とてもたくさんの手順
(ダウンロード、展開、パッチ作業、コンパイル、インストール)
を踏まなくてはなりません。
port を構成するファイルは、
これらすべての作業をあなたの代わりに行うために必要な情報を含んでいます。
いくつかの簡単なコマンドを実行すると、
自動的にアプリケーションのソースコードがダウンロードされ、展開、
パッチ作業、コンパイル、そして、インストール作業が行われます。</para>
<para>さらに ports システムは、<command>pkg_add</command>
コマンドや他の package 管理コマンドで扱うことのできる
packages を生成できます。
これらのコマンドについては後の節で簡単に紹介します。</para>
<para>packages と ports は<emphasis>依存関係</emphasis>を理解します。
ある特定のライブラリに依存する
アプリケーションをインストールするとします。
また、アプリケーションとライブラリは FreeBSD ports や packages によって
入手可能であるとします。
アプリケーションを追加するために
<command>pkg_add</command> コマンドまたは ports システムを用いると、
インストールされていないライブラリが検出され、
先に依存するライブラリが自動的にインストールされます。</para>
<para>2 つの技術が非常に類似していて、
なぜ FreeBSD がわざわざ両者を採用しているのか不思議に思うでしょう。
packages と ports にはそれぞれ独自の特徴があり、
どちらを使うかはあなたの好みによります。</para>
<itemizedlist>
<title>package の利点</title>
<listitem>
<para>一般的に、あるアプリケーションの package の tarball は、
ソースコードを含む tarball より小さなサイズとなります。</para>
</listitem>
<listitem>
<para>packages はコンパイル作業を必要としません。
このことは、<application>Mozilla</application>,
<application>KDE</application>,
または <application>GNOME</application>
といった大きなアプリケーションで重要となります。
特にシステムが遅い場合にはなおさら重要です。</para>
</listitem>
<listitem>
<para>packages を用いれば、
ソフトウェアのコンパイルに関する知識は必要ありません。</para>
</listitem>
</itemizedlist>
<itemizedlist>
<title>ports の利点</title>
<listitem>
<para>packages は、通常最も多くのシステムで実行できるように、
非常に保守的な設定で構築されています。
port からインストールすることで、
たとえば Pentium IV や Athlon
プロセッサに特化したコードを生成するような
コンパイルオプションを指定できます。 </para>
</listitem>
<listitem>
<para>アプリケーションのなかには、コンパイル時に
プログラムの機能を決めるようなオプションを設定するものがあります。
たとえば、<application>Apache</application> は多種多様な
ビルトインオプションを設定できます。
port から構築することで、デフォルトオプションではなく、
自分でオプションを設定することができます。</para>
<para>設定を区別するために、同じアプリケーションに対して
複数の packages が存在することがあります。
たとえば、<application>Ghostscript</application> は
X11 サーバーがインストールされているかどうかにより、
<filename>ghostscript</filename> package と
<filename>ghostscript-nox11</filename> package
が選択可能となっています。
packages でもこのような方法が可能ですが、
アプリケーションのコンパイルオプションが
さらに用意されている場合は困難となります。</para>
</listitem>
<listitem>
<para>ライセンス条項で、
バイナリでの配布を禁止しているソフトウェアがあります。
それらはソースコードで配布されなくてはいけません。</para>
</listitem>
<listitem>
<para>バイナリ配布を信用していない人もいます。
ソースコードがあれば、少なくともソースコードを読んで
(理論的には) 潜在的な問題点を自分で見つけ出すことができます。</para>
</listitem>
<listitem>
<para>ローカルなパッチがある場合、
それを適用するためにソースコードが必要になります。</para>
</listitem>
<listitem>
<para>ソースコードを手元に置いておきたい人たちもいます。
彼らは、退屈したときに眺めたり、あちこち解析してみたり、
ソースコードを借用したり (もちろん、
ライセンスが許せばの話ですが) するのです。</para>
</listitem>
</itemizedlist>
<para>ports の更新状況を把握するために、
&a.ports; や &a.ports-bugs; を購読するとよいでしょう。</para>
<warning>
<para>アプリケーションをインストールする前に、
そのアプリケーションに関連したセキュリティ上の問題がないことを
<ulink url="http://vuxml.freebsd.org/"></ulink>
で確認してください。</para>
<para>また、
インストールされているアプリケーションに既知の脆弱性がないことを自動的に調べる
<filename role="package">security/portaudit</filename>
をインストールしてもよいでしょう。
このコマンドは、ビルド前の port についても調査します。
インストールされている packages を確認する場合には、
<command>portaudit -F -a</command> コマンドを使ってください。</para>
</warning>
<para>この章では、packages と ports を用いた FreeBSD 上での
サードパーティ製ソフトウェアの
インストール方法や管理方法について説明します。</para>
</sect1>
<sect1 id="ports-finding-applications">
<title>アプリケーションの探し方</title>
<para>どんなアプリケーションをインストールするにしても、
まずあなたが何を望んで、
またその名前がなんというのかを理解している必要があります。</para>
<para>FreeBSD 上で利用可能なアプリケーションのリストは常に増えています。
幸運にも、多くの方法で望むものを探すことができます。</para>
<itemizedlist>
<listitem>
<para>FreeBSD ウェブサイトは、
利用可能なすべてのアプリケーションの最新の一覧を、検索できる形で
<ulink url="&url.base;/ports/index.html">http://www.FreeBSD.org/ports/</ulink>
において公開しています。
ports はカテゴリに分類されています。
アプリケーションは、(名前を知っているならば) 名前で検索でき、
あるカテゴリで利用可能な
アプリケーションをすべて表示させることもできます。</para>
</listitem>
<indexterm><primary>FreshPorts</primary></indexterm>
<listitem>
<para>Dan Langille は
<ulink url="http://www.FreshPorts.org/"></ulink>
で FreshPorts を公開しています。
FreshPorts は ports ツリー中のアプリケーションの変更を追跡します。
一つまたはそれ以上の ports を <quote>監視</quote> することができ、
変更があるとメールで更新情報を送ってくれます。</para>
</listitem>
<indexterm><primary>FreshMeat</primary></indexterm>
<listitem>
<para>ご希望のアプリケーションの名前がわからなければ、
FreshMeat (<ulink url="http://www.freshmeat.net/"></ulink>)
のようなサイトでアプリケーションを探して下さい。
その後、そのアプリケーションが ports で利用可能かどうかを
FreeBSD サイトで調べて下さい。</para>
</listitem>
<listitem>
<para>port の正確な名前を知っていて、
どのカテゴリに分類されているのかを知りたいだけなら、
&man.whereis.1; コマンドで調べることができます。
単に <command>whereis <replaceable>file</replaceable></command>
と入力してください。<replaceable>file</replaceable>
の部分にはインストールしたいプログラム名を入れます。
システム上でプログラムが見つかったら、
そのプログラムのパスが次のように表示されます。</para>
<screen>&prompt.root; <userinput>whereis lsof</userinput>
lsof: /usr/ports/sysutils/lsof</screen>
<para>この表示は、<command>lsof</command> (システムユーティリティの一つ) が
<filename>/usr/ports/sysutils/lsof</filename>
というディレクトリにあることを示しています。</para>
</listitem>
<listitem>
<para>また、Ports Collection に備わっている検索機能を利用して
port を検索する方法もあります。
この検索機能を利用するには、カレントディレクトリが
<filename>/usr/ports</filename> である必要があります。
そのディレクトリに移動したら、
<command>make search key=<replaceable>プログラム名</replaceable></command>
と入力してください。
<replaceable>プログラム名</replaceable>の部分には検索したいプログラム名を入れます。
たとえば、<command>lsof</command>
を探したい場合には次のようにします。</para>
<screen>&prompt.root; <userinput>cd /usr/ports</userinput>
&prompt.root; <userinput>make search name=lsof</userinput>
Port: lsof-4.56.4
Path: /usr/ports/sysutils/lsof
Info: Lists information about open files (similar to fstat(1))
Maint: obrien@FreeBSD.org
Index: sysutils
B-deps:
R-deps: </screen>
<para>出力のうち特に注意して見なければならないのは
<quote>Path:</quote> という行です。
この行は port がどこにあるかを示しています。
出力される他の情報は port
をインストールする際には必要となるものではありませんので、
ここでは触れないでおきます。</para>
<para>もっと詳しく検索するには、
<command>make search key=<replaceable>string</replaceable></command>
と入力してください。
<replaceable>string</replaceable>
の部分には検索したいテキストを入れます。
port 名、コメント、説明文および依存情報が検索されます。
探しているプログラムの名前を知らない場合でも、
ある目的に関連した ports の検索に利用できます。</para>
<para>どちらの場合でも、
検索文字列中の大文字と小文字を区別せずに検索が行われるので、
<quote>LSOF</quote> を検索した結果は、
<quote>lsof</quote> と同じ検索結果になります。</para>
</listitem>
</itemizedlist>
</sect1>
<sect1 id="packages-using">
<sect1info>
<authorgroup>
<author>
<firstname>Chern</firstname>
<surname>Lee</surname>
<contrib>寄稿: </contrib>
</author>
</authorgroup>
<!-- 30 Mar 2001 -->
</sect1info>
<title>packages システムの利用</title>
<sect2>
<title>package のインストール</title>
<indexterm>
<primary>packages</primary>
<secondary>インストール</secondary>
</indexterm>
<indexterm>
<primary><command>pkg_add</command></primary>
</indexterm>
<para>&man.pkg.add.1; は、ローカルファイルやネットワーク上のサーバから
FreeBSD ソフトウェア package を
インストールするためのユーティリティです。</para>
<example>
<title>手動で package をダウンロードしてローカルからインストールする</title>
<screen>&prompt.root; <userinput>ftp -a <replaceable>ftp2.FreeBSD.org</replaceable></userinput>
Connected to ftp2.FreeBSD.org.
220 ftp2.FreeBSD.org FTP server (Version 6.00LS) ready.
331 Guest login ok, send your email address as password.
230-
230- This machine is in Vienna, VA, USA, hosted by Verio.
230- Questions? E-mail freebsd@vienna.verio.net.
230-
230-
230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
<prompt>ftp></prompt> <userinput>cd /pub/FreeBSD/ports/packages/sysutils/</userinput>
250 CWD command successful.
<prompt>ftp></prompt> <userinput>get lsof-4.56.4.tgz</userinput>
local: lsof-4.56.4.tgz remote: lsof-4.56.4.tgz
200 PORT command successful.
150 Opening BINARY mode data connection for 'lsof-4.56.4.tgz' (92375 bytes).
100% |**************************************************| 92375 00:00 ETA
226 Transfer complete.
92375 bytes received in 5.60 seconds (16.11 KB/s)
<prompt>ftp></prompt> <userinput>exit</userinput>
&prompt.root; <userinput>pkg_add <replaceable>lsof-4.56.4.tgz</replaceable></userinput></screen>
</example>
<para>(FreeBSD CD-ROM セットのような)
ローカルな packages がない場合は、
&man.pkg.add.1; に <option>-r</option> オプションをつける方が楽でしょう。
このユーティリティは、このオプションを指定して実行すると
自動的に適切なオブジェクトの形式とリリースを判断し、
package を FTP サイトからダウンロードしてインストールします。
</para>
<indexterm>
<primary><command>pkg_add</command></primary></indexterm>
<screen>&prompt.root; <userinput>pkg_add -r <replaceable>lsof</replaceable></userinput></screen>
<para>上の例では適当な package がダウンロードされた後、インストールされます。
ユーザはこのほかに何もする必要はありません。
メインの配布サイトではなく
&os; Package ミラーサイトの package を使うには、
<envar>PACKAGESITE</envar>
環境変数に利用したいサイトを設定してください。
&man.pkg.add.1; は、<envar>FTP_PASSIVE_MODE</envar>,
<envar>FTP_PROXY</envar>, <envar>FTP_PASSWORD</envar>
といった環境変数を参照する &man.fetch.3;
を用いてファイルをダウンロードします。
ファイアウォールの内側であったり、
FTP/HTTP プロキシを使う場合には、
これらの環境変数を設定することになります。
環境変数の一覧については &man.fetch.3; をご覧ください。
また、上の例で <literal>lsof-4.56.4</literal> の代わりに
<literal>lsof</literal> を使っていることに注意してください。
リモートフェッチ機能を使用する場合には、
package のバージョン番号を取り除かなければなりません。
&man.pkg.add.1; は自動的に最新版のアプリケーションを取得します。</para>
<note>
<para>&os.current; または、&os.stable; を使用している場合、
&man.pkg.add.1; は最新版のアプリケーションをダウンロードします。
-RELEASE を使用している場合には、
そのバージョンのリリース時にビルドされた package がダウンロードされます。
この設定は
<envar>PACKAGESITE</envar> 環境変数を上書きすることで変更できます。
たとえば、&os; 5.4-RELEASE を使用している場合には、
&man.pkg.add.1; を実行するとデフォルトで
<literal>ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-5.4-release/Latest/</literal>
から packages をダウンロードします。
もし、&man.pkg.add.1; を使って
&os; 5-STABLE の packages をダウンロードしたければ、
<envar>PACKAGESITE</envar> 環境変数を
<literal>ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-5-stable/Latest/</literal>
に設定してください。</para>
</note>
<para>package は <filename>.tgz</filename> や <filename>.tbz</filename>
という拡張子を持つファイルとして配布されており、
<ulink
url="ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/"></ulink>
や FreeBSD CD-ROM にあります。
FreeBSD 4-CD セット (または PowerPak など) の CD はすべて、
<filename>/packages</filename> ディレクトリに packages が
あります。packages のレイアウトは、
<filename>/usr/ports</filename> ツリーのものと同様です。
カテゴリごとにディレクトリがあり、
<filename>All</filename> ディレクトリにはすべての package
があります。
</para>
<para>package システムのディレクトリ構造は ports のレイアウトと同一です。
両者が組み合わさって package/port システムが構成されます。
</para>
</sect2>
<sect2>
<title>packages の管理</title>
<indexterm>
<primary>packages</primary>
<secondary>管理</secondary>
</indexterm>
<para>&man.pkg.info.1; は、インストールされている
packages の一覧と説明を表示するユーティリティです。
</para>
<indexterm>
<primary><command>pkg_info</command></primary>
</indexterm>
<screen>&prompt.root; <userinput>pkg_info</userinput>
cvsup-16.1 A general network file distribution system optimized for CV
docbook-1.2 Meta-port for the different versions of the DocBook DTD
...</screen>
<para>&man.pkg.version.1; は、インストールされている
packages のバージョンを要約して表示するユーティリティです。
package のバージョンを、現在の ports ツリーのバージョンと
比較します。
</para>
<indexterm>
<primary><command>pkg_version</command></primary>
</indexterm>
<screen>&prompt.root; <userinput>pkg_version</userinput>
cvsup =
docbook =
...</screen>
<para>2 列目の記号は、インストールされているバージョンの
ローカル ports ツリーのバージョンに対する
新旧を表します。</para>
<informaltable frame="none" pgwide="1">
<tgroup cols="2">
<thead>
<row>
<entry>記号</entry>
<entry>意味</entry>
</row>
</thead>
<tbody>
<row>
<entry>=</entry> <entry>インストールされている
package のバージョンは、
ローカル ports ツリーのものと一致しています。</entry>
</row>
<row><entry><</entry>
<entry>インストールされているバージョンは、
ローカル ports ツリーのものより古いです。</entry>
</row>
<row><entry>></entry><entry>インストールされているバージョンは、
ローカル ports ツリーのものより新しいです
(おそらくローカル ports ツリーは古くなっています)。</entry></row>
<row><entry>?</entry><entry>インストールされた package を
ports インデックスの中に見つけることができません
(インストールされた port が Ports Collection から削除されたり、
名前が変更された場合などに起こります)。</entry></row>
<row><entry>*</entry><entry>複数のバージョンの
package が存在します。</entry></row>
</tbody>
</tgroup>
</informaltable>
</sect2>
<sect2>
<title>package の削除</title>
<indexterm>
<primary><command>pkg_delete</command></primary>
</indexterm>
<indexterm>
<primary>packages</primary>
<secondary>削除</secondary>
</indexterm>
<para>インストールされている package を削除するには、
&man.pkg.delete.1; ユーティリティを使ってください。
</para>
<screen>&prompt.root; <userinput>pkg_delete <replaceable>xchat-1.7.1</replaceable></userinput></screen>
</sect2>
<sect2>
<title>その他</title>
<para>package に関するすべての情報は
<filename>/var/db/pkg</filename> ディレクトリ以下に置かれています。
このディレクトリの下にあるファイルの中に、
インストールされたファイルの一覧やインストールされた各 package
についての説明が含まれています。
</para>
</sect2>
</sect1>
<sect1 id="ports-using">
<title>Ports Collection の利用</title>
<para>このセクションでは、Ports Collection
を利用してシステムにプログラムをインストールしたり、
システムから削除したりする基本的な手順について説明します。</para>
<sect2 id="ports-tree">
<title>Ports Collection の準備</title>
<para>ports をインストールするためには、まず Ports Collection
を用意しなくてはなりません。
Ports Collection とは、<filename>/usr/ports</filename>
以下に置かれる <filename>Makefile</filename>, 修正パッチ、
説明文などの一連のファイルのことです。</para>
<para>FreeBSD のシステムインストール時に、
<application>sysinstall</application>
が Ports Collection をインストールするかどうかを尋ねてきたはずです。
No を選んだ場合、以下の作業をおこない
Ports Collection をインストールしてください。</para>
<procedure>
<title>CVSup を利用する方法</title>
<para>ここでは、<application>CVSup</application> を利用して
Ports Collection をインストールする方法や最新の状態に保つ方法を簡単に説明します。
<application>CVSup</application> についてもっと知りたいのであれば、
<link linkend="cvsup">CVSup を使う</link> をご覧ください。</para>
<step>
<para>まず <filename role="package">net/cvsup-without-gui</filename>
package をインストールしてください。</para>
<screen>&prompt.root; <userinput>pkg_add -r cvsup-without-gui</userinput></screen>
<para>インストールについての詳細は、<link
linkend="cvsup-install">CVSup のインストール</link> (<xref
linkend="cvsup-install">) を参照してください。</para>
</step>
<step>
<para><command>cvsup</command> を実行してください。</para>
<screen>&prompt.root; <userinput>cvsup -L 2 -h <replaceable>cvsup.FreeBSD.org</replaceable> /usr/share/examples/cvsup/ports-supfile</userinput></screen>
<para><replaceable>cvsup.FreeBSD.org</replaceable> を最寄りの
<application>CVSup</application> サーバに変更してください。
ミラーサイトの完全なリストは <link
linkend="cvsup-mirrors">CVSup サイト</link> (<xref
linkend="cvsup-mirrors">) にあります。</para>
<note>
<para>
自分用の <filename>ports-supfile</filename> を使って、
コマンドラインから <application>CVSup</application>
サーバを指定することを省略したいと思う方もいるでしょう。</para>
<procedure>
<step>
<para>そのような場合には、
まず <username>root</username> ユーザ権限で、
<filename>/usr/share/examples/cvsup/ports-supfile</filename>
を <filename>/root</filename>
や、あなたのホームディレクトリなどへコピーしてください。</para>
</step>
<step>
<para>次に <filename>ports-supfile</filename> を編集します。</para>
</step>
<step>
<para><replaceable>CHANGE_THIS.FreeBSD.org</replaceable> を最寄りの
<application>CVSup</application> サーバに変更してください。
ミラーサイトの完全なリストは <link
linkend="cvsup-mirrors">CVSup サイト</link> (<xref
linkend="cvsup-mirrors">) にあります。</para>
</step>
<step>
<para>その後、以下のように
<command>cvsup</command> を実行してください。</para>
<screen>&prompt.root; <userinput>cvsup -L 2 <replaceable>/root/ports-supfile</replaceable></userinput></screen>
</step>
</procedure>
</note>
</step>
<step>
<para>&man.cvsup.1; コマンドを時間をおいて実行すると、
最新の変更点がダウンロードされて、あなたの手元の
Ports Collection に加えられます。
Ports Collection 全体が再度ダウンロードされることはありません。
</para>
</step>
</procedure>
<procedure>
<title>Portsnap を利用する方法</title>
<para>&man.portsnap.8; は Ports Collection
を配布するための新しいシステムです。
&os; 6.0 から追加されました。
もし、それより古いシステムをお使いでしたら、<filename
role="package">sysutils/portsnap</filename>
port をインストールしてください。</para>
<screen>&prompt.root; <userinput>pkg_add -r portsnap</userinput></screen>
<para><application>Portsnap</application> の機能についての詳細は
Portsnap を使う
<!-- ryusuke:2006/05/18
should be refer this after updating mirrors/chapter.sgml
<link linkend="portsnap">Portsnap を使う</link> -->
を参照してください。</para>
<step>
<para>もし <filename
role="directory">/usr/ports</filename> ディレクトリが存在しなければ、
以下のように空のディレクトリを作成してください。</para>
<screen>&prompt.root; <userinput>mkdir /usr/ports</userinput></screen>
</step>
<step>
<para>圧縮された Ports Collection のスナップショットを
<filename role="directory">/var/db/portsnap</filename>
にダウンロードしてください。
この作業が終われば、ネットワークへの接続を終了してもかまいません。</para>
<screen>&prompt.root; <userinput>portsnap fetch</userinput></screen>
</step>
<step>
<para>初めて <application>Portsnap</application> を使う時は、
スナップショットをまず <filename
role="directory">/usr/ports</filename> に展開してください。
</para>
<screen>&prompt.root; <userinput>portsnap extract</userinput></screen>
<para>すでに <filename
role="directory">/usr/ports</filename> が用意されていて、
アップデートだけを行ないたいのであれば、
代わりに以下のコマンドを実行してください。
</para>
<screen>&prompt.root; <userinput>portsnap update</userinput></screen>
</step>
</procedure>
<procedure>
<title>sysinstall を利用する方法</title>
<para>ここでは、<application>sysinstall</application>
を利用してインストールメディアから Ports Collection
をインストールする方法について説明します。
この方法では、リリース時の古い Ports Collection
がインストールされることに注意してください。
もし、インターネットへの接続が可能であれば、
これまでに説明した方法を使ってください。</para>
<step>
<para><username>root</username> ユーザ権限で、以下のように
<command>sysinstall</command>
(5.2 より前の &os; では <command>/stand/sysinstall</command>)
を実行してください。</para>
<screen>&prompt.root; <userinput>sysinstall</userinput></screen>
</step>
<step>
<para>スクロールダウンして <guimenuitem>Configure</guimenuitem> を選び、
<keycap>Enter</keycap> を押してください。</para>
</step>
<step>
<para>スクロールダウンして <guimenuitem>Distributions</guimenuitem> を選び、
<keycap>Enter</keycap> を押してください。</para>
</step>
<step>
<para>スクロールダウンして <guimenuitem>ports</guimenuitem> を選び、
<keycap>Space</keycap> キーを押してください。</para>
</step>
<step>
<para><guimenuitem>Exit</guimenuitem> までスクロールアップして、
<keycap>Enter</keycap> を押してください。</para>
</step>
<step>
<para>CDROM や FTP といったインストールメディアを選択してください。</para>
</step>
<step>
<para><guimenuitem>Exit</guimenuitem> までスクロールアップして、<keycap>Enter</keycap>
を押してください。</para>
</step>
<step>
<para><keycap>X</keycap> を押して、
<application>sysinstall</application> を終了してください。</para>
</step>
</procedure>
</sect2>
<sect2 id="ports-skeleton">
<title>ports のインストール</title>
<indexterm>
<primary>ports</primary>
<secondary>インストール</secondary>
</indexterm>
<para>一番最初に知らなければならないのは、
Ports Collection は <quote>スケルトン</quote>
と呼ばれるもので構成されているという事実です。
port スケルトンは簡単に言うと、アプリケーションを FreeBSD
上で正しくコンパイルしインストールする方法を提供する最小限のファイルのセットのことです。
それぞれの port スケルトンには、次のファイルが含まれています。
</para>
<itemizedlist>
<listitem>
<para><filename>Makefile</filename>。
<filename>Makefile</filename>
にはアプリケーションのコンパイル方法やシステムのどこにインストールするかを指定する、
さまざまな命令文が含まれています。</para>
</listitem>
<listitem>
<para><filename>distinfo</filename> ファイル。
このファイルには、その port
を構築するためにダウンロードする必要があるファイルのファイル名と、
それらのファイルがダウンロードによって壊れていないかを
(&man.md5.1; を使って)
確認するためのチェックサム情報が含まれています。</para>
</listitem>
<listitem>
<para><filename>files</filename> ディレクトリ。
このディレクトリには FreeBSD
システム上でプログラムをコンパイルし、
インストールするための修正パッチが含まれています。
修正パッチ (patch) とは基本的に、
個々のファイルに対する変更点を表した小さなファイル群のことです。
ファイルはプレインテキスト形式で、
<quote>10 行目を削除</quote> や
<quote>26 行目を ... に変更</quote> などと書かれています。
修正パッチは、<quote>diff (差分)</quote> とも呼ばれます。
これは、修正パッチが &man.diff.1;
プログラムで作成されるからです。</para>
<para>このディレクトリには、その port の構築に必要な
その他のファイルが入る場合もあります。</para>
</listitem>
<listitem>
<para><filename>pkg-descr</filename> ファイル。
これにはプログラムの、複数行にわたる詳しい説明文が含まれます。</para>
</listitem>
<listitem>
<para><filename>pkg-plist</filename> ファイル。
これは、その port によってインストールされる全ファイルのリストです。
これにはプログラムを削除する際に、
どのファイルを削除すれば良いのかを ports
システムに伝える役割もあります。</para>
</listitem>
</itemizedlist>
<para>これらの他に <filename>pkg-message</filename>
といったファイルを含む ports もあります。
ports システムは、
このようなファイルを用いて特殊な状況にも対応しています。
これらのファイルについての詳細および
ports の一般的な説明については、<ulink
url="&url.books.porters-handbook/index.html">port 作成者のためのハンドブック
</ulink> をご覧下さい。</para>
<para>port はソースコードからアプリケーションを構築する方法を
提供しますが、実際のソースコードは含んでいません。
ソースコードは CD-ROM やインターネットから入手できます。
ソースコードはソフトウェア作者のお気に入りの形式で配布されます。
たいてい、tar と gzip で作成された圧縮アーカイブとして配布されますが、
他のツールで圧縮されていたり、圧縮されずに配布されることもあります。
どのような形式で配布されているかに関わらず、
これらのプログラムのソースコードは <quote>distfile</quote>
と呼ばれています。
以下では &os; port をインストールする 2 つの方法について説明します。</para>
<note>
<para>ports をインストールするには、
<username>root</username> としてログインする必要があります。</para>
</note>
<warning>
<para>port をインストールする前に、
Ports Collection が最新であることを確認してください。
また、そのアプリケーションに関連したセキュリティ上の問題がないことを
<ulink url="http://vuxml.freebsd.org/"></ulink>
で確認してください。</para>
<para>
アプリケーションをインストールする前に、
<application>portaudit</application> を使って
セキュリティに関する脆弱性を自動的に調べることができます。
このツールは Ports Collection (<filename
role="package">security/portaudit</filename>) に用意されています。
新しく port をインストールする前に、
<command>portaudit -F</command> コマンドを実行すると、
最新の脆弱性に関するデータベースがダウンロードされます。
セキュリティの検査およびデータベースの更新は、
日々のセキュリティチェックで行なわれます。
詳しくは、&man.portaudit.1; および &man.periodic.8;
のマニュアルページを参照してください。</para>
</warning>
<para>Ports Collection は、ネットワークに接続できることを想定しています。
もし接続できなければ、distfile のコピーを
<filename>/usr/ports/distfiles</filename>
に手動で置いてください。</para>
<para>まず、インストールしたい port のディレクトリに移動してください。</para>
<screen>&prompt.root; <userinput>cd /usr/ports/sysutils/lsof</userinput></screen>
<para><filename>lsof</filename> ディレクトリに移動すると、
port スケルトンがあるのが確認できると思います。
次に行なうのは、port のコンパイルまたは
<quote>ビルド (build)</quote> です。
これは、プロンプトから単に
<command>make</command> と入力するだけで行なえます。
そうすると、次のような出力が現われるはずです。</para>
<screen>&prompt.root; <userinput>make</userinput>
>> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
>> Attempting to fetch from ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/.
===> Extracting for lsof-4.57
...
[extraction output snipped]
...
>> Checksum OK for lsof_4.57D.freebsd.tar.gz.
===> Patching for lsof-4.57
===> Applying FreeBSD patches for lsof-4.57
===> Configuring for lsof-4.57
...
[configure output snipped]
...
===> Building for lsof-4.57
...
[compilation output snipped]
...
&prompt.root;</screen>
<para>コンパイルが終了してプロンプトに戻ることを確認してください。
次に port のインストールを行ないます。
port をインストールするのに必要なのは、
<command>make</command> コマンドに一つの単語、
<command>install</command> を指定することだけです。</para>
<screen>&prompt.root; <userinput>make install</userinput>
===> Installing for lsof-4.57
...
[installation output snipped]
...
===> Generating temporary packing list
===> Compressing manual pages for lsof-4.57
===> Registering installation for lsof-4.57
===> SECURITY NOTE:
This port has installed the following binaries which execute with
increased privileges.
&prompt.root;</screen>
<para>プロンプトに戻ったら、
インストールしたプログラムは実行できるようになっています。
<command>lsof</command> は高い権限で動作するプログラムなので、
セキュリティに関する警告が表示されます。
ports のコンパイルや
インストール中に表示されるこれらの警告に注意してください。</para>
<para>コンパイル時に作成される作業用ディレクトリを削除すると良いでしょう。
このディレクトリにはコンパイル時に使用されるすべての一時ファイルが含まれています。
このディレクトリを残しておくと、ディスク容量を消費するだけでなく、
port を新しいバージョンへアップデートする際に問題を引き起こす可能性があります。</para>
<screen>&prompt.root; <userinput>make clean</userinput>
===> Cleaning for lsof-4.57
&prompt.root;</screen>
<note>
<para><command>make</command>、<command>make install</command>
および <command>make clean</command>
と三つに分けられた手順の代わりに、
最初から <command>make install clean</command> と実行することで、
余分な操作を省くことができます。</para>
</note>
<note>
<para>シェルによってはコマンドの実行ファイルを探す時間を短縮するために、
環境変数 <envar>PATH</envar> に登録されている
ディレクトリのコマンド一覧をキャッシュするものがあります。
このようなシェルを使っているのであれば、
port をインストールしたあとで、
新しくインストールされたコマンドを用いる前に、
<command>rehash</command> コマンドを実行する必要があります。
このコマンドは <command>tcsh</command> などのシェルで動作します。
<command>sh</command> のようなシェルを使っているのであれば
<command>hash -r</command> を実行してください。
詳細については、
あなたの使っているシェルのドキュメントをご覧ください。</para>
</note>
<para><ulink url="http://www.freebsdmall.com/">FreeBSD
Mall</ulink> の FreeBSD Toolkit のようなサードパーティ製の DVD-ROM
製品の中には distfiles を収録しているものがあります。
これらを Ports Collection で使うことができます。
DVD-ROM を <filename>/cdrom</filename> にマウントしてください。
ほかのマウントポイントを使用したければ、
<makevar>CD_MOUNTPTS</makevar> 変数を設定してください。
ディスク上に必要な distfiles が存在すると、
自動的に利用されます。</para>
<note>
<para>port には CD-ROM
への収録を許可しないライセンス条項を持つものがあることに
注意してください。
これにはダウンロード前に登録を必要としたり、
再配布が禁止されているなどという理由があります。
CD-ROM に含まれていない port をインストールしたい場合には、
ネットワークに接続する必要があります。</para>
</note>
<para>ports は、<envar>FTP_PASSIVE_MODE</envar>,
<envar>FTP_PROXY</envar>, <envar>FTP_PASSWORD</envar>
といった環境変数を参照する &man.fetch.1;
を用いてファイルをダウンロードします。
ファイアウォールの内側であったり、
FTP/HTTP プロキシを使う場合には、
これらの環境変数を設定することなります。
環境変数の一覧については &man.fetch.3; をご覧ください。</para>
<para>ネットワークに常時接続できないユーザのために
<command>make <maketarget>fetch</maketarget></command>
コマンドが用意されています。
(ネットワークに接続している時に) このコマンドを
ports のトップディレクトリ
(<filename>/usr/ports</filename>) で実行してください。
必要なファイルがダウンロードされます。
このコマンドは <filename>/usr/ports/net</filename>
といった、より下の階層のカテゴリにおいても使うことができます。
ある port がライブラリやその他の ports に依存している場合には、
それらの distfiles
はダウンロードされ<emphasis>ない</emphasis>ことに注意してください。
port が依存しているものもダウンロードしたければ
<maketarget>fetch</maketarget> の代わりに
<maketarget>fetch-recursive</maketarget> を使って下さい。</para>
<note>
<para>前述した <command>make <makevar>fetch</makevar></command>
と同じように、トップディレクトリで <command>make</command>
を実行するとすべての port がビルドされます。
しかしながら ports の中には同時に存在できないものがあったり、
異なる ports の別のファイルが同じ名前で
インストールされる場合があることに注意してください。</para>
</note>
<para>めったにないことかもしれませんが、
<makevar>MASTER_SITES</makevar> (ファイルをダウンロードしてくる場所)
に書かれているサイト以外から tarball
を持ってくることが必要になる場合があります。
そのような場合には以下のように
<makevar>MASTER_SITES</makevar> を変更してください。</para>
<screen>&prompt.root; <userinput>cd /usr/ports/<replaceable>directory</replaceable></userinput>
&prompt.root; <userinput>make MASTER_SITE_OVERRIDE= \
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch</userinput></screen>
<para>上の例では <makevar>MASTER_SITES</makevar> を
<hostid role="fqdn">ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/</hostid>
に変更しています。</para>
<note>
<para>ports の中にはビルドオプションを指定できる
(または要求してくる) ものがあります。
このオプションを指定することで、
アプリケーションの機能の一部を有効もしくは無効にできます。
また、セキュリティオプションを設定したり、
その他のカスタマイズを行うことができます。
このようなアプリケーションには
<filename role="package">www/mozilla</filename>,
<filename role="package">security/gpgme</filename> や
<filename role="package">mail/sylpheed-claws</filename>
などがあります。
利用可能なオプションがある場合にはメッセージが表示されます。</para>
</note>
<sect3>
<title>ports ディレクトリの変更</title>
<para>distfiles や ports
ディレクトリをデフォルトのものから変更したほうが有用な場合
(もしくは変更しなければならない場合) があります。
<makevar>PORTSDIR</makevar> 変数と
<makevar>PREFIX</makevar> 変数を変更することで、
違うディレクトリを使用することができます。
たとえば、</para>
<screen>&prompt.root; <userinput>make PORTSDIR=/usr/home/example/ports install</userinput></screen>
<para>とすると、ports は <filename>/usr/home/example/ports</filename>
でコンパイルされ、すべて <filename>/usr/local</filename>
以下にインストールされます。</para>
<screen>&prompt.root; <userinput>make PREFIX=/usr/home/example/local install</userinput></screen>
<para>この場合、コンパイルは <filename>/usr/ports</filename>
でおこない、
<filename>/usr/home/example/local</filename>
にインストールします。</para>
<para>もちろん、</para>
<screen>&prompt.root; <userinput>make PORTSDIR=../ports PREFIX=../local install</userinput></screen>
<para>とすれば両者を組み合わせることが可能です
(省略せずに記述したらこのページに収めるには長すぎるのですが、
考え方は理解していただけたと思います)。</para>
<para>あるいは、これらを環境変数に設定する方法もあります。
どのようにすれば良いかについては、
あなたの使っているシェルのマニュアルページを参照してください。</para>
</sect3>
<sect3>
<title><command>imake</command> の使用</title>
<para>(X Window System に含まれる) <command>imake</command> を使用する
ports の場合は <makevar>PREFIX</makevar> が機能せず、
<filename>/usr/X11R6</filename> にインストールしようとします。
また、Perl 関連の ports も同様に <makevar>PREFIX</makevar> を無視して
Perl ツリーにインストールします。
これらの ports で <makevar>PREFIX</makevar>
がきちんと参照されるように変更するのは、ほとんど不可能です。</para>
</sect3>
</sect2>
<sect2 id="ports-removing">
<title>インストールした ports の削除</title>
<indexterm>
<primary>ports</primary>
<secondary>削除</secondary>
</indexterm>
<para>ports のインストール方法について知ればおそらく、
インストールした後になって間違っていたことに気付いた時などに備えて、
それらを削除するにはどうすれば良いのか疑問に感じることでしょう。
<!-- 2000/07/16:hrs - why "decide"? -->
さて、前の例 (例のまま何も変更していない人は
<command>lsof</command>)
を削除してみましょう。ports のインストールと同じように、
まず最初にやらなければならないのは port のディレクトリ
<filename>/usr/ports/sysutils/lsof</filename> に移動することです。
ディレクトリを移動したら、<command>lsof</command>
を削除するのに必要な準備は終わりです。
削除するには、<command>make deinstall</command> コマンド
を実行します。</para>
<screen>&prompt.root; <userinput>cd /usr/ports/sysutils/lsof</userinput>
&prompt.root; <userinput>make deinstall</userinput>
===> Deinstalling for lsof-4.57</screen>
<para>極めて簡単な作業です。
これでうまく <command>lsof</command>
をシステムから削除できました。
もう一度再インストールしたい場合には、
<filename>/usr/ports/sysutils/lsof</filename> ディレクトリから
<command>make reinstall</command>
を実行することで行なうことができます。
</para>
<para>一度 <command>make clean</command> を実行してしまうと、
<command>make deinstall</command> および <command>make
reinstall</command> の一連の作業はできません。
<command>make clean</command> を実行した後で
インストールした port を削除したいのであれば、
<link linkend="packages-using">ハンドブックの packages
のセクション</link> で説明されているように
&man.pkg.delete.1; を使ってください。</para>
</sect2>
<sect2 id="ports-disk-space">
<title>ports とディスク容量</title>
<indexterm>
<primary>ports</primary>
<secondary>ディスク容量</secondary>
</indexterm>
<para>Ports Collection を使い続けていると、
そのうちディスクを食いつぶしてしまうでしょう。
このように ports ツリーのサイズは大きくなりがちなので、
ports からソフトウェアをビルドしてインストールした後に、
常に、作業用の
<filename class="directory">work</filename> ディレクトリを
<command>make <makevar>clean</makevar></command>
コマンドで削除するようにしましょう。
このコマンドは、ビルドやインストールされた
port の <filename class="directory">work</filename>
ディレクトリを削除します。
また、配布ソースファイルを <filename class="directory">distfiles</filename>
ディレクトリから削除したり、
必要なくなればインストールした ports を削除してもよいでしょう。
</para>
<para><filename>refuse</filename> ファイルを使って、
利用できる port のカテゴリを制限することもできます。
<application>CVSup</application> は、
このファイルにエントリされたカテゴリに属するファイルを更新しません。
<filename>refuse</filename> ファイルに関するより詳しい説明は <xref
linkend="cvsup-refuse-file"> にあります。</para>
</sect2>
<sect2 id="ports-upgrading">
<title>ports のアップグレード</title>
<indexterm>
<primary>portupgrade</primary>
</indexterm>
<indexterm>
<primary>ports</primary>
<secondary>アップグレード</secondary>
</indexterm>
<note>
<para>Ports Collection を更新したら、port をアップグレードする前に
<filename>/usr/ports/UPDATING</filename>
ファイルに目を通してください。
このファイルには
port をアップグレードする際にユーザが遭遇するであろう問題や、
追加で必要な作業などが記述されています。</para>
</note>
<para>ports を最新の状態に維持し続けるのはとても大変です。
たとえば、port をアップグレードする作業は次のようになります。
まず ports のディレクトリへ移動し、port をビルドします。
次に、古い port を削除し、新しい port をインストールします。
最後にビルド後のクリーンアップを行います。
5 つの ports のアップグレードを考えただけでも大変ですよね?
このようにシステム管理者にとってアプリケーションの管理は大きな悩みの種ですが、
この問題を解決してくれるユーティリティがあります。
たとえば <filename role="package">sysutils/portupgrade</filename>
は、あなたの代わりにこれらの作業をすべて行ってくれます!
通常の port をインストールするように
<command>make <makevar>install clean</makevar></command>
コマンドでインストールしてください。</para>
<para>まず、<command>pkgdb -F</command> コマンドを使い、
データベースを作成します。
このコマンドはインストールされている ports を調べ、
<filename>/var/db/pkg</filename>
ディレクトリにデータベースファイルを作成します。
そして <command>portupgrade -a</command> を実行すると、
このデータベースファイルと
ports <filename>INDEX</filename> ファイルが調べられ、
更新の必要がある ports
のダウンロード、ビルド、バックアップ、インストール、そしてクリーンアップが行われます。
さまざまな利用状況に対応するため、
<application>portupgrade</application>
にはたくさんのオプションがあります。
以下では重要なオプションについて紹介します。</para>
<para>データベース上のすべてのアプリケーションではなく、
ある特定のアプリケーションだけを更新したいのであれば、
<command>portupgrade <replaceable>pkgname</replaceable></command>
を実行してください。
アップグレードしたいアプリケーションに依存するすべての packages
を同時に更新したい場合には、<option>-r</option>
オプションを付けて <application>portupgrade</application>
を実行してください。
アップグレードしたいアプリケーションが必要とするすべての
アプリケーションを更新したい場合には、
<option>-R</option> オプションを使ってください。</para>
<para>ports ではなく packages を用いてインストールを行ないたい場合には、
<option>-P</option> オプションを使ってください。
このオプションを使うと、<application>portupgrade</application> は
<envar>PKG_PATH</envar> に登録されているローカルディレクトリを検索します。
ローカルに packages が見つからなければ、
リモートサイトからダウンロードを試みます。
packages をローカルに見つけることができず、
リモートサイトからもダウンロードできない場合には、
<application>portupgrade</application>
は ports からインストールを行ないます。
ports を使用したくなければ、<option>-PP</option>
オプションを指定してください。</para>
<para>また、ビルドやインストールを行なわず、
distfiles (<option>-P</option> が指定されている場合は packages)
だけをダウンロードしたければ、
<option>-F</option> オプションを指定してください。
詳細は &man.portupgrade.1; を参照してください。</para>
<note>
<para>定期的に、もしくは <application>portupgrade</application>
が要求してきたら、package データベースの整合性を保つために
<command>pkgdb -F</command> を実行してください。
package データベースの更新中に
<application>portupgrade</application> を中止しないでください。
整合性のないデータベースが作成されることがあります。</para>
</note>
<para>
このようなユーティリティは他にも <filename>ports/sysutils</filename>
ディレクトリにあるので、目的のものを探してください。</para>
</sect2>
</sect1>
<sect1 id="ports-nextsteps">
<title>インストール後の作業</title>
<para>新しいアプリケーションのインストールが終わったら、
次に付属のドキュメントを読みたいと思うでしょう。
また、必要な設定ファイルを編集したり、
(デーモンの場合には) システムの起動時にプログラムが開始することを確認したくなるでしょう。</para>
<para>port のインストール後に追加で行わなければならない作業の詳細は、
アプリケーションごとに異なります。
しかしながら、新しいアプリケーションをインストールしたばかりで、
<quote>次は何 ?</quote> と思っているのであれば、
以下の tips は役に立つでしょう。</para>
<itemizedlist>
<listitem>
<para>どのようなファイルがどこにインストールされているのかを知りたければ、
&man.pkg.info.1; を使ってください。
たとえば、FooPackage の 1.0.0 バージョンをインストールしたのであれば、
以下を実行してください。</para>
<screen>&prompt.root; <userinput>pkg_info -L foopackage-1.0.0 | less</userinput></screen>
<para>上のコマンドを実行すると package
としてインストールされているすべてのファイルが表示されます。
特に、<filename>man/</filename>, <filename>etc/</filename>,
<filename>doc/</filename> ディレクトリのファイルに注目してください。
それぞれ、マニュアルページ、
設定ファイル、より包括的なドキュメントが設置されています。</para>
<para>もし、アプリケーションのバージョンがわからなければ、
次のコマンドを実行してください。</para>
<screen>&prompt.root; <userinput>pkg_info | grep -i <replaceable>foopackage</replaceable></userinput></screen>
<para>インストールされた packages の中から、名前に
<replaceable>foopackage</replaceable> を含む package が表示されます。
必要に応じてコマンドラインの <replaceable>foopackage</replaceable>
を置き換えてください。</para>
</listitem>
<listitem>
<para>アプリケーションのマニュアルページがインストールされているのであれば、
&man.man.1; を使ってマニュアルを読んでください。
同様に、設定ファイルのサンプルや提供されているドキュメントにも目を通してください。</para>
</listitem>
<listitem>
<para>アプリケーションのウェブサイトがあれば、
そのサイトに更なるドキュメントや FAQ がないかを調べてください。
ウェブサイトのアドレスがわからなければ、
次のコマンドで表示されるかもしれません。
</para>
<screen>&prompt.root; <userinput>pkg_info <replaceable>foopackage-1.0.0</replaceable></userinput></screen>
<para>ウェブサイトが存在すると、 URL が
<literal>WWW:</literal> を含む行に表示されます。</para>
</listitem>
<listitem>
<para>(インターネットサーバのように)
システム起動時に立ち上げる必要のある port は、
サンプルスクリプトを通常
<filename>/usr/local/etc/rc.d</filename> にインストールします。
このスクリプトを調べ、
必要があれば編集したりスクリプトの名前を変更してください。
詳細は <link
linkend="configtuning-starting-services">サービスの起動</link>
をご覧ください。</para>
</listitem>
</itemizedlist>
</sect1>
<sect1 id="ports-broken">
<title>うまく動作しない ports に遭遇した場合には</title>
<para>port がうまく動作しない状況に遭遇したら、
あなたにできることは次のようなことしかありません。</para>
<orderedlist>
<listitem>
<para>その port に対する修正案が提出されていないかどうかを
<ulink url="&url.base;/support.html#gnats">障害報告
(Problem Report) データベース</ulink> で調べてください。
もし提案されていれば、
その修正を使うことができるかもしれません。</para>
</listitem>
<listitem>
<para>port の保守担当者に対応してもらいましょう。
<command>make maintainer</command> と入力するか、
<filename>Makefile</filename> を直接読み、
保守担当者の電子メールアドレスを調べます。
メールを送る際には、port 名とバージョン番号
(<filename>Makefile</filename> の
<literal>$FreeBSD:</literal> 行)、
そしてエラーが出力されるまでの出力ログを忘れずに添付してください。</para>
<note>
<para>特定の保守担当者が存在せず、かわりに <ulink
url="&url.articles.mailing-list-faq;/article.html">メーリングリスト
</ulink> が保守している ports があります。
そのような場合には、メールアドレスは
<email role="nolink">freebsd-listname@FreeBSD.org</email>
のようになります。
質問する際には、このことに気をつけてください。</para>
<para>特に <email role="nolink">freebsd-ports@FreeBSD.org</email>
が保守している ports には、保守担当者が本当にいません。
そのメーリングリストを購読する人々からなるコミュニティが、
修正や対応をおこなっています。
もっとボランティアが必要です!</para>
</note>
<para>
保守担当者から返信がなければ、&man.send-pr.1;
を使ってバグレポートを提出しても構いません (<ulink
url="&url.articles.problem-reports;/article.html">
FreeBSD 障害報告の書き方</ulink> をご覧ください)。</para>
</listitem>
<listitem>
<para>自分で直しましょう!
<quote>Ports</quote> システムに関する詳細な情報は <ulink
url="&url.books.porters-handbook/index.html">
port 作成者のためのハンドブック</ulink> にあります。
このセクションを読むと、壊れてしまった port を直したり、
自分で作った port を提出したりできるようになります!</para>
</listitem>
<listitem>
<para>近くの FTP サイトから package を入手しましょう。
<quote>マスタ</quote> package コレクションは、
<hostid role="fqdn">ftp.FreeBSD.org</hostid> の
<ulink url="ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/">
package のディレクトリ</ulink> にありますが、
まずはあなたの地域の <ulink
url="http://mirrorlist.FreeBSD.org/">ミラーサイト</ulink>
を<emphasis>最初に</emphasis>調べてください。
ソースからコンパイルすることを試みるより確実ですし、
時間もかかりません。
package をシステムにインストールするには、&man.pkg.add.1; を使います。
</para>
</listitem>
</orderedlist>
</sect1>
</chapter>
<!--
Local Variables:
mode: sgml
sgml-declaration: "../chapter.decl"
sgml-indent-data: t
sgml-omittag: nil
sgml-always-quote-attributes: t
sgml-parent-document: ("../book.sgml" "part" "chapter")
End:
-->
|