CUBE SUGAR CONTAINER

技術系のこと書きます。

Linux

インターネットに疎通のないマシンに SSH Remote Port Forwarding + Squid で Web にアクセスさせる

インターネットに直接つながっていないマシンというのは意外とよくある。 とはいえ、そういったマシンでも当然のことながらセットアップ等の作業は必要になる。 その際、作業に必要なファイルは大抵の場合に SCP などで転送することになると思う。 とはいえ…

Ubuntu 18.04 LTS に OpenCL (NVIDIA CUDA Runtime) をインストールする

OpenCL は、CPU や GPU など様々なプラットフォームを抽象化して並列計算に用いるためのフレームワーク。 今回は Ubuntu 18.04 LTS + NVIDIA Tesla T4 の環境に OpenCL の NVIDIA CUDA ランタイムをインストールしてみる。 使った環境は次の通り。 $ cat /et…

Ubuntu 16.04 LTS に OpenCL (Intel CPU Runtime) をインストールする

OpenCL は、CPU や GPU など様々なプラットフォームを抽象化して並列計算に用いるためのフレームワーク。 今回は Ubuntu 16.04 LTS の環境に Intel の CPU ランタイムをインストールしてみる。 使った環境は次の通り。 $ cat /etc/lsb-release DISTRIB_ID=Ub…

Ubuntu 18.04 LTS で NVIDIA-Docker2 を使ってみる

(2019-09-22 追記) NVIDIA-Docker2 は現在では非推奨 (Deprecated) な方法となっています。 代わりに NVIDIA Container Toolkit を使ってください。 blog.amedama.jp ニューラルネットワークに代表される機械学習の一部のアルゴリズムでは、学習する上で大量…

coreutils の *sum を使ってワンライナーでハッシュ値を検証する

何処からかファイルをダウンロードしたときは、念のためハッシュ値が合っているか確認する場合があると思う。 今回は、そんなハッシュ値の検証をワンライナーでやる方法について。 シェルスクリプトとかで使うと便利だと思う。 動作確認に使った環境は次の通…

Linux Bridge でタグ VLAN を使う

今回は Linux Bridge (ネットワークブリッジ) でタグ VLAN (IEEE 802.1Q) を使う方法について。 設定が足らなくてだいぶ悩んだのでメモしておく。 使った環境は次の通り。 $ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=18.04 DISTRIB_CODENAME…

Python: Unix における python* コマンドと処理系のバージョンについて (PEP394)

今回は Unix ライクなシステムにおける python* コマンドの振る舞いと、処理系のバージョンについて色々と書いてみる。 きっかけは、以下のブログ記事を目にしたため。 rheb.hatenablog.com 上記のブログでは Red Hat Enterprise Linux 8 に搭載される予定の…

Ubuntu 18.04 LTS でコマンドのソースコードを取得する

Ubuntu を使っていて、このコマンドってどんな処理してるんだろうなーとか気になったときにソースコードを取り寄せる方法について。 使った環境は次の通り。 $ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=18.04 DISTRIB_CODENAME=bionic DISTR…

Linux の UNIX パスワード認証について調べた

ふと Linux ディストリビューションのユーザ認証周りについて気になって、その中でも特に UNIX パスワード認証について調べてみた。 UNIX パスワード認証というのは、Linux に限らず Unix 系のディストリビューションで広く採用されているパスワードを使った…

ソースコードから Python をインストールするときにビルドされないモジュールを確認する

ソースコードから Python をインストールするとき、環境によってはビルドされないモジュールが出てくる。 今回は、どんなモジュールがビルドされなかったかを確認する方法について。 先に結論から書くと、ビルドされなかったモジュールがあるときはログにメ…

まっさらな状態から Docker イメージを作る

Docker イメージというと、一般的には既存の Docker イメージをベースにして作る機会が多い。 そうしたとき Dockerfile にはベースとなるイメージを FROM 命令で指定する。 とはいえ、既存のイメージをベースにしない、まっさらな状態からイメージを作ること…

Python から Hadoop Streaming を使ってみる

今回は、任意のプログラミング言語から Apache Hadoop を使うことのできる Hadoop Streaming という機能を使ってみる。 通常、Hadoop を使って MapReduce のジョブを直接扱うときは Java を使ってマッパーとリデューサーを書くことになる。 ただ、ご存知の通…

フレッツ回線が遅すぎる問題を IPv6/IPoE と DS-Lite で解決した

最近というほど最近でもないんだけど、近頃はとにかくフレッツ回線のスループットが出ない。 下手をすると、モバイルネットワークの方が速いので時間帯によってはテザリングをし始めるような始末だった。 今回は、そんなスループットの出ないフレッツ回線を…

CentOS7 で Docker Swarm を試してみる

先日リリースされた Docker 1.12 から Docker Swarm が本体に同梱されるようになった。 この Docker Swarm というのは、複数の Docker ホストを束ねて使えるようにするオーケストレーションツールになっている。 今回は、その Docker Swarm がどういったもの…

Python: インターネットと疎通がない環境に Python パッケージをインストールする (改)

このブログでは、以前にインターネットと疎通のない環境で Python パッケージをインストールする方法について書いたことがある。 具体的には Wheel でパッケージングした配布物を pip を使ってインストールしていた。 blog.amedama.jp ただ、上記の記事には…

C: 静的ライブラリと共有ライブラリについて

C 言語で書かれた静的ライブラリと共有ライブラリについて、いまいち理解がちゃんとしていなかったのでまとめておく。 ライブラリというのは、複数のアプリケーションで使われるような共通の機能をまとめたものをいう。 今回使った環境は次の通り $ cat /etc…

CentOS: rpm でファイルが含まれるパッケージを調べる

なんか毎回忘れるのでメモっておく。 パッケージシステムの基盤として rpm を使っている Linux ディストリビューションでファイルがどのパッケージに含まれるか調べるやり方。 使った環境は次の通り。 $ cat /etc/redhat-release CentOS Linux release 7.2.1…

Ubuntu: apt-file でファイルが含まれるパッケージを調べる

あるファイルがどのパッケージに含まれているかを知りたくなる場面は意外と多い。 例えば何かをビルドするときにヘッダファイルがないといわれて、それがどのパッケージに含まれているか調べたいとか。 あるいは何かをパッケージングするときに、それが依存…

Linux ディストリビューションのコマンド実行履歴について

Linux ディストリビューションのコマンド実行履歴まわりについて理解を深めるために動作を調べたのでまとめておく。 主にコマンド実行履歴を残すファイルの指定方法とか history コマンドについて。 今回使った環境は次の通り。 $ cat /etc/lsb-release DIST…

Alien で rpm を deb に変換してみる

最近知ったんだけど Alien というソフトウェアを使うと rpm とか deb を相互に変換できるらしい。 今回はその Alien で CentOS7 向けの rpm を deb に変換して Ubuntu 14.04 LTS にインストールしてみた。 使った環境は次の通り。 $ cat /etc/lsb-release DI…

LVM (Logicl Volume Manager) を使ってみる

LVM (Logicl Volume Manager) はブロックデバイスを VG (Volume Group) という単位で束ねた上で、そこから LV (Logical Volume) という論理的なボリュームで切り出して使うことで柔軟性の高い管理を実現できる機能。 今回は、その LVM の基本的な使い方につ…

Linux のループデバイスを使ってみる

ループデバイスは Linux でイメージファイルをハードディスクのようなブロックデバイスとして扱うための機能。 今回使う環境は CentOS7 にした。 $ cat /etc/redhat-release CentOS Linux release 7.1.1503 (Core) $ uname -r 3.10.0-229.14.1.el7.x86_64 dd…

インターネットと疎通がないマシンに Python パッケージをインストールする

たまにインターネットと疎通がないマシンをデプロイしなきゃいけないこともあると思う。 今回は、そんな時にどうやって Python のパッケージを対象ホストにインストールすればいいかについて書く。 要約を先に書いておくと、まず OS のパッケージシステムを…

Docker v1.8 から RHEL/CentOS6 はサポート外になった

表題の通り Docker バージョン 1.8 から RHEL/CentOS6 はサポート外になった。 今後は Docker を使いたい場合 RHEL/CentOS7 を使う必要がある。 もうちょっと詳しく調べてみる 以下のチケットが Docker バージョン 1.8 のリリースされるちょっと前に話題にな…

rsync で効率的にファイルを同期する

rsync はファイルを別のディレクトリやリモートのホストと同期させるためのプログラムだ。 例えば rsync の代わりに cp コマンドを使った場合、宛先の状態に関わらず全てのファイルがコピーされてしまう。 それに対し rsync では、宛先の状態を確認して異な…

RCS (Revision Control System) を使ってファイルをバージョン管理する

RCS (Revision Control System) は大昔に使われていたバージョン管理システムだ。 21 世紀にもなって何で RCS なんかとも思うんだけど、恐竜が生きていた頃に作られたシステムの中には今でもファイルを RCS で管理しているものももしかすると残っていたりす…

sysbench を使って MySQL をベンチマークする

MySQL の設定や構成またはバージョンの違いによるパフォーマンスの変化を調べるにはベンチマークツールが必要になる。 今回は sysbench というツールを使って MySQL のパフォーマンスを測ってみよう。 検証環境には CentOS7 を使った。 $ cat /etc/redhat-re…

MariaDB Galera Cluster を CentOS7 で使ってみる

MySQL (MariaDB) の冗長化には Master-Slave 構成を組んだり MySQL Cluster を使ったりと色々ある。 その中で Galera Cluster は同期レプリケーションを用いたマルチマスタ型のクラスタが組むやり方だ。 今回はこの MariaDB Galera Cluster を CentOS7 で組…

HAProxy のログを rsyslog と logrotate でローテーションする

今回は RDB サーバや HTTP サーバを冗長化する際にロードバランサと共に用いられることが多い HAProxy のログを rsyslog と logrotate を使ってローテーションする際の設定について書く。 検証用の環境には CentOS7 を使った。 $ cat /etc/redhat-release Ce…

keepalived のログを rsyslog と logrotate でローテーションする

今回はホストの冗長化するのに使う keepalived のログを rsyslog と logrotate を使ってローテーションさせる方法について書く。 検証環境には CentOS7 を使った。 $ cat /etc/redhat-release CentOS Linux release 7.1.1503 (Core) $ uname -r 3.10.0-229.1…