登録日: 2022-01-25 更新日: 2022-03-09
「Xubuntu 20.04.4 LTS」をホストOS にした「VirtualBox」に、公開はまだの「Ubuntu 22.04 LTS」のDaily 版(日々更新版)をインストールしました。
-
その環境で、「Meson を使ったビルド」の勉強に、gnome の標準のテキストエディタである「gedit」をビルドしてみました。その備忘録です。
-
-
ホストOS : Xubuntu 20.04.4 LTS
ゲストOS : Ubuntu 22.04 LTS ←(今回の作業)
-
-
使用したPC は「ASUS Chromebox CN60 」で、 プロセッサは第4世代の「Intel Celeron 2955U 」です。UEFI 立ち上げです。
-
(注)リンクを戻るときはブラウザの左上の「←」をクリック
-
-
目次
-
以前の作業:
ホストOS に「VirtualBox をインストール」
-
今回の作業:
-
-
-
-
--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - -
「Ubuntu 22.04 LTS」の画面:
-
デスクトップは使いやすいようにカスタマイズ:
→ドックのアイコンを小さくして、右に移動したぐらい。 デフォルトの壁紙も悪くありません。
-
ビルドした「gedit」を起動:
→コマンドから「./gedit」として起動。gedit がPython で作られていたとは知りませんでした。
バージョンは「41.alpha」です。
-
-
--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --
「Ubuntu 22.04 LTS」について
-
リリース:
$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=22.04 DISTRIB_CODENAME=jammy DISTRIB_DESCRIPTION="Ubuntu Jammy Jellyfish (development branch)"
→「Alpha 版」ですが、内部エラーも少なく安定しています。
-
現在のバージョンを表示:
2022-01-25 現在
カーネル:
$ uname -r 5.15.0-17-generic
-
-
--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ---
Meson について
-
参考:
-
抜粋:
GNOME 系のソフトウェア(つまり、Fedora)を中心に、「Meson」というビルドシステムの利用が広がっています。 シェルを呼び出さず、チェックやビルド設定の処理は高速で、短時間で終了します。 プログラム開発において、ビルドのたびに待たされる時間が短縮できるのが大きな利点です。
-
CMake の代わりに「Meson」を使い、Make の代わりに「Ninja」を使うと考えればわかりやすいかも。なので既存からの移行がしやすいシステムだと思います。
-
Meson は、ビルドを自動化するためのソフトウェアで、Python で書かれています。 Meson の目標は、プログラマの生産性を向上させることです。
Meson を用いているプロジェクトはソースツリーに「meson.build」ファイルを置いています。サブディレクトリの処理にも対応しているため、開発者はこの名前のファイルを複数記述することになります。サブディレクトリの記述はどちらかというと、そのフォルダのファイル構造の定義になるみたい。
-
Meson は直接ソフトウェアをビルドせずに、コンパイルの前準備を扱う処理を行います。 Linux では低レベルなビルドシステム(Meson ではNinja 用)のビルド用の定義ファイルを生成する点で、 CMake、autotools (+automake)、などに似ていますし、依存パッケージが足りないときの一覧の表示も似ています。
-
Meson によってNinja のビルドファイルが生成され、それをNinja で使って実際のビルドを行います。 Ninja はMake の代わりになるもので、より高速です。
-
Meson では、ビルドによって生成されたものの全ては、ビルド用のディレクトリにだけ出力されます。 そのフォルダにはNinja 用のビルドファイルも生成されるわけで、(Meson の初期のバージョンなら)そのフォルダに移動して、Ninja でビルドすることになります。
-
Meson の設定ファイル (meson.build) はPython に似た構文です。
Meson の設定ファイルは強い型付けがあり、リスト型は空白で文字列を分割することはありません。 従って、ファイル名やコマンドライン引数に空白やその他の文字が含まれていても適切に処理されます。
-
Meson は Python で書かれているので、pip でもインストールできます。 ただし、管理者権限でNinja を使いたい(システムにアプリを配置したい)ときは、apt でインストールする方がパスとかの設定をしなくてすむので楽です。
pip でインストールするときは、必ず Python 3 バージョンのpip を使うことになります。
-
-
--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----
1. 開発ツールのインストール
-
-
開発ツールのインストール
$ sudo apt install build-essential : 以下のパッケージが新たにインストールされます: build-essential dpkg-dev fakeroot g++ g++-11 libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libdpkg-perl libfakeroot libfile-fcntllock-perl libstdc++-11-dev lto-disabled-list
-
-
--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - -----
2. Meson をapt でインストール:
-
1). Meson のインストール:
$ sudo apt install meson : 以下のパッケージが新たにインストールされます: meson ninja-build
→「ninja」も依存でインストールされました。
-
2). Meson がインストールされたかの確認:
$ apt search meson : meson/jammy,jammy,now 0.61.1-1 all [インストール済み] high-productivity build system
→和訳: 生産性の高いビルドシステム
-
3). ninja がインストールされたかの確認:
$ apt search ninja-build : ninja-build/jammy,now 1.10.1-1 amd64 [インストール済み、自動] small build system closest in spirit to Make
→和訳: Make に最も近い小さなビルドシステム
-
4). 確認:
-
(1). 実行ファイルのパスの確認:
$ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin:/home/ubn/.local/bin
-
(2). 実行ファイルの場所の確認:
$ which meson /usr/bin/meson $ which ninja /usr/bin/ninja
-
(3). バージョンの確認:
$ meson --version 0.61.1 $ ninja --version 1.10.1
→「ninja」のバージョンを見れば、apt でインストールしたパッケージかがわかります。
-
(4). 管理者権限で使えるかを確認:
$ sudo meson --version 0.61.1 $ sudo ninja --version 1.10.1
-
-
--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- -
3. 「gedit」をビルドしてみます:
-
GNOME の標準のテキストエディタである、gedit をビルドしてインストールしてみました:
-
公式サイト:
こちらのサイトは、ビルドシステムとして「Meson」が使われています。
-
1). ソースのダウンロード:
公式サイトにて、「Download」ボタンをクリック→「tar.gz」→「ファイルを保存する」
「~/ダウンロード/gnome/」フォルダに移動
ダウンロードした「gedit-main.tar.gz」を右クリック→「ここで展開」
-
2). 展開したソースファイルの確認:
$ cd ~/ダウンロード/gnome/gedit-master/ $ ls -1 CONTRIBUTING.md COPYING NEWS README.md build-aux data docs gedit gedit.doap help logo.png meson.build ←(注目) meson_options.txt plugins po ←(注目) subprojects tools
-
3). メインの「meson.build」を確認:
$ cd ~/ダウンロード/gnome/gedit-master/ $ cat meson.build
-
4). 管理者権限でツールが使えるかを確認:
$ sudo meson --version 0.61.1 $ sudo ninja --version 1.10.1
-
-
--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- --
4. 「gedit」をビルドするための依存を補う:
-
Meson で「gedit」をビルドしますが、その前に、依存パッケージの不足を補います。 エラーが出なくなるまで、 Meson のビルドを繰り返します。
ビルド用のフォルダを使うので、ソースツリーが汚れません。
-
1). メインの「meson.build」にて、依存を確認:
$ cat meson.build
-
2). 依存の関連を抜粋:
libgd_dep = libgd_subproject.get_variable('libgd_dep') # Dependencies glib_req = '>= 2.64' gtk_req = '>= 3.22' gtksourceview_req = '>= 4.0' libpeas_req = '>= 1.14.1' libxml_req = '>= 2.5.0' gspell_req = '>= 1.0' pygobject_req = '>= 3.0.0' gio_dep = dependency('gio-2.0', version: glib_req) libxml_dep = dependency('libxml-2.0', version: libxml_req) gspell_dep = dependency('gspell-1', version: gspell_req, required: get_option('spell')) if get_option('python') python3 = python.find_installation('python3') endif libgedit_public_deps = [ gio_dep, dependency('gtk+-3.0', version: gtk_req), dependency('gtksourceview-4', version: gtksourceview_req), dependency('libpeas-gtk-1.0', version: libpeas_req), ] deps_basic_list = [ libgedit_public_deps, dependency('gobject-introspection-1.0'), ]
-
3). 予想される依存を列挙:
libgd ←(libgd-dev) glib = '>= 2.64' ←(libglib2.0-dev) gtk = '>= 3.22' ←(libgtk-3-dev) gtksourceview = '>= 4.0' ←(libgtksourceview-4-dev) libpeas = '>= 1.14.1' ←(libpeas-dev) libxml = '>= 2.5.0' ←(libxml2-dev) gspell = '>= 1.0' ←(libgspell-1-dev) pygobject = '>= 3.0.0' ←(python-gi-dev)
↓
gio-2.0 ←(golang-gir-gio-2.0-dev) libxml-2.0 = '>= 2.5.0' ←(libxml2-dev) gspell-1 = '>= 1.0' ←(libgspell-1-dev) gtksourceview-4 = '>= 4.0' gtk+-3.0 = '>= 3.22' libpeas-gtk-1.0 = '>= 1.14.1' gobject-introspection-1.0 ←(python3-gi)
-
4). 予想される依存の確認:
$ apt list libgd-dev libglib2.0-dev libgtk-3-dev libgtksourceview-4-dev libpeas-dev libxml2-dev libgspell-1-dev python-gi-dev golang-gir-gio-2.0-dev libxml2-dev libgspell-1-dev python3-gi : golang-gir-gio-2.0-dev/jammy,jammy 2.0.4~git20211109.4b0a2df-1 all libgd-dev/jammy 2.3.0-2ubuntu1 amd64 ←(インストールなし) libglib2.0-dev/jammy,now 2.71.0-2 amd64 [インストール済み] libgspell-1-dev/jammy,now 1.9.1-2 amd64 [インストール済み] libgtk-3-dev/jammy,now 3.24.30-3ubuntu2 amd64 [インストール済み] libgtksourceview-4-dev/jammy,now 4.8.2-1 amd64 [インストール済み] libpeas-dev/jammy,now 1.30.0-4build1 amd64 [インストール済み] libxml2-dev/jammy,now 2.9.12+dfsg-5 amd64 [インストール済み] python-gi-dev/jammy,now 3.42.0-3 amd64 [インストール済み] python3-gi/jammy,now 3.42.0-3 amd64 [インストール済み、自動]
-
5). プロジェクト(ソース)のディレクトリに移動:
$ cd ~/ダウンロード/gnome/gedit-master/
-
6). meson でビルド:(1回目)
$ meson setup builddir : meson.build:29:2: ERROR: Program or command 'git' not found or not executable
-
依存 (1). 「git」のインストール:
$ sudo apt install git : 以下のパッケージが新たにインストールされます: git git-man liberror-perl
-
7). meson でビルド:(2回目)
$ meson setup builddir : meson.build:32:0: ERROR: Subproject exists but has no meson.build file
和訳: サブプロジェクトは存在しますが、meson.build ファイルがありません
meson.build 32行目:
libgd_subproject = subproject( 'libgd', default_options: [ 'with-tagged-entry=true', 'static=true', ] ) libgd_dep = libgd_subproject.get_variable('libgd_dep')
$ ls ~/ダウンロード/gnome/gedit-master/subprojects/libgd/ $
→空です。
-
依存 (2). 「libgd」のダウンロード:
-
公式サイト:
-
README を確認:
libgd は、さまざまなGNOME3 スタイルのアプリケーションで使用されるライブラリです。
libgd を使用するには、次のことを行う必要があります。
1.最上位のプロジェクトディレクトリから、サブモジュールを追加します。
$ cd ~/ダウンロード/gnome/gedit-master/ $ git submodule add git://git.gnome.org/libgd fatal: not a git repository (or any of the parent directories): .git
→致命的:git リポジトリ(または親ディレクトリのいずれか)ではありません:.git
→このコマンドを使うには、親もgit リポジトリにする必要があるみたい。
-
ダウンロードのやり方を変更:
-
$ cd ~/ダウンロード/gnome/gedit-master/ $ cd subprojects/ $ ls subprojects/ libgd $ git clone https://gitlab.gnome.org/GNOME/libgd.git $ cd libgd $ ls -a . .git Makefile.am libgd libgd.m4 meson_options.txt test-tagged-entry-2.c .. .gitignore README libgd.doap meson.build meson_readme.md test-tagged-entry.c
-
$ cat meson.build
project('libgd', 'c', meson_version: '>= 0.38.0', default_options: ['static=true'], ) if not meson.is_subproject() message('WARNING: This project is only intended to be used as a subproject!') endif pkglibdir = get_option('pkglibdir') pkgdatadir = get_option('pkgdatadir') libgtk = dependency('gtk+-3.0', version: '>= 3.7.10') cc = meson.get_compiler('c') libm = cc.find_library('m', required: false) libgd_include = include_directories('.') subdir('libgd') if get_option('with-tagged-entry') foreach t : ['test-tagged-entry', 'test-tagged-entry-2'] executable(t, t + '.c', dependencies : libgd_dep) endforeach endif
-
8). 古い「meson 0.60.3」でビルドした場合:(3回目)
$ cd ~/ダウンロード/gnome/gedit-master/ $ meson setup builddir : The Meson build system Version: 0.60.3 Source dir: /home/ubn/ダウンロード/gnome/gedit-master Build dir: /home/ubn/ダウンロード/gnome/gedit-master/builddir Build type: native build Project name: gedit Project version: 41.alpha C compiler for the host machine: cc (gcc 11.2.0 "cc (Ubuntu 11.2.0-14ubuntu1) 11.2.0") C linker for the host machine: cc ld.bfd 2.37.50.20220106 Host machine cpu family: x86_64 Host machine cpu: x86_64 Executing subproject libgd libgd| Project name: libgd libgd| Project version: undefined libgd| C compiler for the host machine: cc (gcc 11.2.0 "cc (Ubuntu 11.2.0-14ubuntu1) 11.2.0") libgd| C linker for the host machine: cc ld.bfd 2.37.50.20220106 libgd| Found pkg-config: /usr/bin/pkg-config (0.29.2) libgd| Run-time dependency gtk+-3.0 found: YES 3.24.30 libgd| Library m found: YES libgd| Build targets in project: 3 libgd| Subproject libgd finished. Run-time dependency gio-2.0 found: YES 2.71.0 Run-time dependency libxml-2.0 found: YES 2.9.12 Run-time dependency gspell-1 found: YES 1.9.1 Program python3 found: YES (/usr/bin/python3) Dependency gtk+-3.0 found: YES 3.24.30 (cached) Run-time dependency gtksourceview-4 found: YES 4.8.2 Run-time dependency libpeas-gtk-1.0 found: YES 1.30.0 Run-time dependency gobject-introspection-1.0 found: YES 1.70.0 Configuring config.h using configuration DEPRECATION: i18n.merge_file does not take any positional arguments. This will become a hard error in the next Meson release. Program appstream-util found: YES (/usr/bin/appstream-util) DEPRECATION: i18n.merge_file does not take any positional arguments. This will become a hard error in the next Meson release. Program desktop-file-validate found: YES (/usr/bin/desktop-file-validate) Configuring org.gnome.gedit.gschema.xml using configuration Program xmllint found: YES (/usr/bin/xmllint) Configuring org.gnome.gedit.service using configuration Program glib-mkenums found: YES (/usr/bin/glib-mkenums) Program glib-mkenums found: YES (/usr/bin/glib-mkenums) Program glib-mkenums found: YES (/usr/bin/glib-mkenums) Program glib-mkenums found: YES (/usr/bin/glib-mkenums) Configuring gedit.gresource.xml using configuration Found pkg-config: /usr/bin/pkg-config (0.29.2) Program glib-compile-resources found: YES (/usr/bin/glib-compile-resources) Dependency gobject-introspection-1.0 found: YES 1.70.0 (cached) Dependency gobject-introspection-1.0 found: YES 1.70.0 (cached) Program g-ir-scanner found: YES (/usr/bin/g-ir-scanner) Dependency gobject-introspection-1.0 found: YES 1.70.0 (cached) Program g-ir-compiler found: YES (/usr/bin/g-ir-compiler) Program vapigen found: YES (/usr/bin/vapigen) Program glib-mkenums found: YES (/usr/bin/glib-mkenums) Program msgfmt found: YES (/usr/bin/msgfmt) Program glib-compile-resources found: YES (/usr/bin/glib-compile-resources) Program glib-mkenums found: YES (/usr/bin/glib-mkenums) Program glib-mkenums found: YES (/usr/bin/glib-mkenums) Program cat found: YES (/usr/bin/cat) Program glib-compile-resources found: YES (/usr/bin/glib-compile-resources) Program glib-mkenums found: YES (/usr/bin/glib-mkenums) Program glib-compile-resources found: YES (/usr/bin/glib-compile-resources) Program glib-compile-resources found: YES (/usr/bin/glib-compile-resources) Program glib-mkenums found: YES (/usr/bin/glib-mkenums) Program glib-compile-resources found: YES (/usr/bin/glib-compile-resources) Program msgfmt found: YES (/usr/bin/msgfmt) Program gedit-tool-merge.pl found: YES (/home/ubn/ダウンロード/gnome/gedit-master/plugins/externaltools/scripts/gedit-tool-merge.pl) Program build-aux/meson/post_install.py found: YES (/home/ubn/ダウンロード/gnome/gedit-master/build-aux/meson/post_install.py) Build targets in project: 174 gedit 41.alpha API version : 41.alpha Prefix : /usr/local API documentation : False User documentation : True Require all tests : False Spell checker plugin: true Subprojects libgd : YES Found ninja-1.10.1 at /usr/bin/ninja
→「Meson 0.60.3」の場合はうまく行きました。
-
9). 新しい「meson 0.61.1」でビルドした場合:(4回目)
$ cd ~/ダウンロード/gnome/gedit-master/ $ meson setup builddir : meson setup builddir The Meson build system Version: 0.61.1 Source dir: /home/ubn/ダウンロード/gnome/gedit-master Build dir: /home/ubn/ダウンロード/gnome/gedit-master/builddir Build type: native build Project name: gedit Project version: 41.alpha C compiler for the host machine: cc (gcc 11.2.0 "cc (Ubuntu 11.2.0-14ubuntu1) 11.2.0") C linker for the host machine: cc ld.bfd 2.37.50.20220106 Host machine cpu family: x86_64 Host machine cpu: x86_64 WARNING: You should add the boolean check kwarg to the run_command call. ←(警告1 表示) It currently defaults to false, but it will default to true in future releases of meson. See also: https://github.com/mesonbuild/meson/issues/9300 Executing subproject libgd libgd| Project name: libgd libgd| Project version: undefined libgd| C compiler for the host machine: cc (gcc 11.2.0 "cc (Ubuntu 11.2.0-14ubuntu1) 11.2.0") libgd| C linker for the host machine: cc ld.bfd 2.37.50.20220106 libgd| Found pkg-config: /usr/bin/pkg-config (0.29.2) libgd| Run-time dependency gtk+-3.0 found: YES 3.24.30 libgd| Library m found: YES libgd| Build targets in project: 3 libgd| Subproject libgd finished. Run-time dependency gio-2.0 found: YES 2.71.0 Run-time dependency libxml-2.0 found: YES 2.9.12 Run-time dependency gspell-1 found: YES 1.9.1 Program python3 found: YES (/usr/bin/python3) WARNING: Python files installed by Meson might not be found by python interpreter. ←(警告2 表示) This warning can be avoided by setting "python.platlibdir" option. WARNING: Python files installed by Meson might not be found by python interpreter. ←(警告3 表示) This warning can be avoided by setting "python.purelibdir" option. Dependency gtk+-3.0 found: YES 3.24.30 (cached) Run-time dependency gtksourceview-4 found: YES 4.8.2 Run-time dependency libpeas-gtk-1.0 found: YES 1.30.0 Run-time dependency gobject-introspection-1.0 found: YES 1.70.0 Configuring config.h using configuration data/meson.build:6:0: ERROR: Function does not take positional arguments. ←(エラー1 表示) A full log can be found at /home/ubn/ダウンロード/gnome/gedit-master/builddir/meson-logs/meson-log.txt
→「Meson 0.61.1 」にバージョンアップしてからエラーしました:
-
警告1:
run_command のチェックは、デフォルトでfalse からTrue に変更されました。 チェックでTrue が指定され、コマンドが失敗した場合、meson はエラーになります。
いくつかのリリースでチェック引数が設定されていない場合は警告します。
-
警告2:
警告:MesonによってインストールされたPythonファイルは、Pythonインタープリターによって検出されない場合があります。 この警告は、「python.platlibdir」オプションを設定することで回避できます。
-
platlibdir : サイト固有、プラットフォーム固有のファイルのディレクトリ(0.60.0以降)
-
警告3:
警告:MesonによってインストールされたPythonファイルは、Pythonインタープリターによって検出されない場合があります。 この警告は、「python.purelibdir」オプションを設定することで回避できます。
-
purelibdir : サイト固有、非プラットフォーム固有のファイルのディレクトリ(0.60.0以降)
-
エラー1:
data/meson.build:6:0: ERROR: Function does not take positional arguments.
確認:
$ cat ~/ダウンロード/gnome/gedit-master/data/meson.build
subdir('icons') install_man('gedit.1') appdata = 'org.gnome.gedit.appdata.xml' appdata_file = i18n.merge_file( ←(ここでエラーして停止) appdata, input: appdata + '.in', output: appdata, po_dir: '../po/', install: true, install_dir: get_option('datadir') / 'metainfo' ) :
-
Mesonは、近年、多くの改善された型チェックを追加しました
→これにより、以前は黙って無視されていた多くのことがエラーになるようになりました。単に、エラーする meson.build ファイルにはバグがある、だけのことですが、Python はライブラリを複数のアプリが利用するシステムなので、今となっては、その影響は大きいです。(だから、ある期間警告表示している)
-
i18n: merge_file() deprecate positional arguments #9445
抜粋:
今回のエラーの原因となる関数呼び出しは、位置引数を使用して呼び出される「i18n.merge_file」関数です。 これにより、msgfmt を使用して翻訳がテキストファイルにマージされます。
0.60 より前では、merge_file() に位置引数を渡した場合、型チェックされていなかったため、 完全に無視されて、エラーは発生しませんでした。
0.60.1 にて、非推奨の警告を表示するようになりました。ソースのマスターで削除しておく必要があります。 ただし、0.61.0 で再びハードエラーになるため、当面の間、その動作に依存するすべてのGNOMEプロジェクトを修正してください。
-
参考:
-
これにより、msgfmt を使用して翻訳がテキストファイルにマージされます。 通常のキーワードについては、custom_tgt を参照してください。
さらに、次のキーワードを受け入れます:
data_dirs: (0.41.0 で追加)そのファイルのディレクトリのリスト(i18n.gettext() も参照) po_dir: 現在のディレクトリを基準にした翻訳を含むディレクトリ type: ファイルのタイプ。有効なオプションは「xml」(デフォルト)と「desktop」です。 args: (0.51.0 で追加)msgfmt に渡す追加の引数のリスト ←(たぶん、これが問題)
-
-
--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- ---
5. バージョン管理ができるように、pip でmeson をインストールし直し:
-
1). apt で「meson」と「ninja」を削除
$ apt list meson ninja-build : meson/jammy,jammy,now 0.61.1-1 all [インストール済み] ninja-build/jammy,now 1.10.1-1 amd64 [インストール済み、自動]
-
削除:
$ sudo apt remove meson ninja-build : 以下のパッケージは「削除」されます: meson ninja-build
$ sudo apt autoremove : 以下のパッケージは「削除」されます: libcbor0.6 python-pip-whl
-
$ whereis pip pip: /usr/bin/pip /usr/share/man/man1/pip.1.gz
$ apt list python-pip : python-pip/jammy,jammy 20.3.4+dfsg-3 all $ apt list python3-pip : python3-pip/jammy,jammy,now 21.3.1+dfsg-3 all [インストール済み]
$ python3 -m pip list
-
$ python3 -m pip list | grep pip pip 21.3.1 $ pip3 list | grep pip pip 21.3.1
-
$ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin:/home/ubn/.local/bin
$ ls /home/ubn/.local/bin ls: '/home/ubn/.local/bin' にアクセスできません: そのようなファイルやディレクトリはありません
-
2). インストール可能な「meson」のバージョン番号を調べます:
$ pip3 install meson== Defaulting to user installation because normal site-packages is not writeable ERROR: Could not find a version that satisfies the requirement meson== (from versions: 0.29.0.dev1, 0.29.0.dev2, 0.29.0.dev3, 0.29.0, 0.30.0, 0.31.0, 0.32.0, 0.33.0, 0.34.0, 0.35.0, 0.35.1, 0.36.0, 0.37.0, 0.37.1, 0.38.0, 0.38.1, 0.39.0, 0.39.1, 0.40.0, 0.40.1, 0.41.0, 0.41.1, 0.41.2, 0.42.0, 0.42.1, 0.43.0, 0.44.0, 0.44.1, 0.45.0, 0.45.1, 0.46.0, 0.46.1, 0.47.0, 0.47.1, 0.47.2, 0.48.0, 0.48.1, 0.48.2, 0.49.0, 0.49.1, 0.49.2, 0.50.0, 0.50.1, 0.51.0, 0.51.1, 0.51.2, 0.52.0, 0.52.1, 0.53.0, 0.53.1, 0.53.2, 0.54.0, 0.54.1, 0.54.2, 0.54.3, 0.55.0, 0.55.1, 0.55.2, 0.55.3, 0.56.0rc1, 0.56.0rc2, 0.56.0, 0.56.1, 0.56.2, 0.57.0rc1, 0.57.0, 0.57.1, 0.57.2, 0.58.0rc1, 0.58.0, 0.58.1, 0.58.2, 0.59.0rc1, 0.59.0rc2, 0.59.0, 0.59.1, 0.59.2, 0.59.3, 0.59.4, 0.60.0rc1, 0.60.0rc2, 0.60.0, 0.60.1, 0.60.2, 0.60.3, 0.61.0rc1, 0.61.0, 0.61.1) ERROR: No matching distribution found for meson==
→バージョン番号を指定しないで、わざとエラーメッセージを表示させます。
ビルドに成功した「meson 0.60.3」があることを確認
-
和訳: 通常のサイトパッケージは書き込み可能ではないため、デフォルトで「ユーザーインストール」になります
→「--user」指定しなくても「ユーザーインストール」になるようです。
-
3). インストール可能な「ninja」のバージョン番号を調べます:
$ pip3 install ninja== Defaulting to user installation because normal site-packages is not writeable ERROR: Could not find a version that satisfies the requirement ninja== (from versions: 1.5.3, 1.7.2, 1.7.2.post1, 1.7.2.post2, 1.8.2, 1.8.2.post1, 1.8.2.post2, 1.9.0, 1.9.0.post1, 1.10.0, 1.10.0.post1, 1.10.0.post2, 1.10.0.post3, 1.10.2, 1.10.2.1, 1.10.2.2, 1.10.2.3) ERROR: No matching distribution found for ninja==
-
4). 参考: 「ユーザインストール」指定でのインストール先を確認:
$ python3 -m site --user-base /home/ubn/.local
→ユーザの「ベースバイナリディレクトリ」は「~/.local」です。
-
5). 「meson」を「ユーザインストール」指定でインストール:
$ python3 -m pip install --user meson Collecting meson Downloading meson-0.61.1-py3-none-any.whl (850 kB) |████████████████████████████████| 850 kB 1.8 MB/s Installing collected packages: meson Successfully installed meson-0.61.1
→最新版がインストールされます。
-
6). バージョンの指定を忘れたので、一旦、削除:
$ pip3 uninstall meson Found existing installation: meson 0.61.1 Uninstalling meson-0.61.1: Would remove: /home/ubn/.local/bin/meson /home/ubn/.local/lib/python3.9/site-packages/meson-0.61.1.dist-info/* /home/ubn/.local/lib/python3.9/site-packages/mesonbuild/* /home/ubn/.local/share/man/man1/meson.1 /home/ubn/.local/share/polkit-1/actions/com.mesonbuild.install.policy Proceed (Y/n)? Successfully uninstalled meson-0.61.1
→「~/local/」にインストールされていました。 なので、管理者権限は必要ありません。
-
7). 「meson」を「ユーザインストール」、およびバージョンを指定でインストール:
$ python3 -m pip install --user meson==0.60.3 Collecting meson==0.60.3 Using cached meson-0.60.3-py3-none-any.whl (838 kB) Installing collected packages: meson Successfully installed meson-0.60.3
-
8). 「ninja」を「ユーザインストール」指定でインストール:
$ python3 -m pip install --user ninja Collecting ninja Using cached ninja-1.10.2.3-py2.py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl (108 kB) Installing collected packages: ninja Successfully installed ninja-1.10.2.3
-
9). 認識させるため、端末を再起動してから、確認:
$ ls -1 ~/.local/bin meson ninja
-
$ whereis meson meson: /home/ubn/.local/bin/meson $ whereis ninja ninja: /home/ubn/.local/bin/ninja
-
$ meson --version 0.60.3 $ ninja --version 1.10.2.git.kitware.jobserver-1
-
-
--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- ----
6. 再ビルド:
-
1). ダウンロードしたソースを削除後、展開:
「~/ダウンロード/gnome/」フォルダに移動
展開した「~/ダウンロード/gnome/gedit-master/」を削除
ダウンロードした「gedit-main.tar.gz」を右クリック→「ここで展開」
-
「gedit-master」フォルダが生成:
$ cd ~/ダウンロード/gnome/gedit-master/
-
2). サブモジュールをダウンロードして追加:
-
$ cd ~/ダウンロード/gnome/gedit-master/subprojects/ $ git clone https://gitlab.gnome.org/GNOME/libgd.git
-
3). meson を古い「0.60.3」でビルド:(4回目)
$ cd ~/ダウンロード/gnome/gedit-master/ $ meson setup builddir : The Meson build system Version: 0.60.3 Source dir: /home/ubn/ダウンロード/gnome/gedit-master Build dir: /home/ubn/ダウンロード/gnome/gedit-master/builddir Build type: native build Project name: gedit Project version: 41.alpha C compiler for the host machine: cc (gcc 11.2.0 "cc (Ubuntu 11.2.0-14ubuntu1) 11.2.0") C linker for the host machine: cc ld.bfd 2.37.50.20220106 Host machine cpu family: x86_64 Host machine cpu: x86_64 Executing subproject libgd libgd| Project name: libgd libgd| Project version: undefined libgd| C compiler for the host machine: cc (gcc 11.2.0 "cc (Ubuntu 11.2.0-14ubuntu1) 11.2.0") libgd| C linker for the host machine: cc ld.bfd 2.37.50.20220106 libgd| Found pkg-config: /usr/bin/pkg-config (0.29.2) libgd| Run-time dependency gtk+-3.0 found: YES 3.24.30 libgd| Library m found: YES libgd| Build targets in project: 3 libgd| Subproject libgd finished. Run-time dependency gio-2.0 found: YES 2.71.0 Run-time dependency libxml-2.0 found: YES 2.9.12 Run-time dependency gspell-1 found: YES 1.9.1 Program python3 found: YES (/usr/bin/python3) Dependency gtk+-3.0 found: YES 3.24.30 (cached) Run-time dependency gtksourceview-4 found: YES 4.8.2 Run-time dependency libpeas-gtk-1.0 found: YES 1.30.0 Run-time dependency gobject-introspection-1.0 found: YES 1.70.0 Configuring config.h using configuration DEPRECATION: i18n.merge_file does not take any positional arguments. This will become a hard error in the next Meson release. →(赤い、非推奨メッセージ) Program appstream-util found: YES (/usr/bin/appstream-util) DEPRECATION: i18n.merge_file does not take any positional arguments. This will become a hard error in the next Meson release. →(赤い、非推奨メッセージ) Program desktop-file-validate found: YES (/usr/bin/desktop-file-validate) Configuring org.gnome.gedit.gschema.xml using configuration Program xmllint found: YES (/usr/bin/xmllint) Configuring org.gnome.gedit.service using configuration Program glib-mkenums found: YES (/usr/bin/glib-mkenums) Program glib-mkenums found: YES (/usr/bin/glib-mkenums) Program glib-mkenums found: YES (/usr/bin/glib-mkenums) Program glib-mkenums found: YES (/usr/bin/glib-mkenums) Configuring gedit.gresource.xml using configuration Found pkg-config: /usr/bin/pkg-config (0.29.2) Program glib-compile-resources found: YES (/usr/bin/glib-compile-resources) Dependency gobject-introspection-1.0 found: YES 1.70.0 (cached) Dependency gobject-introspection-1.0 found: YES 1.70.0 (cached) Program g-ir-scanner found: YES (/usr/bin/g-ir-scanner) Dependency gobject-introspection-1.0 found: YES 1.70.0 (cached) Program g-ir-compiler found: YES (/usr/bin/g-ir-compiler) Program vapigen found: YES (/usr/bin/vapigen) Program glib-mkenums found: YES (/usr/bin/glib-mkenums) Program msgfmt found: YES (/usr/bin/msgfmt) Program glib-compile-resources found: YES (/usr/bin/glib-compile-resources) Program glib-mkenums found: YES (/usr/bin/glib-mkenums) Program glib-mkenums found: YES (/usr/bin/glib-mkenums) Program cat found: YES (/usr/bin/cat) Program glib-compile-resources found: YES (/usr/bin/glib-compile-resources) Program glib-mkenums found: YES (/usr/bin/glib-mkenums) Program glib-compile-resources found: YES (/usr/bin/glib-compile-resources) Program glib-compile-resources found: YES (/usr/bin/glib-compile-resources) Program glib-mkenums found: YES (/usr/bin/glib-mkenums) Program glib-compile-resources found: YES (/usr/bin/glib-compile-resources) Program msgfmt found: YES (/usr/bin/msgfmt) Program gedit-tool-merge.pl found: YES (/home/ubn/ダウンロード/gnome/gedit-master/plugins/externaltools/scripts/gedit-tool-merge.pl) Program build-aux/meson/post_install.py found: YES (/home/ubn/ダウンロード/gnome/gedit-master/build-aux/meson/post_install.py) Build targets in project: 174 gedit 41.alpha API version : 41.alpha Prefix : /usr/local API documentation : False User documentation : True Require all tests : False Spell checker plugin: true Subprojects libgd : YES Found ninja-1.10.2.git.kitware.jobserver-1 at /home/ubn/.local/bin/ninja
→ビルドは成功しました。
-
よく見ると、同じ「非推奨」(赤いDEPRECATION: )メッセージが 2つ表示されていました:
DEPRECATION: i18n.merge_file does not take any positional arguments. This will become a hard error in the next Meson release.
和訳:
非推奨:i18n.merge_fileは位置引数を取りません。 これは、次のMeson リリースでハードエラーになります。
検索にて、下記がヒット
-
0.60 fails to build GNOME components #9441
-
i18n: merge_file() deprecate positional arguments #9445
-
meson 0.61.1 の場合は「i18n: merge_file()」関数の型チェックでエラーして停止しますが、meson 0.60.3 では警告だけで済んでいます。
-
-
4). ninja でビルド:
$ cd ~/ダウンロード/gnome/gedit-master/ $ meson compile -C builddir : [265/265] Generating plugins/snippets/snippets.plugin with a custom command
→うまく行きました。
-
5). ninja でインストール:
$ cd ~/ダウンロード/gnome/gedit-master/ $ meson install -C builddir ninja: Entering directory `/home/ubn/ダウンロード/gnome/gedit-master/builddir' ninja: no work to do. Installing subdir /home/ubn/ダウンロード/gnome/gedit-master/plugins/quickopen/quickopen to /usr/local/lib/x86_64-linux-gnu/gedit/plugins/quickopen Installation failed due to insufficient permissions. Attempting to use polkit to gain elevated privileges... Traceback (most recent call last): File "/home/ubn/.local/bin/meson", line 5, in <module> from mesonbuild.mesonmain import main ModuleNotFoundError: No module named 'mesonbuild'
→「ninja: no work to do.」は、「ninja: 何もする仕事はありません。」
実行ファイルのシステムへの配置はできませんが、「builddir」ディレクトリからの アプリの起動はできるはずです。
-
6). 実行ファイルの確認:
$ cd ~/ダウンロード/gnome/gedit-master/ $ cd builddir/gedit/ $ ls Gedit-3.0.gir gedit-enum-types-private.h gedit.vapi resources Gedit-3.0.typelib gedit-enum-types.c libgedit-41.alpha.so gedit gedit-enum-types.h libgedit-41.alpha.so.p gedit-enum-types-private.c gedit.p org.gnome.gedit.enums.xml
-
7). 「gedit」の起動:
$ cd ~/ダウンロード/gnome/gedit-master/builddir/gedit/ $ ./gedit
→「gedit」が起動されました。
-
-
ヘルプにてバージョンを確認:
→「41.alpha」表示
-
$ apt list gedit : gedit/jammy 40.1-3 amd64
→公式リポジトリのバージョンは「40.1-3」
-
gedit のプラグインを確認:
$ apt search gedit- : gedit-common/jammy,jammy,now 40.1-3 all [インストール済み、自動] GNOME デスクトップ環境の公式テキストエディタ (サポートファイル) gedit-dev/jammy 40.1-3 amd64 official text editor of the GNOME desktop environment (development files) gedit-latex-plugin/jammy,jammy 3.20.0-2 all gedit plugin for composing and compiling LaTeX documents gedit-plugin-bookmarks/jammy 40.1-2 amd64 Bookmarks plugin for gedit gedit-plugin-bracket-completion/jammy 40.1-2 amd64 Bracket Completion plugin for gedit gedit-plugin-character-map/jammy 40.1-2 amd64 Character Map plugin for gedit gedit-plugin-code-comment/jammy 40.1-2 amd64 Code Comment plugin for gedit gedit-plugin-color-picker/jammy 40.1-2 amd64 Color Picker plugin for gedit gedit-plugin-color-schemer/jammy 40.1-2 amd64 Color Schemer plugin for gedit gedit-plugin-commander/jammy 40.1-2 amd64 Commander plugin for gedit gedit-plugin-draw-spaces/jammy 40.1-2 amd64 Draw Spaces plugin for gedit gedit-plugin-find-in-files/jammy 40.1-2 amd64 Find in Files plugin for gedit gedit-plugin-git/jammy 40.1-2 amd64 Git plugin for gedit gedit-plugin-join-lines/jammy 40.1-2 amd64 Join/Split Lines plugin for gedit gedit-plugin-multi-edit/jammy 40.1-2 amd64 Multi Edit plugin for gedit gedit-plugin-session-saver/jammy 40.1-2 amd64 Session Saver plugin for gedit gedit-plugin-smart-spaces/jammy 40.1-2 amd64 Smart Spaces plugin for gedit gedit-plugin-synctex/jammy 40.1-2 amd64 SyncTex plugin for gedit gedit-plugin-terminal/jammy 40.1-2 amd64 Terminal plugin for gedit gedit-plugin-text-size/jammy 40.1-2 amd64 Text Size plugin for gedit gedit-plugin-translate/jammy 40.1-2 amd64 Translate plugin for gedit gedit-plugin-word-completion/jammy 40.1-2 amd64 Word Completion plugin for gedit gedit-plugins/jammy,jammy 40.1-2 all set of plugins for gedit gedit-plugins-common/jammy 40.1-2 amd64 common files for gedit-plugins gedit-source-code-browser-plugin/jammy,jammy 3.0.3-6 all source code class and function browser plugin for Gedit
→gedit の利点は多くのプラグインを使えることです。逆に、ひとつの修正で、すべてのプラグインが正常に動くかの確認が必要なので、メンテを続けて行くのは大変です。
-
-
--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- -----
7. 参考: Python とpip についての復習:
-
参考:
-
Python には、「システム、ファイル IO、関数、データベース、ウェブ」等の豊富な標準ライブラリが備わっています。もし、標準ライブラリにない場合には、外部(サードパーティー)から探して利用するしくみがあります。
Python のプログラムの作成では、機能は自分で作らなくても、ライブラリを活用することで省力化できます。
-
PyPI(Python Package Index)
-
PyPI は、プログラミング言語「Python」の、外部(サードパーティー)のソフトウェアのリポジトリ(web サービス)で、コミュニティが運営しています。
オープンソースなPython パッケージの多くは、PyPI に置かれており、Python パッケージの包括的なカタログと言えます。よく利用されているライブラリは、pip を用いてPyPI から簡単にインストールできます。
-
pip でインストールできるPython パッケージとバージョンを検索:
PyPI – the Python Package Index
-
pip(Pip Installs Packages)
パッケージ管理ツールの「pip」を使い、「PyPI」からパッケージやその依存パッケージをダウンロードしてインストールできます。
-
pip を使うと、コマンドで簡単にPython のパッケージやライブラリをインストールできます。
-
pip では、ファイルに必要なパッケージのリストとそのバージョンを記録しておけば、復元できる機能があります。
下記のコマンドだけで、他のPC や仮想環境に同じPython の環境を準備(インストール)できます:
$ pip install -r requirements.txt
→詳細は後で記述
-
ちなみに、Windows にPython をデフォルトでインストールした状態では、PATH が通っていないため、 pip をそのまま実行することができません。以下のように「py -m」を付けると実行できます。
-
1). 最新バージョンのPython にライブラリをインストールしたい場合:
-
Windows の場合:
C:¥> py -m pip install パッケージ名
-
Linux の場合:
$ python3 -m pip install パッケージ名
もしくは、
$ pip3 install パッケージ名
-
2). 古いバージョンのPython にライブラリをインストールしたい場合:
$ python3 -3.7 -m pip install パッケージ名
複数のPython がある場合は、違うバージョンにインストールしたライブラリは利用できません。注意。
-
3). 最新版にパッケージをアップグレードする場合:
> pip install -U パッケージ名
→ライブラリ名の前に --upgrade または -U を付加します。
→このオプションを付けても新規インストールは実行されますが、ライブラリの依存関係に注意
https://gammasoft.jp/python/python-library-install/#requirements
-
4). バージョンを指定してインストール:
ライブラリ名の後に「==」でバージョン番号を付加します
> pip install パッケージ名==1.25
以前のバージョンを指定すれば、バージョンを戻すこと(ダウングレード)も可能です。
-
5). インストール可能なライブラリのバージョン番号を調べる:
> pip install パッケージ名==
バージョン番号を指定しないで、わざとエラーメッセージを表示させます。
-
6). インストール済みのライブラリを確認:
> pip list
-
7). ライブラリのアンインストール:
> pip uninstall パッケージ名
-
8). インストール済みのライブラリを最新版にアップグレード
> pip install --upgrade パッケージ名 または、 > pip install -U パッケージ名
指定したライブラリがインストールされていない場合は、通常のインストールが実行されます。
-
9). インストール済みのライブラリが最新版かチェック
> pip list --outdated または、 > pip list -o
最新でないライブラリが表示されます。sdist とwheel は提供されているフォーマット名です。
-
10). バージョンの控えを記録しておく:
ライブラリのなかには、他のライブラリを利用しているものがあります。そのため、アップグレードによりライブラリ間の依存関係が損なわれると動かなくなることがあります(アップグレードの対応に間に合っていない場合など)。
正常に動作していた時のバージョンを控えておきます。
pip freeze で、現在インストールされているライブラリとそのバージョンが表示されます。
以下のようにテキストファイル(requirements.txt)に記録しておきます。
> pip freeze > requirements.txt
内容:
Flask==0.12.2 GDAL==1.11.5 Jinja2==2.10 numpy==1.13.3 :
-
11). バージョンの控えからの復元:
バージョンの控えをとっておけば、もしも動かなくなっても、控えのテキストファイルを指定してインストールを実行すれば簡単に復元できます。
> pip install -r requirements.txt
-
12). 依存するライブラリを調べる:
例: requests というWebから情報を取得するのに便利なライブラリの依存を調べます
> pip show requests Name: requests Version: 2.18.4 Summary: Python HTTP for Humans. Home-page: http://python-requests.org Author: Kenneth Reitz Author-email: me@kennethreitz.org License: Apache 2.0 Location: c:\users\ichiro\appdata\local\programs\python\python36-32\lib\site-packages Requires: chardet, urllib3, certifi, idna ←(依存パッケージ)
-
13). 依存関係の詳細を調べる:
-
pipdeptree をインストールしておきます:
> pip install pipdeptree
-
依存の詳細を確認:
> pipdeptree -p requests requests==2.18.4 - certifi [required: >=2017.4.17, installed: 2017.11.5] - chardet [required: <3.1.0,>=3.0.2, installed: 3.0.4] - idna [required: <2.7,>=2.5, installed: 2.6] - urllib3 [required: >=1.21.1,<1.23, installed: 1.22]
-
14). pip 自体のアップグレード
-
警告メッセージ:
You are using pip version 8.1.1, however version 9.0.1 is available. You should consider upgrading via the 'python -m pip install --upgrade pip' command.
-
警告メッセージの表示があったら、pip 自体をアップグレード:
> pip install --upgrade pip または > pip install -U pip
-
15). pip 自体のアップグレードでエラーした場合:
> pip install --force-reinstall --upgrade pip または > pip install --force-reinstall -U pip
-
16). ヘルプの表示
> pip install -h
-
-
まとめ
個人的に「Meson」のシステムをVirtualBox に入れて、アプリをソースからビルドできる環境にしてみました。
-
今回、GNOME の標準エディタの「gedit」を「Meson」でビルドしてみました。 最終的に、Haiku に「gedit」を移植できないかトライするためです。
-
Haiku では、Python やpip、meson やninja の実績がわかりません。 システムのパッケージ管理のしかたからして、インタプリタ的な開発には向いていないかもと、想像されます。
また、「gedit」のビルドでは、GitHub でなくGitLab で、それも 2段階の「git clone」が必要でした。人手の介入なく、1回の tar.gz でダウンロードできないと今のHaiku の移植のシステムだと(自分のスキルだと)自動的なビルド(つまり、移植)は難しそう。人手の介入で、個人的なビルドなら何とかできそうな気はします。
-
気づいたのは、新しいバージョンの「Meson」になるほど、ビルドが難しくなっていること。 それは、今まで無視していたエラーチェックが行われるように修正されて来ているからです。 エラーが発生するかは「meson.build」ファイルの作り方しだいです。
-
誤った使い方をチェックするのは当然ですが、今まで使えていたライブラリや、その使い方ができなくなるのは、(ライブラリを使い回すPython では特に)影響が大きいです。
そして、具体的でなくて、わかりづらい警告メッセージも難しくしています。表示されないよりはマシですが、開発者たちの会話を読み込まないとわからない、Issues の番号やコミットの番号を表示されても…。それは違うアプリのことについて書かれていたりするわけで、あっちやこっちを確認しながら、自分に当てはめる必要があります。
-
というわけで、ライブラリのバージョン管理ができる「pip」が役に立ったということでした。 以前使えていた頃のバージョンの「Meson」に戻せます。
-
-
-
-
目次
-
-
- 目次
- --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - -
- 「Ubuntu 22.04 LTS」の画面:
- --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --
- 「Ubuntu 22.04 LTS」について
- --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ---
- Meson について
- --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----
- 1. 開発ツールのインストール
- --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - -----
- 2. Meson をapt でインストール:
- --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- -
- 3. 「gedit」をビルドしてみます:
- --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- --
- 4. 「gedit」をビルドするための依存を補う:
- --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- ---
- 5. バージョン管理ができるように、pip でmeson をインストールし直し:
- --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- ----
- 6. 再ビルド:
- --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- -----
- 7. 参考: Python とpip についての復習:
- PyPI(Python Package Index)
- pip(Pip Installs Packages)
- 1). 最新バージョンのPython にライブラリをインストールしたい場合:
- 2). 古いバージョンのPython にライブラリをインストールしたい場合:
- 3). 最新版にパッケージをアップグレードする場合:
- 4). バージョンを指定してインストール:
- 5). インストール可能なライブラリのバージョン番号を調べる:
- 6). インストール済みのライブラリを確認:
- 7). ライブラリのアンインストール:
- 8). インストール済みのライブラリを最新版にアップグレード
- 9). インストール済みのライブラリが最新版かチェック
- 10). バージョンの控えを記録しておく:
- 11). バージョンの控えからの復元:
- 12). 依存するライブラリを調べる:
- 13). 依存関係の詳細を調べる:
- 14). pip 自体のアップグレード
- 15). pip 自体のアップグレードでエラーした場合:
- 16). ヘルプの表示
- まとめ
- -
-
-
-
-