AVAVAVAVA
@AVAVAVAVA

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

software-properties-commonとかapt-add-repositoryってなんだろう

わからないこと

ubuntuにphpとかをインストールするときにリポジトリを追加する理由がわかりません。

コマンド

RUN apt update                                       && \
    apt install -y software-properties-common        && \
    LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php && \
    apt update                                       && \
    apt install -y php8.0 php8.0-mysql

自分の解釈、わかっていること

add-apt-repositoryコマンドを使うためにsoftware-properties-commonをインストール
文字コードをc.utf-8に指定してppa:ondrej/phpリポジトリをローカルにインストール
phpをインストール

(「わからないこと」と被っているけど)知りたいこと

1.文字コードを指定する理由

2.ppa:ondrej/phpリポジトリをインストールする理由。web上にあるものを検索してインストールするものかと思っていたのでなぜ新しくインストールする必要があるのかわかりません。今の解釈もあっているか怪しいのでこの周辺をある程度具体的にお聞きしたいです。

0

2Answer

各版のUbuntuでは、ほぼ一つの版のPHPしか提供されてないからです。

たとえば Jammy(22.04)では (apt install phpした場合) PHP 8.1 が提供されてますが、7.4や8.3など他の版はありません。

文字コードを指定する理由

古いIssues(2015年)ですが、当時PPA Keyの追加に失敗(破損)する問題を回避するためにとられた処置です。

詳しく知りたいなら deb.sury.org を見てみると良いと思います(Wikiなど)。

1Like

Comments

  1. @AVAVAVAVA

    Questioner

    回答ありがとうございます。返信が遅くなってしまい申し訳ありません。
    私はubuntuがある程度の互換性があるように設計されていて、例えばどのOSでも同じphp8.0を使っているものと思っていたのですがそんなことは無く、ubuntuにはubuntuのphp8.0が用意されているということでしょうか?

  2. PHP 8.0は標準リポジトリでは既にメンテナンスが止まっているはずです。

    Ubuntu Developersはほぼボランティアでしょうから、全ての版のPHPをメンテナンスが成されることは無いと思って下さい。
    なのでoerdnj氏がメンテナンスしてるPHPを使うために彼が管理してるリポジトリppa:ondrej/phpを追加することでPHP 8.0なり他の版PHPを得られるわけです。

  3. @AVAVAVAVA

    Questioner

    「特定の版のphpが動くようにubuntuをメンテナンスする」だったら理解できるのですがそうではないのでしょうか
    Ubuntuを構成するファイルのひとつに特定の版のphpを動かすための設定ファイル?がありUbuntu Developersが用意したものはphp ver.xの設定ファイル?、oerdnj氏が用意したリポジトリにはphp ver 8.0などの設定ファイル?が含まれているという解釈は間違ってますか?

  4. 「特定の版のphpが動くようにubuntuをメンテナンスする」だったら理解できる

    事情を知っているわけでは無いので、そのアタリのことまでは解りません。

    各Ubuntuのバージョン毎に、様々なPHPの版をビルドしてパッケージ化するのは恐らく大変です。むしろボランティアの彼らはここまでよくやってくれていることは感謝してます。

    oerdnj氏が用意したリポジトリにはphp ver 8.0などの設定ファイル?が含まれているという解釈は間違ってますか?

    この設定が何を指しているのか解りませんが、Ubuntuで欲しい特定の版のPHPはoerdnj氏のリポジトリを使ってインストールする以外の方法はPHPを自らビルドする以外無いです。

Dockerのこの記事を読んでいて検索に掛かりました。
(この質問はDocker関係無いのですが)
なので、ubuntu20.04を前提として回答します。

ubunto20だと普通にapt install phpとするとPHP7.4がインストールされます。でも自分が動かしたいWordPressがPHP7.4は対応しないとなると(今はしてますが)、PHP8をインストールする必要があります。

PHP8を入れたいなと思ったら、一番原始的な方法はPHPの公式サイトからPHP8のソースコードを持ってきてPHPの公式サイトにあるようにインストールすればいいわけです。でも面倒ですよね。configureって何?Apacheの設定を手動で変更?みたいなこともしなければならないです。

するともしubuntuのインストールパッケージがあれば簡単です。php80.debとかあれば、それをダウンロードしてきて

#dpkg -i php8.0.deb

ってやるとインストールできます。さっきのPHP公式サイトからの手順より楽です。

じゃあこのdebファイルは誰かがPHP公式サイトから作ってくれてるわけです。debファイル作るのはそれほど難しくはないですが面倒ですので、誰かが作ってくれてるならダウンロードした方が早いですよね。

で、debファイルを探すのですが、これがそう簡単には見つかりません。ubuntu php8 debとかで検索しても全然出てきません。このあたりとかからダウンロードできるでしょうか。

さらに言うと、debが1つあっても依存性でエラーしてインストールできなかったりします。

そこで、便利なのがそのあたりの情報(debファイルの場所や必要な依存性)を解決したリポジトリです。そのリポジトリをインストールするのがadd-apt-repositoryコマンドで、そのコマンドが入っているパッケージがsoftware-properties-commonということです。

じゃあ、このPHP8.0に脆弱性が見つかってパッケージを更新しなければならない場合、このパッケージを作ってくれた人は対応してくれるのか!?!?というとそれはその人次第です。そこまでやってくれるならみんな使うでしょうし、そうでなければ自分で頑張ってPHP入れなおしてくださいねということです。

0Like

Your answer might help someone💌