投稿

2014の投稿を表示しています

CentOS 6.5 で tftp サーバーのインストール

tftpサーバーのインストールと設定を行いました。以下に手順を記録しておきます。 sudo yum install tftp-server テキストエディターで設定ファイルを開き必要な設定を確認、編集します。 sudo vi /etc/xinetd.d/tftp server_args にある tftpboot ディレクトリーを確認します。必要であれば変更します。 system-config-firewall で TFTP (69/udp) を許可します。 サービスを起動します。 sudo service xinetd start 再起動後にも自動的にサービスを起動するように設定します。 sudo chkconfig xinetd on

CentOS 6.5 でスクリーンショットの取得(gnome-utils)のインストール

CentOS 6.5 を Minimal Desktop インストールしているので普通の Desktop インストールでインストールされないものが結構あります。 「スクリーンショットの取得」もインストールされないものの一つです。これをあとからインストールするには $ sudo yum install gnome-utils と端末で打ち込んでください。メニューの「アプリケーションの追加と削除」からも gnome-utils を検索すると表示されます。

mv とパーミッション

Linux の mv コマンドでディレクトリーの名前を変えられるんですが、これを禁止したいのでディレクトリのパーミッションを 555 に設定したのに全然変更できてしまいます。 実際に禁止させるには親ディレクトリーのパーミッションを 555 に変える必要がありました。 ご存じの方は当たり前かもしれませんが、このふるまいはちょっと驚きました。

Make の出力をファイルに落としつつ画面にも表示

Make 2>&1 | tee file

Mercurial リポジトリーのチェンジセット ID を成果物に取り込む

Mercurial で管理しているプログラムや文書などにチェンジセット ID を取り込んでバージョン番号みたいに使いたいと考えていました。 最初は hg log の出力からスクリプトで抽出する方法を考えましたが、 hg identify で取得できることがわかりましたので簡単にできます。 ビルドする場合、Make を使うので Makefile 内で チェンジセット ID を取り込んでみます。 ifneq ($(wildcard .hg_archival.txt),) changeset = $(shell $(awk) 'match ($$1, /node:/) { print substr($$2, 0, 12) }' .hg_archival.txt) endif ifneq ($(wildcard .hg),) changeset = $(shell $(hg) identify --id) endif changeset? = unknown これで Makefile の変数 changeset にチェンジセット ID が取り込まれました。 アーカイブからのビルドでもちゃんと動きます。 あとは CHANGESET.txt: $(src) @echo $(changeset) > $@ みたいに自由に使用できます。

バイナリーファイルを C 言語の配列で出力

仕事柄、バイナリーデーターをそのまま C 言語の配列に変換してプログラムに組み込むことがあるのですが、これまでは自作のプログラムでやってました。 Linux 環境には od とか hexdump とか hd とかあるのでそれでできないか考えていましたが、 xxd というコマンドがあってそれを使うと簡単に C 言語の配列に変換してくれます。 xxd -i ファイル名 ためしに .bashrc を 変換してみました。 $ xxd -i .bashrc unsigned char _bashrc[] = { 0x23, 0x20, 0x2e, 0x62, 0x61, 0x73, 0x68, 0x72, 0x63, 0x0a, 0x0a, 0x23, 0x20, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x0a, 0x69, 0x66, 0x20, 0x5b, 0x20, 0x2d, 0x66, 0x20, 0x2f, 0x65, 0x74, 0x63, 0x2f, 0x62, 0x61, 0x73, 0x68, 0x72, 0x63, 0x20, 0x5d, 0x3b, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x2e, 0x20, 0x2f, 0x65, 0x74, 0x63, 0x2f, 0x62, 0x61, 0x73, 0x68, 0x72, 0x63, 0x0a, 0x66, 0x69, 0x0a, 0x0a, 0x23, 0x20, 0x55, 0x73, 0x65, 0x72, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x

SCM Manager にグループを追加する

イメージ
ユーザーの追加 に続いてユーザーグループを作成します。 グループの作成 Security → Groups を選択します。 Add を押すと画面下半分の Settings に入力フィールドが表示されますので、グループの名前と説明分を入力し、 OK を押します。 グループができました。 グループにユーザーを追加 作成したグループを選択します。 画面下半分に Member のタブがあるのでそれを選択します。 Add ボタンを押すと一行追加されます。 追加された行に ユーザー名を入力します。途中まで入力すると候補が表示されますのでそれを選択してもよいです。最後に OK を押すとユーザーがグループに追加されます。 いろいろと登録してみました。 グループもいろいろ登録してみました。

SCM Manager にユーザーを追加する

イメージ
SCM Manager を使っていますが使い方に関する記述があまりないので少し書いてみようと思います。大体は特に説明しなくてもわかるとは思いますが。 まずはユーザーを追加します。 scmadmin でログインします。 ユーザーの作成 Security → Users を選択します。 Add を押します。画面下側の User Form に必要な項目を入力して OK を押します。 Name: ログインに使用するユーザー名です。日本語は使えません。英数文字と一部の記号が使えるようです。 Display name: 表示に使用する名前です。日本語でも大丈夫です。 Mail: このユーザーのメールアドレスです。存在するアドレスである必要はなさそうですが、ある程度メールアドレスっぽい文字列を入力する必要があります。 a@b.c とか 1@2.com ではエラーになりました。 Password: パスワードを二か所入力します。6 文字以上と表示されますがそれ以下でも作成できました。 Administrator: このユーザーに管理者権限を与える場合にチェックします。 Active: このユーザーを使用可能にする場合にチェックします。 OK を押しても表示に反映されないので何度も OK を押さないように。Reload を押してください。 作成したユーザーが表示されました。 適当にユーザーを作成してみました。

SCM Manager を デーモンとして起動する。

イメージ
SCM Manager を CentOS 6.5 にインストール で書いた SCM Manager の起動方法についてはすこしごまかして書いていました。というのもそのままではデーモンで起動しなかったからです。対処方法がわかったので追記します。 SCM-Manager Wiki の daemons に以下のように記載されています。 Unix Daemons You could run scm-server in background as unix daemon with one simple command: scm-server start If you would like to stop the running daemon instance just call: scm-server stop しかし、CentOS 6.5 では以下の通り動作しませんでした。 $ sudo /opt/scm-server/bin/ scm-server start Cannot locate Java Home JAVA_HOME が設定されていないことが理由のようです。  https://issues.jboss.org/browse/JBEWS-223  と同じでしょうか。 ここでは scm-server スクリプトを直接編集して JAVA_HOME を指定します。 $ sudo vi  /opt/scm-server/bin /scm-server ファイルの終わりの付近に  JAVA_HOME="/etc/alternatives" を追加してみました。   fi   # TODO JVM Arguments   JAVA_HOME="/etc/alternatives"   $JSVCCMD -cp "$CLASSPATH" $JAVA_OPTS \     $EXTRA_JVM_ARGUMENTS $USER_ARGUMENT \ 保存したら起動して確認してみます。 $ sudo /opt/scm-server/bin /scm-server start ブラウザーで開けるようになっていたら成功です。 起動時に自動的にデー

SCM Manager で Mercurial を使用できるようにする

イメージ
さきにインストールした  SCM Manager  から  Mercurial  を使用できるようにします。 ウェブブラウザーで SCM Manager (http://******:8080/) を開きます。 ユーザー名、パスワードとも scmadmin を入力してログインします。 ログインしました。まずは Security → Change Password 開いて scmadmin のパスワードを変更しておきます。 新しいパスワードを入力して OK を押します。 次に Config → General を開いて Base Url を localhost から ホスト名に変更します。 Save を押します。 Config → Repository Types を開きます。いくつかのフィールドは自動的に検出されています。インストールされた環境によって設定値は違いますが今回のセットアップでは次のようになりました。 HG Binary: /usr/local/bin/hg Python Binary: python Python Module Search Path: /usr/local/lib64/python2.6/site-packages/ HG Binary と Python Binary はデフォルトで入っていましたが Python Module Search Path (Mercurial のモジュールがあるディレクトリー)は指定しないと外部からリポジトリーを操作する場合にエラーが起きますのでちゃんと指定する必要があります。 リポジトリーを保存するディレクトリーはデフォルトでは起動したユーザーのホームディレクトリーに作成されてしまいますので別の場所を指定しました。 Repository directory: /var/.scm/repositories/hg 入力が終わったら Save を押します。 git や Subversion を使用するときも Repository directory は変更しておいた方が良いかも。 使用しないときは Disabled にチェックを入れて Save を押しましょう。 これで Mercurial が使用できるようになりました。

SCM Manager を CentOS 6.5 にインストール

イメージ
Mercurial をインストール したので続いて SCM Manager のインストールを行います。ここでは一番簡単な方法をやってみます。簡単なので機能確認には良いと思います。(セキュリティ的には問題かも・・) 1. 端末を開き次のコマンドで java がインストールされていることを確認します。 $ java -version 2. ウェブブラウザーで SCM Manager のサイト ( http://www.scm-manager.org ) を開きます。 3. Download を押します。 4. scm-server-1.35-app.tar.gz を押します。ダイアログが表示されますので ファイルを保存する(S) を選択し OK を押します。 5. 端末を開き、ダウンロードしたファイルを展開します。場所はどこでも良いのですが、公開することを考えて /opt 以下に展開することにします。 $ sudo tar xvf scm-server-1.35-app.tar.gz -C /opt 6. 次のコマンドを実行します。 $ sudo /opt/scm-server/bin/scm-server 7. ウェブブラウザーで http://localhost:8080 を開くと... すでに起動しています!後はシステムの起動時に起動すればいいだけ。 8. 起動している SCM Manager を Ctrl+C で停止します。 9. /etc/rc.local の最後に /opt/scm-server/bin/scm-server & を追加して保存します。 $ sudo vi /etc/rc.local # SCM MANAGER /opt/scm-server/bin/scm-server & & を忘れると大変なことになるので必ず入れましょう・・・ (追記  SCM Manager をデーモンとして起動する 方法を書きました。こちらをおすすめします。) 10. ファイアーウォールの設定で 8080 ポートを開きます。 こちらの記事 を参考にしてください。 11. 一旦再起動します。 インストールは以上です。 http://ホスト名

CentOS 6.5 に Mercurial をソースからインストール

イメージ
これまで設定を行ってきた CentOS 6.5 に SCM Manager をインストールして Mercurial リポジトリー共有したいと思います。 Mercurial のインストール SCM Manager には Mercurial が含まれていないのであらかじめインストールします。 SCM Manager Wiki の Getting Started によると Mercurial はバージョン 1.9 以降が必要といってます。 Subversion and Git will work out of the box, but if you want to use mercurial with SCM-Manager you have to install mercurial version 1.9 or newer. 残念ながら CentOS のリポジトリーにあるのは 1.4.3 と古すぎます。 そこで Mercurial をソースからインストールします。 準備 Mercurial をソースからインストールするには python-devel と gcc が必要です。 1. システム → 管理 → ソフトウェアの追加/削除を選択します。 2. The libraries and header files need for Python development をチェックして 適用(A) を押します。 3. Various compliers (C, C++, Objective-C, Java, ...) をチェックして 適用(A) を押します。 4. 追加のパッケージのインストールを聞いてくるので インストール を押してインストールします。 ちなみにここまでの作業を端末で行うと $ sudo yum install python-devel $ sudo yum install gcc となります。 5. ウェブブラウザーで Mercurial のウェブサイト ( http://mercurial.selenic.com )を表示します。 6. Download now を押します。ダイアログが表示されますので保存を押してファイルをダウンロードします。

リモートデスクトップ接続で CentOS 6.5 のファイアーウォールが実行できない。

イメージ
xrdp をインストール したので少し使ってみていますがファイアーウォール (system-config-firewall) を起動すると org.fedoraproject.slip.dbus.service.PolKit.NotAuthorizedException.org.fedoraproject.config.firewall.auth: というメッセージが出て操作できませんでした。 system-config-firewall from remote machine にその対策がありました。 PolicyKit  で使用権を与えればよいようです。 /etc/polkit-1/localauthority/50-local.d の下に以下のファイルを作ります。 ログイン名を yourname としている場合です。 ファイル名: 50-firewall- yourname -access.pkla 内容: [Allow yourname remote access to system-config-firewall] Identity=unix-user: yourname Action=org.fedoraproject.config.firewall.auth ResultAny=yes ResultInactive=yes ResultActive=yes これでファイアーウォールの編集ができます。 ... root のパスワードも聞かれなくなってしまいましたね。

CentOS 6.5 へリモートデスクトップ接続 (xrdp)

イメージ
以前 ubuntu 12.04 でやっていた Windows から Linux へリモートデスクトップ接続 を CentOS 6.5 で試します。 CentOS 7.1 の場合は  http://cobitech.blogspot.com/2015/12/centos-71-xrdp.html  を参照してください。 xrdp のインストール 1. EPEL を使用できるようにします。 今回は xrdp のインストールに EPEL を使用します。 端末を開き以下のコマンドを実行します。 $ sudo rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm http://fedoraproject.org/wiki/EPEL/FAQ#Using_EPEL  を参考にしました。 追記: sudo yum install epel-release でインストールできるようです。 2. xrdp パッケージのインストール 端末を開き、以下のコマンドを実行します。必要なパッケージも一緒にインストールしてくれます。 $ sudo yum install xrdp (2014/11/4:追記) 一部足りないモジュールがあるようです。以下のコマンドでインストールされます。 $ sudo yum install tigervnc-server ファイアーウォールの設定 ファイヤーウォールの設定で 3389/tcp を追加します。 1. システム → 管理 → ファイアーウォールを開きます。 2. その他のポートを選択し、追加(A) を押します。 2. 3389/tcp を選択し OK(O) を押します。 3. 適用を押します。 4. 確認を求められるので はい(Y) を押します。 日本語キーボードの設定 インストールしたままでは日本語キーボードに対応していませんので設定ファイルを作成します。 1.  [Xrdp-devel] Keyboard issue and Japanese Keyboard Layout  から  km-e0010411.ini  をダウンロードしま

CentOS 6.5 で Windows の名前解決

イメージ
CentOS 6.5 のホスト名の変更 でホスト名をつけたのですから、他の PC からもホスト名でアクセスしたいですよね。 IP アドレスを直接入力ではなくて。 Windows のワークグループ環境でこれを実現しましょう。 ファイアーウォールの設定 あらかじめ使用するネットワークポートを開きます。 1. システム → 管理 → ファイアーウォールを選択します。 2. ファイアーウォール設定の開始が表示されます。 閉じる(C) を押します。 3. ファイアーウォール設定の開始のダイアログの後ろに認証のダイアログが表示されています。root のパスワードを入力し 認証する(A) を押します。 4. ファイアーウォールの設定で、Samba と Samba クライアントをチェックし 適応 を押します。 5. 確認ダイアログが表示されますので、はい(Y) を押します。 CentOS から Windows を名前でアクセスする。 winbind を使用します。今回は CentOS のアップデートをした際に一緒にインストールされていたみたいです。 1. winbind がインストールされていない場合は上記の Samba winbind をソフトウェアの追加/削除からインストールするか、端末で次のコマンドでインストールしてください。 $ sudo yum install samba-winbind さっそく sudo コマンドが役にたちますね。 2. /etc/nsswitch.conf を編集し wins を追加します。 $ sudo vi /etc/nsswitch.conf hosts: files dns ↓ hosts: files wins dns 3. Windows がインストールされている PC に ping を打ってアクセスを確認します。 $ ping コンピューター名 Windows から CentOS を名前でアクセスする。 Samba を使用します。 1. Samba をインストールします。ソフトウェアの追加/削除から Server and Client software to interoperate with Windows

CentOS 6.5 でファイアーウォールの設定(system-config-firewall) のインストール

イメージ
CentOS 6.5 をインストール する際に インストールタイプを指定します。とりあえず、Minimal Desktop で行きます。次(N) を押します。 としたために ファイアーウォールの設定 (system-config-firewall) がインストールされませんでしたのでインストールします。 1. システム → 管理 → ソフトウェアの追加/削除 を選択します。 2. system-config-firewall を検索します。 A graphical interface for basic firewall setup にチェックを入れて 適用(A) を押します。 3. 追加のパッケージを要求されましたので インストール を押して続行します。 4. root のパスワードを入力して 認証する(A) を押します。 5. インストールできました。とりあえず、閉じる(C) を押します。 6. システム → 管理 → ファイアーウォール が登録されています。 以上です。お疲れ様でした。 ちなみに端末で行うと $ sudo yum install system-config-firewall です。一行で終わってしまいました。