20210815のLinuxに関する記事は9件です。

Anacondaを利用してGCE上にjupter notebookの環境を導入する際の作業ログと概念理解

やりたいこと jupter notebookのようなローカル環境での処理やアウトプットをクラウド環境のGCP上で使えるようにしたい 必要なこと GCE上にanacondaのパスを通してあげる code test:~$ mkdir download #downloadディレクトリへの移動 test:~$ cd download #Anaconda Linuxのダウンロード test:~/download$ curl -O https://repo.anaconda.com/archive/Anaconda3-2021.05-Linux-x86_64.sh #ダウンロードファイルの実行 test:~/download$ bash Anaconda3-2021.05-Linux-x86_64.sh #上位ディレクトリに移動 test:~/download$ cd .. #ダウンロードファイルの確認 test:~$ ls anaconda 3 download #conda環境のリロード test:~$ source ~/.bashrc (base) test:~$   #(base) になっていれば接続OK 使用したLinuxコマンド cd :ディレクトリ(フォルダ)移動 ls :フォルダの内容をリスト形式で表示する mkdir :フォルダを作成する pwd :現在いる位置を表示する curl :ファイルをダウンロードしてフォルダ内に置く bash :シェル(人間様からの入力をコンピュータさんに伝えるプログラム)の一種 -V :一致しないものを検索 source :ファイルに書かれたコマンドを現在のシェルで実行する 概念理解 備忘録 ・作業ディレクトリ ・.bashrc bashを起動した時に読み込まれる設定ファイル ・source と bash のちがい source : 表側のコマンドの実行 bash :裏側のコマンドの実行 conda環境の確認方法 $ conda activate (base) $ Conda環境が有効になると、コマンドプロンプトに (環境名) が表示されます。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Linux: DATEコマンドで様々な日付を取得してみる

バッチ作成で必要となって調べたついでにメモ。 実施環境: Linux [testuser@testhost ~]$ uname -a Linux testhost 4.18.0-147.8.1.el8_1.x86_64 #1 SMP Thu Apr 9 13:49:54 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux [testuser@testhost ~]$ echo $SHELL /bin/bash [testuser@testhost ~]$ date Tue May 11 20:06:15 JST 2021 Linuxのdateコマンドは-dオプションに特定の文字列を指定することで、様々な日付を表示することが可能です。 ここではその一例を紹介します。 昨日 / 翌日: "yesterday"や"tomorrow"を指定することで、昨日や翌日の日付を取得できます。 Linux [testuser@testhost ~]$ date -d "yesterday" Mon May 10 20:06:53 JST 2021 [testuser@testhost ~]$ date -d "tomorrow" Wed May 12 20:06:53 JST 2021 N日前 / N日後: "N day ago"だとN日前、"N day"だとN日後となります。 dayにsをつけても同じです。 Linux [testuser@testhost ~]$ date -d "1 day ago" Mon May 10 20:07:15 JST 2021 [testuser@testhost ~]$ date -d "1 days ago" Mon May 10 20:07:10 JST 2021 [testuser@testhost ~]$ date -d "1 day" Wed May 12 20:09:26 JST 2021 [testuser@testhost ~]$ date -d "1 days" Wed May 12 20:09:31 JST 2021 N週 / N月 / N年: "day"の代わりに"week"、"month"、"year"を使用すれば、それぞれ週、月、年単位での指定も可能です。 Linux [testuser@testhost ~]$ date -d "1 week" Tue May 18 20:32:36 JST 2021 [testuser@testhost ~]$ date -d "1 month" Fri Jun 11 20:33:07 JST 2021 [testuser@testhost ~]$ date -d "1 year" Wed May 11 20:33:20 JST 2021 N時 / N分 / N秒: "day"の代わりに"hour"、"minute"、"second"を使用すれば、 それぞれ時、分、秒単位での指定も可能です Linux [testuser@testhost ~]$ date -d "1 hour" Tue May 11 21:42:35 JST 2021 [testuser@testhost ~]$ date -d "1 minute" Tue May 11 20:43:42 JST 2021 [testuser@testhost ~]$ date -d "1 second" Tue May 11 20:42:58 JST 2021 曜日: 使い道はあまりないですが、曜日での指定もできます。 この場合、指定した曜日の日の中でも、当日以降で最も近い日が取得されます。 なお、この指定では時刻は00:00:00で取得されます。 Linux [testuser@testhost ~]$ date -d "sunday" Sun May 16 00:00:00 JST 2021 [testuser@testhost ~]$ date -d "monday" Mon May 17 00:00:00 JST 2021 [testuser@testhost ~]$ date -d "tuesday" Tue May 11 00:00:00 JST 2021 [testuser@testhost ~]$ date -d "wednesday" Wed May 12 00:00:00 JST 2021 [testuser@testhost ~]$ date -d "thursday" Thu May 13 00:00:00 JST 2021 [testuser@testhost ~]$ date -d "friday" Fri May 14 00:00:00 JST 2021 [testuser@testhost ~]$ date -d "saturday" Sat May 15 00:00:00 JST 2021 日付 / 時刻指定: 特定の日付や時刻を指定して取得することも可能です。 基本的な形式の日付なら、大体指定できます。 日付のみ指定した場合は時刻は00:00:00に、時刻のみ指定した場合は日付は当日のものになります。 Linux [testuser@testhost ~]$ date -d "2020/1/1" Wed Jan 1 00:00:00 JST 2020 [testuser@testhost ~]$ date -d "2020/01/01" Wed Jan 1 00:00:00 JST 2020 [testuser@testhost ~]$ date -d "2020-1-1" Wed Jan 1 00:00:00 JST 2020 [testuser@testhost ~]$ date -d "2020-01-01" Wed Jan 1 00:00:00 JST 2020 [testuser@testhost ~]$ date -d "20200101" Wed Jan 1 00:00:00 JST 2020 [testuser@testhost ~]$ date -d "200101" Wed Jan 1 00:00:00 JST 2020 [testuser@testhost ~]$ date -d "09:00" Tue May 11 09:00:00 JST 2021 [testuser@testhost ~]$ date -d "09:00:00" Tue May 11 09:00:00 JST 2021 [testuser@testhost ~]$ date -d "0900" Tue May 11 09:00:00 JST 2021 [testuser@testhost ~]$ date -d "2020/1/1 09:00:00" Wed Jan 1 09:00:00 JST 2020 変数利用: 無論、変数も使用できます。 Linux [testuser@testhost ~]$ NUM=7 [testuser@testhost ~]$ echo $NUM 7 [testuser@testhost ~]$ date -d "$NUM day ago" Tue May 4 21:17:13 JST 2021 複数同時指定: 上記の指定のうち複数を同時に使用することも可能です。 Linux [testuser@testhost ~]$ date -d "1 month ago 1 day" Mon Apr 12 21:31:43 JST 2021 [testuser@testhost ~]$ date -d "2020/1/1 yesterday 1 month ago" Sat Nov 30 00:00:00 JST 2019
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

エッジサーバーにtmuxが無いので、tmux入れて、tmuxするメモ

About Tmux リモートワークで、作業中にSSHセッションきれたら困るよね。 いろんなパソコンから作業状態を一瞬で復活させたいよね。 - それこそ出先からでも作業状態にアクセスしたいよね。 → tmux使おう。 tmuxがない... ~ tmux zsh: command not found: tmux よし入れよう。 dependencies. libevent2.x https://github.com/libevent/libevent/releases/latest ncurses https://invisible-mirror.net/archives/ncurses/ Manually Install sucessed 2020-11-16 mkdir workspace cd workspace wget https://github.com/tmux/tmux/releases/download/3.1c/tmux-3.1c.tar.gz wget https://github.com/libevent/libevent/releases/download/release-2.1.12-stable/libevent-2.1.12-stable.tar.gz wget https://invisible-mirror.net/archives/ncurses/ncurses-6.2.tar.gz tar zxf * pushd libevent-2.1.11-stable ./configure --prefix="${HOME}/.local" && make && make install popd pushd ncurses-6.2 ./configure \ --prefix="${HOME}/.local" \ --with-pkg-config-libdir="${HOME}/.local/pkgconfig" \ --enable-pc-files \ --wht-termlib && make && make install popd pushd tmux-3.1c PKG_CONFIG_PATH="${HOME}/.local/lib/pkgconfig" LDFLAGS="-L${HOME}/.local/lib $LDFLAGS" CFLAGS="-I${HOME}/.local/include $CFLAGS" export PKG_CONFIG_PATH LDFLAGS CFLAGS ./configure --prefix="${HOME}.local" && make && make install popd export LD_LIBRARY_PATH="${HOME}/.local/lib:${LD_LIBRARY_PATH}" tmp-dirを勝手に削除されてセッション落ちてしまう。 変える。 d="${HOME}/.cache/tmux-tmp/" mkdir -p $d export TMUX_TMPDIR="$d" .tmux.conf # Basic Knowledgement # ## `set` aliased from set-option` ### `-g` ... Global(Define to Session) ### `-s` ... Server(Define to ServerProcess, No-Rewrite by Window/Session) ### `-w` ... Window(Applied a Window) ### `-w -g` ... Window Global(Applied all Windows) ## `set-window-option` aliased `setw` ###################################################### # Global Configuration # プレフィックスキーをCtrl+b -> Ctrl+gへ set -g prefix C-g bindkey C-g send-prefix unbind-key C-b # unbind default prefix ### ウィンドウの開始音楽 set -g base-index 1 ### マウス操作許可 set -g mouse on ### ステータスバー表示 set -g status on ### vi入力法 set -g mode-keys vi ### ペイン開始番号 setw -g pane-base-index 1 ### デフォルトシェルの設定 set-option -g default-shell /bin/zsh ### 256色対応 set-option -g default-terminal screen-256color set -g terminal-overrides 'xterm:colors=256' ############################# # ステータスバーに関する設定 # # $(shellCmd) ... 標準出力最上行 # #[Attributes] ... 色や属性(e.g. fg=colour255 , #[bold], #[dim]) # Attribute> bold, dim, underscore, blink, reverse, hidden, italics, default #------------------------------------ # #S ... SessionName, ## ... Escaped '#' # #H ... HOSTNAME , #h ... HOSTNAME(without LOCALHOST) # CurrentWindow: #F ... Flag, #I ... Index #W ... Name # CurrentPein: #D ... Identify, #P ... Index, #T ... Title # # Included: strftime, #[INT][OPTION] ... INT=Max_Character # # %Y/%m/%d(%a) %H:%M "" set-option -g status-position top # トップ表示 set-option -g status-justify "centre" # センタリング set-option -g status-bg "colour238" # 背景色 set-option -g status-fg "colour255" # 文字色 ## ステータスバー左側表示設定 set-option -g status-left '#{prefix_highlight} #H:$M - %m/$d(%a)' set-option -g status-left-length 90 # 左長 ## ステータスバー右側表示設定 set-option -g status-right '#{cpu_icon} #{cpu_percentage}(#{cpu_temp}) #{ram_icon} #{ram_percentage} #{online_status} #{net_speed}' set-option -g status-right-length 90 # 右長 # ウィンドウの設定 set -g window-status-current-fg red # アクティブなウィンドウを目立たせる set -g window-status-current-bg set -g window-status-current-attr bold # 太くする set -g # 拡張機能 # TPM - https://github.com/tmux-plugins/tpm # git Cloneして、Ctrl+g(Prefixキー) -> Iでインスコ、Ctrl+g -> Uでアプデ #> git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm set -g @plugin 'tmux-plugins/tpm' #### set -g @plugin 'tmux-plugins/tmux-cpu' set -g @plugin 'tmux-plugins/tmux-yank' set -g @plugin 'tmux-plugins/tmux-resurrect' set -g @plugin 'tmux-plugins/tmux-pain-control set -g @plugin 'tmux-plugins/tmux-online-status' set -g @plugin 'tmux-plugins/tmux-sidebar' set -g @plugin 'tmux-plugins/tmux-prefix-highlight' #### # tmux-net-speedの設定 set -g @plugin 'tmux-plugins/tmux-net-speed' set -g @download_speed_format "%10s" set -g @upload_speed_format "%10s" set -g @net_speed_format "D:%10s U:%10s" #### run '~/.tmux/plugins/tpm/tpm'
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Gatewayにtmuxが無いので、tmux入れて、tmuxするメモ

About Tmux リモートワークで、作業中にSSHセッションきれたら困るよね。 いろんなパソコンから作業状態を一瞬で復活させたいよね。 - それこそ出先からでも作業状態にアクセスしたいよね。 → tmux使おう。 tmuxがない... ~ tmux zsh: command not found: tmux よし入れよう。 dependencies. libevent2.x https://github.com/libevent/libevent/releases/latest ncurses https://invisible-mirror.net/archives/ncurses/ Manually Install sucess: 2020-11-16 mkdir workspace cd workspace wget https://github.com/tmux/tmux/releases/download/3.1c/tmux-3.1c.tar.gz wget https://github.com/libevent/libevent/releases/download/release-2.1.12-stable/libevent-2.1.12-stable.tar.gz wget https://invisible-mirror.net/archives/ncurses/ncurses-6.2.tar.gz tar zxf * pushd libevent-2.1.11-stable ./configure --prefix="${HOME}/.local" && make && make install popd pushd ncurses-6.2 ./configure \ --prefix="${HOME}/.local" \ --with-pkg-config-libdir="${HOME}/.local/pkgconfig" \ --enable-pc-files \ --wht-termlib && make && make install popd pushd tmux-3.1c PKG_CONFIG_PATH="${HOME}/.local/lib/pkgconfig" LDFLAGS="-L${HOME}/.local/lib $LDFLAGS" CFLAGS="-I${HOME}/.local/include $CFLAGS" export PKG_CONFIG_PATH LDFLAGS CFLAGS ./configure --prefix="${HOME}.local" && make && make install popd export LD_LIBRARY_PATH="${HOME}/.local/lib:${LD_LIBRARY_PATH}" /tmp/tmux-1000/defaultなどを勝手に削除されてセッション落ちてしまう。 変える。 d="${HOME}/.cache/tmux-tmp/" mkdir -p $d export TMUX_TMPDIR="$d" .tmux.conf # Basic Knowledgement # ## `set` aliased from set-option` ### `-g` ... Global(Define to Session) ### `-s` ... Server(Define to ServerProcess, No-Rewrite by Window/Session) ### `-w` ... Window(Applied a Window) ### `-w -g` ... Window Global(Applied all Windows) ## `set-window-option` aliased `setw` ###################################################### # Global Configuration # プレフィックスキーをCtrl+b -> Ctrl+gへ set -g prefix C-g bindkey C-g send-prefix unbind-key C-b # unbind default prefix ### ウィンドウの開始音楽 set -g base-index 1 ### マウス操作許可 set -g mouse on ### ステータスバー表示 set -g status on ### vi入力法 set -g mode-keys vi ### ペイン開始番号 setw -g pane-base-index 1 ### デフォルトシェルの設定 set-option -g default-shell /bin/zsh ### 256色対応 set-option -g default-terminal screen-256color set -g terminal-overrides 'xterm:colors=256' ############################# # ステータスバーに関する設定 # # $(shellCmd) ... 標準出力最上行 # #[Attributes] ... 色や属性(e.g. fg=colour255 , #[bold], #[dim]) # Attribute> bold, dim, underscore, blink, reverse, hidden, italics, default #------------------------------------ # #S ... SessionName, ## ... Escaped '#' # #H ... HOSTNAME , #h ... HOSTNAME(without LOCALHOST) # CurrentWindow: #F ... Flag, #I ... Index #W ... Name # CurrentPein: #D ... Identify, #P ... Index, #T ... Title # # Included: strftime, #[INT][OPTION] ... INT=Max_Character # # %Y/%m/%d(%a) %H:%M "" set-option -g status-position top # トップ表示 set-option -g status-justify "centre" # センタリング set-option -g status-bg "colour238" # 背景色 set-option -g status-fg "colour255" # 文字色 ## ステータスバー左側表示設定 set-option -g status-left '#{prefix_highlight} #H:$M - %m/$d(%a)' set-option -g status-left-length 90 # 左長 ## ステータスバー右側表示設定 set-option -g status-right '#{cpu_icon} #{cpu_percentage}(#{cpu_temp}) #{ram_icon} #{ram_percentage} #{online_status} #{net_speed}' set-option -g status-right-length 90 # 右長 # ウィンドウの設定 set -g window-status-current-fg red # アクティブなウィンドウを目立たせる set -g window-status-current-bg set -g window-status-current-attr bold # 太くする set -g # 拡張機能 # TPM - https://github.com/tmux-plugins/tpm # git Cloneして、Ctrl+g(Prefixキー) -> Iでインスコ、Ctrl+g -> Uでアプデ #> git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm set -g @plugin 'tmux-plugins/tpm' #### set -g @plugin 'tmux-plugins/tmux-cpu' set -g @plugin 'tmux-plugins/tmux-yank' set -g @plugin 'tmux-plugins/tmux-resurrect' set -g @plugin 'tmux-plugins/tmux-pain-control set -g @plugin 'tmux-plugins/tmux-online-status' set -g @plugin 'tmux-plugins/tmux-sidebar' set -g @plugin 'tmux-plugins/tmux-prefix-highlight' #### # tmux-net-speedの設定 set -g @plugin 'tmux-plugins/tmux-net-speed' set -g @download_speed_format "%10s" set -g @upload_speed_format "%10s" set -g @net_speed_format "D:%10s U:%10s" #### run '~/.tmux/plugins/tpm/tpm'
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

ZYNQにUbuntu 18.04LTSを入れる方法(USB WiFi付)

はじめに この記事ではZYNQにUbuntu 18.04LTSをインストールし、USB-WiFiが使えるようにする方法を解説します。 Petalinuxを使わずにセットアップするので、作業内容をブラックボックスにせずに、何が起こっているかを理解しながら進めることができます。また、ダウンロードする量も少なく済みます。 準備するもの ホストマシン(Ubuntu 18.04が動く仮想PC) ZYNQが動くボード (ここでは CosmoZ Mini ) カーネル (uImage) デバイスツリー (devicetree.dtb) カーネルモジュール (/lib/modules以下の一式) boot.bin 使ったFPGAボード ※boot.bin, uImage, devicetree.dtb, uEnv.txtなどの作り方はいずれ別の記事で紹介します。ZYBOとかPYNQでやりたい方は、既に動いているZYBOとかPYNQからboot.bin,uImage,devicetree.dtbを引っこ抜いてください。 また、絶版ではありますが、拙著 ZYNQのLinuxが動くまで に詳しくまとめてあります。 ホストマシンでの作業 ホストマシン(Ubuntu 18.04LTSを推奨)に必要なパッケージをインストールしておく。ホストマシンがUbuntu 14では失敗することは確認済み。 sudo apt install qemu-user-static debootstrap 第一パーティションを100MBくらい、第二パーティションを2GByte以上にしたSDカードを用意し、SDカードの第2パーティションをマウントする。 $ sudo mount -o loop /dev/sdb2 /mnt ubuntuのイメージをダウンロードする。 $ sudo debootstrap --foreign --arch armhf bionic /mnt http://ports.ubuntu.com/ 上のbionicがUbuntuのバージョンを表す。ここを書き換えると異なるバージョンのUbuntuが入る。 bionic・・・18.04LTS disco・・・19 focal・・・20.04LTS エミュレータへの切り替え 以下のコマンドでQEMUをコピーして仮想環境に切り替える。なお、chrootでSDカード上のフォルダをrootにした瞬間からQEMUの仮想環境に切り替わり、ホストPCがARMのコードを実行できるようになる。 $ sudo cp /usr/bin/qemu-arm-static /mnt/usr/bin/ $ sudo chroot /mnt /usr/bin/groups: cannot find name for group ID 0 I have no name!@ubuntu:/# まだ名前がないのでユーザ名のところにI have no name!と表示されているので驚く。 次に、QEMU上で第2ステージのセットアップを行う。 I have no name!@ubuntu:/# ./debootstrap/debootstrap --second-stage この作業には5分くらいかかる。メッセージの最後に ・・・ I: Configuring console-setup... I: Configuring ubuntu-minimal... I: Configuring libc-bin... I: Configuring systemd... I: Configuring ca-certificates... I: Configuring initramfs-tools... I: Base system installed successfully. I have no name!@ubuntu:/# と、 Base system installed successfully が表示されていれば成功。 それ以外の表示は失敗だ。なぜかわからないが、たまに失敗することがある。 SDカードをクリーンにしてから再度チャレンジしよう。 成功したらQEMU上でパスワードを設定し、最初のユーザを作る。 なお、gccとかg++,makeなどは大きいので、ZYNQ上の実機でやるよりも仮想環境でインストールしたほうが早い。apt iinstall build-essentialでgccとかg++,makeが入る。 I have no name!@ubuntu:/# passwd I have no name!@ubuntu:/# su root@ubuntu:/# passwd root@ubuntu:/# apt update root@ubuntu:/# apt install build-essential root@ubuntu:/# adduser cosmoz ←作成したいユーザ名 root@ubuntu:/# exit I have no name!@exit 1回目のexitではQEMU上のsuから抜け、2回目のexitではQEMUから抜ける。だんだん自分がどこにいるかわからなくなるね。 SDカードをアンマウントして、取り出す。 ZYNQ実機での作業 SDカードを実機に挿して、前の作業で作ったユーザ名でログインする。 rootでは入れないのでユーザはちゃんと作っておこう。 Ubuntu 18.04 LTS ubuntu ttyPS0 ubuntu login: cosmoz Password: Welcome to Ubuntu 18.04 LTS (GNU/Linux 4.9.0-cszmini armv7l) ・・・ suしてルートユーザになって、/rootへ移動する。 cosmoz@ubuntu:~$ su root@ubuntu:/home/cosmoz:# cd root@ubuntu:~:# 基本の設定 デフォルトではホスト名がUbuntuをセットアップした仮想Linuxマシンの名前になっているので、任意のわかりやすい名前に変更しよう。 root@ubuntu:~# sudo hostnamectl set-hostname cszmini 次に、viが正しく動作するように.vimrcを作る。 これをしないとviで各種設定ファイルを触るときに先頭の行が化けたりすることがある。 いろいろな設定を変更する前にviが正しく動作するようにしよう。 この時点ではviが信頼できないのでcat > でファイルを作る。 root@ubuntu:~# cat > .vimrc set encoding=utf-8 set fileencodings=iso-2022-jp,sjis,utf-8 cat > でファイルを作ったら、CTRL+D で抜ける。 電源を入れてシリアルコンソールでつなぐたびにユーザ名とパスワードを聞かれるのは面倒なので、自動でログインできるようにしよう。(セキュリティの関係で自動ログインしないようにするにはこの作業は省く) # systemctl edit --force serial-getty@ttyPS0 viが開くので以下のとおり記述する。 [Service] ExecStart= ExecStart=-/sbin/agetty --noissue --autologin root %I $TERM Type=idle 書き間違えると起動時に止まってしまうので注意。 ファイルは/etc/systemd/system/serial-getty@ttyPS0.service.d/override.conf にあるので、もし書き間違えたら、別のLinuxマシンからSDカードをマウントして直そう。 次にタイムゾーンを変更する。日本式の時間で表示されるようにしよう。シンボリックリンクを張るだけだ。 ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime sudoersを書き換えてsudoできるようにする。使うコマンドはvisudo。 root@ubuntu:~# visudo エディタが開くので、 ・・・ root ALL=(ALL:ALL) ALL cosmoz ALL=(ALL:ALL) ALL <-この行を追加 ・・・ これで基本的な設定はできた。 有線ネットワークの設定 ubuntu 18ではnetplanを使ってネットワークの設定を行う。ずーーとお世話になってきたifconfigは、もうない。 root@ubuntu:~# sudo vi /etc/netplan/50-cloud-init.yaml エディタが開くので以下のように書く。各行の#←以降は説明なので書かないこと。 network: version: 2 renderer: networkd ethernets: eth0: dhcp4: yes dhcp-identifier: mac #← MACアドレスを使ってDHCPの識別を行わせる #macaddress: 02:11:10:00:22:01 #← インタフェースのMACアドレスを固定したいなら dhcp6: no optional: true #← これを設定しないと、起動時にネットがないと待たされる #addresses: [192.168.1.80/24] #← 以下はDHCPではなく固定する場合の設定 #gateway4: 192.168.1.1 #nameservers: #addresses: [192.168.1.1, 8.8.8.8, 8.8.4.4] optionalをtrueにしないと、LANがケーブルが外れていたりする場合に延々と待たされてシステムが起動しなくなるので注意。 netplan applyで設定を反映し、ip addressで見て、どこかにpingを飛ばしてネットワークの接続を確認する。 root@ubuntu:~# sudo netplan apply root@ubuntu:~# ip a root@ubuntu:~# ping 8.8.8.8 このへんで一度再起動しよう。 root@ubuntu:~# reboot 追加のパッケージのインストール 再起動するとコンソールからrootで自動ログインできるようになっているはずだ。 各人の好みにもよるが、vimとemacsとgitとopenssh-serverをいれる。 なお、Ubuntu 20のaptにはなぜかemacsがないようだ。 # apt install vim # apt install emacs # apt install git # apt install openssh-server emacsが正しく動作するようにcat > で.emacsファイルを作る root@cszmini:~# cat > .emacs (keyboard-translate ?\C-h ?\C-?) (global-set-key (kbd "C-h") 'delete-backward-char) sshの設定は特に変更しなくても、 rootではログインできない パスワードでログインする ポートは22 になっているようだ。セキュリティにこだわる人は変えればよい。 USB-WiFiの設定 まずは、lsusbとiwlistが使えるようにするため、USB診断ツールとWiFiのツールを入れる。 ここではELECOMのWDC-150SU2Mを使って無線LAN接続する。 apt install -y usbutils wireless-tools カーネルモジュールのインストール USB WiFiのような着脱可能な周辺機器を使うには /lib/modules 以下にカーネルモジュールが必要だ。 ブログの ZYNQ Linuxの/lib/modulesフォルダやmodules.dep等の作り方 で作ったカーネルモジュールを展開しておく。 # mkdir /lib/modules # tar -zxvf /mnt/modules.tgz # mv lib/modules/4.9.0-cszmini/ /lib/modules/$(uname -r) そして、ELECOMのWDC-150SU2MをZYNQのLinuxから使うで作った8188eu.koを/lib/modules/4.9.0-cszmini/drivers/ にコピーする。また、/lib/firmwareと/lib/firmware/rtlwiriフォルダを作り、ファームウェアをコピーする。最後にdepmodして完了。 # mkdir /lib/firmware # mkdir /lib/firmware/rtlwifi # cp 8188eu.ko /lib/modules/4.9.0-cszmini/drivers/ # cp rtl8188eufw.bin /lib/firmware # cp rtl8188eufw.bin /lib/firmware/rtlwifi # depmod Linuxのカーネルに応じて作り直さなければならないので、詳しい作り方は上のブログを参考にしてください。 ネットワークマネージャのインストール Ubuntu 18ではネットワークマネージャというツールを使ってSSIDの設定などを行うようだ。wpa-supplicantはもう使わない。 # apt install -y network-manager # systemctl enable network-manager # systemctl start network-manager まずは、飛び交っているWIFIの一覧を調べる。 iwlist scan | grep SSID 目的のSSIDが出てきたことを確認できたら、 nmcli device wifi connect <SSID> password <パスワード> で接続する。 切断するには nmcli connection show で現在接続中のコネクション名を確認して、 nmcli connection delete <コネクション名> で切断する。 その他の便利な設定 起動スクリプト Ubuntuの14のころは、起動時に自動実行させたいコマンドは /etc/rc.local に書いておけばよかったのですが、Ubuntu18でもこの方法は有効であるようです。(ただし推奨はされていないようだ。systemdに登録しろと言われる) 様々な起動スクリプトを書いたり、自作のFPGA部分を初期化したりしましょう。 UIOをユーザ権限で使えるようにする ZYNQのLinuxですから、ユーザプログラムからFPGAを操作することもあるだろう。 PL(FPGAの部分)を操作するにはUIO(ユーザIO)というデバイスドライバを使うことが一般的だけど、UIOはデフォルトではrootしか使えない。以下のように起動スクリプトでパーミッションを変更してユーザ権限で動かせるようにしよう。 # vi /etc/rc.local で開いて、ファイルに以下のように書く。 #!/bin/sh -e chmod 666 /dev/uio0 chmod 666 /dev/uio1 exit 0 なお、rc.localを作成したら # chmod 755 /etc/rc.local で実行許可を与えるのを忘れないようにしてください。 apache2のインストール apache2をインストールしてCGIが動くようにしよう。 # apt install apache2 設定は、000-default.confの、ServerAdmin webmaster@localhost以降の数行を変更する。 # vi /etc/apache2/sites-available/000-default.conf ファイルが開くのでServerAdmin以降の数行を変更する。 ServerAdmin webmaster@localhost #ここから変更 DocumentRoot /var/www/ #ドキュメントルートとなるフォルダ <Directory /var/www/> Options -Indexes +FollowSymLinks +MultiViews +ExecCgi AllowOverride All Order allow,deny allow from all </Directory> AddHandler cgi-script .cgi .pl #追加 # ここまで CGIが動くようにするにはserve-cgi-bin.confの変更も必要。デフォルトでは/cgi-bin/や/usr/lib/cgi-bin/でしかCGIが動かないようになっている。 # vi /etc/apache2/conf-available/serve-cgi-bin.conf で設定ファイルを開く。IfDefine ENABLE_USR_LIB_CGI_BINの中身をコメントアウトする。 ・・・ <IfDefine ENABLE_USR_LIB_CGI_BIN> # ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ # <Directory "/usr/lib/cgi-bin"> # AllowOverride None # Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch # Require all granted # </Directory> </IfDefine> ・・・ 以下のコマンドでCGIを有効にして、Apache2を再起動する。 # a2enmod cgi # a2enconf serve-cgi-bin.conf # systemctl restart apache2 共有フォルダを作成してsambaで共有しよう。 sambaを入れるとsmbd(ファイル共有)とnmbd(名前解決)が動くようになる。 windowsから \\ホスト名 で探せるようになるし、 viとかemacsとかnanoみたいなドMな使いにくいディタ ではなく、Windows上の使い慣れたエディタで編集できるようになる。とても便利だからぜひ入れよう。誰も気にしていないと思うが、私の好きなエディタはWZだ。 まず、適当な共有フォルダを作る。 # mkdir /home/share # chmod 777 /home/share sambaをインストールし、設定ファイル開く。 # apt install samba # vi /etc/samba/smb.conf エディタが開いたら、smb.confの最後に以下のように追加する。 [Share] path = /home/share writable = yes guest ok = yes guest only = yes create mode = 0777 directory mode = 0777 これでOK。 smbdとnmbdを有効にしておこおう。 # systemctl enable smbd # systemctl enable nmbd 低消費電力モードを有効にする ZYNQには低消費電力モードがある。低消費電力モードというのはPS(CPU)の動作を止めてしまうわけだが、普通に構築したZYNQのLinuxならこの機能が使えるようになっている。 なお、低消費電力モードにしたあと戻れないと困るので、UARTを受信したときに戻れるようにしておこう。やり方は echo enabled > /sys/devices/soc0/amba/e0000000.serial/tty/ttyPS0/power/wakeup だが、覚えられないので、この設定をrc.localに書いておけば起動時に自動的に「UARTで復帰」が有効になる。 いざ低消費電力にしたい場合は echo mem > /sys/power/state を実行すればよい。これを/usr/binあたりにstandbyとかいう名前でスクリプトにしておけばよい。 まとめ この方法でUbuntu 18,19,20はインストールできた。Ubuntu 20ではemacsが動かなかったり、rc.localの警告が増えたり、QEMUが403というエラーを出したりいろいろ怪しくなってくるが、それなりに動いている。 Ubuntu 12や14をLinaroで入れていたころに比べて本当に簡単になった。 PetaLinuxではなく、いろいろ充実したUbuntuを自分で入れて快適なZYNQライフを!
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Linuxのtarコマンド(備忘録)

複数ファイルを送信したりするとき、予めtarコマンドで一つのファイルとしてまとめておくと 一度の送信で済むので便利である。 共通オプション -f アーカイブファイル名を指定する -v アーカイブ結果を表示する -w コマンドを実行する直前に確認メッセージを表示する --show-defaults tarコマンドの規定値を表示する アーカイブ アーカイブを新規作成する。 $tar -cvf [アーカイブファイル名] [アーカイブに内包するファイル] [アーカイブに内包するファイル]では、 ・複数ファイルの指定が可能(ワイルドカードでの指定可能) ・ディレクトリでの指定が可能 ・ファイルを指定せず、空のアーカイブを作成することは不可能 既存のアーカイブに新たなファイルを追加する $tar -rvf [アーカイブファイル名] [アーカイブに内包するファイル] [アーカイブに内包するファイル]で指定したファイルのディレクトリ・ファイル名と 既にアーカイブされているファイルと被った場合、 両ファイルともアーカイブされるが、展開・解凍時は最後にアーカイブされたファイルで上書きされる。 更新されたファイルのみアーカイブする $ tar -uvf [アーカイブファイル名] [アーカイブに内包するファイル] アーカイブファイルを統合する $ tar -Avf [アーカイブファイル名] [統合されるアーカイブファイル] [統合されるアーカイブファイル]にアーカイブされているファイルが[アーカイブファイル名]に取り込まれる。 アーカイブファイル内から指定したファイルを削除する $ tar --delete -f [アーカイブファイル名] [削除ファイル名] 圧縮 アーカイブしつつgzip形式で容量を圧縮する $ tar -z -cvf [アーカイブファイル名] [アーカイブ元ファイル] [アーカイブファイル名]は、例えば「test.tar.gz」というように圧縮ファイルと判断できるようにする 展開 アーカイブされたファイルを展開する $ tar -xvf [アーカイブファイル名] 解凍 圧縮したファイルを解凍する $ tar --gunzip -xvf [アーカイブファイル名] アーカイブされたファイルの確認 $tar -tf [アーカイブファイル名] 圧縮・解凍のデメリット ・圧縮すると、元のデータとは全く異なる形のファイルになるということなので、正常に解凍できないことがある ・サイズの大きいファイルを圧縮・解凍しようとすると時間がかかる 関連リンク
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Linux上で特定フォーマットの音声や動画が再生できない時の対処法

概要 Firefox や Totem 等、GStreamer1 を利用して再生を行うアプリケーションの処方箋です。 これらはLinux界の慣習に沿って README やソースを読んで行けば判明する事なのですが、 音声(動画)再生はプログラマ以外にも需要のあるジャンル2だと思いますので、私が以前に それらを行って問題を解消した経験を踏まえて手順をまとめてみます。 通常は適切に不足ライブラリを埋めるとかOSのバージョンを上げるとかすれば解決する事が 多いですが、特殊なインストールや様々なバリエーションを持つLinuxでは、原因の調査方法を 知っておく事は悪い事ではないと思います。 調査の進め方と解決例 音声(動画)が再生出来ないだけでは情報が足りないのでその詳細を追います。 まず再生出来るフォーマットと再生出来ないフォーマットのログを比較します。 これには gst-launch gst-discover gst-inspect というツール群1を活用します (Ubuntu なら gstreamerX.XX3-tools パッケージ内)。 例えば ogg は再生出来るけれど mp3 が再生出来ない4という状況の場合は、以下を実行します。 $ gst-launch-X.XX filesrc location=~.ogg ! oggdemux ! vorbisdec ! audioconvert ! audioresample ! alsasink $ gst-launch-X.XX filesrc location=~.mp3 ! id3demux ! mpegaudioparse ! audioconvert ! audioresample ! alsasink (新しめの Linux の場合) $ gst-launch-X.XX filesrc location=~.mp3 ! id3demux ! mpegaudioparse ! mpg123audiodec ! alsasink 次に以下を実行します。 $ GST_DEBUG=typefind:9,decodebin2:9 gst-discoverer-X.XX ~.ogg |& sed 's/32;43m/33m/g' | sed 's/32;41m/31m/g' $ GST_DEBUG=typefind:9,decodebin2:9 gst-discoverer-X.XX ~.mp3 |& sed 's/32;43m/33m/g' | sed 's/32;41m/31m/g' (新しめの Linux の場合) $ GST_DEBUG=typefind:9,decodebin:9 gst-typefind-X.XX ~.ogg |& sed 's/32;43m/33m/g' | sed 's/32;41m/31m/g' $ GST_DEBUG=typefind:9,decodebin:9 gst-typefind-X.XX ~.mp3 |& sed 's/32;43m/33m/g' | sed 's/32;41m/31m/g' ※ 使用しているターミナルによっては最後2つの sed フィルタは不要かもしれません これで怪しい箇所が見えてきます。以前私が遭遇したこの問題では以下のようになっていました。 DEBUG decodebin2 gstdecodebin2.c:XXXX:analyze_new_pad:<decodebin21> Pad mpegaudioparse0:src caps:audio/mpeg, mpegversion=(int)1, layer=(int)[ 1, 3 ], mpegaudioversion=(int)[ 1, 3 ], rate=(int)[ 8000, 48000 ], channels=(int)[ 1, 2 ], parsed=(boolean)true DEBUG decodebin2 gstdecodebin2.c:XXXX:gst_decode_pad_new:<decodebin21> making new decodepad LOG decodebin2 gstdecodebin2.c:XXXX:are_final_caps:<decodebin21> Checking with caps audio/mpeg, mpegversion=(int)1, layer=(int)[ 1, 3 ], mpegaudioversion=(int)[ 1, 3 ], rate=(int)[ 8000, 48000 ], channels=(int)[ 1, 2 ], parsed=(boolean)true LOG decodebin2 gstdecodebin2.c:XXXX:are_final_caps:<decodebin21> Caps are not final caps DEBUG decodebin2 gstdecodebin2.c:XXXX:analyze_new_pad:<mpegaudioparse0:src> pad has non-fixed caps delay autoplugging 正常な方のログと比較すると、最後の行は本来なら以下のようになっているべきです。 LOG decodebin2 gstdecodebin2.c:XXXX:analyze_new_pad:<decodebin21> Pad is final. autoplug-continue:1 そして gst-inspect の出番です。 $ gst-inspect-X.XX vorbisdec ... SINK Capabilities: audio/x-vorbis SRC Capabilities: audio/x-raw-float ... $ gst-inspect-X.XX mpegaudioparse ... SINK Capabilities: audio/mpeg SRC Capabilities: audio/mpeg ... $ gst-inspect-X.XX mad ... No such element or plugin 'mad' ... これら各プラグインは /usr/lib/i386-linux-gnu/gstreamer-X.XX/ (32bit Linux の場合) 配下に libgstXXX.so というELFファイルとしてインストールされているはずです。 これを確認すると、libgstmad.so は正しく存在しているにも関わらず、それが GStreamer から見えていない現象が発生している事がわかりました。 ここで GStreamer のソースを tools/gst-inspect.c から順に追うと、最終的に ~/.gstreamer-X.XX/registry.i386.bin が壊れているらしい事が判明します。 解決方法も同時に判明します。 $ GST_PLUGIN_PATH=/usr/lib/gstreamer-0.10:/usr/lib/i386-linux-gnu/gstreamer-0.10 gst-inspect-X.XX mad または $ gst-inspect-X.XX --gst-plugin-path=/usr/lib/gstreamer-0.10:/usr/lib/i386-linux-gnu/gstreamer-0.10 mad GStreamer は regstry.i386.bin の情報を元にパイプラインを組み立てるのですが、regstry.i386.bin の 更新タイミングは限られていて、インストール手順の乱れ等何らかの理由でプラグインがいったん BLACKLIST カテゴリに入ってしまうと、それが正しいプラグインであっても明示的に regstry.i386.bin の 更新を要求するまで使用不能となってしまうという現象のようでした。 上記を実行すると registry.i386.bin が正しく更新され、正常な再生が行われるようになります。 対象音声(動画)が埋め込み Web コンテンツ等で取得が面倒な場合は、 フォーマットだけを調べて同じフォーマットのファイルを準備するのがよいと思います。 例えば Youtube 動画が再生されず、Youtube 上のチェックで H.264 が怪しいと判明したので あれば mp4/H.264 や flv/H.264 ファイルを準備し、totem 等のプレイヤーで再生出来ない事を 確認してから前述の手順を実行するといった具合です。 Linux 上の音声(動画)再生には幾つかの手法がありますが、多くの場合は最終的に GStreamer というライブラリ上から音声(動画)を再生しています(Firefox や Totem 等)。これは Windows で言う所の DirectShow に相当する仕組みで、GStreamer のパイプラインは DirectShow のフィルタグラフに当たり、ffmpeg 等の各種デコーダ、ALSA(ほぼpulseaudio) 等を統合してストリーミング再生全体を実現しています。これらについては他に参考となる記事が多く書かれていますので、説明は割愛します。 ↩ プログラマ以外が果たしてクライアントOSとして私用でLinuxを常用するのだろうか?という根本的な疑問は残っていますので (´・ω・`)、もしこの記事が役に立ったという方がおられましたら一言コメント頂ければ幸いです。 ↩ インストールされている GStreamer のバージョンが入ります。例えば Ubuntu 20.04 18.04 16.04 なら 1.0、14.04 12.04 なら 0.10 といった具合です('21/8/15時点)。 ↩ さすがに今時の Linux ではあり得ない・・・とも言い切れないでしょうか。この問題は古い Ubuntu で遭遇したのですが、結局の所 mp3 プラグインのライセンス周りの特殊性が遠因で発生したと記憶しています。他にも同様の事情で main や universe に 入れられないプラグイン等もあったような。 ↩
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

MineMeldをUbuntu 20.04にインストールするバッドノウハウ

概要 MineMeldをUbuntu 20.04にインストールすることができたのでメモしておきます。 この記事に記載の内容はバッドノウハウの類ですが、古いソフトウェアを敢えて使わなければならないシチュエーションというのも人生の中ではあると思うので、何かの役に立てば幸いです。 MineMeldとは? MineMeldとは、OSINTのデータを自動的に収集するツールです。Palo Alto社が開発し、オープンソースで公開されています。 Palo Alto社が公開している資料がわかりやすいと思います。 ただし、現時点(2021/8/14)では以下のような問題点を抱えています。 公式サポートは2021/8/1で終了している 参考: https://live.paloaltonetworks.com/t5/blogs/minemeld-end-of-life-announcement/ba-p/419392 Python 2.7で開発されている Python 2.7系は、2020/1/1 でサポートが終了しています。 参考: https://atmarkit.itmedia.co.jp/ait/articles/1906/27/news016.html 他にも依存関係が多い Nginx Redis Collectd Node.js このような状況から、新しい環境(OS)に対応していくのはなかなかしんどい状況になりつつあります。 MineMeldは、OSINTのデータを収集するという目的に対しては少々オーバーエンジニアリングなんじゃないかという気がしますが、ひとまずそこには触れないことにします。 シナリオ Palo Alto社がAnsibleのPlaybookを公開しているので、基本的にはこれを使ってインストールすることにします。2年くらい更新されてませんが、Ubuntu 18.04までは対応しているので、それほど大きな修正は必要ないだろうと想定しました。 対応が必要だった内容は主に以下の3つです。再現性のある手順になってはいると思いますが、1と2はともかくとして、3はあまりきれいに解決できてません。 Ubuntu 20.04 に対応していない 同梱のTLS証明書の鍵長が短い(Nginxが起動しない) PythonのJSONライブラリ(ujson.so)が壊れる 対応内容 Ubuntu 20.04 に対応していない まずはUbuntu 20.04に対応する必要があります。AnsibleでOSのディストリビューションとバージョンを見て処理を分けていることがわかったので、Ubuntu 18.04用の処理を参考にできると思いました。結果的には、以下のようにUbuntu 18.04用のファイルをコピーしたらインストールできました。 $ cd roles/infrastructure/vars/ $ cp Ubuntu-18.04.yml Ubuntu-20.04.yml $ cd roles/minemeld/vars/ $ cp Ubuntu-18.04.yml Ubuntu-20.04.yml 同梱のTLS証明書の鍵長が短い(Nginxが起動しない) インストールはできたものの、Nginxが起動しない問題に遭遇しました。error.logを見ると以下のようなメッセージが出力されていました。 $ sudo more /var/log/nginx/error.log ... 2021/08/14 04:06:41 [emerg] 30192#30192: SSL_CTX_use_certificate("/etc/nginx/minemeld.cer") failed (SSL:error:140AB18F:SSL routines:SSL_CTX_use_certificate:ee key too small) Playbookにサーバ証明書と秘密鍵が同梱されているのですが、鍵長が1024bitで作成されており短すぎるということでした。OpenSSL 1.1.1以降では2048bit未満の鍵長をデフォルトでは受け付けてくれなくなったようです。 このままではNginxが起動できないので、2048bitで以下のように作り直すことにしました。 $ openssl genrsa 2048 > minemeld.pem $ openssl req -new -x509 -days 3650 -key mimemeld.pem -sha512 -out mimemeld.cer roles/minemeld/files/ のファイルを入れ替えておけばAnsibleでインストールできます。あとから/etc/nginx配下のファイルを入れ替えてもいいです。 PythonのJSONライブラリ(ujson.so)が壊れる ここまででMinemeldが起動し、ログイン画面まではたどり着けましたが、まだ正常に動作していませんでした。 ログを見ると以下のようなPythonのエラーが出力されていました。 $ more /opt/minemeld/log/minemeld-engine.log ... ImportError: /opt/minemeld/engine/current/lib/python2.7/site-packages/ujson.so: undefined symbol: Buffer_AppendShortHexUnchecked 詳細がよくわからないのでエラーメッセージでGoogle検索してみると以下のページがヒットしました。PythonのujsonライブラリとGCCのバージョンの組み合わせで発生するようで、これをAnsibleだけでなんとかするのはあまり簡単ではなさそうだと思いました。 MineMeldで同じ事象に遭遇している例もあり、ujson.soを外から持ってきて入れ替えるというワークアラウンドで動作したようでした。 いろいろと方法は考えられますが、Ansibleで解決するのは諦めて手動対応することにしました。 インストール手順 事前準備 Ubuntu 18.04と同様に必要なパッケージをインストールします。 $ sudo apt install -y gcc make git ansible python2.7-dev libffi-dev libssl-dev Ansibleの実行 リポジトリをクローンして、上述のワークアラウンドを行います。 $ git clone https://github.com/PaloAltoNetworks/minemeld-ansible.git ... ワークアラウンド実施 または、Ubuntu 20.04対応済みのForkを使っていただいてもいいです。 $ git clone https://github.com/shakemid/minemeld-ansible.git ansible-playbookを実行します。 $ cd minemeld-ansible $ ansible-playbook -K local.yml ... 正常にインストールできたら自動的にサービス起動します。 JSONライブラリの修正 ujson.soをパッケージから抜き出して入れ替えます。Ubuntu 20.04にはPython2.7のライブラリがないようなので、18.04のものを使います。 適当なミラーサイトからdebファイルをダウンロードします。 $ wget http://ftp.yz.yamagata-u.ac.jp/pub/linux/ubuntu/archives/pool/universe/u/ujson/python-ujson_1.35-2_amd64.deb debファイルをdpkg-debコマンドで展開します。 $ dpkg-deb -xv python-ujson_1.35-2_amd64.deb . ./ ./usr/ ./usr/lib/ ./usr/lib/python2.7/ ./usr/lib/python2.7/dist-packages/ ./usr/lib/python2.7/dist-packages/ujson-1.35.egg-info ./usr/lib/python2.7/dist-packages/ujson.x86_64-linux-gnu.so ./usr/share/ ./usr/share/doc/ ./usr/share/doc/python-ujson/ ./usr/share/doc/python-ujson/README.rst.gz ./usr/share/doc/python-ujson/changelog.Debian.gz ./usr/share/doc/python-ujson/copyright ujson.soファイルを入れ替えます。 $ sudo cp usr/lib/python2.7/dist-packages/ujson.x86_64-linux-gnu.so /opt/minemeld/engine/current/lib/python2.7/site-packages/ujson.so MineMeldサービスを再起動します。 $ sudo systemctl restart minemeld.service ログイン ウェブブラウザでインストールしたサーバにHTTPS接続するとログイン画面が表示されます。アカウントと初期パスワードは admin/minemeld です。 ログイン後、正常に動作していればダッシュボードが表示されます。 というわけで、Ubuntu 20.04にMineMeldをインストールできました。 古いソフトウェアを非対応の環境で無理矢理動かすのはあまりお勧めはできませんが、一種のトラブルシューティングのようで、調査の過程でいろんなことがわかって楽しいこともあります。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

CentOS7にJava11インストール

java11のパッケージを検索 「yum search」 コマンドでパッケージを検索します。 sudo yum search java-11 (中略) ====================================== N/S matched: java-11 =================== java-11-openjdk.i686 : OpenJDK Runtime Environment 11 java-11-openjdk.x86_64 : OpenJDK 11 Runtime Environment java-11-openjdk-demo.i686 : OpenJDK Demos 11 java-11-openjdk-demo.x86_64 : OpenJDK 11 Demos java-11-openjdk-devel.i686 : OpenJDK Development Environment 11 java-11-openjdk-devel.x86_64 : OpenJDK 11 Development Environment java-11-openjdk-headless.i686 : OpenJDK Headless Runtime Environment 11 java-11-openjdk-headless.x86_64 : OpenJDK 11 Headless Runtime Environment java-11-openjdk-javadoc.i686 : OpenJDK 11 API documentation java-11-openjdk-javadoc.x86_64 : OpenJDK 11 API documentation java-11-openjdk-javadoc-zip.i686 : OpenJDK 11 API documentation compressed in a single archive java-11-openjdk-javadoc-zip.x86_64 : OpenJDK 11 API documentation compressed in a single archive java-11-openjdk-jmods.i686 : JMods for OpenJDK 11 java-11-openjdk-jmods.x86_64 : JMods for OpenJDK 11 java-11-openjdk-src.i686 : OpenJDK Source Bundle 11 java-11-openjdk-src.x86_64 : OpenJDK 11 Source Bundle java-11-openjdk-static-libs.i686 : OpenJDK libraries for static linking 11 java-11-openjdk-static-libs.x86_64 : OpenJDK 11 libraries for static linking java11をインストール 実行環境のみが必要な場合はopenjdkをインストールします。 インストール sudo yum install -y java-11-openjdk.x86_64 開発をする場合はopenjdk-develをインストールします。 インストール sudo yum install -y java-11-openjdk-devel.x86_64 インストール後、Javaのバージョンを確認します。 バージョン確認 $ java -version openjdk version "11.0.12" 2021-07-20 LTS OpenJDK Runtime Environment 18.9 (build 11.0.12+7-LTS) OpenJDK 64-Bit Server VM 18.9 (build 11.0.12+7-LTS, mixed mode, sharing)
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む