「yum update」タグアーカイブ

CentOS 7でPHPのアップデートがErrorになる

PHPがアップデートできない!

※この事例は、remiリポジトリを使用しています。またPHP71を対象としています。remiリポジトリを使っていない場合は参考にならないかも知れません。PHP71以外のバージョンでは適宜コマンドの指定を変えてください。ご注意ください!

CentOS 7.5-1804でyum updateを実施しようとしたら、アップデートが出来ませんでした。
手動でPHP以外のアップデートを済ませて再度確認を行った結果、以下のエラーが原因でした。

Error: Package: php-phpmyadmin-sql-parser-4.2.5-1.el7.noarch (epel)
           Requires: php-composer(phpmyadmin/motranslator) < 4
           Installed: php-phpmyadmin-motranslator-4.0-1.el7.remi.noarch (@remi)
               php-composer(phpmyadmin/motranslator) = 4.0
           Available: php-phpmyadmin-motranslator-3.4-1.el7.noarch (epel)
               php-composer(phpmyadmin/motranslator) = 3.4
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

当然、–skip-brokenとかやる気は全く無いので、ググってみると同様の現象に見舞われている方を発見!
そのQAに書かれている内容を見て何となく方向性は判ったのだが、どうも気に掛かる。
やっぱり1個足りない気がする。。。。
危なっかしいので、万が一のことを想定しスナップショット(バックアップ)を取得してから以下の手順を順次実施した。

アップデート手順

まずは、障害を取り除く

まず最初にエラーメッセージ記載されているパッケージを以下のコマンドで削除する。

# yum remove remove php-phpmyadmin-sql-parser.noarch php-phpmyadmin-motranslator.noarch
Loaded plugins: fastestmirror
Resolving Dependencies
--> Running transaction check
---> Package php-phpmyadmin-motranslator.noarch 0:4.0-1.el7.remi will be erased
--> Processing Dependency: php-phpmyadmin-motranslator >= 4.0 for package: phpMyAdmin-4.8.2-1.el7.remi.noarch
---> Package php-phpmyadmin-sql-parser.noarch 0:4.2.4-3.el7.remi will be erased
--> Running transaction check
---> Package phpMyAdmin.noarch 0:4.8.2-1.el7.remi will be erased
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package                        Arch      Version                Repository
                                                                           Size
================================================================================
Removing:
 php-phpmyadmin-motranslator    noarch    4.0-1.el7.remi         @remi     53 k
 php-phpmyadmin-sql-parser      noarch    4.2.4-3.el7.remi       @remi    797 k
Removing for dependencies:
 phpMyAdmin                     noarch    4.8.2-1.el7.remi       @remi     24 M

Transaction Summary
================================================================================
Remove  2 Packages (+1 Dependent package)

Installed size: 25 M
Is this ok [y/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Erasing    : phpMyAdmin-4.8.2-1.el7.remi.noarch                           1/3
warning: /etc/phpMyAdmin/config.inc.php saved as /etc/phpMyAdmin/config.inc.php.rpmsave
warning: /etc/httpd/conf.d/phpMyAdmin.conf saved as /etc/httpd/conf.d/phpMyAdmin.conf.rpmsave
  Erasing    : php-phpmyadmin-sql-parser-4.2.4-3.el7.remi.noarch            2/3
  Erasing    : php-phpmyadmin-motranslator-4.0-1.el7.remi.noarch            3/3
  Verifying  : php-phpmyadmin-motranslator-4.0-1.el7.remi.noarch            1/3
  Verifying  : php-phpmyadmin-sql-parser-4.2.4-3.el7.remi.noarch            2/3
  Verifying  : phpMyAdmin-4.8.2-1.el7.remi.noarch                           3/3

Removed:
  php-phpmyadmin-motranslator.noarch 0:4.0-1.el7.remi
  php-phpmyadmin-sql-parser.noarch 0:4.2.4-3.el7.remi

Dependency Removed:
  phpMyAdmin.noarch 0:4.8.2-1.el7.remi

Complete!

Dependencies ResolvedとDependencies Removedの項目にも書かれているが、phpMyAdminもトランザクションの影響で削除されている。
こういう時、yum -yオプションは避けた方が良いだろう。

必要なパッケージを再度インストールして更新する。

とりあえず、参考にしたサイトに記載されていた内容でインストールしてみた。その手順が以下になる。

# yum install --enablerepo=remi,php71 php-phpmyadmin-sql-parser.noarch php-phpmyadmin-motranslator.noarch
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * epel: ftp.riken.jp
 * extras: ftp.iij.ad.jp
 * remi: ftp.riken.jp
 * remi-safe: ftp.riken.jp
 * updates: ftp.iij.ad.jp
Resolving Dependencies
--> Running transaction check
---> Package php-phpmyadmin-motranslator.noarch 0:4.0-1.el7.remi will be installed
---> Package php-phpmyadmin-sql-parser.noarch 0:4.3.2-1.el7.remi will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package                         Arch       Version              Repository
                                                                           Size
================================================================================
Installing:
 php-phpmyadmin-motranslator     noarch     4.0-1.el7.remi       remi      20 k
 php-phpmyadmin-sql-parser       noarch     4.3.2-1.el7.remi     remi     166 k

Transaction Summary
================================================================================
Install  2 Packages

Total download size: 187 k
Installed size: 915 k
Is this ok [y/d/N]: y
Downloading packages:
(1/2): php-phpmyadmin-motranslator-4.0-1.el7.remi.noarch.r |  20 kB   00:00
(2/2): php-phpmyadmin-sql-parser-4.3.2-1.el7.remi.noarch.r | 166 kB   00:00
--------------------------------------------------------------------------------
Total                                              685 kB/s | 187 kB  00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : php-phpmyadmin-motranslator-4.0-1.el7.remi.noarch            1/2
  Installing : php-phpmyadmin-sql-parser-4.3.2-1.el7.remi.noarch            2/2
  Verifying  : php-phpmyadmin-motranslator-4.0-1.el7.remi.noarch            1/2
  Verifying  : php-phpmyadmin-sql-parser-4.3.2-1.el7.remi.noarch            2/2

Installed:
  php-phpmyadmin-motranslator.noarch 0:4.0-1.el7.remi
  php-phpmyadmin-sql-parser.noarch 0:4.3.2-1.el7.remi

Complete!

やっぱり、phpMyAdminがインストールされていない!
phpMyAdminを明示的に入れる必要があるわけで、以下のコマンドでインストールを行う。

# yum install --enablerepo=remi,php71 phpMyAdmin.noarch
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * epel: ftp.riken.jp
 * extras: ftp.iij.ad.jp
 * remi: ftp.riken.jp
 * remi-safe: ftp.riken.jp
 * updates: ftp.iij.ad.jp
Resolving Dependencies
--> Running transaction check
---> Package phpMyAdmin.noarch 0:4.9.0.1-1.el7.remi will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package           Arch          Version                      Repository   Size
================================================================================
Installing:
 phpMyAdmin        noarch        4.9.0.1-1.el7.remi           remi        5.3 M

Transaction Summary
================================================================================
Install  1 Package

Total download size: 5.3 M
Installed size: 26 M
Is this ok [y/d/N]: y
Downloading packages:
phpMyAdmin-4.9.0.1-1.el7.remi.noarch.rpm                   | 5.3 MB   00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : phpMyAdmin-4.9.0.1-1.el7.remi.noarch                         1/1
  Verifying  : phpMyAdmin-4.9.0.1-1.el7.remi.noarch                         1/1

Installed:
  phpMyAdmin.noarch 0:4.9.0.1-1.el7.remi

Complete!

無事入りました!
ちなみに、こちらはremiを使ってPHP71の事例となっていますが、その他のバージョンに関しては適宜バージョン指定を変えてくださいね。

Raspberry Pi 3 & CentOS 7でyum updateが出来る様に設定する!

Raspberry Pi 3にCentOSを入れたまでは良かったのですが、yumのアップデートが出来ない!

<<<<<<前回までの記事>>>>>>
Raspberry Pi 3にCentOS 7を入れてみた時にやったこと
Raspberry Pi 3SDメモリの空きを認識させる。
<<<<<<ここまで>>>>>>

アップデートが出来ないと、パッケージをインストールしたりする時に面倒が起こる可能性がありますよね。
それに、セキュリティアップデートが出来ないのも困ってしまいます。
「ラズパイだから攻撃されて壊れたっていいや!?」という訳にも行きません。
ネットワークに侵入を許したことになりますから、何をされるか分かったもんじゃない(-_-メ)

そもそも、バグも修正されないのですから、yum updateを必須だと思っています。

デフォルト状態で何故アップデート出来ないのか?それは、何らかの理由でリンク切れが発生しているためだった様です。

ダウンロードしてインストールを行ったOSイメージに含まれている設定では、リンク先が上手く設定出来ていない様です。多分、イメージを作ったとに変更なったりしたのかも知れませんね。

ということで、実は設定を変更するだけなのです。

対象ファイルを開きます。

# cd /etc/yum.repos.d/
[root@centos-rpi3 yum.repos.d]# ls
CentOS-Base.repo       CentOS-Sources.repo  CentOS-armhfp-kernel.repo
CentOS-CR.repo         CentOS-Testing.repo  CentOS-fasttrack.repo
CentOS-Debuginfo.repo  CentOS-Vault.repo    kernel.repo
[root@centos-rpi3 yum.repos.d]# vi CentOS-armhfp-kernel.repo

CentOS-armhfp-kernel.repoの内容を以下の様に変更します。

[centos-kernel]
name=CentOS Kernels for armhfp
#baseurl=https://mirror.centos.org/altarch/7/kernel/$basearch/kernel-$kvariant
baseurl=https://mirror.centos.org/altarch/7/kernel/$basearch/kernel-rpi2/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
       file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-AltArch-Arm32

この状態で以下のコマンドを実行してみてください。
成功している場合には、少し時間が掛かると思います。
ネット環境にも依りますが、30分以上掛かることを覚悟してください。

# yum update

パッケージのアップデートが開始されます。

この状態でアップデートが出来ない様でしたら、もう一つのファイルを編集します。

/etc/yum.repo.d/kernel.repoを編集します。

[kernel]
name=kernel repo for RaspberryPi 2 and 3
#baseurl=https://mirror.centos.org/altarch/7/kernel/$basearch/kernel-$kvariant/
baseurl=https://mirror.centos.org/altarch/7/kernel/$basearch/kernel-rpi2
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
       file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-AltArch-Arm32

これで再度yum updateコマンドを実行してみてください。

私はこれで上手く動作しました。

ネット上では何人かの方が記載されているので、書かれた時に成功しているという好意的解釈をすると、途中で変更が幾度か行われているのかも知れません。

もし、上手く出来ないという時は、コメント欄に質問してみてください。
答えられれば回答させて頂きたいと思います。

これで一通りの設定が完了しました。
簡単なサーバを構築する下準備までになりますが、ここからはどう使うかによって設定が変わってくると思いますが、ここまでの設定は基本的に共通だと思います。

ここで参考情報です。

1)Raspberry Pi 3用のOSが入ったSDカードが販売されています。
2)出来上がったSDカードはDD for Windowsでパソコン側へイメージファイルとしてバックアップを取ることが出来ます。
3)ご要望がありましたら、ここまでの環境設定を行ったイメージフィルを期間限定でご提供しようと思います。ご要望はコメント欄に記載してください。