読者です 読者をやめる 読者になる 読者になる

Around the modern stone age.

近年はシリコン(石)の半導体から進化した便利なもので溢れる時代。そんな気になった事や試した事など徒然と記す。

スポンサーリンク

【msys2】更新したら「-bash: getent: コマンドが見つかりません」エラー(パッケージのダウングレード方法)

msys2

msys2で2017/1/31にpacman -Syuで更新したら、コンソール起動すると下記エラーを表示してプロンプトが#になるようになった。

-bash: getent: コマンドが見つかりません

それで、pacman -S getentでgetentパッケージをインストールしても、下記エラー。

C:/msys64/usr/bin/getent.exe: error while loading shared libraries: msys-argp-0.dll: cannot open shared object file: No such file or directory

filesystemパッケージが更新されたのが要因のよう。ググってもよく判らないので、とりあえず下記手順でfilesystemパッケージを一つ前にダウングレード。
その前に、pacman -R getentでgetentパッケージは削除。

処置

filesystemパッケージをダウングレードする。

# cd /var/cache/pacman/pkg
# ls -l filesystem*.*
-rw-r--r-- 1 xxxx なし  37028 5月  27  2016 filesystem-2016.05-2-x86_64.pkg.tar.xz
-rw-r--r-- 1 xxxx なし  38264 7月  19  2016 filesystem-2016.07-2-x86_64.pkg.tar.xz
-rw-r--r-- 1 xxxx なし  39908 1月  30 19:55 filesystem-2017.02-1-x86_64.pkg.tar.xz

# pacman -U filesystem-2016.07-2-x86_64.pkg.tar.xz
パッケージをロード...
警告: パッケージ filesystem のダウングレード (2017.02-1 => 2016.07-2)
依存関係を解決しています...
衝突するパッケージがないか確認しています...

パッケージ (1) filesystem-2016.07-2

合計インストール容量:  0.09 MiB
最終的なアップグレード容量:  0.00 MiB

:: インストールを行いますか? [Y/n] y
(1/1) キーリングのキーを確認                       [#####################] 100%
(1/1) パッケージの整合性をチェック                 [#####################] 100%
(1/1) パッケージファイルのロード                   [#####################] 100%
(1/1) ファイルの衝突をチェック                     [#####################] 100%
(1/1) 空き容量を確認                               [#####################] 100%
:: パッケージの変更を処理しています...
(1/1) ダウングレード filesystem                    [#####################] 100%

      WARNING: the shell starting scripts have been unified. Please update your
      shortcuts to the following targets, otherwise they will STOP WORKING:

          * MSYS2_ROOT\msys2_shell.cmd -mingw32
          * MSYS2_ROOT\msys2_shell.cmd -mingw64
          * MSYS2_ROOT\msys2_shell.cmd -msys

#

これでとりあえず、エラーは出なくなりましたが、なにか判ったら報告します。情報をお持ちの方は教えて頂ければ幸いです。

<2017/2/1 追記>

sucarさんからコメント頂きました。本問題は修正版が出たようで、pacman -Syuを再度実行すると解消しました。

補足

  • pacmanの更新記録は/var/log/pacman.logに記録されている。
  • 更新でダウンロードしたパッケージは/var/cache/pacman/pkg/フォルダに保存されている。

関連記事

参考

  1. pacmanダウングレード - Linuxメモ
  2. pacman - ArchWiki
  3. MSYS2の更新に伴う起動用ショートカットの修正 - Qiita

【Ubuntu 16.04 LTS Server】WordPressサーバをインストール

Ubuntu Linux WordPress MySQL Apache

LAMP環境(Linux + Apache + MySQL + PHP)が揃ったので、WordPress(ブログサーバ)を使えるようにする。尚、LAMP環境のインストールについては、関連記事を参照。

Ubuntu 16.04では、WordPressはaptからインストールできるが試したら英語だったので(もしかしたら変更できる?)、WordPress 日本語を入手しインストールする。

WordPressの取得

任意のフォルダで下記コマンドを実行。日本語WordPressのソース一式を取得し、/usr/share/wordpress/にコピー。

$ wget http://ja.wordpress.org/latest-ja.tar.gz
$ tar xvf latest-ja.tar.gz
$ sudo cp -rf wordpress/ /usr/share

MySQLの設定

wordpressのDBを作成、ユーザはphpmyadminを利用。

$ mysql -u root -p

mysql> create database wordpress;
Query OK, 1 row affected (0.08 sec)

mysql> GRANT ALL PRIVILEGES ON wordpress.* TO 'phpmyadmin'@'localhost';
Query OK, 0 rows affected (0.02 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.14 sec)

mysql> exit
Bye

WordPressの設定

wp-config.phpファイルの作成し、DB情報を編集登録。

$ cd /usr/share/wordpress/
$ sudo cp wp-config-sample.php wp-config.php
$ sudo nano wp-config.php

下記の箇所を編集

// ** MySQL 設定 - この情報はホスティング先から入手してください。 ** //
/** WordPress のためのデータベース名 */
define('DB_NAME', 'wordpress');

/** MySQL データベースのユーザー名 */
define('DB_USER', 'phpmyadmin');

/** MySQL データベースのパスワード */
define('DB_PASSWORD', 'password_here');

Apacheの設定

下記の/etc/apache2/sites-available/wordpress.confファイルを作成。

$ sudo -e /etc/apache2/sites-available/wordpress.conf
Alias /blog /usr/share/wordpress
<Directory /usr/share/wordpress>
    Options FollowSymLinks
    AllowOverride Limit Options FileInfo
    DirectoryIndex index.php
    Order allow,deny
    Allow from all
</Directory>
<Directory /usr/share/wordpress/wp-content>
    Options FollowSymLinks
    Order allow,deny
    Allow from all
</Directory>

下記コマンドで、サイトの有効化とApacheの再起動。

$ sudo a2ensite wordpress
$ sudo service apache2 restart

WordPressサイトのURLは、http://[サーバIP]/blog/となる。

WordPressの初期設定

Webブラウザから下記URLにアクセス

http://[サーバIP]/blog/wp-admin/install.php

サイト名、ユーザ名、パスワード、メールアドレス入力画面を入力。
最後のチェックボックスはチェックを入れることで検索エンジンに引っからないよう。

f:id:jr4qpv:20170131091344p:plain

外部インターネットからアクセス

ルータの静的NAT設定は必要ではあるが、外部インターネットからWordPressへのアクセスを試したら、最初アクセスできなかった。
どうやらローカルIPアドレスのページを開こうとしているようだった。インストールする時のURLは外部インターネットから名前解決できるURLからするべきだったようだ。再インストールしてもよいが、下記箇所のMySQLのテーブルを修正すればOKになった。

f:id:jr4qpv:20170202212808p:plain

phpMyAdminから修正した。wp_optionテーブルの、siteurlhomeのフィールドがローカルIPアドレスになっていたが、下記のようなインターネットからも名前解決できるURLに変更。

http://hoge.aa0.netvolante.jp

補足

  • WordPressの管理画面は、http://[サーバIP]/blog/wp-admin/にアクセス。
  • WordPressのアップグレードは、http://[サーバIP]/blog/wp-admin/update-core.phpにアクセス。
  • apacheでサイトを無効にするには、sudo a2dissite wordpress

関連記事

参考

  1. WordPress
  2. WordPress のインストール - WordPress Codex 日本語版
  3. 日本語 — WordPress
  4. インフラエンジニアがWordPressを構築する。(Ubuntu16.04) - Qiita

エンジニアのためのWordPress開発入門 (Engineer's Library)

エンジニアのためのWordPress開発入門 (Engineer's Library)

  • 作者: 野島祐慈,菱川拓郎,杉田知至,細谷崇,枢木くっくる
  • 出版社/メーカー: 技術評論社
  • 発売日: 2017/01/26
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

【msys2】pingコマンドが文字化けする対策

msys2

msys2のコマンドプロンプトからpingコマンドを実行すると文字化けしてしまう。Windows側のコマンドが呼び出されるので、文字コードの違いの為で、対策がないかと調べたら解決できたので備忘録を残す。

対策

~/.bashrcに下記のようなaliasを追加すればOK。

function wincmd() {
    CMD=$1
    shift
    $CMD $* 2>&1 | iconv -f cp932 -t utf-8
}
alias ipconfig='wincmd ipconfig'
alias netstat='wincmd netstat'
alias ping='wincmd ping'

その他のWindowsコマンドも同様に追加すれば大丈夫。

関連記事

参考

  1. sakashita-net.jp: minttyでpingを使うと文字が化けてしまう

【Ubuntu 16.04 LTS Server】apache2のユーザ公開WebフォルダでPHP実行を許可

Ubuntu Linux PHP Apache

以前の記事で、Apache2でユーザごとの公開Webフォルダ(~/public_html/)を、Web公開するようにしたが、デフォルトではPHPの実行ができない。実行できるようにしたので備忘録を残す。

対策

apacheの設定ファイルを編集し、下記行をコメントアウトする。

$ sudo -e /etc/apache2/mods-available/php7.0.conf
#<IfModule mod_userdir.c>
#    <Directory /home/*/public_html>
#        php_admin_flag engine Off
#    </Directory>
#</IfModule>

apache2を再起動

$ sudo service apache2 restart

動作確認

~/public_html/test.phpの下記ファイルを作成

<?php
print "ようこそ!";
?>

Webブラウザから表示

http://<サーバIP>/~<ユーザ名>/test.php

f:id:jr4qpv:20170130110601p:plain

これで、ユーザ公開WebフォルダでもPHPが実行できた。

関連記事

参考

  1. Ubuntu日本語フォーラム / apacheの設定においてユーザディレクトリでのphpファイルの表示が出来ない

【Ubuntu 16.04 LTS Server】phpMyAdminをインストール

Ubuntu Linux PHP MySQL Apache

前記事でMySQLサーバをインストールしたが、WebブラウザからMySQLサーバを操作できるツール「phpMyAdmin」を使えるようにする。尚、MySQL,Apache2,PHPは事前にインストールしておく必要があるので関連記事を参照。

準備

phpMyAdminパッケージのインストール。

$ sudo apt install phpmyadmin
  • Webサーバの種類を聞かれるので「apache2」を選択。
  • dbconfig-commonで設定しますか?と聞かれるので「yes」を選択。続いてMySQLサーバ上の「phpmyadmin」ユーザのパスワードを聞かれるので2回入力。

apache2サーバの設定

下記の/etc/apache2/conf-available/phpmyadmin.confファイルを作成。
ローカルネットからのアクセスのみ許可するようにする。

# phpMyAdmin configuration
Include /etc/phpmyadmin/apache.conf

<Directory /usr/share/phpmyadmin>
   Order deny,allow
   Deny from all
   Allow from 192.168.
</Directory>

下記コマンドで、サイトの有効化とApacheの再起動。

$ sudo a2enconf phpmyadmin.conf
$ sudo service apache2 restart

WebブラウザからphpMyAdminにアクセス

http://<サーバIP>/phpmyadmin/

下記のログイン画面が表示される。

f:id:jr4qpv:20170129151716p:plain

パッケージをインストール時に入力した、phpmyadminrootユーザのIDとパスワードを入力。下記画面が表示される。

f:id:jr4qpv:20170129152828p:plain

補足

  • Linux + Apache + MySQL + PHPの 環境を、頭文字をとって「LAMP」と呼ぶらしい。

関連記事

参考

  1. phpMyAdmin
  2. Ubuntu 16.04 LTS : MariaDB : phpMyAdmin インストール : Server World
  3. ゼロから始めるPHP講座Vol21 phpMyAdminの基礎と使い方①Code部
  4. phpMyAdminの使い方
  5. ubuntu server :: MySQL
  6. さくらVPSでUbuntu 16.04のサーバにWordpress環境を作る - Qiita
  7. Installing LAMP+PhpMyAdmin On Ubuntu 16.04 LTS | Server.lu
  8. Ubuntu で MySQL - Qiita
  9. phpMyAdminのセキュリティ対策を3種類実施(エイリアス変更/アクセス制限/SSL通信) | デフよん

基礎からのMySQL 改訂版 (基礎からシリーズ)

基礎からのMySQL 改訂版 (基礎からシリーズ)

【Ubuntu 16.04 LTS Server】MySQLサーバをインストール

Ubuntu Mac Linux MySQL

Ubuntu ServerでMySQLサーバを使えるようにしたので、備忘録を残す。
これからWordPressやWikiサーバを動かしていきたい。

準備

MySQLサーバのインストール

$ sudo apt install mysql-server
  • MySQL上での、rootユーザのパスワードを聞かれるので入力する。

ローカルコンソールからMySQLサーバに接続

$ mysql -u root -p

状態表示

mysql> status

ユーザ一覧表示

mysql> select user,host from mysql.user; 

データベース一覧表示

mysql> show databases;

特定のユーザーの権限確認

mysql> show grants for 'ユーザ名'@'ホスト名';

終了

mysql> exit

ユーザの作成と削除

ユーザの作成

mysql> create user ユーザ名 identified by 'password';
  • ユーザ名は、'ユーザ名'@'ホスト名'のように表す。ホスト名はMySQLへ接続するホスト名。サーバパソコンの場合はlocalhostとなる。ネットワークアドレスを指定する場合は192.168.1.%などのようにする。
    @以下ホスト名を省略した場合は、'ユーザ名'@'%'として扱われ、どのホストからも接続できる。
  • passwordは、パスワード。

ユーザの削除

mysql> drop user ユーザ名;

作成したユーザでMySQLへ接続

$ mysql -u ユーザ名 -p

外部ホストからの接続を許可する

MySQLの設定ファイルを編集し、bind-addressの行をコメントアウトする。

$ sudo -e /etc/mysql/mysql.conf.d/mysqld.cnf
#bind-address = 172.0.0.1

MySQLサービスを再起動

$ sudo service mysql restart

nmapでポートが開いているか確認

$ nmap <IPアドレス>
(結果)

PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
3306/tcp open  mysql
9418/tcp open  git

MySQLクライアントインストール(macOS)

Homebrewからインストール

$ brew install mysql --client-only

MySQLサーバへ接続

$ mysql -h サーバIP -u ユーザ名 -p

DBの文字コードをUTF-8にする

デフォルトの文字コードを確認すると、「latin1」になっている。

mysql> status
--------------
mysql  Ver 14.14 Distrib 5.7.17, for Linux (x86_64) using  EditLine wrapper

Connection id:      23
Current database:
Current user:       root@localhost
SSL:            Not in use
Current pager:      stdout
Using outfile:      ''
Using delimiter:    ;
Server version:     5.7.17-0ubuntu0.16.04.1 (Ubuntu)
Protocol version:   10
Connection:     Localhost via UNIX socket
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:        /var/run/mysqld/mysqld.sock
Uptime:         3 days 17 hours 12 min 15 sec

Threads: 1  Questions: 44  Slow queries: 0  Opens: 113  Flush tables: 1  Open tables: 32  Queries per second avg: 0.000
--------------

/etc/mysql/mysql.conf.d/mysqld.cnfファイルの[mysqld]セクションに下記行を追加する。

character-set-server = utf8

MySQLサービスの再起動

$ sudo service mysql restart

文字コードを確認すると、「UTF8」になっている。

mysql> status
--------------
mysql  Ver 14.14 Distrib 5.7.17, for Linux (x86_64) using  EditLine wrapper

Connection id:      4
Current database:
Current user:       root@localhost
SSL:            Not in use
Current pager:      stdout
Using outfile:      ''
Using delimiter:    ;
Server version:     5.7.17-0ubuntu0.16.04.1 (Ubuntu)
Protocol version:   10
Connection:     Localhost via UNIX socket
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:        /var/run/mysqld/mysqld.sock
Uptime:         16 sec

Threads: 1  Questions: 6  Slow queries: 0  Opens: 107  Flush tables: 1  Open tables: 26  Queries per second avg: 0.375
--------------

その他ツールの文字コードをUTF-8にする

/etc/mysql/conf.d/mysqldump.cnfファイルの[mysqldump]セクションに下記行を追加。

default-character-set=utf8

/etc/mysql/conf.d/mysql.cnfファイルの[mysql]セクションに下記行を追加。

default-character-set=utf8
  • 設定ファイルの編集は管理者権限が必要。sudo -e <ファイル名>などで編集する。

補足

  • ユーザ作成で、@以下のホスト名が違うと異なるユーザとして扱われる。
  • mysqlクライアントから入力するコマンドは、基本は大文字/小文字は区別しない。但し、データベース名のみはLinux環境では大文字/小文字は区別される。
  • mysqlクライアントからのコマンドで、最後に;で終わるものはSQL、ないものはmysqlに対するコマンド。
  • データベースの格納先はデフォルトでは/var/lib/mysql/
    /etc/mysql/mysql.conf.d/mysqld.cnfdatadirに指定してある。
  • 外部ホストから許可するのにbind-addressの記述はアドレスのみで、192.168.1.*のようなネットワークアドレスは指定できない。
  • msys2(Windows)には、pacman -Ss mysqlで検索してみたがmysqlクライアントのパッケージは無さそう。

参考

  1. MySQL
  2. MySQL :: MySQL Community Edition
  3. UbuntuにMySQLをインストールするところからテーブル作成までの方法 - プログラミングは芸術だ!
  4. Ubuntu 16.04 LTS : MySQL : インストール : Server World
  5. UbuntuにMySQLをインストール - うまとま君の技術めも
  6. ユーザーの作成(CREATE USER文) - ユーザーの作成 - MySQLの使い方
  7. MySQLでユーザー一覧を確認する「mysql.userテーブル」 | UX MILK
  8. MySQLの外部接続の設定 - Qiita
  9. Ubuntu でMySQL に外部ホストからの接続を許可するには待受IP指定を外さなあかんというお話 – 極上の人生
  10. ユーザ権限の確認・追加 - Qiita
  11. Ubuntu で MySQL - Qiita
  12. Mac へ MySQL を Homebrew でインストールする手順 - Qiita
  13. 権限の設定(GRANT文) - ユーザーの作成 - MySQLの使い方
  14. [MySQL]権限の確認と付与 - Qiita
  15. MySQLのGRANT(権限)の追加/削除/確認 - それマグで!
  16. MySQLがデータを保管する場所 〜 データディレクトリ - 日常メモ
  17. http://blog.kondoyoshiyuki.com/2013/01/10/memo-mysql-on-ubuntu/
  18. MySQL :: MySQL 5.6 リファレンスマニュアル :: 10.1.5 アプリケーションの文字セットおよび照合順序の構成

基礎からのMySQL 改訂版 (基礎からシリーズ)

基礎からのMySQL 改訂版 (基礎からシリーズ)

agコマンドを使う

Mac msys2 Ubuntu

grepコマンドみたいな感じで、高速に動作する「ag」コマンドを使えるようにしたので、備忘録を残す。

1.macOS

Homebrewで下記コマンドでインストール

$ brew install ag

2.msys2(Windows)

pacman -Ss silverコマンドでパッケージ検索して確認。

(結果)

mingw32/mingw-w64-i686-ag 0.31.0.r1666.0e577cc-1
    The Silver Searcher: An attempt to make something better than ack, which
    itself is better than grep (mingw-w64)
mingw64/mingw-w64-x86_64-ag 0.31.0.r1666.0e577cc-1
    The Silver Searcher: An attempt to make something better than ack, which
    itself is better than grep (mingw-w64)

パッケージ名が確認できたので、32bit/64bit使うのをインストール。私はmingw32環境なので下記。

$ pacman -S mingw-w64-i686-ag

3.Ubuntu 16.04 LTS Server

$ sudo apt install silversearcher-ag

ヘルプ表示

$ ag --help

使用例

カレントディレクトリ以下を検索

$ ag hogehoge

特定ディレクトリ以下を検索

$ ag hogehoge /hoge/directory

補足

  • ~/.agignoreに検索から除外するファイルの拡張子が指定できる。(参考[1.]

感想

grepより、かなり高速!! 後の記事でEmacsとの連携を紹介していく。

参考

  1. ag(The Silver Searcher)をインストール - Qiita
  2. ag (The Silver Searcher) コマンド覚え書き - Qiita
  3. The Silver Searcher のススメ - Qiita