FreeBSD update memo 2024
/usr/src、/usr/ports が git で管理されるようになった。
これに伴って、portsnap は、/usr/sbin から ports の ports-mgmt/portsnap に移動。すでに廃止も決まっているようだ。
今後は次の手順でアップデートしようと思う。
まず、/etc/rc.conf.local を移動して、機能を止めるため再起動する。
# mv /etc/rc.conf.local /etc/rc.conf.local.TMP # shutdonw -r now
FreeBSD のシステムを freebsd-update でアップデートする。
# freebsd-update fetch # freebsd-update install
/usr/src をアップデートする。
# cd /usr/src # git pull
/usr/ports をアップデートする。
# cd /usr/ports # git pull
pkgChecker.sh で、ports_list.txt の内容を確認する。
# cd /root/settings/freebsdPostInstall # ./pkgChecker.sh ports_list.txt
ports_list.txt に問題がないことを確認出来たら、すべての pkg を削除して、再度インストールする。
# pkg delete -afy # pkg # ./pkgInstaller.sh ports_list.txt
/etc/rc.conf.local を戻して、再起動する。
# mv /etc/rc.conf.local.TMP /etc/rc.conf.local # shutdown -r now
/usr/src /usr/ports
/usr/src、/usr/ports が git で管理されるようになったことに伴い、最初から git clone を使ったほうが良い。インストーラで、これらをインストールせずに、最初に以下のコマンドでインストールする。
# git clone -b releng/14.1 https://git.freebsd.org/src.git /usr/src # git clone https://git.freebsd.org/ports.git /usr/ports
とはいえ、/usr/ports はインストール時に入っていてほしいので、インストーラから入れて、いったんドット・ファイルも含めてすべてを削除して、git で入れなおすことになると思う。
Rreporting the pool usage on ZFS
ZFSのファイル使用量を見る方法。
% zfs list -o space
VMware Shared Folder on FreeBSD Guest
VMware の共有フォルダは、以前はFreeBSD のカーネルをパニックさせるので使ってなかったが、最近は問題なく利用できるようだ。
legacyos.ichmy.0t0.jp
www.isapon.com
などを参考にした。
emulators/open-vm-tools が導入され、起動されているのを前提として、/boot/loader.conf に
fusefs_load="YES"
を記述しておく。(2024年10月4日修正、fuse_load="YES" -> fusefs_load="YES")
マウント先のディレクトリとして
# mkdir /mnt/hgfs
を作成。
その上で、/etc/fstab に、以下を記述しておく。
.host:/ /mnt/hgfs vmhgfs-fuse rw,mountprog=/usr/local/bin/vmhgfs-fuse,allow_other,uid=1000,gid=1000,failok 0 0
これで、起動時に自動的にマウントされるはずだが、残念ながら自動的にはマウントされなかった。
# mount /mnt/hgfs
で問題なくマウントされるので、とりあえずこれで使ってみる。
% df -h Filesystem Size Used Avail Capacity Mounted on rpool/ROOT/default 39G 375M 38G 1% / devfs 1.0K 1.0K 0B 100% /dev procfs 4.0K 4.0K 0B 100% /proc hpool/home 38G 4.7G 34G 12% /home rpool/var 56G 18G 38G 31% /var rpool/usr 59G 20G 38G 35% /usr rpool/tmp 38G 168K 38G 0% /tmp rpool/var/log 38G 592K 38G 0% /var/log rpool/var/mail 38G 120K 38G 0% /var/mail rpool/var/crash 38G 96K 38G 0% /var/crash rpool/var/tmp 38G 96K 38G 0% /var/tmp rpool/usr/ports 39G 946M 38G 2% /usr/ports rpool/usr/src 39G 736M 38G 2% /usr/src df: File system /mnt/hgfs does not have a block size, assuming 512. /dev/fuse 238G 160G 78G 67% /mnt/hgfs
ちょっと怖いので、使うときだけマウントする。
必要があれば WinSCP を使うし、数個のファイルならば Tera Term の SSH SCP も結構便利なので、特にファイル共有の必要性を感じていなかった。いつか必要になるかもしれないので、使えるようにしておいたほうがいいだろうと思う。
Build PDFBox in Ubuntu
前の記事の通り、FreeBSD で PDFBox をビルドできたので、Ubuntu でもやってみるかぁ、という感じで試してみたが、失敗。Java 8, Maven 3.6.3, Java Cryptography Extension も入ってる(ここ参照)ということで、何故失敗するのかわからず、とりあえず寝た。
朝起きて、エラーメッセージをGoogle先生に投入して、次の記事を発見した。
qiita.com
全く同じ問題でした。書いてくださって、本当にありがとうございます。
$ JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 mvn clean install
$JAVA_HOME が定義されていないことが問題なので、一時的に定義すればビルドできた。
FreeBSD では、$JAVA_HOME は定義してないままビルドできたので、なにか違いがあるのだろう。
Apache PDFBox
Poppler の pdftotext は、「内容のコピーと抽出」という項目が許可しないになっていても、問題なくテキストを抽出してくれるので便利であったが、いくつかのPDFで厳密にテキストを抽出していないことに気がついた。問題の所在がはっきりしないのだが、ほとんどのPDFで厳密にテキストを抽出してくれている。しかし、一部のテキストしか抽出していない場合もあるようだ。そのようなPDFの特徴を特定できていない。
PDFBox は Poppler が失敗するPDFであっても、テキストを抽出しているようにみえるので、こちらを利用したい。しかしながら、PDFBox は「内容のコピーと抽出」という項目が許可しないになっていると、抽出してくれない。それでは困るので、「内容のコピーと抽出」という項目が許可しないの場合でも抽出してくれるように、修正する。
PDFBox はJavaで書かれており、ビルドには Java Cryptography Extension (JCE) と Maven 3 が必要とある。FreeBSD の pkg で、devel/maven と java/cryptix-jce を入れておく。devel/maven3 は 3.0.5、devel/maven33 は 3.3.9、devel/maven は 3.8.4。PDFBox のコンパイルには、3.1.0 以上が必要で、3.0.5 ではダメだった。
Tag を 2.0.25 にして pdfbox-2.0.25 のソースを github からもらってくる。修正するファイルは以下の通り。チェックをするところだけコメントアウト。
./pdfbox-2.0.25/tools/src/main/java/org/apache/pdfbox/tools/ExtractText.java
AccessPermission ap = document.getCurrentAccessPermission(); // if( ! ap.canExtractContent() ) // { // throw new IOException( "You do not have permission to extract text" ); // }
最新のものだと、チェックするif文のブロックの中身が少し違うが、if( ! ap.canExtractContent() ) の場所を探せば問題ないだろう。
% mvn clean install
とすると、pdfbox-app-2.0.25.jar をビルドしてくれる。
使い方は、
% java -jar pdfbox-app-2.0.25.jar ExtractText input.pdf output.txt
のように使う。
Ubuntu 20.04 install memo
UbuntuをVMwareにインストールする手順をメモする。
方針
Desktop版をインストールするが、TeraTermを用いてsshでログインして利用することを前提にする。FreeBSDと同等の利用が可能な環境を、なるべくシンプルな方法で構築する。インストール後、
をした後、シェルスクリプトで必要なソフトウェアを一気にインストールする。
インストール
解像度が低くインストーラの操作ができない場合は、Alt+F7 を押しながらマウス操作で移動できる。
https://masaoo.blogspot.com/2021/07/ubuntu-2004-800x600.html?view=flipcard
インストールは指示通りに行う。「通常のインストール」を選択、「Ubuntuのインストール中にアップデートをダウンロードする」にチェックを入れ、「グラフィックスと...」にはチェックを入れない。「インストールの種類」では「ディスクを削除してUbuntuをインストール」を選択。ユーザーは通常通りの入力で、「ログイン時にパスワードを要求する」を選択する。
インストールが終わったら、オンラインアカウントのログインをスキップして、その後「次へ」を選び続けて終了する。その後、不完全な言語サポートの通知に関してインストールし、システムのアップデートを行う。
最低限の設定
端末を開き、
1. ディレクトリ名の英語への修正、(ターミナルからコマンド、GUI操作有)
$ LANG=C xdg-user-dirs-gtk-update
を実行すると、ウィンドウが現れる。Don't ask me this again にチェックして、Update Names を実行する。
2. openssh-server のインストール
$ sudo apt-get -y install openssh-server
とりあえず、設定は後回し。
3. 固定IPアドレスの設定
[設定]->[ネットワーク] からIPアドレス、デフォルトルート、DNSを設定。
を済ませて、再起動
最初のログイン
/etc/ssh/sshd_conf の設定をしなかった場合、TeraTerm 等の端末エミュレータからのログインは、プレインパスワードを用いることに注意する。下記の設定をして、チャレンジレスポンス認証を有効にする。
dotFiles
dotFiles (https://github.com/masakeida/dotFiles) から、.bash_aliases と .inputrc を $HOME にコピー。
$HOME
$HOME/bin
$HOME/public_html
$HOME/.local/bin
を作成する。$PATH は、.profile の記述により自動的に入る。
root パスワード設定
$ sudo passwd root
/etc/ssh/sshd_config 修正
$ diff /etc/ssh/sshd_config.ORG /etc/ssh/sshd_config 34c34 < #PermitRootLogin prohibit-password --- > PermitRootLogin no 58c58 < #PasswordAuthentication yes --- > PasswordAuthentication no 63c63 < ChallengeResponseAuthentication no --- > ChallengeResponseAuthentication yes
sshd を再起動する。
$ sudo systemctl restart ssh
ubuntuPostInstall
root になって ubuntuPostInstall.sh を実行する。このスクリプトが実行することは基本的に2つ。
- pkg_list.txt に記載されたパッケージをインストールする。
- server_list.txt に記載されたサービスを disable する。
必要なパッケージを apt-get でインストールする。nis についてのみ、nisdomain 名を尋ねられ、その後「nis (3.17.1-3build1) を設定しています ...」でかなりの時間固まる。動き出すまで待つこと。それ以外は問題なくインストールできる。サーバースイートについては、インストールのみとし、すぐには使わないので disable する。現状、disable するものは以下の通り。
samba (smbd, nmbd)
apache2 (apache2)
nginx (nginx)
mysql (mysql)
unbound (unbound)
nfs (nfs-kernel-server)
nis (nis, rpcbind)
rpcbind を最後に disable するのがいいと思う。
pkg_list.txt に記載したもので必要ないものもありそう。php に依存して apache2 がインストールされるようだ。また、open-vm-tools-desktop は自動的に入っているようだ。
ここで再起動する。
感想
意外とシンプルな方法で、利用できる環境構築ができた。運用としては、
# apt-get -y update # apt-get -y upgrade # apt-get -y dist-upgrade
を繰り返して、LTSが出たら新規インストールをする、ということでやっていくのが楽なのではないかと思う。
Poppler
前回、xpdfのPermission Errorについて書いたが、xpdfはメンテナンスされておらず、後継のPopplerがあることを知った。
poppler.freedesktop.org
Popplerのpdftotextは、「内容のコピーと抽出」という項目が許可しないになっていても、問題なくテキストを抽出するので、前回書いたような修正は必要がないことがわかった。