term タグ別の記事一覧

CentOS+Docker関連でregistry.access.redhat.comのDockerレジストリからpullできなくなった場合の対処

 CentOS 7でpython-rhsm-certificatesパッケージの仕様が変わり、今までここに含まれていたRed Hat関連の証明書がなくなってしまった模様(CentOS Bug Tracker)。そのせいで、Red Hatが提供しているDockerコンテナリポジトリであるregistry.access.redhat.comにCentOS 7環境からアクセスできなくなる状況が発生する。

 たとえば、CentOS上で組んだKubernetes環境ではregistry.access.redhat.com/rhel7/pod-infrastructureというコンテナが使われるのだが、このイメージがPullできなくなるエラーが発生する。

ErrImagePull: "image pull failed for registry.access.redhat.com/rhel7/pod-infrastructure:latest, this may be because there are no credentials on this request.  details: (open /etc/docker/certs.d/registry.access.redhat.com/redhat-ca.crt: no such file or directory)"

 この変更はほかのさまざまなパッケージでも影響が出ているようだが、根本的な問題解決はRed Hat/Cent OS側で対処してもらうしかない。とりあえずは古いpython-rhsm-certificatesパッケージをダウンロードして、そこから問題の証明書を抜き出して手動で配置することで対処は可能。手順的には下記となる。

$ wget http://mirror.centos.org/centos/7/os/x86_64/Packages/python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm
$ rpm2cpio python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm | cpio -iv --to-stdout ./etc/rhsm/ca/redhat-uep.pem | tee redhat-uep.pem
$ sudo cp redhat-uep.pem /etc/rhsm/ca/

CentOSでRuby 1.9.3やPython 2.7、Python 3.3などを使う簡単な方法

 昨年、『米Red Hat、RHELの開発環境をアップデートする「Developer Toolset 2.0」および「Software Collections 1.0」をリリース』という話題がありました。

 Red Hat Enterprise Linux(RHEL)は安定性を重視し、かつ長期にわたって利用されることを想定しているため、ディストリビューションに含まれているソフトウェアは比較的古めのものになっています。そのため、RHELに標準で含まれていない最新のソフトウェアを利用したい場合、自分でソースコードからビルドするか、サードパーティのリポジトリを利用する必要がありました。

 この「Software Collections」(以下SCL)は、そういった背景の下、RHELに含まれていないソフトウェア、もしくはRHELに含まれているものよりもバージョンが新しいソフトウェアを提供するもので、たとえば以下のようなソフトウェアが提供されます。

Ruby 1.9.3 (ruby193)
Python 2.7 (python27)
Python 3.3 (python33)
PHP 5.4 (php54)
Perl 5.16.3 (perl516)
Node.js 0.10 (nodejs010)
MariaDB 5.5 (mariadb55)
MySQL 5.5 (mysql55)
PostgreSQL 9.2 (postgresql92)

 特にRubyにおいては、近年RHELに収録されているRuby 1.8.7をサポートしないライブラリやソフトウェアが増えてきたため、Ruby1.9.3が簡単に導入できるのは便利なところです。

 そして、CentOSがRed Hatの正式プロジェクトとなった影響なのか、このSCLもCentOSで利用できるようになりました(CentOS-announceメーリングリストに流れたアナウンスメール)。

 導入方法は非常に簡単で、「centos-release-SCL」パッケージをインストールするだけです(ドキュメント)。ただし、利用できるのはx86_64のみとなっています。

# yum install centos-release-SCL

 centos-release-SCLパッケージのインストール後は、yumコマンドでそれぞれのパッケージをインストールできるようになります。たとえばruby 1.9.3をインストールするには、以下のようにします。

# yum install ruby193

 ただし、SCLに含まれるソフトウェアは、そのままでは実行できません(ruby193というパッケージをインストールしても、ruby193というコマンドが利用できるようになるわけではない)。実行する二は、sclコマンドを利用する必要があります。sclコマンドは、引数で指定したパッケージを有効にした状態で指定したコマンドを実行するものです。たとえば、以下のようにするとRuby 1.9.3を有効にした環境で「ruby -v」コマンドを実行できます。

$ scl enable ruby193 'ruby -v'
ruby 1.9.3p448 (2013-06-27) [x86_64-linux]

 また、次のように引数にシェルを指定すれば、指定したパッケージが有効になったシェル環境を起動できます。

$ scl enable ruby193 bash
$ ruby -v
ruby 1.9.3p448 (2013-06-27) [x86_64-linux]
$ exit

 ちなみに、この環境でRubyGemをインストールしたい場合はroot権限でsclコマンドを実行してからgemコマンドでインストールする必要があります。

# scl enable ruby193 bash
# gem install <インストールしたいパッケージ>

 そのほかの使い方などはドキュメントをご参照ください。

SDL_mixerのspecファイル

 SDL_mixerはCentOS用のパッケージが用意されていない&提供されているSRPMをx64環境でビルドすると64ビットバイナリが/usr/lib/以下にインストールされてしまうという問題があるので、これを修正するspecファイルを作成した。Gist:SDL_mixer.specで公開している。

CentOS 6のSambaでファイル共有時に問題が発生したら

 CentOS 6のSambaでファイル共有がうまく行かない場合、SELinuxによって各種アクセスがブロックされている可能性がある。詳細はsamba_selinuxドキュメントに記載されている。

$ man samba_selinux

 とりあえず、smbclientでログインには成功するのにホームディレクトリにアクセスできない、という場合、次のコマンドで解決できた。

# setsebool -P samba_enable_home_dirs 1

64ビット版CentOSで32ビット用プログラムを動かす

 64ビットのLinux環境で32ビットのプログラムを動かそうとする場合、32ビット版のライブラリが不足していて実行できない場合がある。

/lib/ld-linux.so.2: bad ELF interpreter: No such file or directory

 と出た場合、次のように32ビット版のlibstdc++をインストールすればOK。

$ sudo yum install libstdc++.i686

CentOS 6の初期設定メモ1

 CentOS 6の初期設定メモその1。ユーザーを作成してSSHの設定を行うまで。

ユーザーの作成

# groupadd hylom
# useradd -d /home/hylom -g hylom -m hylom
# chsh -s /bin/bash hylom
# passwd hylom

sudoの設定

 sudoersファイルを編集する。

# yum install sudo
# visudo

 sudoersファイルに次のようにhylomを追加。

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
hylom   ALL=(ALL)       ALL

SSH関連の設定

 SSH公開鍵を作成する。

# su hylom
$ ssh-keygen
$ cd ~/.ssh
$ vi authorized_keys 
$ chmod 600 authorized_keys

 authorized_keysにはログインに使用する公開鍵をコピー&ペーストしておく。

 SSHサーバーの設定。

# vi /etc/ssh/sshd_config

 sshd_configファイルでPermitRootLoginをnoに、PasswordAuthenticationをnoに設定し、rootでのログインを禁止&認証に公開鍵必須とする。

#PermitRootLogin yes
PermitRootLogin no
#PasswordAuthentication yes
PasswordAuthentication no

ホスト名の設定

# vi /etc/sysconfig/network
# hostname <hostname>

CentOS 5を延命させる

 CentOS 5を使っていると、含まれているソフトウェアのバージョンが古かったり、そもぞもリポジトリにそのソフトウェアがなかったりして困ることがある。さっさとCentOS 6にアップデートすればいい話なのだが、面倒くさいとか、そもそもフルバックアップしないと行けないとか色々と大変だったりするので(CentOS 5からCentOS 6へのアップデートは再インストールが推奨されている)、なんとかまだCentOS 5をこのまま使いたい、そんな時に役立つのがEPEL。

 EPELは「Extra Packages for Enterprise Linux」の略で、Fedora Projectが運営しているRed Hat Enterprise Linuxおよびその互換OS向けのパッケージリポジトリ。同種のものにrpmforgeがあるわけですが、Fedora Projectが運営しているということでEPELのほうがやや信頼感が(個人的には)高いということでこちらを使うことに。

 導入方法は簡単。以下を実行するだけ。

$ sudo rpm -Uvh http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/5/i386/epel-release-5-4.noarch.rpm

 これでgitとかpython26とかをyumでインストールできるようになります。

CentOS 5.6上でXenを使って仮想環境を作るための基本設定

 先日MSDNを契約、テスト用に自由にOSを使えるようになったので、テスト用のCore i7マシンにXenを導入して仮想マシン上でテスト環境を作ろう、という話。いままではテスト環境が必要になったら実環境上にインストール→不要になったら削除、を繰り返していたんだけど、仮想環境を使えばスナップショットも取れるし便利だろう、ということで。

 ベースの環境はCentOS 5.6。CentOS 5.6上にXen環境を構築する解説はネット上にたくさんあるわけですが、その多くがGUIを使ったセットアップ方法を解説していて、コンソールベースのCentOS環境でインストールする方法の解説は少なかったので以下に手順をメモしておきます。

 まず、仮想化関連パッケージを導入。

# yum groupinstall Virtualization
# yum install kernel-xen

 Xenを動かすには専用カーネルが必要なので、/boot/grub/menu.lstを確認してXen対応カーネル(2.6.xx-xxx.x.x.el5xen)でブートされるように設定してリブート。また、xendおよびxendomainsサービスを起動するように設定しておく。

# /sbin/chkconfig xend on
# /sbin/chkconfig xendomains on
# /sbin/service xend start
# /sbin/sercice xendomains start

 仮想マシンの作成とOSインストールは「virt-install」コマンドで行える。Fedora 15をインストールするなら下記のような感じに。

# /usr/sbin/virt-install --nographics --prompt
Would you like a fully virtualized guest (yes or no)? This will allow you to run unmodified operating systems. no
 What is the name of your virtual machine? fedora
 How much RAM should be allocated (in megabytes)? 1024
 What would you like to use as the disk (file path)? /var/lib/xen/images/fedora.img
 How large would you like the disk (/var/lib/xen/images/fedora.img) to be (in gigabytes)? 10
 What is the install URL? http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/releases/15/Fedora/i386/os/
 :
 :
インストールを開始しています...
ファイル .treeinfo を読出中...                             |  906 B     00:00
ファイル vmlinuz-PAE を読出中...                           | 3.7 MB     00:00     TA
ファイル initrd-PAE.img を読出中...                        |  94 MB     00:40     TA
ストレージファイルを作成中...                         |  10 GB     00:00
ドメインを作成中...                                        |    0 B     00:04
Connected to domain fedora
エスケープ文字は  ^] です
[    0.000000] Reserving virtual address space above 0xf5800000
[    0.000000] Initializing cgroup subsys cpuset
 :
 :

 コンソール上で仮想環境上のコンソールが表示され、インストールを行える。

コンソール上でFedoraのインストーラを操作する

コンソール上でFedoraのインストーラを操作する

 インストール完了語は、Ctrl-]でコンソールを抜けられる。稼働中の仮想マシンは「xm list」コマンドで確認可能。

# /usr/sbin/xm list
Name                                      ID Mem(MiB) VCPUs State   Time(s)
Domain-0                                   0     2012     8 r-----    780.4
fedora                                     2     1024     1 -b----      9.9

 仮想マシンのコンソールに接続するには、「xm console <仮想マシン名>」を実行すればよい。コンソール接続の終了は先と同様Crtl-]。

# /usr/sbin/xm console fedora

x86_64版CentOS 5.5で64ビット版FirefoxでJavaプラグインを使う

 x86_64版CentOS 5.5のFirefoxでのJavaプラグイン導入に軽くハマったのでメモ。

 x86_64版のCentOS 5でFirefoxにJavaプラグインを導入したい場合、ググると「32ビット版Firefox+32ビット版Javaランタイムを使え」という話がぼちぼちとヒットするわけですが、とりあえずJavaプラグインだけを使いたい場合は64ビット版でも可能なようです。ていうか自分の場合、32ビット版を導入しようとしたらうまくいきませんでした……。

 ということで、手順。まず64ビット版Firefoxをインストール。

$ sudo yum install firefox  # 64ビット版Firefoxをインストール

 続いてjava.comのダウンロードページから「Linux x64 RPM」をダウンロード。

「Linux x86 RPM」をダウンロードする

「Linux x86 RPM」をダウンロードする

 RPMと書いてあるが、ダウンロードしたファイルはRPMではなくインストーラなので、root権限で実行してインストール。自動的にRPMがインストールされる。

$ chmod +x jre-6u21-linux-x64-rpm.bin
$ sudo ./jre-6u21-linux-x64-rpm.bin

 続いて設定。インストールしたjreを利用するようalternativesコマンドで指定。

$ sudo /usr/sbin/alternatives --install /usr/bin/java java /usr/java/jre1.6.0_21/bin/java 2
$ sudo /usr/sbin/alternatives --config java

 最後にmozilla用プラグインフォルダにプラグインのシンボリックリンクを張って完了。

$ cd /usr/lib64/mozilla/plugins/
$ sudo ln -sf usr/java/jre1.6.0_21/lib/amd64/libnpjp2.so .

 あとはFirefoxでabout:pluginsを開きプラグインが正しくインストールされているか確認したり、java.comにアクセスして動作を確認するなり適当にどうぞ。