FreeBSD でデスクトップ環境とプログラミング環境を整える(主にポーツ・ツリーを活用)
◇ このページで扱う主なソフトウェア
- グラフィックスドライバ (graphics/drm-kmod, graphics/nvidia-drm-kmod)
- X.Org X Window System (x11/xorg)
- GNOME (x11/gnome, x11/gnome-lite) と GDM
- 日本語入力 (fcitx5, mozc, anthy-unicode)
- エディタ・IDE (emacs, mozc-el, yatex, vim, vscode, eclipse)
- GNU の開発用ツール類 (gmake, patch, autoconf, automake, bison, gawk, libtool, ccache, binutils)
- コンパイラ (lang/gcc,既定は GCC 14。ベースシステムのコンパイラは Clang/LLVM)
- ライブラリ類 (readline, openssl, gmp, mpfr, mpc, metis, suitesparse, glpk, gsl, fltk)
- 数値線形代数 (lapack, blas, openblas, cblas, atlas, flexiblas)
- 表示・変換 (freetype2, xpdf, nkf, lv, libgsf, poppler-utils)
- 日本語形態素解析 (chasen-base, ipadic, mecab, mecab-ipadic)
- 全文検索 (namazu2)
- データベースクライアント (mysql84-client, sqlite3)
- グラフィックス・マルチメディア (SDL2, ImageMagick7, GraphicsMagick, jpeg-turbo, png, tiff, ffmpeg, hugin)
- 可視化・画像処理 (cmake, vtk9, opencv)
- 3D・GUI ツールキット (irrlicht, ogre3d, blender, wxgtk32, tcl86/tk86)
- 数値計算処理系 (octave, R)
- Ruby と RubyGems 関連
- リモート接続 (tigervnc, freerdp, remmina)
* FreeBSD のパッケージ (pkg) を使ってのインストール手順については 別ページで説明
* Ubuntu については別ページで説明
pkg の公式リポジトリは既定でポーツ・ツリーの四半期ブランチ (quarterly) から作られている。 一方,ポーツ・ツリーを git で取得すると既定では main ブランチになる。 両者は依存関係のバージョンが異なることがあり,混用すると依存関係の不整合が起きる。 ポーツ・ツリーからビルドする場合は,ポーツ・ツリーと pkg のブランチを揃えるか, ビルドしたパッケージを ports-mgmt/poudriere で自前のリポジトリとして管理する。
前準備
基本設定とシステムの更新
- /etc/rc.conf, /etc/make.conf, /etc/src.conf, /etc/fstab, /etc/sysctl.conf の設定
「FreeBSD 基本設定」の Web ページなどを参考に行う。
- FreeBSD ベースシステムの更新
端末で,次のコマンドを実行する(root 権限が必要)。バイナリリリースを使っている場合の標準的な更新方法である。
freebsd-update fetch freebsd-update install - ポーツ・ツリーの取得と更新
portsnap は FreeBSD 14.0 で削除されたため,現在は git でポーツ・ツリーを取得する。 端末で,次のコマンドを実行する(root 権限が必要)。devel/git が未導入の場合は「pkg install git」で導入しておく。
git clone --depth 1 https://git.FreeBSD.org/ports.git /usr/portspkg の四半期ブランチに合わせる場合は,端末で,次のコマンドを実行する(2026Q3 の部分は使用する四半期ブランチ名に読み替える)。
git clone --depth 1 -b 2026Q3 https://git.FreeBSD.org/ports.git /usr/portsポーツ・ツリーを更新するときは,端末で,次のコマンドを実行する(root 権限が必要)。
git -C /usr/ports pull - ポーツを更新する前に /usr/ports/UPDATING を読む
/usr/ports/UPDATING には,設定ファイルの位置の変更や,非互換な変更に対する手順が記載されている。 更新の前に,前回更新した日付までさかのぼって読む。
less /usr/ports/UPDATING
ポーツを管理するソフトウェア
ports-mgmt/portupgrade は非推奨となっており,将来削除される予定である。現在の選択肢は次の3つである。
- ports-mgmt/portmaster: ベースシステムの機能だけで動作する軽量な更新ツール。1台のマシンで少数のポーツを扱う場合に向く。
- ports-mgmt/synth: 自前のパッケージリポジトリを作るツール。portmaster より並列度が高い。
- ports-mgmt/poudriere: jail 内でクリーンにビルドし,リポジトリを作る公式のツール。複数台への配布や,ビルド環境を汚さない運用に向く。
portmaster を導入する場合は,端末で,次のコマンドを実行する(root 権限が必要)。
cd /usr/ports/ports-mgmt/portmaster
make install clean
導入済みポーツのうち更新があるものを一覧するときは,端末で,次のコマンドを実行する。
pkg version -l "<"
ポーツからのインストールの基本操作
ポーツからインストールするときは,ポート・ディレクトリに移動して make を実行する。 オプションを持つポーツでは,依存するポーツのオプションもまとめて設定するために make config-recursive を先に実行する。 例として devel/gmake を導入する場合は,端末で,次のコマンドを実行する(root 権限が必要)。
cd /usr/ports/devel/gmake
make config-recursive
make install clean
オプション設定をやり直すときは,端末で,次のコマンドを実行する(root 権限が必要)。
cd /usr/ports/devel/gmake
make rmconfig
make config
アンインストールするときは,端末で,次のコマンドを実行する(root 権限が必要)。
cd /usr/ports/devel/gmake
make deinstall
既定バージョンの設定 (/etc/make.conf)
ポーツ・ツリーでは,コンパイラや言語処理系の既定バージョンが Mk/bsd.default-versions.mk で定義されている。 これを変更するときは /etc/make.conf に DEFAULT_VERSIONS を書く。個々のポーツで CC などを直接指定する方法は, ビルド済みライブラリとの ABI 不整合の原因になるため用いない。
◆ /etc/make.conf の設定例
DEFAULT_VERSIONS+= gcc=14 python=3.12 ruby=3.4 java=25 ssl=base
JDK のインストール
Diablo Java の配布は終了している。現在は OpenJDK のポーツを使う。既定の Java バージョンは 25 である。 端末で,次のコマンドを実行する(root 権限が必要)。ビルドには長い時間がかかる。
cd /usr/ports/java/openjdk21
make config-recursive
make install clean
インストール後,Java のバージョンを確認するときは,端末で,次のコマンドを実行する。
java -version
グラフィックスドライバのインストール
X.Org を動かす前に,GPU に対応するカーネルモジュールを導入する。 まず,搭載されている GPU を確認する。端末で,次のコマンドを実行する。
pciconf -lv | grep -B3 display
- Intel, AMD: graphics/drm-kmod を導入する。
- NVIDIA: graphics/nvidia-drm-kmod(または対応世代の x11/nvidia-driver-*)を導入する。
- 仮想マシンや未対応 GPU: UEFI 起動では x11-drivers/xf86-video-scfb,BIOS 起動では x11-drivers/xf86-video-vesa を使う。
Intel または AMD の場合,端末で,次のコマンドを実行する(root 権限が必要)。
cd /usr/ports/graphics/drm-kmod
make install clean
続いて,起動時にモジュールが読み込まれるように設定する。Intel の場合は端末で,次のコマンドを実行する(root 権限が必要)。
sysrc kld_list+=i915kms
AMD の場合は端末で,次のコマンドを実行する(root 権限が必要)。旧世代(HD7000/Tahiti より前)では amdgpu ではなく radeonkms を指定する。
sysrc kld_list+=amdgpu
NVIDIA の場合は端末で,次のコマンドを実行する(root 権限が必要)。
cd /usr/ports/graphics/nvidia-drm-kmod
make install clean
sysrc kld_list+=nvidia-drm
NVIDIA で Wayland や PRIME を使う場合は,/boot/loader.conf に次の行を書き加える。
hw.nvidiadrm.modeset="1"
X.Org のインストール (ポーツ・ツリーを使用)
【関連する外部ページ】 https://docs.freebsd.org/ja/books/handbook/x11/
- X.Org のインストール
端末で,次のコマンドを実行する(root 権限が必要)。ビルドには長い時間がかかる。
cd /usr/ports/x11/xorg make config-recursive make install clean* 最小構成でよい場合は x11/xorg-minimal を使う。ただし,一部のアプリケーションは追加のライブラリを必要とする。
- ユーザを video グループに追加
グラフィカル環境を使うユーザは video グループに属している必要がある。端末で,次のコマンドを実行する(root 権限が必要。username は実際のユーザ名に読み替える)。
pw groupmod video -m username - 動作確認
x11/xinit が導入されていれば,端末で,次のコマンドを実行することで X サーバを起動できる。
startx
現在の X.Org は,GPU も入力デバイスも自動構成される。 自動構成で問題が出た場合にのみ,/usr/local/etc/X11/xorg.conf.d/ の下に,設定項目ごとの小さなファイルを置く。 単一の xorg.conf を作る方法や「Xorg -configure」は,自動構成と競合するため,最後の手段とする。
GNOME のインストール (ポーツ・ツリーを使用)
【関連する外部ページ】 https://docs.freebsd.org/ja/books/handbook/desktop/
- GNOME のインストール
端末で,次のコマンドを実行する(root 権限が必要)。ビルドには非常に長い時間がかかる。
cd /usr/ports/x11/gnome make config-recursive make install clean* 基本構成だけでよい場合は x11/gnome-lite を使う。
- procfs のマウント設定
GNOME は /proc がマウントされていることを必要とする。/etc/fstab に次の行を書き加える。
proc /proc procfs rw 0 0 - D-Bus と GDM の有効化
端末で,次のコマンドを実行する(root 権限が必要)。
sysrc dbus_enable="YES" sysrc gdm_enable="YES" - 再起動して GDM のログイン画面が出ることを確認
端末で,次のコマンドを実行する(root 権限が必要)。
shutdown -r now* ディスプレイマネージャを使わずに起動する場合は,~/.xinitrc に次の1行だけを書き,startx で起動する。
exec gnome-session
X.Org でキーボードとマウスが動作しないときの対処
X サーバの画面は表示されるのに,キーボードもマウスも反応しない状態になることがある。 ここでは,その確認手順を説明する。
- (前準備)仮想端末への切り替え
「CTRLキー」+「ALTキー」+「ファンクションキー F1〜F8」(同時押し)で,テキストの仮想端末に切り替えられる場合がある。
- ログの確認
端末で,次のコマンドを実行し,エラー行 (EE) と警告行 (WW) を確認する。
cat /var/log/Xorg.0.log | grep -E "\(EE\)|\(WW\)"「no screens found」であればグラフィックスドライバの問題であり, 「no input devices」や「AutoAddDevices」に関する行であれば入力デバイスの問題である。
- 入力ドライバの確認
端末で,次のコマンドを実行し,xf86-input-libinput が導入されていることを確認する。
pkg info | grep xf86-input導入されていない場合は,端末で,次のコマンドを実行する(root 権限が必要)。
cd /usr/ports/x11-drivers/xf86-input-libinput make install clean - devd の動作確認
端末で,次のコマンドを実行する(root 権限が必要)。
service devd status停止している場合は,端末で,次のコマンドを実行する(root 権限が必要)。
sysrc devd_enable="YES" service devd start - X セッション内でのデバイス確認
X が起動している状態で端末を開き,次のコマンドを実行すると,X サーバが認識している入力デバイスの一覧が表示される。
xinput - 古い設定ファイルの退避
過去に作成した設定ファイルが自動構成と競合していることがある。端末で,次のコマンドを実行して,設定ファイルの有無を確認する(root 権限が必要)。
ls /usr/local/etc/X11/xorg.conf.d /usr/local/etc/X11/xorg.conf /etc/X11/xorg.confこれらが存在する場合は,別名に変更して退避し,自動構成だけで起動するか試す。
- (オプション)moused を使う場合の設定
libinput ではなく moused 経由でマウスを扱う場合は,X サーバの自動デバイス追加を無効にする。 /usr/local/etc/X11/xorg.conf.d/10-input.conf を作成し,次の内容を書く。
Section "ServerFlags" Option "AutoAddDevices" "false" EndSection Section "InputDevice" Identifier "Mouse0" Driver "mouse" Option "Device" "/dev/sysmouse" EndSectionあわせて,端末で,次のコマンドを実行する(root 権限が必要)。
sysrc moused_enable="YES" service moused start
日本語入力の設定
入力メソッドフレームワークには fcitx5 を,かな漢字変換エンジンには mozc または anthy-unicode を使う。 scim は開発が終了しており,ポーツ・ツリーの scim 関連のポーツも古い。
- fcitx5 と変換エンジンのインストール
端末で,次のコマンドを実行する(root 権限が必要)。
cd /usr/ports/textproc/fcitx5 make install clean cd /usr/ports/textproc/fcitx5-configtool make install clean cd /usr/ports/japanese/mozc-server make install clean cd /usr/ports/japanese/mozc-tool make install clean cd /usr/ports/japanese/fcitx-mozc make install clean* mozc の代わりに anthy を使う場合は,japanese/anthy-unicode と japanese/fcitx5-anthy を導入する。
- 日本語フォントのインストール
端末で,次のコマンドを実行する(root 権限が必要)。
cd /usr/ports/japanese/font-ipaex make install clean cd /usr/ports/japanese/font-vlgothic make install clean - 環境変数の設定
~/.xprofile(GDM からのログイン時にも読み込まれる)または ~/.xinitrc に次の内容を書き加える。
export LANG=ja_JP.UTF-8 export XMODIFIERS=@im=fcitx export GTK_IM_MODULE=fcitx export QT_IM_MODULE=fcitx fcitx5 -d* GNOME で Wayland セッションを使う場合,GTK アプリケーションは環境変数なしで動作するが, X11 アプリケーションのために XMODIFIERS の設定は残しておく。
- 入力メソッドの追加
ログインし直したあと,端末で,次のコマンドを実行し,「Mozc」を入力メソッドの一覧に追加する。
fcitx5-configtool
emacs のインストール (ポーツ・ツリーを使用)
端末で,次のコマンドを実行する(root 権限が必要)。
cd /usr/ports/editors/emacs
make config-recursive
make install clean
cd /usr/ports/japanese/mozc-el
make install clean
cd /usr/ports/print/yatex
make install clean
* tamago (Egg V4) はポーツ・ツリーに残っているが,メンテナンスは活発ではない。emacs 上でのかな漢字変換には mozc-el を使う。
◆ ~/.emacs(または ~/.emacs.d/init.el)の設定例
(set-language-environment "Japanese")
(prefer-coding-system 'utf-8)
(require 'mozc)
(setq default-input-method "japanese-mozc")
開発用ツールとライブラリのインストール (ポーツ・ツリーを使用)
以下は,それぞれのポート・ディレクトリで「make install clean」を実行する。 多数のポーツをまとめて扱う場合は portmaster を使うと,依存関係の更新もあわせて行われる。 portmaster を使う場合は,端末で,次の形式のコマンドを実行する(root 権限が必要)。
portmaster devel/gmake
GNU の開発用ツール類
devel/gmake
devel/patch
devel/autoconf
devel/automake
devel/bison
lang/gawk
devel/libtool
devel/ccache
devel/binutils
devel/git
コンパイラ
FreeBSD のベースシステムのコンパイラは Clang/LLVM である。 GCC が必要な場合は lang/gcc(既定バージョンへのメタポート,現在は GCC 14)を導入する。 特定のバージョンが必要なときは lang/gcc14, lang/gcc15 のようにバージョン付きのポートを指定する。 gfortran は同じポートに含まれる。
lang/gcc
ライブラリ類
devel/readline
security/openssl
math/gmp
math/mpfr
math/mpc
math/metis
math/suitesparse
math/glpk
math/gsl
x11-toolkits/fltk
表示,変換など
print/freetype2
japanese/xpdf
japanese/nkf
misc/lv
devel/libgsf
graphics/poppler-utils
converters/unix2dos
textproc/ispell
japanese/a2ps
日本語形態素解析
japanese/chasen-base
japanese/ipadic
japanese/p5-Text-ChaSen
japanese/mecab
japanese/mecab-ipadic
全文検索,データベースクライアント
japanese/namazu2
databases/mysql84-client
databases/sqlite3
グラフィックス,マルチメディア
devel/sdl20
graphics/ImageMagick7
graphics/GraphicsMagick
graphics/jpeg-turbo
graphics/png
graphics/tiff
multimedia/ffmpeg
graphics/hugin
graphics/scrot
graphics/gwenview
graphics/dia
japanese/tgif
multimedia/mplayer
multimedia/smplayer
* パノラマ画像の合成は,かつて autopano-sift と組み合わせて使われていたが, 現在は特徴点抽出器 (cpfind) が graphics/hugin に同梱されている。
可視化,画像処理,3D
devel/cmake
math/vtk9
graphics/opencv
x11-toolkits/irrlicht
graphics/ogre3d
graphics/blender
x11-toolkits/wxgtk32
lang/tcl86
x11-toolkits/tk86
math/gnuplot
数値計算処理系,オフィス,IDE
math/octave
math/R
editors/libreoffice
editors/vscode
java/eclipse
editors/vim
仮想化,リモート接続,ファイル転送
emulators/qemu
emulators/wine
security/openssh-askpass
ftp/filezilla
net/tigervnc-server
net/tigervnc-viewer
net/freerdp
net/remmina
* rdesktop と tsclient は開発が終了している。RDP クライアントには net/freerdp または net/remmina を使う。
エラーメッセージの末尾に出る失敗した段階(fetch, patch, configure, build, stage のいずれか)を確認し,個別に対応する。 記録を残すには,端末で「script /tmp/build.log」を実行してからビルドを行う。 共有ライブラリのバージョン不整合が原因の場合は,端末で,次のコマンドを実行して依存関係を確認する(root 権限が必要)。
pkg check -Ba
古い共有ライブラリを参照しているポーツを再ビルドするときは,端末で,次のコマンドを実行する(root 権限が必要)。
portmaster -r ライブラリを提供するポート名
Ruby と SQLite 3 関係のインストール (ポーツ・ツリーを使用)
既定の Ruby は 3.4 である。端末で,次のコマンドを実行する(root 権限が必要)。
cd /usr/ports/lang/ruby34
make install clean
cd /usr/ports/devel/ruby-gems
make install clean
SQLite 3 と関連ツールを導入するときは,端末で,次のコマンドを実行する(root 権限が必要)。
cd /usr/ports/databases/sqlite3
make install clean
cd /usr/ports/databases/spatialite
make install clean
cd /usr/ports/databases/sqlitebrowser
make install clean
Ruby のライブラリを導入するときは,端末で,次のコマンドを実行する(root 権限が必要)。
cd /usr/ports/databases/rubygem-sqlite3
make install clean
cd /usr/ports/databases/rubygem-mysql2
make install clean
cd /usr/ports/graphics/rubygem-rmagick
make install clean
cd /usr/ports/x11-toolkits/rubygem-gtk3
make install clean
Ruby on Rails は,ポーツではなく RubyGems で導入する方が,バージョンの選択が容易である。端末で,次のコマンドを実行する(root 権限が必要)。
gem install rails
rails --version
BLAS, LAPACK のインストール (ポーツ・ツリーを使用)
GotoBLAS2 は 2010 年に開発が終了しており,その後継が OpenBLAS である。 ATLAS も含めて,現在はいずれもポーツ・ツリーから導入できるため,ソースコードからビルドする必要はない。
- math/blas, math/lapack: リファレンス実装
- math/cblas: BLAS の C インタフェース
- math/openblas: GotoBLAS2 1.13 を起源とする最適化 BLAS。マルチスレッドに対応
- math/atlas: 環境に合わせて自動チューニングされる BLAS/LAPACK
- math/flexiblas: 実行時に BLAS/LAPACK の実装を切り替えるラッパ
OpenBLAS を導入するときは,端末で,次のコマンドを実行する(root 権限が必要)。
cd /usr/ports/math/openblas
make config
make install clean
リファレンス実装と C インタフェースを導入するときは,端末で,次のコマンドを実行する(root 権限が必要)。
cd /usr/ports/math/lapack
make install clean
cd /usr/ports/math/cblas
make install clean
複数の BLAS 実装を切り替えて使いたい場合は,端末で,次のコマンドを実行する(root 権限が必要)。
cd /usr/ports/math/flexiblas
make install clean
* リンク時は「-lopenblas」または「-lblas -llapack」を指定する。 OpenBLAS のスレッド数は,環境変数 OPENBLAS_NUM_THREADS で制御する。
リンク集
- FreeBSD ハンドブック(日本語): https://docs.freebsd.org/ja/books/handbook/
- ポーツの検索: https://ports.freebsd.org/,https://www.freshports.org/
- ポーツの脆弱性情報: https://vuxml.freebsd.org/
- サポート対象リリースと EOL: https://www.freebsd.org/security/