HCP Pipelineを準備するのは簡単ではありませんが、東京大学小池研の植松明子さんとディスカッションしている中で、Ubuntu 18.04にHCP Pipelineを設定する方法を確立できたのでご紹介します。植松さんのinputに感謝申し上げます。
カテゴリ別アーカイブ: Ubuntu
UbuntuでGnumericを用いてCSVをXLSXに変換する方法
あるプロジェクトで、csvファイルをxlsxに変換する必要がありました。
いろいろな方法がありますが、比較的やりやすかった方法がありましたので、備忘録として記載します。
方法は、gnumeric (とnkf)を使う方法です。インストールは簡単です。
sudo apt install gnumeric nkf
ここでは、例として、sample.csv を sample.xlsx に変換したいと考えます。
- 文字コードをUTF-8に変換
- Gnumericで変換
- XLSXシートのタブ名から.csvを取り除く
日本語が入っている場合、Shift-JISなどだとうまくいかない場合があるので、文字コードをUTF-8に変換します。
nkf -wLu --overwrite sample.csv
Gnumericについているssconvertというプログラムが簡単に変換してくれます。
ssconvert sample.csv sample.xlsx
簡単なのですが、この場合、sample.xlsxのシート名が sample.csv となってしまいます。これは気持ち悪いなと思いました。
なので、これを取り除く工夫が以下です。xlsxをxmlに変換し、xmlの中の.csvをsedで取り除き、そして、再度xmlをxlsxに変換します。
ssconvert --export-type=Gnumeric_XmlIO:sax:0 $sample.xlsx sample.xml sed -i 's/.csv//' sample.xml ssconvert --export-type=Gnumeric_Excel:xlsx sample.xml sample.xlsx rm sample.xml
これで望みどおりの変換ができました。
以上、まとめると、以下のようなスクリプトになります。
#!/bin/bash
#prerequisites: nkf and gnumeric
for f in *.csv
do
nkf -wLu --overwrite $f
base=${f%.csv}
ssconvert $f ${base}.xlsx
ssconvert --export-type=Gnumeric_XmlIO:sax:0 ${base}.xlsx ${base}.xml
sed -i 's/.csv//' ${base}.xml
ssconvert --export-type=Gnumeric_Excel:xlsx ${base}.xml ${base}.xlsx
rm ${base}.xml
mv $f csv
done
UbuntuでDropboxの同期が進まない時は、ディレクトリ数を確認する
最近、あるワークステーションを新規にセットアップしました。
いつもファイルはDropbox経由で同期することによって楽しているので、今回も同じようにしたら、
1週間たっても同期がされません。
おかしいなと思っていろいろ調べてみたら、公式ドキュメントにヒントがありました。
同期できない場合 – 互換性のない特殊文字と不良なファイル名に関する問題の解決方法
Linux で 1 万件以上のフォルダを監視する
Linux 版の Dropbox デスクトップ アプリは、デフォルト設定により 1 万件以上のフォルダを監視することはできません。制限数を超えた場合は監視されないため、同期中に無視されます。簡単な回避策として、まずターミナルを開き、次を入力してください。
echo fs.inotify.max_user_watches=100000 | sudo tee -a /etc/sysctl.conf; sudo sysctl -p
このコマンドでシステムに 10 万件までのフォルダを監視するように指示することができます。コマンドを入力しパスワードを入力したら、すぐに Dropbox が同期を再開します。
私のDropbox内のフォルダ数はどのくらいだろう?と思って、以下のコマンドでディレクトリ数を数えてみました。
find Dropbox -type d | wc -l
その結果ですが、14454 と出てきました。1万件超えています。
そこで、アドバイス通り、以下のコマンドを入力しました。
echo fs.inotify.max_user_watches=100000 | sudo tee -a /etc/sysctl.conf; sudo sysctl -p
そうしたところ、同期がはじまりました!システムで何か変な設定をしてしまったのではないかと心配だったのでほっとしました。
普段使っているDropboxは、少しずつ増えていっているので、おそらく監視しているフォルダ数がそれほど多くないのかもしれませんね。
Ubuntu上のFSLやFreeSurferでsyntax errorが出る時の対処法
Ubuntu上でFSLやFreeSurferを走らせる時、
Syntax error: "(" unexpected.
といったエラーが出ることがあります。
この原因を探っていたらわかったことがありました。
FSLのプログラムは、基本、bashで動くことを前提にしていますが、ファイルの冒頭のShebang行は、#!/bin/shとなっています。
RedHatやCentOSは、/bin/sh は、bashにシンボリックリンクが張られていますが、
Ubuntuでは、dashにシンボリックリンクが張られています。
ls -l で確認するとすぐに確認できます。
$ ls -l /bin/sh lrwxrwxrwx 1 root root /bin/sh -> dash
dashとbashは完全に互換性がないため、ときにbashの文法が通用しないことがあります。
解決策は以下の2つです。
- シェルスクリプトのShebang行を #!/bin/bash に変更する
- dpkg-reconfigureで、dashをbashに変更する
自分でシェルスクリプトを書く場合などはこれがいいでしょう。
しかし、FSLでは、300以上のスクリプトがありますので、これを全部変えるのはめんどくさいですね。
Ubuntuでは、 dpkg-reconfigure dash というコマンドで、dashを使わずにbashを使うようにすることができます。
インタラクティブに行うには、以下のコマンドを叩きます。
$ sudo dpkg-reconfigure dash
すると、次の画面が出るので、「いいえ」を選びます。

再度、/bin/shのシンボリックリンク先を確認してみます。
$ ls -l /bin/sh lrwxrwxrwx 1 root root /bin/sh -> bash
今度はbashに変更されていることがわかります。
なお、インタラクティブでなく変更したい際は、以下で行います。
いくつかのサイトで情報が提供されていましたが、正しくないものもありましたので、試行錯誤した結果、以下が最適な解決法とわかりました。
echo "dash dash/sh boolean false" | sudo debconf-set-selections sudo dpkg-reconfigure --frontend=noninteractive dash
Ubuntu 18.04 に gdisk を使用して 12TB のHDDを増設したときのメモ
これまで2TBよりも大きいHDDの増設には parted を使用してきましたが、先日うまくいかないことがあり、 gdisk を試したところ、いい感じでうまくいったので、メモしておきます。
Ubuntuで有線LANで接続しようとしても、「デバイスは管理されていません」と出てしまう時の簡単な解決法
Ubuntu 18.04で経験した現象ですが、無線LANは接続できるのに、有線LANで接続しようとすると、
「デバイスは管理されていません」”device not managed” と出てしまって接続できないことがあります。
こんな感じです。


ネットを探してみるといろいろな情報が出てきますが、日本語の情報だと、「PCにあったドライバをインストールする」という情報が多いです。
しかし、これは汎用的ではありません。もっと根本的な解決法がほしいと思いました。
Ubuntu上でのVirtualBoxで仮想マシンを立ち上げようとしたときに Kernel driver not installed (rc=-1908) のエラーが出た場合の対処方法
自分が頻回に遭遇するエラーなので、備忘録として載せておきます。
Ubuntuでカーネルをアップデートすると、VirtualBoxを起動するときに、以下のエラーが出ます。

このエラーがでたときに、このまま
sudo /sbin/vboxconfig
としてもエラーが出て解決しません。(細かいエラーを保存し忘れました)
解決方法はシンプルで、新しいカーネルにあったカーネルヘッダーをインストールすることです。
以下に具体的な解決法を示します。
- カーネルのバージョンを確認
- 該当するバージョンのカーネルヘッダーをインストール
- /sbin/vboxconfig の実行
$ uname -r 4.15.0-22-generic
今の場合、4.15.0-22-generic であることがわかります
上記を賢く使ってインストールします。
$ sudo apt update $ sudo apt install linux-headers-$(uname -r)
これでカーネルヘッダーがインストールされます
$ sudo /sbin/vboxconfig vboxdrv.sh: Stopping VirtualBox services. vboxdrv.sh: Building VirtualBox kernel modules. vboxdrv.sh: Starting VirtualBox services.
これで無事にVirtualBoxの仮想マシンが起動するようになります。
Ubuntu 16.04への MRtrix3 インストールスクリプト
先日、ABiSチュートリアルで順天堂大学の鎌形先生から、FSL, FreeSurfer, MRtrix3を組み合わせたコネクトーム解析の素晴らしい講義を聞く機会がありました。
MRtrix3はインストールしなきゃと思いつつできていませんでしたが、せっかくですから、モチベーションが高いうちにインストールしようと思い、Ubuntu 16.04へのインストールを行いました。
http://mrtrix.readthedocs.io/en/latest/installation/linux_install.html
こちらに説明がありますが、これをまとめてみました。
関心のある方はこちらからダウンロードしてみてください。(右クリック→名前をつけて保存)
保存した後、
$ chmod 755 mrtrix3_installer_ubuntu1604.sh $ ./mrtrix3_installer_ubuntu1604.sh
でインストールができます。
ちなみに、上記スクリプトは以下のようになっています。
GitHubからダウンロードし、コンパイルし、.bashrcにパスを通すというシンプルなことをやっています。
#!/bin/bash #Script to setup mrtrix3 for Ubuntu 16.04 #Install prerequisite packages sudo apt-get install git g++ python libgsl0-dev zlib1g-dev libqt4-opengl-dev libgl1-mesa-dev libqt5svg5* libeigen3-dev #Download MRtrix3 source if [ ! -e $HOME/git ]; then mkdir $HOME/git fi cd $HOME/git git clone https://github.com/MRtrix3/mrtrix3.git #Configuration and build cd mrtrix3 ./configure ./build #.bashrc echo >> $HOME/.bashrc echo "#MRtrix3" >> $HOME/.bashrc echo 'export PATH=$PATH:$HOME/git/mrtrix3/bin:$HOME/git/mrtrix3/scripts' >> $HOME/.bashrc
How to make a UEFI-based bootable USB stick with Ubuntu mini.iso
Ubuntu mini.iso is useful when we want to build a system with minimal packages.
It is useful to make a bootable USB stick.
Below is how to make UEFI-based bootable USB stick with Ubuntu mini.iso.
Required package: 7-zip
You can get 7-zip with the following command;
sudo apt install p7zip-full
Now we will use “7z” command.
Two options are needed. “x” for extract and “-o” to specify output directory. If the directory doesn’t exist, 7z creates automatically.
- Extract iso image into a directory
- Extract efi.image under boot/grub
- Copy the contents under “usbdisk” to USB stick
Now I want to extract images into “usbdisk” directory.
7z x -ousbdisk mini.iso
This will make “usbdisk” directory and extract into the directory. Note that no space is allowed between “-o” and target directory. I tried space or quotation, without success.
One more thing. In order to make the USB stick bootable with UEFI, we need to extract efi.img under boot/grub. This can be easily done with the following command. (You don’t have to change directory.)
7z x -ousbdisk usbdisk/boot/grub/efi.img
This command will extract efi.img, which will be “efi” directory under which bootx64.efi and grubx64.efi exist into the usbdisk directory.
Finally we just copy the contents under usbdisk to a USB.
That’s it. Now try to boot from USB disk.
Install igraph in R-studio on Ubuntu 16.04
I tried to install igraph simply by running install.packages(‘igraph’), which resulted in compile error.
Gathering information scatterd on websites, I came to the conclusion.
My Circumstance is as follows;
Ubuntu
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.3 LTS
Release: 16.04
Codename: xenial
$ uname -a
Linux vincent 4.10.0-42-generic #46~16.04.1-Ubuntu SMP Mon Dec 4 15:57:59 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
R-studio
Version 1.1.383
sudo apt update sudo apt install libssl-dev libcurl4-openssl-dev libxml2-dev
Then running install.packages(‘igraph’) in R-studio succeeded without error.
Ubuntu 16.04+fcitx+mozcで、viでインサートモードになる時は、mozcは起動させず、作業後にESCを押した時には、自動でmozcをOFFにする設定
私は、Ubuntu 16.04 (をカスタマイズしたLin4Neuro 16.04)でfcitx+mozcで日本語入力を行っています。
エディタはvimを利用しています。
多くの方がネットに記載されていますので、詳細は書きませんが、私がvimで日本語文書を書くとき、
- 日本語で入力している時、入力が終わった後、ESCキーを押しても日本語入力の状態のままなので、一度mozcを切ってからでないと、ノーマルモードになれない。
という問題がありました。
この点に関して、私がよく参考にさせていただいている「いくやの斬鉄日記」にまさにこれに関する記事があり、中国語ですが、この問題を解決する .vimrc に記載する設定のリンクが紹介されていました。
早速、以下を ~/.vimrc に記載しました。(中国語のコメントは、英語に変換してあります)
"##### auto fcitx ###########
let g:input_toggle = 1
function! Fcitx2en()
let s:input_status = system("fcitx-remote")
if s:input_status == 2
let g:input_toggle = 1
let l:a = system("fcitx-remote -c")
endif
endfunction
function! Fcitx2zh()
let s:input_status = system("fcitx-remote")
if s:input_status != 2 && g:input_toggle == 1
let l:a = system("fcitx-remote -o")
let g:input_toggle = 0
endif
endfunction
set ttimeoutlen=150
"Leave Insert mode
autocmd InsertLeave * call Fcitx2en()
"Enter Insert mode
autocmd InsertEnter * call Fcitx2zh()
"##### auto fcitx end ######
これでvimを起動したところ、日本語でいろいろ書いた後に、ESCを押してノーマルモードに戻ると、自動でmozcがoffになりました。やった!という感じです。
しかし、もう少し使っていて、不便に感じることがありました。それは、vimを起動して最初の挿入モードになるときに必ず mozc が立ち上がってしまうことです。日本語の文章を書くときはいいのですが、スクリプトを書くときは邪魔になります。ここは自動じゃないほうがいいなと思いました。
で、上の記載をよくよく見ると
Fcitx2en() というファンクションと
Fcitx2zh() というファンクションがあり、
前者はESCが押された時に自動でinput method (IM)をoffにする機能であり
後者は挿入モードになった時に自動でIMをonにする機能のようです。
私は後者の機能がいらないんだと気づきました。
なので、以下のように、Fcitx2zh()のところを削除しました。
"##### auto fcitx ###########
let g:input_toggle = 1
function! Fcitx2en()
let s:input_status = system("fcitx-remote")
if s:input_status == 2
let g:input_toggle = 1
let l:a = system("fcitx-remote -c")
endif
endfunction
set ttimeoutlen=150
"Leave Insert mode
autocmd InsertLeave * call Fcitx2en()
"##### auto fcitx end ######
こうしたところ、私の期待していたように
- vimでノーマルモード→挿入モードになった時にはIMは起動しない
- 必要時に手動でIMを起動
- ESCを押すと自動でIMをoff
となりました。
これでvimがさらに便利になりました。
自分の備忘録として記載しておきます。
Ubuntuのapt-get updateで「ハッシュサムが適合しません」と出た時の対処法
先日、Ubuntuでapt-get updateを行った所、以下のエラーに遭遇しました。
W: http://jp.archive.ubuntu.com/ubuntu/dists/trusty-updates/main/source/Sources の取得に失敗しました ハッシュサムが適合しません
このような場合の解決法がいくつか提示されています。よくみられているもののひとつに、Ubuntuフォーラム内の投稿があります。
これでいいのですが、本質は何か考えてみました。
本質は、
/var/lib/apt/lists
の中にあるファイルとの比較で失敗しているようです。
したがって、消せばいいのは、この中身で、apt-getはその下にあるpartialディレクトリがなかったら自動で作成してくれます。
なので、やればいいのは、たった一つです。
$ sudo rm -r /var/lib/apt/lists/*
これでapt-get updateを行えば問題は解決するはずです。
自分の備忘録として残しておきます。
Ubuntu 16.04 における plymouth
Ubuntu 16.04になってから、Plymouthの挙動が変なので、いろいろ調べたところ、以下のことがわかりました。
これまでは、テーマは、/lib/plymouth/themesの下に保存されていましたが、これからは、/usr/share/plymouth/themesの下に保存されるようになったようです。
したがって、自作のテーマを使いたい場合、以下を行う必要があります。今、テーマはmytheme/mytheme.plymouthと仮定します。
- 自作の mytheme.plymouth の中のファイルのパスを “/lib/plymouth” -> “/usr/share/plymouth” に変更
- update-alternativesで新たにdefault.plymouthを設定
$ sudo update-alternatives --install \ /usr/share/plymouth/themes/default.plymouth default.plymouth \ /usr/share/plymouth/themes/mytheme/mytheme.plymouth 100
$ sudo update-alternatives --config default.plymouth
$ sudo update-initramfs -u
場所が変更になったことだけ頭においておけば、そこまで悩む必要はなさそうです。
ANTsのUbuntu 14.04へのインストール方法(ソースからのコンパイル)
2018.09.09追記:この記事は古くなっています。最新版は、こちらに準備しましたので、こちらをご覧ください。
先日、ANTsをMacにインストールする方法を記載しましたが、Ubuntuでも同じことができるので、記載します。
開発者によるHow-toはこちらに記載されています。
Thinkpad X250でUbuntu 14.04を動かすときに、タッチパッドを無効にする方法
私は、今、Thinkpad X250とT430を使っています。Thinkpad T430では、BIOSで、タッチパッドを無効にすれば、そのままタッチパッドが無効になったので、よかったのですが、同じことをX250でやっても効果がありません。
それでいろいろ調べてみました。
結論は、以下の方法が一番早いかと思います。
ターミナルで以下をタイプします。
$ synclient TouchpadOff=1
ただ、これは、一時的なもので、ずっとそうしたくない場合は、自動でこれが動くようにしてあげればいいわけです。
私はXFCE環境なので、XFCEでどうするかを調べました。
2つのファイルを準備する必要があります。
- disable-touchpad.sh (名前はなんでもいいです)
これには、以下の2行だけ記載されています。
#!/bin/sh synclient TouchpadOff=1
これを実行権限をつけた後、パスの通っているディレクトリに保存します。私は、~/binに起きました。
これには、以下の3行だけ記載されています。
[Desktop Entry] Type=Application Exec=disable-touchpad.sh
この保存場所が大事なのですが、
~/.config/autostart
に保存します。autostartがなければ自分で作れば大丈夫です。
これで、ログアウトし、再度ログインすると、めでたく、Touchpadが無効になっています。
ちなみに、検索するとよく出てくる
/usr/share/X11/xorg.conf.d/50-synaptics.conf
の一番最後に、以下を記載
Section "InputClass" Identifier "no need for accelerometers in X" MatchProduct "SynPS/2 Synaptics TouchPad" Option "Ignore" "on" EndSection
というのは、ひとつ間違えるとシステムが起動しなくなることもあり得るので、注意が必要です。
Packages to install to run MITK-Diffusion on Ubuntu 14.04
MITK-Diffusion needs the following packages to run on Ubuntu 14.04.
$ sudo apt-get install libqtwebkit4 sqlite libqt4-sqlite
Packages to install to run MITK-2015.05.2 on Ubuntu 14.04
MITK-2015.05.2 depends on Qt5, which makes users to install some additional packages.
With trials and errors, below is what you need to do to run MITK-2015.05.2 on Ubuntu 14.04.
- build-essential
- Core of Qt5
- Two more libraries…
- Set environment variable
You need this to run Qt5
$ sudo apt-get install build-essential
$ sudo apt-get install qt5-default qttools5-dev-tools
With this command bunch of software packages will be installed on your system.
You need two more libraries to run MITK-2015.05.2
sudo apt-get install libqt5webkit5 libqt5svg5
As the official site points out, you need to set envirament variable as below (when you use bash). I put this in ~/.bashrc
export QT_PLUGIN_PATH=/usr/lib/x86_64-linux-gnu/qt5/plugins
Now it works!
Thinkpad X250, X201s, T430s上のUbuntu 14.04に対して、lm-sensorsとthinkfanを用いて熱対策を行う方法
しばらく前から気になっていたのですが、Thinkpad X201sやThinkpad X250にUbuntu 14.04を入れると、妙に熱くなる時がありました。
lm-sensorsをインストールして、温度を見たところ、CPUの温度が77℃に達していました!これは大変と思いました。
調べたところ、”Thinkpad overheating with Ubuntu”といった感じの記事がいろいろ見つかりました。
それらを見てみると、どうもファンの制御がうまくいっていないようです。
そんな中、”Ubuntu 11.10 on ThinkPad X220 でファン制御“という投稿を見つけました。
Ubuntu 14.04でLibreOfficeを4.xから5.xにアップグレードする方法
この記事は、もともとは、Ubuntu 12.04でLibreOfficeを3.xから4.xにアップグレードする方法に記載していたものですが、Ubuntu 14.04においても同様の方法でいけますので、改めて記載します。
Ubuntu 14.04を利用していると、LibreOfiiceは4.xのままです。
しかし、LibreOfficeは5.xにアップグレードされ、互換性なども以前にまして高まっています。
以下の方法で、簡単にLibreOfficeを4.xから5.xにアップグレードできます。
sudo add-apt-repository ppa:libreoffice/ppa sudo apt-get update sudo apt-get dist-upgrade
ここでポイントは、apt-get updateの後にapt-get dist-upgradeを行うことです。
apt-get upgradeとapt-get dist-upgradeの違いは、man apt-getに以下の記載があります。
upgrade
upgrade は、現在システムにインストールされている全パッケージの最新バージョンを、/etc/apt/sources.list に列挙した取得元からインストールするのに使用します。現在インストール中のパッケージに新しいバージョンがあれば更新しますが、いかなる時も現在インストール中のパッケージの削除は行いません。対象のパッケージが、他のパッケージのインストール状態を変更せずに更新できない場合は、現在のバージョンのままとなります。最初に update を実行しておき、apt-get にパッケージの新しいバージョンがあることを知らせる必要があります。dist-upgrade
dist-upgrade は、upgrade の機能に加え、新バージョンのパッケージに対する依存関係の変更を知的に操作します。apt-get は「洗練された」競合解決システムを持ち、必要とあらば比較的重要でないパッケージを犠牲にして、最重要パッケージの更新を試みます。そのため dist-upgradeは、いくつかのパッケージを削除する可能性があります。/etc/apt/sources.list ファイルには、必要なパッケージファイルを検索する場所のリストが含まれています。
upgradeは全く削除されることなく、dist-upgradeは必要あらばファイルを削除する可能性があるわけですね。今回、LibreOfficeの3.xから4.xへのアップグレードには、いくつかのファイルが削除される必要もあるので、dist-upgradeを利用することとなります。
何はともあれ、この3つのコマンドで、LibreOfficeを安定した最新版にアップグレードできます。