LoginSignup
2
0

More than 3 years have passed since last update.

Ubuntuに最新版のパッケージをインストールする方法まとめ

Posted at

Ubuntuでパッケージをインストールしようとしたとき
バージョンが古かったりそもそも存在しなかったり
するときの対処法のまとめ

結論としてリポジトリを追加して最新版のパッケージを
インストールするやり方は2点

  • 公式(パッケージの方)のリポジトリをサイトから探す
  • PPAを使う

apt installはそもそも何をしているのか?

ざっくりとした手順は以下

  1. 依存関係のチェック
  2. パッケージをダウンロードし、dpkgに渡す
  3. dpkgがパッケージをインストール

結局のところ2番目のパッケージが古いか
もしくは存在しないかが問題になる

パッケージはどこにあるのか?

パッケージは/etc/apt/sources.listにリポジトリとして存在している

以下一部抜粋

# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.
deb http://us.archive.ubuntu.com/ubuntu/ bionic main restricted
# deb-src http://us.archive.ubuntu.com/ubuntu/ bionic main restricted

重要なのは
deb http://us.archive.ubuntu.com/ubuntu/ bionic main restricted
の部分

書式は

deb uri distribution [component]

となっているが
見てわかる通りなんだかややこしい

distribution、component等にそれぞれ意味があるのだが
結局なにをしているのかというと
この書式でURLを形成している

例えばdeb http://us.archive.ubuntu.com/ubuntu/ bionic-updates universe
ならhttp://us.archive.ubuntu.com/ubuntu/dists/bionic-updates/universe/binary-amd64/
にPackages.gzがあることが確認できる

ubuntu_formal_repository.PNG

つまりパッケージはUbuntu上に存在しているわけではなく
どっかのサーバーからダウンロードしてインストールすることになる

また配布しているサイトによってはdistributionとcomponentの
書き方がまちまちだったりするので書式が複雑ならURLを辿ってみると
どこにパッケージが存在するのか解りやすかったりする

distributionとcomponentの詳しい説明は下記
APT の設定 (/etc/apt/sources.list) をちゃんと理解する

sources.listにリポジトリを加える

sources.listがなんなのかわかったので
実際にリポジトリを加えてみる

基本的に公式(アプリの方)がリポジトリを公開しているのなら
やり方はだいたい公式サイトに書いてあるので参照

今回はNginxを追加してみる

まず現時点で入手できるパッケージを確認

$ apt-cache show nginx
Package: nginx
Architecture: all
Version: 1.14.0-0ubuntu1.7
Priority: optional
Section: web
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Debian Nginx Maintainers <pkg-nginx-maintainers@lists.alioth.debian.org>
…

最新版で1.14.0

sources.list.d下にnginx.listを加える

$ sudo vi /etc/apt/sources.list.d/nginx.list

#以下を追加
deb http://nginx.org/packages/ubuntu bionic nginx

この場合bionic(Ubuntu18.04のコードネーム)がdistribution
nginxがcomponentになる

実際にURLを辿っていくと
http://nginx.org/packages/ubuntu/dists/bionic/nginx/binary-amd64/
にPackagesがある

nginx_package.PNG

たいていパッケージはPGPで暗号化されているので
公開鍵を入手

PGPについては1分でわかるPGP

$ wget https://nginx.org/keys/nginx_signing.key | sudo apt-key add -
OK

apt-key addで公開鍵をインポートして使います

あとはアップデートしてインストールするだけ

$ sudo apt update
$ sudo apt install nginx

最後にバージョンを確認

$ nginx -v
$ nginx version: nginx/1.18.0

PPAを使う

公式がリポジトリを作ってない場合があります
そんな時はPPA

PPAは、「Personal Package Archive」の略で
その名の通り第三者が配布しているリポジトリ

導入の際は自己責任でやりましょう

PPAは安全なのか?

とかいいつつホントは公式が配布しているんでしょ?
と思われるかもしれないが

ホントに第三者が配布している(公式が配布している場合もある)ので
セキュリティを気にするなら下記の三点は抑えておく

  1. PPAを作成した人をキチンと調べる(公式なのかそうでないのか等)
  2. そのPPAの使用ユーザー数を調べる(使っているユーザーはいるのかググる)
  3. 更新頻度を調べる

参考サイト
Are PPAs safe to add to my system and what are some “red flags” to watch out for?

導入する

以上のことを踏まえて実際にPPAでPHP7.2のリポジトリを導入してみる

https://launchpad.net/ubuntu/+ppas
からPHPで検索してみると大量のPPAがヒットするが
この中でも更新頻度が高いものを選択する

PPA_PHP72_edit.png

実際、このPPAは有名でググると大量の記事がヒットがわかる

追加の仕方は

$ sudo add-apt-repository ppa:user/ppa-name

大体はAdding this PPA to your systemの欄に書いてある通り

実際に導入してみる

$ sudo add-apt-repository ppa:ondrej/php

sources.list.dを調べてみるとondrej-ubuntu-php-bionic.list
が追加されているので中身を調べてみる

$ cat /etc/apt/sources.list.d/ondrej-ubuntu-php-bionic.list
deb http://ppa.launchpad.net/ondrej/php/ubuntu bionic main
# deb-src http://ppa.launchpad.net/ondrej/php/ubuntu bionic main

基本的なことは先ほど説明した通り
あとはupdateしてinstallするだけ

$ sudo apt update
$ sudo apt install php7.2

ということで無事インストールできました

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0