Notebook

これは日々の作業を通して学んだことや毎日の生活で気づいたことをを記録しておく備忘録である。

HTML ファイル生成日時: 2024/12/21 11:44:57.596 (台灣標準時)

Ports Collection におけるコンパイル時のオプションの指定方法

FreeBSD の Ports Collection を使ってアプリケーションをコンパイルし、イ ンストールする際、デフォルトの設定のままだと、 make install を実行する と、コンパイル時のオプションが設定可能なアプリケーションの場合、以下の ような画面になり、オプションを設定することができるようになっているでご ざる。

fig_202205/freebsd_make_config.png

これは、一見便利なように思えるのでござるが、煩わしくもあるでござる。と あるアプリケーションをコンパイルし、インストールしようとするとき、多く の場合、依存関係を遡って複数のアプリケーションやライブラリーがインストー ルされるでござる。その際、依存しているアプリケーションやライブラリーが コンパイル時のオプション選択可能なようになっていると、そのたびに上のよ うな画面になり、コンパイルが中断するのでござる。オプションの選択を待ち 続けるので、ずっと状況を確認し続けないといけないでござる。

これを回避し、デフォルト設定のオプションで一気にコンパイルさせ、インス トールするには、 /etc/make.conf に以下の記述を追加すればよいようでござ る。


BATCH=YES

こうすれば、 make install をしたときに、オプション選択の画面が出ること なく、コンパイルが行われるでござる。

では、コンパイル時にどんなオプションがあるのか確認したり、オプションを 選択したりするにはどうすればよいのでござろうか。

コンパイル時に指定可能なオプションの一覧を表示させるには、以下のように すればよいようでござる。以下は、 editors/emacs で指定可能なオプション の一覧の表示でござる。


# cd /usr/ports/editors/emacs
# make showconfig
===> The following configuration options are available for emacs-28.1_1,3:
     ACL=on: Access control list support
     DBUS=on: D-Bus IPC system support
     FCITXPATCH=off: Patch to pass C-Space to Fcitx input method
     GCONF=off: GConf configuration backend support
     GNUTLS=on: SSL/TLS support via GnuTLS
     GSETTINGS=on: GSettings API for application settings
     HARFBUZZ=on: HarfBuzz for text shaping
     JSON=on: JSON file/format/parser support
     LCMS2=on: Little CMS 2.x support
     M17N=on: M17N support for text-shaping [implies XFT]
     MAILUTILS=on: Mail framework via GNU Mailutils
     MODULES=on: Dynamic modules support
     NATIVECOMP=off: Emacs Lisp native compiler support (experimental)
     OTF=on: Opentype fonts [implies XFT]
     SCROLLBARS=on: Toolkit scroll-bars
     SOURCES=on: Install sources
     THREADS=on: Threading support
     XFT=on: Xft font library support
     XIM=on: X Input Method
     XML=on: XML format or parser support
     XWIDGETS=off: Experimental GTK widgets [implies GTK3]
====> Graphics support
     CAIRO=on: Cairo graphics library support [implies PNG, XFT]
     GIF=on: GIF image format support
     JPEG=on: JPEG image format support
     MAGICK=off: ImageMagick image processing support (deprecated)
     PNG=on: PNG image format support
     SVG=on: Scalable vector graphics support [implies PNG]
     TIFF=on: TIFF image format support
     XPM=on: XPM pixmap image format support
====> File notification support: you can only select none or one of them
     GFILE=off: File notification via gfile
     KQUEUE=on: File notification via kqueue
====> Sound (audio) support: you can only select none or one of them
     ALSA=off: ALSA audio architecture support
     OSS=on: Open Sound System support
====> X11 toolkit: you can only select none or one of them
     GTK2=off: GTK+ 2 GUI toolkit support
     GTK3=on: GTK+ 3 GUI toolkit support
     MOTIF=off: Motif widget library support
     XAW=off: Athena widgets
     XAW3D=off: Athena3D widgets
===> Use 'make config' to modify these settings

オプションの指定には、以下のようにすればよいようでござる。 make config を実行すると、例のオプション選択の画面が出てくるようになっているようで ござる。


# make config

依存しているライブラリーやアプリケーションすべてについて、選択可能なオ プションを表示させるには、以下のようにすればよいようでござる。ただし、 膨大な量の情報が表示されるので、実際にこれを実行する意味はなさそうでご ざる。


# make showconfig-recursive

インストールしようとしているアプリケーション、及びそれが依存しているラ イブラリーやアプリケーションのすべてについて、オプションの選択を行うに は、以下のようにすればよいようでござる。


# make config-recursive

Ports Collection についてのことを調べるには、 FreeBSD Handbook を読め ばよいのかと思っていたのでござるが、 FreeBSD Handbook は 900 ページ以 上の分量があるにも関わらず、あまり詳しい記述はないようでござる。より詳 しいことは、以下のようにすれば必要な情報が得られるようでござる。


# man ports

fig_202205/freebsd_man_ports.png


Frequently accessed files

  1. Computer___Python/20220518_0.html
  2. Computer___Network/20230726_00.html
  3. Misc___Taiwan/20240207_00.html
  4. Computer___Network/20230516_00.html
  5. Computer___FreeBSD/20220621_0.html
  6. Computer___Python/20220715_0.html
  7. Computer___Network/20230508_00.html
  8. Food___Taiwan/20220429_0.html
  9. Computer___Network/20240130_00.html
  10. Computer___NetBSD/20220817_3.html
  11. Computer___Python/20220410_0.html
  12. Computer___Network/20240416_00.html
  13. Computer___NetBSD/20230119_00.html
  14. Computer___Debian/20210223_1.html
  15. Computer___Python/20221013_0.html
  16. Computer___Python/20210124_0.html
  17. Computer___NetBSD/20220428_0.html
  18. Computer___NetBSD/20220818_1.html
  19. Computer___NetBSD/20240101_02.html
  20. Science___Math/20220420_0.html
  21. Computer___Python/20240101_00.html
  22. Computer___NetBSD/20220808_0.html
  23. Computer___TeX/20230503_00.html
  24. Science___Astronomy/20220503_0.html
  25. Computer___NetBSD/20230515_00.html
  26. Computer___Network/20220413_1.html
  27. Computer___NetBSD/20210127_0.html
  28. Computer___TeX/20231107_00.html
  29. Computer___Python/20220816_1.html
  30. Computer___Python/20230717_01.html


HTML file generated by Kinoshita Daisuke.