可変ブログ

色々メモとか。とりあえず自分が分かるように。その後、なるべく人が見て分かるように。可変。

WSLでGUIアプリ起動

WindowsにVcXsrvをインストールする。
WSL内の環境変数に DISPLAY=:0.0 を設定する。
必要なら.bashrcに export DISPLAY=:0.0 を追記する。



Linuxの国設定, 言語設定とか項目一覧

Ubuntuとかで国とか言語とかを司る設定がいくつかある。
よく違いがわかってないのでまとめる。 間違ってても気にしない。

・言語の設定
・国の設定
文字コード
タイムゾーン
・キーボードレイアウトの設定
・入力メソッド(インプットメソッド)
かな漢字変換ソフトウェア


大体はlocalectlコマンドで設定できるみたい。
国の設定ていうのは言語以外の 例えばお金の種類とか なんかそんな国ごとに違う決まり事を設定する項目。
言語と国と文字コードの設定はまとめてするようで
localectl set-locale LANG=ja_JP.UTF-8
のように 言語_国.文字コードのように表現するらしい。 英語_アメリカ.ユニコードなら en_US.utf8 とか。
タイムゾーンは時差をうんぬんかんぬんする項目。 localectlでは設定できないのかな?

入力メソッドとは日本語のように文字とキーボードを一対一で対応させられない (文字種が多すぎてキーが足りないため) 言語で使用されるソフトで
複数のキー入力から一文字に変換 (s と i で「し」とか) してくれるソフトのこと。 ibusとかfcitxとか。 個人的にはソフトごとの違いがほとんど感じられなかった。
かな漢字変換ソフトは入力されたひらがなから漢字とかへ変換するソフト。mozcとかanthyとか。
入力メソッドとかな漢字変換ソフトは一緒になっていることが多いのかな?



Ubuntu設定超個人用メモ。

# setting
LanguageSupport
install
Text Entry
switci to next source using
Anty
hankaku
zenkaku hankaku
Power
KeyBoard
Appearance
Time & Data
Unlock from Launcher
cd->ls

# Terminal transparent

# Brightness and Wifi enable

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi_osi=Linux acpi_backlight=vendor"

# Change CapsLock Key to Ctrl

sudo gedit /etc/default/keyboard
XKBOPTIONS="ctrl:nocaps"

sudo apt-get update
sudo apt-get upgrade

#timeshift
sudo add-apt-repository ppa:teejee2008/ppa
sudo apt-get update
sudo apt-get install timeshift

#gparted
sudo apt-get install gparted

#git
sudo apt-get install git

# Firefox add-on
Tree Tabs
Sinple Translate
S3.Translator

# gedit setting
Display line numbers
Enable text wrapping
Do not split words over two lines
Highlight current line
Highlight matching brackets
Tab width : 4
Insert space instead of tabs
Enable automatic indentation
Color Scheme : Oblivion
Plugins : snippets

# Vim
sudo apt-get install vim

# Atom
sudo add-apt-repository ppa:webupd8team/atom
sudo apt-get update
sudo apt-get install atom


# ROS indigo

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu trusty main" > /etc/apt/sources.list.d/ros-latest.list'
wget http://packages.ros.org/ros.key -O - | sudo apt-key add -
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install ros-indigo-desktop-full
sudo apt-get install ros-indigo-rqt*
sudo rosdep init
rosdep update
sudo apt-get install python-rosinstall
gedit ~/.bashrc
source /opt/ros/indigo/setup.bash
source ~/.bashrc
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
cd ~/catkin_ws/
catkin_make
gedit ~/.bashrc
source ~/catkin_ws/devel/setup.bash
export ROS_HOSTNAME=127.0.0.1
export ROS_MASTER_URI=http://${ROS_HOSTNAME}:11311
alias cw='cd ~/catkin_ws'
alias cs='cd ~/catkin_ws/src'
alias cm='cd ~/catkin_ws && catkin_make'
source ~/.bashrc
roscore

# minicom
sudo apt-get install minicom


# g++5

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-5 g++-5
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 60 --slave /usr/bin/g++ g++ /usr/bin/g++-5
# to set first priority to gcc-5
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 1






#setting
Power
Display
Time&Date
Keboard
Appearance
TextEntry
Terminal transparent
StartUp
UnlockFromLauncher
cd->ls

# change capslock to ctrl

sudo gedit /etc/default/keyboard
XKBOPTIONS="ctrl:nocaps"

# gedit setting
Display line number
Display overview map
Display gird pattern
Highlight currentline
highlight matching brackets
Tab width: 4
Insert spaces instead of tabs
Enable automatic indentation
Color Scheme : Oblivion
Plugins : Snippets

sudo apt-get update
sudo apt-get upgrade


#timeshift install built

sudo apt-get install libgtk-3-dev valac libgee-0.8-dev libvte-2.91-dev libjson-glib-dev
make
sudo make install

# synergy 1.7.6

sudo apt-get update
sudo apt-get upgrade
sudo dpkg -i libssl1.0.0_1.0.2g-1ubuntu4.2_arm64.deb
sudo apt-get install git cmake make g++ xorg-dev libqt4-dev libcurl4-openssl-dev libavahi-compat-libdnssd-dev libssl-dev libx11-dev
./hm.sh conf -g1
./hm.sh build
startup
screen name
hide on startup


# Anthy
sudo apt-get install fcitx-anthy
Language Support
Keybord input method system :fcitx
Install Language :Japanese
Primary 1 :Japanese
reboot
Text Entry
Anthy
Language Support
Primary 1 :English
reboot

# XRDP

sudo apt-get install xrdp
sudo apt-get install lxde
sudo apt-get install lxde-common
sudo apt-get install lxsession-logout
echo "lxsession -s LXDE -e LXDE" > ~/.xsession
cd /etc/xrdp
sudo wget http://www.mail-archive.com/xrdp-devel@lists.sourceforge.net/msg00263/km-e0010411.ini
sudo mv km-e0010411.ini km-0411.ini
sudo chmod 644 km-0411.ini
sudo ln -s km-0411.ini km-e0010411.ini
sudo ln -s km-0411.ini km-e0200411.ini
sudo ln -s km-0411.ini km-e0210411.ini
sudo service xrdp restart

# IP setting
sudo gedit /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth0:0
iface eth0:0 inet static
address 192.168.0.111
netmask 255.255.255.0

/etc/init.d/networking restart

# Terminator

sudo apt-get install terminator
sudo update-alternatives --install /usr/bin/x-terminal-emulator x-terminal-emulator /usr/bin/terminator 30
# sudo update-alternatives --auto x-terminal-emulator
# sudo update-alternatives --config x-terminal-emulator
transparent background

# Geany
sudo apt-get install geany
sudo apt-get install geany-plugins
git clone https://github.com/codebrainz/geany-themes
mv ./geany-themes/colorschemes ~/.config/geany/
rm -r ./geany-themes

# video
sudo apt-get install kazam
sudo apt-get install vlc

# alias can command
gedit ~/.bashrc
alias canup="sudo ip link set can0 type can bitrate 500000 && sudo ip link set can0 up"

###############################################################

# autoware

export LD_LIBRARY_PATH=/usr/lib/aarch64-linux-gnu/
sudo gedit /usr/local/cuda/include/crt/common_functions.h
comment out follow line
// #define __CUDACC_VER__ "__CUDACC_VER__ is no longer supported. Use __CUDACC_VER_MAJOR__, __CUDACC_VER_MINOR__, and __CUDACC_VER_BUILD__ instead."
source /opt/ros/kinetic/setup.bash
sudo apt-get install -y openssh-server libnlopt-dev freeglut3-dev qtbase5-dev libqt5opengl5-dev libssh2-1-dev libarmadillo-dev libpcap-dev git
sudo apt-get install -y libnlopt-dev freeglut3-dev qt5-default libqt5opengl5-dev libssh2-1-dev libarmadillo-dev libpcap-dev libglew-dev gksu
sudo apt-get install -y libxmu-dev python-wxgtk3.0 python-wxgtk3.0-dev
sudo ln -s /usr/include/aarch64-linux-gnu/qt5 /usr/include/qt5
cd ~/
git clone https://github.com/CPFL/Autoware.git
cd Autoware
cd ros
./catkin_make_release -j1

# Editor
atom
VS code

# NFS


# g++ down grade
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install g++-4.9

Dockerメモ。

Dockerをちゃんと理解できて、使えるようになったらきれいにまとめます。



使い方



インストール



WSL上でのdocker



image作成



コマンド概念図


execとattachの違い


公式ドキュメント


GUIアプリ表示

エラー出るとき



x server 立ててデスクトップ環境を構築する。




Dockerfile
Docker入門(第四回)~Dockerfileについて~ | さくらのナレッジ
Dockerfileを書いてみる - Qiita



Dockerfileベストプラクティス
Dockerfile のベストプラクティス — Docker-docs-ja 1.9.0b ドキュメント
Dockerfileを改善するためのBest Practice 2019年版




GUI

GPU


WSL



docker, docker.io docker-ce, docker-ee, docker-engineとかの違い
dockerとdocker-engineは同じもの. もう古い.
docker-ceはコミュニティエディション. docker-eeはエンタープライズエディション.
docker.ioはubuntu管理のdocker. 最新版ではない. ちょっと遅れてリリースされる?

docker-ce入れときゃおkっぽい



sudo なしで




docker imageの保存場所変更




docker in docker




dockerが異なるディストリで動く理由

standard_init_linux.go:211: exec user process caused "exec format error"


ただ自分の場合はこっちが原因? CPUアーキテクチャーの不一致




arm64

cmakeとかg++とか

g++で外部のライブラリを使うときとかに指定しなきゃいけないもの。
・ソース(.c .cpp)
・ヘッダ(.h .hpp)の入っているディレクトリ(-Iで指定)
・ライブラリの入っているディレクトリ(-Lで指定)
・ライブラリ(.a .o等)(-lで指定)


・ヘッダファイル自体はソースコードの中で指定するものだからコンパイラオプションでは指定しない。
・また、#include "hoge.h" のように""で囲まれている場合は、最初にカレントディレクトリを探してくれるので、
この時対象のヘッダがカレントディレクトリある場合は「-I」指定はいらない。
・LD_LIBRARY_PATHにパスが通っているライブラリなら「-L」の指定はいらない。
・ちなみに実行時には.so等のダイナミックリンクライブラリがPATHに追加されている必要がある場合がある。
・pkg-configは、登録されているライブラリなら自動でこの「-I」「-L」「-l」指定をやってくれる。
`pkg-config --cflags hoge` `pkg-config --libs hoge`




cmakeのバージョン指定。

cmake_minimumrequired(VERSION 2.8.3)


add_definitionsでg++のオプションを追加できる。

add_definitions("-std=c++11")


CMAKE_BUILD_TYPEにsetでビルドタイプを指定できる。

set(CMAKE_BUILD_TYPE Release)


cmakeでpkg-configを使いたい時はfind_pkgで。

find_pkg(PkgConfig)
pkg_config_modules(OPENCV REQUIRED opencv)

これで、ヘッダディレクトリはOPENCV_INCLUDE_DIRSの変数に、
ライブラリディレクトリはOPENCV_LIBRARY_DIRSの変数に、
ライブラリはOPENCV_LIBRARIESの変数に入る。

インクルードディレクトリの指定。

include_directories(/hoge/fuga)


ライブラリのディレクトリの指定。

link_directories(/hoge/piyo)


コンパイルするソースの指定。

add_executable(hoge hoge.cpp)


リンクするライブラリの指定。

target_link_libraries(hoge fugelib)