GR- ISDBT を Ubuntu20.04 環境でビルドしようとしたが


# GR-ISDBT

ISDB-T (Integrated Services Digital Broadcasting - Terrestrial)
は日本の地デジで採用されている放送方式。

GR-ISDBT は GNURadio 上の ISDB-T の実装。

GNURadio は SDR (Sofrware Defined Radio) の OSS ツールキット。
ラジオ/テレビ、デジタル無線、衛星通信、レーダーなど様々なチャレンジがなされている。

今回は、GR-ISDBT を Ubuntu 20.04 でビルドできるかためしてみたが、うまくいかなかった記録。

# 環境

Ubuntu 20.04 LTS

# ビルドにチャレンジ


https://github.com/git-artes/gr-isdbt

ここに書いてある通りにしてみる


```

$ git clone https://github.com/git-artes/gr-isdbt.git  
$ cd gr-isdbt  
$ mkdir build  
$ cd build  
$ cmake ../ 

```

としてみるが


```

-- Build type not specified: defaulting to release.
-- Could NOT find Boost (missing: Boost_INCLUDE_DIR filesystem system) (Required is at least version "1.35")
CMake Error at CMakeLists.txt:78 (message):
  Boost required to compile isdbt
```

ふむ。boost が必要なのですね。


まずは、
「CMake で Could NOT find Boost と言われる。 @Ubuntu 12.04 & 14.04」
https://qiita.com/HiromiS/items/a05d61a7b8cc6590ebe3
を見て、

```

$ sudo add-apt-repository ppa:boost-latest/ppa -y
```

を試してみたが・・・

```

取得:23 http://jp.archive.ubuntu.com/ubuntu focal-backports/universe amd64 DEP-11 Metadata [1,768 B]
エラー:24 http://ppa.launchpad.net/boost-latest/ppa/ubuntu focal Release                      
  404  Not Found [IP: 91.189.95.85 80]
取得:25 http://security.ubuntu.com/ubuntu focal-security/main amd64 DEP-11 Metadata [24.5 kB]
取得:26 http://security.ubuntu.com/ubuntu focal-security/universe amd64 DEP-11 Metadata [58.3 kB]
取得:27 http://security.ubuntu.com/ubuntu focal-security/multiverse amd64 DEP-11 Metadata [2,464 B]
パッケージリストを読み込んでいます... 完了   
E: リポジトリ http://ppa.launchpad.net/boost-latest/ppa/ubuntu focal Release には Release ファイルがありません。
N: このようなリポジトリから更新を安全に行うことができないので、デフォルトでは更新が無効になっています。
N: リポジトリの作成とユーザ設定の詳細は、apt-secure(8) man ページを参照してください。


```


うまくいかなかったので今度は
「c++ - installing Boost for CMake in OpenPose in Ubuntu 20.04 - Stack Overflow」


https://stackoverflow.com/questions/65605733/installing-boost-for-cmake-in-openpose-in-ubuntu-20-04
を見て、

```

$ sudo apt install  libboost-filesystem1.71-dev
```

としてみた。


```

$ cmake ../
-- Build type not specified: defaulting to release.
-- Found Boost: /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake (found suitable version "1.71.0", minimum required is "1.35") found components: filesystem system 
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.1") 
-- Checking for module 'cppunit'
--   No package 'cppunit' found
-- Could NOT find CPPUNIT (missing: CPPUNIT_INCLUDE_DIRS) 
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE) 
CMake Error at CMakeLists.txt:129 (find_package):
  By not providing "FindGnuradio.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "Gnuradio",
  but CMake did not find one.

  Could not find a package configuration file provided by "Gnuradio"
  (requested version 3.7.2) with any of the following names:

    GnuradioConfig.cmake
    gnuradio-config.cmake

  Add the installation prefix of "Gnuradio" to CMAKE_PREFIX_PATH or set
  "Gnuradio_DIR" to a directory containing one of the above files.  If
  "Gnuradio" provides a separate development package or SDK, be sure it has
  been installed.


-- Configuring incomplete, errors occurred!
See also "/home/nanbuwks/Downloads/gr-isdbt/build/CMakeFiles/CMakeOutput.log".

```

と出たので cppunit を入れる。
その上で出るエラーに沿って、 doxygen も入れる。

```

$ sudo apt install libcppunit-dev
$ sudo apt-get install doxygen

```

どうかな・・・

```

$ cmake ../
-- Build type not specified: defaulting to release.
-- Found Doxygen: /usr/bin/doxygen (found version "1.8.17") found components: doxygen dot 
CMake Error at CMakeLists.txt:129 (find_package):
  By not providing "FindGnuradio.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "Gnuradio",
  but CMake did not find one.

  Could not find a package configuration file provided by "Gnuradio"
  (requested version 3.7.2) with any of the following names:

    GnuradioConfig.cmake
    gnuradio-config.cmake

  Add the installation prefix of "Gnuradio" to CMAKE_PREFIX_PATH or set
  "Gnuradio_DIR" to a directory containing one of the above files.  If
  "Gnuradio" provides a separate development package or SDK, be sure it has
  been installed.


-- Configuring incomplete, errors occurred!
See also "/home/nanbuwks/Downloads/gr-isdbt/build/CMakeFiles/CMakeOutput.log".


```

ふむ。それでは gnuradio-dev を入れればいいかな・・・


```


$ sudo apt install gnuradio gnuradio-dev  libcppunit-dev liblog4cpp5-dev swig

```

としてみたところ・・・

```

$ cmake ../
-- Build type not specified: defaulting to release.
CMake Error at CMakeLists.txt:129 (find_package):
  Could not find a configuration file for package "Gnuradio" that is
  compatible with requested version "3.7.2".

  The following configuration files were considered but not accepted:

    /usr/lib/x86_64-linux-gnu/cmake/gnuradio/GnuradioConfig.cmake, version: 3.8.1.0
    /lib/x86_64-linux-gnu/cmake/gnuradio/GnuradioConfig.cmake, version: 3.8.1.0



-- Configuring incomplete, errors occurred!
See also "/home/nanbuwks/Downloads/gr-isdbt/build/CMakeFiles/CMakeOutput.log".


```

ふむむ。


../CMakeLists.txt の 129行目、


```


find_package(Gnuradio "3.7.2" REQUIRED)
```
 Gnuradio のバージョン指定が為されている。試しに以下のようにしてみたのだけれど・・・

```

find_package(Gnuradio "3.8.1.0" REQUIRED)
```


```

$ cmake ../
-- Build type not specified: defaulting to release.
-- Found LOG4CPP: /usr/lib/x86_64-linux-gnu/liblog4cpp.so
-- Checking for module 'gmp'
--   Found gmp, version 6.2.0
-- Found GMP: /usr/lib/x86_64-linux-gnu/libgmpxx.so  
-- Checking for module 'mpir >= 3.0'
--   No package 'mpir' found
-- Could NOT find MPIR (missing: MPIRXX_LIBRARY MPIR_LIBRARY MPIR_INCLUDE_DIR) 
-- Found MPLIB: /usr/lib/x86_64-linux-gnu/libgmpxx.so  
-- Found Boost: /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake (found suitable version "1.71.0", minimum required is "1.71.0") found components: date_time program_options filesystem system regex thread unit_test_framework 
-- Found VOLK: Volk::volk  
CMake Warning (dev) at /usr/lib/x86_64-linux-gnu/cmake/gnuradio/GnuradioConfig.cmake:48 (if):
  if given arguments:

    "ON"

  An argument named "ON" appears in a conditional statement.  Policy CMP0012
  is not set: if() recognizes numbers and boolean constants.  Run "cmake
  --help-policy CMP0012" for policy details.  Use the cmake_policy command to
  set the policy and suppress this warning.
Call Stack (most recent call first):
  CMakeLists.txt:129 (find_package)
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) in /usr/lib/x86_64-linux-gnu/cmake/gnuradio/GnuradioConfig.cmake:
  Policy CMP0011 is not set: Included scripts do automatic cmake_policy PUSH
  and POP.  Run "cmake --help-policy CMP0011" for policy details.  Use the
  cmake_policy command to set the policy and suppress this warning.

  The included script

    /usr/lib/x86_64-linux-gnu/cmake/gnuradio/GnuradioConfig.cmake

  affects policy settings.  CMake is implying the NO_POLICY_SCOPE option for
  compatibility, so the effects are applied to the including context.
Call Stack (most recent call first):
  CMakeLists.txt:129 (find_package)
This warning is for project developers.  Use -Wno-dev to suppress it.

-- 
-- Checking for module SWIG
-- Found SWIG version 4.0.1.
-- Found SWIG: /usr/bin/swig4.0  
-- Could NOT find PythonLibs (missing: PYTHON_LIBRARIES PYTHON_INCLUDE_DIRS) (Required is at least version "2")
-- PYTHON_EXECUTABLE not set - using default python3
-- Use -DPYTHON_EXECUTABLE=/path/to/python2 to build for python2.
-- Found PythonInterp: /usr/bin/python (found version "3.8.5") 
-- Found PythonLibs: /usr/lib/x86_64-linux-gnu/libpython3.8.so (found suitable exact version "3.8.5") 
-- User set python executable /usr/bin/python
-- Configuring done
-- Generating done
-- Build files have been written to: /home/nanbuwks/Downloads/gr-isdbt/build

```


うまくいったのかな？

```

$ make 

```

すると果てしない時間がかかって・・・


```

・
・
・
[ 91%] Building CXX object lib/CMakeFiles/test-isdbt.dir/qa_frequency_deinterleaver.cc.o
[ 92%] Building CXX object lib/CMakeFiles/test-isdbt.dir/qa_ofdm_sym_acquisition.cc.o
[ 94%] Linking CXX executable test-isdbt
/usr/bin/ld: CMakeFiles/test-isdbt.dir/qa_tmcc_encoder.cc.o: in function `_GLOBAL__sub_I__ZN2gr5isdbt15qa_tmcc_encoder2t1Ev':
qa_tmcc_encoder.cc:(.text.startup+0x46): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::AppenderMapStorageInitializer()'
/usr/bin/ld: qa_tmcc_encoder.cc:(.text.startup+0x4d): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::~AppenderMapStorageInitializer()'
/usr/bin/ld: CMakeFiles/test-isdbt.dir/qa_energy_dispersal.cc.o: in function `_GLOBAL__sub_I__ZN2gr5isdbt19qa_energy_dispersal2t1Ev':
qa_energy_dispersal.cc:(.text.startup+0x46): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::AppenderMapStorageInitializer()'
/usr/bin/ld: qa_energy_dispersal.cc:(.text.startup+0x4d): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::~AppenderMapStorageInitializer()'
/usr/bin/ld: CMakeFiles/test-isdbt.dir/qa_byte_interleaver.cc.o: in function `_GLOBAL__sub_I__ZN2gr5isdbt19qa_byte_interleaver2t1Ev':
qa_byte_interleaver.cc:(.text.startup+0x46): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::AppenderMapStorageInitializer()'
/usr/bin/ld: qa_byte_interleaver.cc:(.text.startup+0x4d): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::~AppenderMapStorageInitializer()'
/usr/bin/ld: CMakeFiles/test-isdbt.dir/qa_carrier_modulation.cc.o: in function `_GLOBAL__sub_I__ZN2gr5isdbt21qa_carrier_modulation2t1Ev':
qa_carrier_modulation.cc:(.text.startup+0x46): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::AppenderMapStorageInitializer()'
/usr/bin/ld: qa_carrier_modulation.cc:(.text.startup+0x4d): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::~AppenderMapStorageInitializer()'
/usr/bin/ld: CMakeFiles/test-isdbt.dir/qa_hierarchical_combinator.cc.o: in function `_GLOBAL__sub_I__ZN2gr5isdbt26qa_hierarchical_combinator2t1Ev':
qa_hierarchical_combinator.cc:(.text.startup+0x46): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::AppenderMapStorageInitializer()'
/usr/bin/ld: qa_hierarchical_combinator.cc:(.text.startup+0x4d): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::~AppenderMapStorageInitializer()'
/usr/bin/ld: CMakeFiles/test-isdbt.dir/qa_time_interleaver.cc.o: in function `_GLOBAL__sub_I__ZN2gr5isdbt19qa_time_interleaver2t1Ev':
qa_time_interleaver.cc:(.text.startup+0x46): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::AppenderMapStorageInitializer()'
/usr/bin/ld: qa_time_interleaver.cc:(.text.startup+0x4d): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::~AppenderMapStorageInitializer()'
/usr/bin/ld: CMakeFiles/test-isdbt.dir/qa_frequency_interleaver.cc.o: in function `_GLOBAL__sub_I__ZN2gr5isdbt24qa_frequency_interleaver2t1Ev':
qa_frequency_interleaver.cc:(.text.startup+0x46): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::AppenderMapStorageInitializer()'
/usr/bin/ld: qa_frequency_interleaver.cc:(.text.startup+0x4d): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::~AppenderMapStorageInitializer()'
/usr/bin/ld: CMakeFiles/test-isdbt.dir/qa_pilot_signals.cc.o: in function `_GLOBAL__sub_I__ZN2gr5isdbt16qa_pilot_signals2t1Ev':
qa_pilot_signals.cc:(.text.startup+0x46): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::AppenderMapStorageInitializer()'
/usr/bin/ld: qa_pilot_signals.cc:(.text.startup+0x4d): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::~AppenderMapStorageInitializer()'
/usr/bin/ld: CMakeFiles/test-isdbt.dir/qa_tmcc_decoder_1seg.cc.o: in function `_GLOBAL__sub_I__ZN2gr5isdbt20qa_tmcc_decoder_1seg2t1Ev':
qa_tmcc_decoder_1seg.cc:(.text.startup+0x46): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::AppenderMapStorageInitializer()'
/usr/bin/ld: qa_tmcc_decoder_1seg.cc:(.text.startup+0x4d): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::~AppenderMapStorageInitializer()'
/usr/bin/ld: CMakeFiles/test-isdbt.dir/qa_ofdm_synchronization_1seg.cc.o: in function `_GLOBAL__sub_I__ZN2gr5isdbt28qa_ofdm_synchronization_1seg2t1Ev':
qa_ofdm_synchronization_1seg.cc:(.text.startup+0x46): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::AppenderMapStorageInitializer()'
/usr/bin/ld: qa_ofdm_synchronization_1seg.cc:(.text.startup+0x4d): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::~AppenderMapStorageInitializer()'
/usr/bin/ld: CMakeFiles/test-isdbt.dir/qa_ofdm_synchronization.cc.o: in function `_GLOBAL__sub_I__ZN2gr5isdbt23qa_ofdm_synchronization2t1Ev':
qa_ofdm_synchronization.cc:(.text.startup+0x46): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::AppenderMapStorageInitializer()'
/usr/bin/ld: qa_ofdm_synchronization.cc:(.text.startup+0x4d): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::~AppenderMapStorageInitializer()'
/usr/bin/ld: CMakeFiles/test-isdbt.dir/qa_reed_solomon_dec_isdbt.cc.o: in function `_GLOBAL__sub_I__ZN2gr5isdbt25qa_reed_solomon_dec_isdbt2t1Ev':
qa_reed_solomon_dec_isdbt.cc:(.text.startup+0x46): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::AppenderMapStorageInitializer()'
/usr/bin/ld: qa_reed_solomon_dec_isdbt.cc:(.text.startup+0x4d): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::~AppenderMapStorageInitializer()'
/usr/bin/ld: CMakeFiles/test-isdbt.dir/qa_byte_deinterleaver.cc.o: in function `_GLOBAL__sub_I__ZN2gr5isdbt21qa_byte_deinterleaver2t1Ev':
qa_byte_deinterleaver.cc:(.text.startup+0x46): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::AppenderMapStorageInitializer()'
/usr/bin/ld: qa_byte_deinterleaver.cc:(.text.startup+0x4d): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::~AppenderMapStorageInitializer()'
/usr/bin/ld: CMakeFiles/test-isdbt.dir/qa_energy_descrambler.cc.o: in function `_GLOBAL__sub_I__ZN2gr5isdbt21qa_energy_descrambler2t1Ev':
qa_energy_descrambler.cc:(.text.startup+0x46): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::AppenderMapStorageInitializer()'
/usr/bin/ld: qa_energy_descrambler.cc:(.text.startup+0x4d): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::~AppenderMapStorageInitializer()'
/usr/bin/ld: CMakeFiles/test-isdbt.dir/qa_bit_deinterleaver.cc.o: in function `_GLOBAL__sub_I__ZN2gr5isdbt20qa_bit_deinterleaver2t1Ev':
qa_bit_deinterleaver.cc:(.text.startup+0x46): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::AppenderMapStorageInitializer()'
/usr/bin/ld: qa_bit_deinterleaver.cc:(.text.startup+0x4d): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::~AppenderMapStorageInitializer()'
/usr/bin/ld: CMakeFiles/test-isdbt.dir/qa_symbol_demapper.cc.o: in function `_GLOBAL__sub_I__ZN2gr5isdbt18qa_symbol_demapper2t1Ev':
qa_symbol_demapper.cc:(.text.startup+0x46): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::AppenderMapStorageInitializer()'
/usr/bin/ld: qa_symbol_demapper.cc:(.text.startup+0x4d): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::~AppenderMapStorageInitializer()'
/usr/bin/ld: CMakeFiles/test-isdbt.dir/qa_time_deinterleaver.cc.o: in function `_GLOBAL__sub_I__ZN2gr5isdbt21qa_time_deinterleaver2t1Ev':
qa_time_deinterleaver.cc:(.text.startup+0x46): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::AppenderMapStorageInitializer()'
/usr/bin/ld: qa_time_deinterleaver.cc:(.text.startup+0x4d): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::~AppenderMapStorageInitializer()'
/usr/bin/ld: CMakeFiles/test-isdbt.dir/qa_frequency_deinterleaver.cc.o: in function `_GLOBAL__sub_I__ZN2gr5isdbt26qa_frequency_deinterleaver2t1Ev':
qa_frequency_deinterleaver.cc:(.text.startup+0x46): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::AppenderMapStorageInitializer()'
/usr/bin/ld: qa_frequency_deinterleaver.cc:(.text.startup+0x4d): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::~AppenderMapStorageInitializer()'
/usr/bin/ld: CMakeFiles/test-isdbt.dir/qa_ofdm_sym_acquisition.cc.o: in function `_GLOBAL__sub_I__ZN2gr5isdbt23qa_ofdm_sym_acquisition2t1Ev':
qa_ofdm_sym_acquisition.cc:(.text.startup+0x46): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::AppenderMapStorageInitializer()'
/usr/bin/ld: qa_ofdm_sym_acquisition.cc:(.text.startup+0x4d): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::~AppenderMapStorageInitializer()'
collect2: error: ld returned 1 exit status
make[2]: *** [lib/CMakeFiles/test-isdbt.dir/build.make:401: lib/test-isdbt] エラー 1
make[1]: *** [CMakeFiles/Makefile2:268: lib/CMakeFiles/test-isdbt.dir/all] エラー 2
make: *** [Makefile:141: all] エラー 2

```



 うーん、もうちょっとだったのに。やっぱりバージョン誤魔化すのはダメかな。
Gnuradio 3.7.2 をビルドしないといけないかな？ 
とりあえず Ubuntu パッケージ版の Gnuradio を削除。

```


$ sudo apt purge  gnuradio gnuradio-dev liblog4cpp5-dev swig
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  freeglut3 libboost-date-time-dev libboost-filesystem-dev libboost-program-options-dev libboost-regex-dev libboost-system-dev libboost-test-dev libboost-thread-dev
  libgmp-dev libgmpxx4ldbl libgnuradio-analog3.8.1 libgnuradio-audio3.8.1 libgnuradio-blocks3.8.1 libgnuradio-channels3.8.1 libgnuradio-digital3.8.1 libgnuradio-dtv3.8.1
  libgnuradio-fec3.8.1 libgnuradio-fft3.8.1 libgnuradio-filter3.8.1 libgnuradio-pmt3.8.1 libgnuradio-qtgui3.8.1 libgnuradio-runtime3.8.1 libgnuradio-trellis3.8.1
  libgnuradio-uhd3.8.1 libgnuradio-video-sdl3.8.1 libgnuradio-vocoder3.8.1 libgnuradio-wavelet3.8.1 libgnuradio-zeromq3.8.1 libgsl23 libgslcblas0 libgsm1-dev liblog4cpp5v5
  libqwt-qt5-6 librtlsdr0 libuhd3.15.0 libvolk2-bin libvolk2-dev libvolk2.2 python3-bs4 python3-click-plugins python3-html5lib python3-lxml python3-networkx python3-opengl
  python3-pyqt5.qtopengl python3-pyqtgraph python3-soupsieve python3-webencodings python3-zmq rtl-sdr swig4.0 uhd-host
これを削除するには 'sudo apt autoremove' を利用してください。
以下のパッケージは「削除」されます:
  gnuradio* gnuradio-dev* liblog4cpp5-dev* swig*

```

次に、ここを見て

https://wiki.gnuradio.org/index.php/InstallingGR



```

$  sudo add-apt-repository ppa:gnuradio/gnuradio-releases-3.7
 Latest legacy 3.7 maintenance release of GNU Radio
 詳しい情報: https://launchpad.net/~gnuradio/+archive/ubuntu/gnuradio-releases-3.7
[ENTER] を押すと続行します。Ctrl-c で追加をキャンセルできます。

ヒット:1 http://archive.ubuntulinux.jp/ubuntu focal InRelease
ヒット:2 http://jp.archive.ubuntu.com/ubuntu focal InRelease                   
取得:3 http://jp.archive.ubuntu.com/ubuntu focal-updates InRelease [114 kB]    
.
.
.
エラー:29 http://ppa.launchpad.net/boost-latest/ppa/ubuntu focal Release
  404  Not Found [IP: 91.189.95.85 80]
エラー:30 http://ppa.launchpad.net/gnuradio/gnuradio-releases-3.7/ubuntu focal Release
  404  Not Found [IP: 91.189.95.85 80]
パッケージリストを読み込んでいます... 完了
E: リポジトリ http://ppa.launchpad.net/boost-latest/ppa/ubuntu focal Release には Release ファイルがありません。
N: このようなリポジトリから更新を安全に行うことができないので、デフォルトでは更新が無効になっています。
N: リポジトリの作成とユーザ設定の詳細は、apt-secure(8) man ページを参照してください。
E: リポジトリ http://ppa.launchpad.net/gnuradio/gnuradio-releases-3.7/ubuntu focal Release には Release ファイルがありません。
N: このようなリポジトリから更新を安全に行うことができないので、デフォルトでは更新が無効になっています。
N: リポジトリの作成とユーザ設定の詳細は、apt-secure(8) man ページを参照してください。

```

うーむ、ソースからビルドしないとダメかな？


https://github.com/git-artes/gr-isdbt/issues/45

を読んでみると


> Right now, it's compatible with GNU Radio 3.7 only. You may use our docker for 3.7 to check it out: https://github.com/git-artes/docker-gnuradio/tree/master/gnuradio-releases-37.

なんて書いてますね！



 これは Docker 使ったほうがずっと楽そうですね！ 上記のようにあれこれやってきましたが、あきらめて Docker を使って改めてチャレンジすることにします。