CentOS7.4にPHP7がインストールできないと思ったときの対応

CentOS7.4にPHP7をインストールしたときのメモです。CentOS7の標準のリポジトリではPHP7がないらしく、先にEPELリポジトリとREMIリポジトリを入れる必要あるとのことで、そのようにやりました。

■EPELリポジトリのインストール
# yum install epel-release

■REMIリポジトリのインストール
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

ここまでは問題なく終了。インストールされるPHPを以下のコマンドで確認。

■インストールされるPHPの確認
# yum info --enablerepo=remi, remi-php72 php

そのときのログが以下です。

あれ?このままだとPHP5.4.45がインストールされるっぽい。PHP7をインストールしたいのだけどそうはいかないみたい。「--enablerepo=」にremiリポジトリを指定すればよいとネットでは出ていたのですが。逆に「--disablerepo=」というオプションがあるらしく、こちらはいったんリポジトリを全て無効にするらしい。なので、これをつけてみた。

# yum info --disablerepo=* --enablerepo=remi, remi-php72 php

でも結果はPHP5.4.45のままで変わらずでした。

[広告]

ちょっと考えて「--enablerepo=」にremiとremi-php72の2つを指定しているのだけど、remi-php72だけにしたらうまくいかないか?と思い、やってみた。

■インストールされるPHPの確認
# yum info --enablerepo=remi-php72 php

そのときのログが以下です。

おっ!PHP7.2.17がインストールされそうです。なので、これでphpとphp-mbstringのインストールを実行します。

■PHPのインストール
# yum install --enablerepo=remi-php72 php php-mbstring

期待通り、PHP7.2.17がインストールできました!

Linuxでtarを使ってファイルをバックアップする。

Linuxではファイルをバックアップするのに、tarコマンドを使うと便利です。tarコマンドの使い方を書いてみます。

■ファイルをアーカイブする。
$ tar cvf アーカイブファイル名 アーカイブするディレクトリ名

■アーカイブファイルの中身の確認。
$ tar tvf アーカイブファイル名

■アーカイブファイルを展開する。
$ tar xvf アーカイブファイル名

tarコマンドのオプションですが、以下です。

  • c: アーカイブファイルを新規作成する。
  • t: アーカイブファイルの中身を表示する。
  • x: アーカイブファイルの展開を行う。
  • v: 処理の詳細情報の表示をする。
  • f: アーカイブファイル名の指定をする。
  • -C: 指定したディレクトリに移動した後にアーカイブを実行する。

アーカイブするファイルは1つのディレクトリ配下に配置してそのディレクトリごとアーカイブします。ディレクトリにまとめなくても「*」や「?」のワイルドカードを使って複数ファイルを指定してまとめてアーカイブすることもできます。

ここで、注意点があります。
アーカイブする際に指定するディレクトリはcdコマンドでそのディレクトリがある場所まで移動して相対バスで指定することです。もしくは「-C」オプションを使います(後述)。展開をする際も展開をしたい場所(ディレクトリ)まで移動してから行います。

以下の例でtarをやってみます。/home/user/work 配下にcccディレクトリを作りアーカイブしたい003.txt、004.txtを配置します(図1)。

図1

ccc1.tarという名前のアーカイブファイルを作成してdddディレクトリ配下で展開したときの作業ログです。

dddディレクトリ配下に展開されたファイルは以下のようになっています(図2)。

図2

なお「-C」オプションを使う場合はアーカイブする際に「tar cvf ccc1.tar ccc -C /home/user/work」とやります。

先ほどアーカイブするディレクトリは相対パスで指定すると書きましたが絶対パスで指定した場合にどうなるかをやってみます。図1と同じ状況でcccディレクトリを絶対パスで指定してccc2.tarという名前のアーカイブファイルを作成します。そしてccc2.tarファイルをdddディレクトリ配下で展開します。

アーカイブしたときに「tar: メンバ名から先頭の `/’ を取り除きます」のメッセージが出力されています。これはルートディレクトリを表す先頭の「/」をコマンドが自動的に削除したことを示しています。そのためdddディレクトリ配下では以下のような構成でファイルが展開されます(図3)。

図3

tarコマンドが先頭の「/」を取り除いている理由は、展開したときに誤ってすでに存在しているファイルを上書きしてしまう恐れがあるためそれを防ぐ目的と思われます。

最後に、アーカイブファイルの圧縮と解凍コマンドを書いておきます。バックアップするアーカイブファイルの容量が大きい場合は圧縮しておくほうが良いかと思いますので。

■ファイルを圧縮する。
$ gzip ファイル名

■ファイルを解凍する。
$ gunzip ファイル名

gzipコマンドで圧縮を行うと「.gz」の拡張子がファイル名に付与されます。解凍する際は「.gz」の拡張子がついたファイルを対象にgunzipコマンドで解凍をします。