転載・引用について

ユーザ用ツール

サイト用ツール


サイドバー

Site Contents Index

転載・引用について

RSS

os:freebsd:packages

FreeBSD pkg & ports

FreeBSDでPackageを管理する機構がpkg/portsである。

pkgがBinary Package(Pre-Compiled binary package)で、PortsがSourceからCompileするための一連の仕組みである。

pkgで最新版のports/pkgを利用する

FreeBSDのRelease版では、pkgもしくはports collectionとして、4半期単位で更新されるものを利用することになる。 通常はこれで問題ないのだが、いくつかの事情により、時に最新版を試したい場合がある。

こういう時は、pkgの設定も含め、一度初期化が必要になるので、その時の作業を。

  1. mkdir -p /usr/local/etc/pkg/repos
  2. vi /usr/local/etc/pkg/repos/FreeBSD.conf
    • FreeBSD: {
        url: "pkg+http://pkg.FreeBSD.org/${ABI}/latest",
        mirror_type: "srv",
        signature_type: "fingerprints",
        fingerprints: "/usr/share/keys/pkg",
        enabled: yes
      }
  3. pkg bootstrap -f

これで、Binary Packageはlatestの物になる。

latestは、「開発中」のもの(CVSやSVNでいうHEAD)なので、当然「うまく動かないこともある」ことに注意すること

次に、portsもlatestを入手する

# svnlite checkout https://svn.FreeBSD.org/ports/head /usr/ports
Error validating server certificate for 'https://svn.freebsd.org:443':
 - The certificate is not issued by a trusted authority. Use the
   fingerprint to validate the certificate manually!
Certificate information:
 - Hostname: svn.freebsd.org
 - Valid: from Jun 22 00:00:00 2015 GMT until Jun 22 23:59:59 2016 GMT
 - Issuer: Gandi, Paris, Paris, FR
 - Fingerprint: E9:37:73:80:B5:32:1B:93:92:94:98:17:59:F0:FA:A2:5F:1E:DE:B9
(R)eject, accept (t)emporarily or accept (p)ermanently? p

これで、ports collectionも最新になる。

実際のところportsnapはとても便利なので、portsnapを使いたいのだが、latestはどうやら取得できないようなのでSubversionで。

この場合、ports collectionの更新は

# svnlite update /usr/ports

で行えば良い。

FreeBSDはcvsを捨てたようだが、svnも捨ててMercurialやGitに移行するのだろうか?

pkgのDBがおかしくなった場合

まれに、pkgのDatabaseがおかしくなることがある。

普通はこんなことは起こらないのだが、稼働中のFreeBSD VMのsnapshotからVMを作ったら、どうやらDBがイカれてしまった模様。 というわけで、pkgのDBの初期化に関して、メモ。

  • pkg clean -f
  • rm -rf /var/cache/pkg/*
  • pkg update -f
  • rm /var/db/pkg/repo-*.sqlite
  • pkg bootstrap -f
  • pkg update

これでOK。

portsの管理

Binary Packageを使う習慣が無いので、Portsを直接管理する

  • Portsの初期化
    1. portsnap fetchを実行
    2. portsnap extractを実行
  • Portsの更新
    1. portsnap fetch
    2. portsnap update
  • InstallされているPortsを見たい : pkg info
  • InstallされているPortsを削除 : pkg delete pkgname
  • InstallされているPortsのversionを見て、更新すべきか確認したい : pkg version
  • PortsのInstall
    • 個人的に、Binary Packageを使う気がないので、Portsを展開した後普通にCompileすることにする。
      • Installする: make install
      • 更新する: make reinstall
      • 削除する: make deinstall

make.conf

NetBSDのpkgsrcの場合には、/etc/mk.confで様々な設定を行うことが出来るが、それに相当するportsの機構が/etc/make.confである。ここに、いわゆるOptionを記載していく。

  1. Optionsを全く指定しなかった場合の標準で指定されるOptionsを調べる
    make -V PORT_OPTIONS
  2. そのPortsで定義されている全てのOptionsを調べる
    make -V COMPLETE_OPTIONS_LIST
  3. どうも微妙に美しくない気がするが、取り敢えず、NGiNXに関する設定を記載したmake.confを例として以下に掲載する。
    #
    # FreeBSD ports configuration file.
    #
    
    ### for NGiNX
    . if ${.CURDIR} == "/usr/ports/www/nginx"
    OPTIONS_SET= DOCS EXAMPLES HTTP HTTP_CACHE HTTP_REWRITE HTTP_STATUS IPV6 NLS WWW HTTP_UPSTREAM_FAIR HTTP_UPSTREAM_HASH HTTP_UPSTREAM_STICKY HTTP_ADDITION HTTP_GZIP_STATIC HTTP_GUNZIP_FILTER SPDY HTTP_REALIP HTTP_SSL CACHE_PURGE HTTP_AUTH_DIGEST ICONV
    . endif

portsのInstall

pkgsrcと同様、

  1. InstallしたいportsのDirectoryに移動
  2. make
  3. make install
  4. make clean

でOK。make updateがあるかどうかは未確認。

なお、Portsは、必要に応じて、Optionをncursesで確認に来る。この設定は、make.confに反映されないから、十分な注意が必要。

os/freebsd/packages.txt · 最終更新: 2019/01/20 00:06 (外部編集)