2022/04/30(土)ubuntu 22.04 インストール (6)

ローカルにwebサーバが立ってると何かと便利なので、apacheを入れます。素のapacheと違ってhttpd.confが細分化されていて、debianの作法に従って設定する必要があって知らないと難しいです。
sudo apt install apache2
いくつかのモジュールを有効化します。
sudo a2enmod userdir
sudo a2enmod include
sudo a2enmod cgid
sudo systemctl restart apache2
これらは、実際には/etc/apache2/mods-availableにあるファイルから/etc/apache2/mods-enabledへリンクを張っていて、mods-enabled以下のファイルが設定に読み込まれるという仕組みです。

次に、自分のよく使う設定をしていきます。public_htmlの有効化とcgiの有効化です。デフォルトで使われている設定ファイルは/etc/apache2/sites-available/000-default.confですが、これをを適当な名前 (custom.confとした) でコピーして設定することにします。
<IfModule mod_userdir.c>
        UserDir public_html
        UserDir disabled root
        <Directory /home/*/public_html>
               (ここは各自違うと思う)
        </Directory>
</IfModule>

<IfModule mod_mime.c>
AddHandler cgi-script .cgi
</IfModule>
を(<VirtualHost *:80> </VirtualHost>の中に)加えます。

public_html以下の設定は、ユーザを最大限信用するなら、例えば、
                AllowOverride All
                Options All
                Order allow,deny
                Allow from all
のような感じでしょうか。
sudo a2dissite 000-default
sudo a2ensite custom
sudo systemctl restart apache2
で、000-defaultを無効化し、customを有効化します。

20.04まではこれで良かったのですが、22.04ではこれだけではpublic_htmlが見えません。どうやら22.04から、各userのhome directoryのpermissionのdefaultが755から750に変わったようです。
sudo chmod 755 /home/kashi
としたら見えるようになりました。

さらに、自分の好みで、public_html以下に置いたcgiはそのディレクトリのユーザの権限で動くようにする、suexecを設定します。
sudo apt install apache2-suexec-custom
/etc/apache2/suexec/www-data の2行目を、public_html/cgi-bin → public_html に。
sudo a2enmod suexec
sudo systemctl restart apache2
次にphpの設定。8.1になりました。
sudo apt install php
sudo apt install libapache2-mod-php
/etc/apache2/mods-available/php8.1.conf で、php_admin_value engine Off をコメントアウト
  (ユーザのpublic_html以下でphpを使えるようにする。)
sudo systemctl restart apache2
動作確認は、ホームに public_html/phpinfo.php を
<?php
  phpinfo();
?>
の内容で作成してブラウザでアクセスしてみると分かるでしょう。

最後に、logrotateの設定を。/var/log/apache2 以下のlogが、デフォルトだと14日しか保存されないので直します。/etc/logrotate.d/apache2 の中の、
daily
rotate 14
という行を、
monthly
rotate 120
とし、10年間はもつようにしました。

2022/04/30(土)ubuntu 22.04 インストール (5)

プログラミングに必要なツールをいろいろ入れます。

C++

sudo apt install build-essential
これで、gccなど通常のbuild作業に必要なものが入ります。gccは11.2.0でした。
sudo apt install clang
clangは14.0.0が入りました。
sudo apt install libboost-all-dev
boostはやっぱり要る。1.74が入りました。

clang++に関する追記(2024/2/6)

nvidiaのdriverを入れたとき、gcc-12がドライバーのコンパイルのためにインストールされることがありますが、この場合上のようにして入れたclang++がヘッダーやライブラリーを見つけられず動かなくなってしまいます。clang++ --verboseを実行すると、通常なら
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/11
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/11
と表示されますが、gcc-12が入っていると、
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/11
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/12
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/12
と表示されます。このとき、clang++はg++-12がインストールされているとみなし、g++-12のヘッダーやライブラリを使おうとしますが、それは入っていないのでエラーになるというわけです。gcc-12のみが入っていて、g++-12が入っていない状態がこれを引き起こしています。
sudo apt install libstdc++12-dev
とg++-12のライブラリをインストールするか、いっそ
sudo apt install g++-12
を入れてしまえば、ちゃんとclang++が使えるようになります。

Java

sudo apt install default-jdk
sudo apt install icedtea-netx
openjdkの11が入りました。後者はJava Web Start用。

lua

sudo apt install lua5.4
sudo apt install liblua5.4-dev
sudo apt install luajit

fortran

sudo apt install gfortran

python

この時点でpython2は入っておらず、python3は既に入ってしました。単にpythonと打つとcommand not foundでした。2はサポート終了ということで、python3のみ環境を整えます。
sudo apt install python3
sudo apt install python3-dev
sudo apt install python3-numpy
sudo apt install python3-scipy
sudo apt install python3-matplotlib
sudo apt install python3-sympy
sudo apt install python3-mpmath
sudo apt install python3-numba
sudo apt install ipython3
また、
sudo apt install python-is-python3
とすると、単にpythonと打ってpython3が起動できるようになります。

octave

sudo apt install octave
sudo apt install liboctave-dev
6.4.0が入りました。普通に起動するとCUIで、--guiを付けるとGUI版が起動するようになった模様。liboctave-devはIntlabを使うときに必要になります。

gmp,mpfr

sudo apt install libgmp-dev
sudo apt install libmpfr-dev
それぞれ6.2.1と4.1.0が入りました。

-m32で32bit binaryを作れるように

sudo apt install gcc-multilib
sudo apt install g++-multilib

Julia

sudo apt install julia
20.04では1.4.1が入りましたが、22.04ではパッケージか消えていました。仕方ないので、本家サイトからbinary packageを落として入れることにします。https://julialang.org/downloads/の、Generic Linux on x86の64bit(glibc)を使います。
wget https://julialang-s3.julialang.org/bin/linux/x64/1.7/julia-1.7.2-linux-x86_64.tar.gz
cd /usr/local
sudo tar xfz (ダウンロードした場所)/julia-1.7.2-linux-x86_64.tar.gz
cd /usr/local/bin
sudo ln -s /usr/local/julia-1.7.2/bin/julia .
のように、/usr/local/binにリンクを張りました。

nim

nimも最近お気に入りの言語で、20.04では1.0.6が入ったのに、22.04ではパッケージから消えていました。こちらも本家からbinary packageを入れます。https://nim-lang.org/install_unix.htmlの、Generic Linux on x86の64bit(glibc)を使います。
wget https://nim-lang.org/download/nim-1.6.4-linux_x64.tar.xz
cd /usr/local
sudo tar xfJ (ダウンロードした場所)/nim-1.6.4-linux_x64.tar.xz
cd /usr/local/bin
sudo ln -s /usr/local/nim-1.6.4/bin/* .
のように、/usr/local/binにリンクを張りました。

2022/04/30(土)ubuntu 22.04 インストール (4)

vi大好きなのでvimを入れます。
sudo apt install vim
また、~/.vimrcを、
set encoding=utf-8
set fileencodings=iso-2022-jp,euc-jp,sjis,utf-8
filetype indent off
という内容で作成しました。これにより、
  • 日本語のファイルを認識させる。デフォルトのコードがUTF8になり、JIS、EUC、SJISコードのファイルも自動認識して編集できるようになる。
  • 18.04からvimが賢くなってファイルの拡張子に応じて自動でインデントしてくれるようになったが、自分はエディタが勝手に何かするのが嫌いなのでそれを止める。
を設定しています。

2022/04/30(土)ubuntu 22.04 インストール (3)

普段研究で作成する文書類はすべてubuntuで書いています。TeX系のソフトウェアが安定して使えるかは重要。
sudo apt install texlive-lang-cjk
sudo apt install texlive-fonts-recommended
sudo apt install texlive-fonts-extra
普段、platexでコンパイルして、dvipdfmxでpdfにして、evinceで見ています。xdvikは使わないので入れないことにしました。日本語フォントを埋め込むときは dvipdfmx -f ptex-ipa.map hogehoge.dvi としてます。

その他文書作成関連のソフトウェアをついでに入れました。
sudo apt install gv
sudo apt install nkf
sudo apt install gnuplot
sudo apt install tgif
sudo apt install gimp
sudo apt install inkscape
sudo apt install mimetex
sudo apt install latexdiff
sudo apt install diffpdf
sudo apt install pdfarranger
sudo apt install krop
sudo apt install pdftk-java
sudo apt install pinta
pdfarranger, kropm pdftk-javaはいずれもpdfの編集ツール、pintaはペイントツールです。

2022/04/30(土)ubuntu 22.04 インストール (2)

vmware toolsは、vmwareのゲストで
  • デスクトップのリサイズ、
  • ホストOSとのクリップボード共有(文字列のコピペが出来るようになる)、
  • フォルダ共有
などを実現するもので、ゲストOSへのインストールはほぼ必須です。vmware標準で提供されるものは無視してopen-vm-toolsを入れるのがお薦めです。20.04と同様、22.04でも自動的にインストールされ、デスクトップのリサイズもクリップボード共有も最初から動作していました。もしそうなっていなければ、
sudo apt install open-vm-tools-desktop
としましょう。

共有フォルダは、vmwareの「VM→Settings→Option→Shared Folders」をAlways Enabledにし、Addで適当なフォルダを共有フォルダに指定、再起動。
sudo vmhgfs-fuse -o allow_other -o auto_unmount .host:/ /mnt/hgfs
で/mnt/hgfs以下にマウント出来ました。永続的にmountするには、/etc/fstabで
.host:/ /mnt/hgfs fuse.vmhgfs-fuse allow_other,auto_unmount,defaults 0 0
と書くとよいでしょう。
OK キャンセル 確認 その他