検索
検索
Sakakibara Hiroshi / 榊󠄀原 寛
文書の表示
以前のリビジョン
トレース:
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
= [[FreeBSD]] / LM: [2024-09-05 19:13:19] ~~NOCACHE~~ ====== pkg ====== pkg は,[2021-10-16] の時点で少なくとも基本的なパッケージ管理ツール. インストールされているパッケージ一覧,削除,version 情報,最新かどうか,セキュリティ勧告の出ているパッケージが入っていないかどうか,などができる. ===== pkg info ===== パッケージに関する情報を表示してくれるコマンド * パッケージによりインストールされた shared libraries を表示する<code bash> % pkg info -b ja-FreeWnn-lib</code> * パッケージによりインストールされた全てのファイルを表示する<code bash> % pkg info -l ja-FreeWnn-lib</code> ===== pkg audit ===== セキュリティ勧告が出ていないかを確認するコマンド. * 現在ローカルに保持されている情報を元に,状況を確認する<code bash> % pkg audit</code> * 最新の情報を取得した上で状況を確認する(要 root)<code bash> % sudo pkg audit -F </code> ===== pkg shlib ===== .so のような共有ライブラリが,誰によってインストールされているのか,または,誰によって利用されているのか,を検索するためのコマンド. * hogehoge.so.1.1.1 を提供しているパッケージ名を表示.<code bash> % pkg shlib -P hogehoge.so.1.1.1</code> * hogehoge.so.1.1.1 を利用しているパッケージ名を表示.<code bash> % pkg shlib -R hogehoge.so.1.1.1</code> * -q をつけることで,quiet 出力になる. ===== pkg version ===== インストールされているパッケージのバージョンが最新かどうかを確認する. * インストールされているパッケージのバージョンが最新かどうかを確認する.<code bash> % pkg version</code> ===== pkg delete ===== インストールされているパッケージを削除する * インストールされているパッケージを削除する.<package name> は,pkg version で確認できたパッケージ名から,バージョン番号を取り除いたものや,/usr/ports 以下のフォルダ名と同一.<code bash> % pkg delete <package name> </code> ------------------------------------------------------------ ====== portmaster ====== portmaster は,ports で make && make install とかするのを適当に自動化してくれるコマンド. 昔は portupgrade というのがあったが,今は使われなくなっていると思われる.[2021-10-16] ===== 新規 ports インストール ===== * 新規に emacs をインストールする場合.<code bash> % sudo portmaster -D editors/emacs </code> * -D:毎度毎度 distfiles を消しますか,の質問がなくなる. * /usr/ports からの相対フォルダ名を指定する. ===== 複数存在するバージョンの ports を,指定した方にする ===== 例えば,lang/php72 と lang/php74 のように,複数 ports が存在していて,72 から 74 に明示的にアップグレードしたい場合. <code bash> % sudo portmaster -D -o lang/php74 lang/php72 </code> * -o:新しくインストールしたい ports 名を指定する (php や perl のように,影響範囲が広い ports の場合,php74 で始まる ports を全て再インストールしたり, pkg shlib と組み合わせて再インストールするケースがある.) ==== 例)(OLD) emacs のバージョンを下げる ==== * /usr/ports/UPDATING を見る。<code> # portmaster -o editors/emacs23 editors/emacs or # env DISABLE_CONFLICTS=1 portupgrade -fo editors/emacs23 editors/emacs or # pkg set -o editors/emacs:editors/emacs23</code> * これをやった後、関連 elisp も再インストールする。apel あたりからはじめておくと関連する elisp をある程度再帰的にダウングレードしてくれる。<code> # portupgrade -rf editors/apel # portupgrade -rf editors/tamago</code> ------------------------------------------------------------ ====== linux emulation [2023-09-07] ====== ===== 概要 ===== FreeBSD の linux emulation は,Linux バイナリのシステムコールの番号や引数の差異を(カーネル内で?)変換し,FreeBSD バイナリとして実行する,というのが基本の機能. emulation で動作させる際に,Linux バイナリな libc.so などが必要になる.これらのバイナリは /usr/lib/ などに入れるわけにはいかないので,/compat/ 以下に設置される.LD_LIBRARY_PATH を書き換えまくるのも大変なので,chroot/jail を使うケースが多い.LD_LIBRARY_PATH の書き換えでも動作しているようにも見える. ユーザランドとしては,CentOS ベースと,Debian/Ubuntu ベースのものが両方ある模様.CentOS の方が昔からあるらしく,検索すると多く記述が出てくるが,Debian/Ubuntu ベースの方が最近は活発?なのか,今回は最終的に Ubuntu ベースで準備をした. ===== 設定 ===== 以下を行なうことで,linux emulation 環境がインストールされる. * /etc/rc.conf に ubuntu_enable="YES". * # service ubuntu start * kldstat にて,以下のカーネルモジュールがロードされているか確認.かっこ内は,確認しきれてないが linux emulation 設定後に増えているので怪しい module たち. * linux_common.ko * linux64.ko * linux.ko * fdfescfs.ko * linprocfs.ko * linsysfs.ko * (netlink.ko) * (pty.ko) * (nullfs.ko) * sysctl -a で出てくる compat.linux.emul_path に /compat/ubuntu が設定されているか確認. * ports/pkg にて sysutils/debootstrap をインストールする * debootstrap --arch=amd64 --no-check-gpg jammy /compat/ubuntu * かなり時間がかかる. * service ubuntu restart / onestop/onestart ==== 使い方 ==== === chroot して,linux 環境そのものに入る === <code> # chroot /compat/ubuntu /bin/bash </code> === linux binary を FreeBSD において実行できるようにする === OS 側(?)に,当該バイナリが Linux バイナリであることを宣言する為の操作.これを実行しないと,ELF 番号がおかしいよ,というエラーが出てしまう. <code> % brandelf -t Linux <linux binary> </code> ==== 参考 ==== * https://www.zenarmor.com/docs/freebsd-tutorials/how-to-configure-linux-binary-compatibility-on-freebsd * https://github.com/FlareSolverr/FlareSolverr/wiki/Installing-FlareSolverr-in-FreeBSD,-FreeNAS-or-TrueNAS-jail ------------------------------------------------------------ ====== svn での ports tree の管理方法 [2021-10-16] ====== SVN ベースでの ports tree を最新にする方法.ただし,今後は git になると思われる.[2021-10-16] * 初回 <code bash> % portsnap fetch extract update </code> * 二回目 or /usr/ports に情報がある状態 以降 <code bash> % portsnap fetch update </code> ------------------------------------------------------------ ====== git での src tree の管理方法 [2022-09-26] ====== ===== 新規の場合 [2024-09-05] [2022-11-04] ===== まず,git レポジトリを全てとってくる. <code bash> sudo git clone -o freebsd https://git.FreeBSD.org/src.git /usr/src </code> ===== stable/14 ===== stable/14 にしたい場合. <code bash> sudo git checkout stable/14 </code> ===== アップデート [2022-11-04] ===== <code bash> sudo git pull </code> ====== svn での src tree の管理方法 [2021-10-16] [2014-11-25] ====== 古くは cvsup だったが,もう存在しないので svn のみ. (2021 年ごろ,git に移行したはずだけど,[2021-10-16]時点で追って追ってない) * 参照先 url * https://www.freebsd.org/doc/handbook/synching.html * 以下のコマンド <code bash> % svn checkout https://svn.FreeBSD.org/base/stable/9 /usr/src </code> * mirror サイトは,以下を参照. * https://www.freebsd.org/doc/handbook/svn.html#svn-mirrors * stable/9, stable/10, release/9.3.0, release/10 などを選択 * release 番号は http://svnweb.freebsd.org/base/release/ を参照 * base/ports/doc を選択可能. * svn checkout https://svn0.us-west.FreeBSD.org/ports/head /usr/ports * 一度,checkout したら後は update すれば OK. ------------------------------------------------------------ ====== その他設定 ====== ===== ユーザ情報の移行 [2022-09-26] ===== - 元ネタ:http://www.lifewithunix.jp/notes/2015/09/21/freebsd-10-2-how-to-move-all-accounts-to-new-system/ <code bash> /usr/sbin/pwd_mkdb -p /etc/master.passwd </code> - /etc/group は移行されないので,別途手動でコピーする必要あり. ===== FreeWnn の設定 ===== * ports でインストール。 * /etc/rc.conf に以下の設定。 <code> wnn_enable="YES" wnn_flags="-a 0.0.0.0" </code> * 2行目を書いておくことで、ホスト外から接続できるようになる。 * 上記設定は,グローバルにアクセス可能になってしまうので,やめた方が良いかと思われる.[2021-10-16] ===== cpu 温度を知る ===== <code> # kldload coretemp # sysctl -a | grep temperature or # sysctl dev.cpu | grep temperature </code> * 別途, ipmi という機構もあるみたいだが,これはサーバマシン向け. ===== geom 使ってファイルシステム回りを便利に. ===== * http://www.seichan.org/wiki/index.php?FreeBSD-GEOM ===== ssh で X を飛ばす ===== * サーバー側では,xauth が必要. * クライアントでは,ssh -XY. ===== 一つのプロセスで利用できる最大メモリ容量を増やす ===== /boot/loader.conf に以下の記述 <code> kern.maxdsiz="2G" </code> 値の部分は適宜変更のこと. ===== ホストの名前 ===== * hostname コマンドで,完全名 (hoge.ht.sfc.keio.ac.jp) を指定. * /etc/hosts には,hoge のみを記述. * hosts に書きたければ, <code> 133.27.xxx.xxx hoge.ht.sfc.keio.ac.jp </code> * のように,固定 IP と完全名をマッピングさせる. * こうすることで,gethostname() あたりを使ったプログラミングが楽になる. ===== dummynet 設定 ===== ==== sysctl の値 ==== <code> net.link.ether.bridge.config: em0:1,dc0:1, net.link.ether.bridge_cfg: em0:1,dc0:1, net.inet.ip.forwarding: 1 </code> ==== リンク ==== http://ino-www.jaist.ac.jp/members/isogaki/fbsd-dummynet.html ===== コマンド ===== ==== ゾンビプロセスの殺し方 [2023-09-07] ==== 取り急ぎ:https://xn--v1tz8a.jp/2013/02/12/freebsd%E3%81%A7%E3%82%BE%E3%83%B3%E3%83%93%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E3%82%92%E6%AE%BA%E3%81%99/ ==== プロセスごとに利用している port 番号を把握する ==== <code> % sockstat </code> ==== package を使って,バイナリインストールしまくる ==== * ダウンロード先のサーバを指定してから,pkg_add コマンドでインストール. <code> % export PACKAGESITE=ftp2.jp.freebsd.org # pkg_add -r nkf </code> * package を探したいときは,pkg_search をインストールしてから,探す. <code> # pkg_search nkf </code> ==== iso マウント方法 ==== * mount <code> $ mdconfig -a -t vnode -f image.iso -u 0 $ mount -t cd9660 -o ro /dev/md0 /mount_point </code> * umount <code> $ umount /mount_point $ mdconfig -d -u 0 </code> ==== tar でファイルコピーの方法 ==== <code> % tar cvf - hoge | (cd /tmp/backup ; tar xvf -) </code> ==== portupgrade で、メジャーバージョンアップ ==== <code> # portupgrade -o www/apache22 apache </code> * (apache2.0 -> apache2.2の例) ==== ports でセキュリティチェックを外して、とにかくインストールさせたい ==== <code> DISABLE_VULNERABILITIES=yes </code> をMakefileに書いておく。 ==== tunefs ==== * soft update を有効にする <code> # tunefs -n enable /dev/ad0 </code> * soft update を無効にする <code> # tunefs -n disable /dev/ad0 </code> ------------------------------------------------------------ ====== OLD(かなり古いメモ) ====== ===== python の取扱 (2012/11時点) ===== * python 2.x / 3.x の ports が二つともある. * 間違えて 3.x がデフォルトになっている場合,/etc/make.conf に以下を記述しておくと良いらしい. <code> PYTHON_VERSION=2.7 PYTHON_DEFAULT_VERSION=2.7 </code> * これが無視されてしまう場合は,/usr/local/bin/python を書き換える. * /usr/local/bin/python は,/usr/local/bin/python3.1 or python2.7 への hard link なので,削除して ln コマンドでリンクを作ってやればOK. ===== java ===== ==== java が以下のエラーで落ちる (keytool, jarsigner も同様) ==== <code> % java -version Error occurred during initialization of VM Could not reserve enough space for object heap Could not create the Java virtual machine. </code> * 原因は,どうも jvm をサーバーモードで立ち上げる際,大量のメモリを確保しようとして,メモリが足りなくなる?ことらしい.(mmapの実装上の問題,実メモリが 4GB あること,などなど原因らしきものは出てきたけど,いまいち不明.) * よって,クライアントモードで動かしてあげると動作するかも. <code> % java -client -version java version "1.6.0_17" Java(TM) SE Runtime Environment (build 1.6.0_17-b04) Java HotSpot(TM) Client VM (build 14.3-b01, mixed mode) </code> ==== jdk6 で jdk5 用のクラスファイルを生成したい。 ==== <code> % javac -target 1.5 *.java </code> ---- このページへのアクセス 今日: {{counter|today}} / 昨日: {{counter|yesterday}} 総計: {{counter|total}}
freebsd.txt
· 最終更新: 2024/09/09 13:41 by
skk
文書の先頭へ