Raspberry Pi(raspbian) と Onedrive ファイル同期


# OneDrive Client構築

## 前提条件
ラズパイ構築(64bitOS)が完了していることが前提
### ※32bit(armhf)はすでにOneDriveClientの動作に必要なソフトが対応していない (以下「注意事項(32bitOSでの導入エラー)」参照)

## 仕様
OneDrive Clientの動作仕様としては「変更」をダウンロード/アップロードします。
ファイルをダウンロード/アップロードするだけで、反映先を変更/削除しないという使い方はできません。
簡単に言うと、Download_only設定にしても、OneDrive側でフォルダ削除(状態変更操作)をすれば、ローカル側のフォルダが自動削除(変更の反映)されます。
バックアップ用途のような一方に蓄積するだけの利用の場合、同期後にBackup用の別フォルダにコピーした後、OneDriveから削除する、という運用になります。


## 参考資料

https://manpages.ubuntu.com/manpages/impish/man1/onedrive.1.html

http://tech-wiki.pomme-verte.net/?p=584

https://blog.goo.ne.jp/lm324/e/f093343dce3cd0393f9dc75db3e1836e

https://virment.com/setup-onedrive-ubuntu18-04/

### コマンド
sudo apt install libcurl4-openssl-dev libsqlite3-dev libxml2 pkg-config ldc libnotify-dev
sudo git clone https://github.com/abraunegg/onedrive.git
cd onedrive/
sudo ./configure
sudo make clean; make;
sudo make install

## 証跡
```
pi@raspberrypi:~ $ sudo apt install libcurl4-openssl-dev libsqlite3-dev libxml2 pkg-config ldc libnotify-dev
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了
libxml2 はすでに最新バージョン (2.9.10+dfsg-6.7+deb11u3) です。
libxml2 は手動でインストールしたと設定されました。
pkg-config はすでに最新バージョン (0.29.2-1) です。
以下の追加パッケージがインストールされます:
  libblkid-dev libffi-dev libgdk-pixbuf-2.0-dev libgdk-pixbuf2.0-bin libglib2.0-dev libglib2.0-dev-bin libmount-dev libpcre16-3 libpcre2-32-0 libpcre2-dev
  libpcre3-dev libpcre32-3 libpcrecpp0v5 libphobos2-ldc-shared-dev libphobos2-ldc-shared94 libselinux1-dev libsepol1-dev uuid-dev
提案パッケージ:
  libcurl4-doc libidn11-dev libkrb5-dev libldap2-dev librtmp-dev libssh2-1-dev libssl-dev libgirepository1.0-dev libglib2.0-doc libxml2-utils sqlite3-doc
以下のパッケージが新たにインストールされます:
  ldc libblkid-dev libcurl4-openssl-dev libffi-dev libgdk-pixbuf-2.0-dev libgdk-pixbuf2.0-bin libglib2.0-dev libglib2.0-dev-bin libmount-dev libnotify-dev
  libpcre16-3 libpcre2-32-0 libpcre2-dev libpcre3-dev libpcre32-3 libpcrecpp0v5 libphobos2-ldc-shared-dev libphobos2-ldc-shared94 libselinux1-dev
  libsepol1-dev libsqlite3-dev uuid-dev
アップグレード: 0 個、新規インストール: 22 個、削除: 0 個、保留: 0 個。
17.1 MB のアーカイブを取得する必要があります。
この操作後に追加で 111 MB のディスク容量が消費されます。
続行しますか? [Y/n] y
取得:1 http://deb.debian.org/debian bullseye/main arm64 libphobos2-ldc-shared94 arm64 1:1.24.0-2 [1,144 kB]
取得:2 http://deb.debian.org/debian bullseye/main arm64 libphobos2-ldc-shared-dev arm64 1:1.24.0-2 [6,130 kB]
取得:3 http://deb.debian.org/debian bullseye/main arm64 ldc arm64 1:1.24.0-2 [3,626 kB]
取得:4 http://deb.debian.org/debian bullseye/main arm64 uuid-dev arm64 2.36.1-8+deb11u1 [99.6 kB]
取得:5 http://deb.debian.org/debian bullseye/main arm64 libblkid-dev arm64 2.36.1-8+deb11u1 [229 kB]
取得:6 http://deb.debian.org/debian bullseye/main arm64 libcurl4-openssl-dev arm64 7.74.0-1.3+deb11u3 [426 kB]
取得:7 http://deb.debian.org/debian bullseye/main arm64 libffi-dev arm64 3.3-6 [53.2 kB]
取得:8 http://deb.debian.org/debian bullseye/main arm64 libgdk-pixbuf2.0-bin arm64 2.42.2+dfsg-1+deb11u1 [25.6 kB]
取得:9 http://deb.debian.org/debian bullseye/main arm64 libglib2.0-dev-bin arm64 2.66.8-1 [177 kB]
取得:10 http://deb.debian.org/debian bullseye/main arm64 libsepol1-dev arm64 3.1-1 [329 kB]
取得:11 http://deb.debian.org/debian bullseye/main arm64 libpcre2-32-0 arm64 10.36-2+deb11u1 [194 kB]
取得:12 http://deb.debian.org/debian bullseye/main arm64 libpcre2-dev arm64 10.36-2+deb11u1 [647 kB]
取得:13 http://deb.debian.org/debian bullseye/main arm64 libselinux1-dev arm64 3.1-3 [171 kB]
取得:14 http://deb.debian.org/debian bullseye/main arm64 libmount-dev arm64 2.36.1-8+deb11u1 [78.0 kB]
取得:15 http://deb.debian.org/debian bullseye/main arm64 libpcre16-3 arm64 2:8.39-13 [236 kB]
取得:16 http://deb.debian.org/debian bullseye/main arm64 libpcre32-3 arm64 2:8.39-13 [229 kB]
取得:17 http://deb.debian.org/debian bullseye/main arm64 libpcrecpp0v5 arm64 2:8.39-13 [151 kB]
取得:18 http://deb.debian.org/debian bullseye/main arm64 libpcre3-dev arm64 2:8.39-13 [579 kB]
取得:19 http://deb.debian.org/debian bullseye/main arm64 libglib2.0-dev arm64 2.66.8-1 [1,592 kB]
取得:20 http://deb.debian.org/debian bullseye/main arm64 libgdk-pixbuf-2.0-dev arm64 2.42.2+dfsg-1+deb11u1 [56.9 kB]
取得:21 http://deb.debian.org/debian bullseye/main arm64 libnotify-dev arm64 0.7.9-3 [16.0 kB]
取得:22 http://deb.debian.org/debian bullseye/main arm64 libsqlite3-dev arm64 3.34.1-3 [911 kB]
17.1 MB を 4秒 で取得しました (3,854 kB/s)
以前に未選択のパッケージ libphobos2-ldc-shared94:arm64 を選択しています。
(データベースを読み込んでいます ... 現在 100850 個のファイルとディレクトリがインストールされています。)
.../00-libphobos2-ldc-shared94_1%3a1.24.0-2_arm64.deb を展開する準備をしています ...
libphobos2-ldc-shared94:arm64 (1:1.24.0-2) を展開しています...
以前に未選択のパッケージ libphobos2-ldc-shared-dev を選択しています。
.../01-libphobos2-ldc-shared-dev_1%3a1.24.0-2_arm64.deb を展開する準備をしています ...
libphobos2-ldc-shared-dev (1:1.24.0-2) を展開しています...
以前に未選択のパッケージ ldc を選択しています。
.../02-ldc_1%3a1.24.0-2_arm64.deb を展開する準備をしています ...
ldc (1:1.24.0-2) を展開しています...
以前に未選択のパッケージ uuid-dev:arm64 を選択しています。
.../03-uuid-dev_2.36.1-8+deb11u1_arm64.deb を展開する準備をしています ...
uuid-dev:arm64 (2.36.1-8+deb11u1) を展開しています...
以前に未選択のパッケージ libblkid-dev:arm64 を選択しています。
.../04-libblkid-dev_2.36.1-8+deb11u1_arm64.deb を展開する準備をしています ...
libblkid-dev:arm64 (2.36.1-8+deb11u1) を展開しています...
以前に未選択のパッケージ libcurl4-openssl-dev:arm64 を選択しています。
.../05-libcurl4-openssl-dev_7.74.0-1.3+deb11u3_arm64.deb を展開する準備をしています ...
libcurl4-openssl-dev:arm64 (7.74.0-1.3+deb11u3) を展開しています...
以前に未選択のパッケージ libffi-dev:arm64 を選択しています。
.../06-libffi-dev_3.3-6_arm64.deb を展開する準備をしています ...
libffi-dev:arm64 (3.3-6) を展開しています...
以前に未選択のパッケージ libgdk-pixbuf2.0-bin を選択しています。
.../07-libgdk-pixbuf2.0-bin_2.42.2+dfsg-1+deb11u1_arm64.deb を展開する準備をしています ...
libgdk-pixbuf2.0-bin (2.42.2+dfsg-1+deb11u1) を展開しています...
以前に未選択のパッケージ libglib2.0-dev-bin を選択しています。
.../08-libglib2.0-dev-bin_2.66.8-1_arm64.deb を展開する準備をしています ...
libglib2.0-dev-bin (2.66.8-1) を展開しています...
以前に未選択のパッケージ libsepol1-dev:arm64 を選択しています。
.../09-libsepol1-dev_3.1-1_arm64.deb を展開する準備をしています ...
libsepol1-dev:arm64 (3.1-1) を展開しています...
以前に未選択のパッケージ libpcre2-32-0:arm64 を選択しています。
.../10-libpcre2-32-0_10.36-2+deb11u1_arm64.deb を展開する準備をしています ...
libpcre2-32-0:arm64 (10.36-2+deb11u1) を展開しています...
以前に未選択のパッケージ libpcre2-dev:arm64 を選択しています。
.../11-libpcre2-dev_10.36-2+deb11u1_arm64.deb を展開する準備をしています ...
libpcre2-dev:arm64 (10.36-2+deb11u1) を展開しています...
以前に未選択のパッケージ libselinux1-dev:arm64 を選択しています。
.../12-libselinux1-dev_3.1-3_arm64.deb を展開する準備をしています ...
libselinux1-dev:arm64 (3.1-3) を展開しています...
以前に未選択のパッケージ libmount-dev:arm64 を選択しています。
.../13-libmount-dev_2.36.1-8+deb11u1_arm64.deb を展開する準備をしています ...
libmount-dev:arm64 (2.36.1-8+deb11u1) を展開しています...
以前に未選択のパッケージ libpcre16-3:arm64 を選択しています。
.../14-libpcre16-3_2%3a8.39-13_arm64.deb を展開する準備をしています ...
libpcre16-3:arm64 (2:8.39-13) を展開しています...
以前に未選択のパッケージ libpcre32-3:arm64 を選択しています。
.../15-libpcre32-3_2%3a8.39-13_arm64.deb を展開する準備をしています ...
libpcre32-3:arm64 (2:8.39-13) を展開しています...
以前に未選択のパッケージ libpcrecpp0v5:arm64 を選択しています。
.../16-libpcrecpp0v5_2%3a8.39-13_arm64.deb を展開する準備をしています ...
libpcrecpp0v5:arm64 (2:8.39-13) を展開しています...
以前に未選択のパッケージ libpcre3-dev:arm64 を選択しています。
.../17-libpcre3-dev_2%3a8.39-13_arm64.deb を展開する準備をしています ...
libpcre3-dev:arm64 (2:8.39-13) を展開しています...
以前に未選択のパッケージ libglib2.0-dev:arm64 を選択しています。
.../18-libglib2.0-dev_2.66.8-1_arm64.deb を展開する準備をしています ...
libglib2.0-dev:arm64 (2.66.8-1) を展開しています...
以前に未選択のパッケージ libgdk-pixbuf-2.0-dev:arm64 を選択しています。
.../19-libgdk-pixbuf-2.0-dev_2.42.2+dfsg-1+deb11u1_arm64.deb を展開する準備をしています ...
libgdk-pixbuf-2.0-dev:arm64 (2.42.2+dfsg-1+deb11u1) を展開しています...
以前に未選択のパッケージ libnotify-dev:arm64 を選択しています。
.../20-libnotify-dev_0.7.9-3_arm64.deb を展開する準備をしています ...
libnotify-dev:arm64 (0.7.9-3) を展開しています...
以前に未選択のパッケージ libsqlite3-dev:arm64 を選択しています。
.../21-libsqlite3-dev_3.34.1-3_arm64.deb を展開する準備をしています ...
libsqlite3-dev:arm64 (3.34.1-3) を展開しています...
libpcrecpp0v5:arm64 (2:8.39-13) を設定しています ...
libglib2.0-dev-bin (2.66.8-1) を設定しています ...
libpcre16-3:arm64 (2:8.39-13) を設定しています ...
libsepol1-dev:arm64 (3.1-1) を設定しています ...
libffi-dev:arm64 (3.3-6) を設定しています ...
libpcre2-32-0:arm64 (10.36-2+deb11u1) を設定しています ...
libsqlite3-dev:arm64 (3.34.1-3) を設定しています ...
libcurl4-openssl-dev:arm64 (7.74.0-1.3+deb11u3) を設定しています ...
uuid-dev:arm64 (2.36.1-8+deb11u1) を設定しています ...
libpcre32-3:arm64 (2:8.39-13) を設定しています ...
libgdk-pixbuf2.0-bin (2.42.2+dfsg-1+deb11u1) を設定しています ...
libphobos2-ldc-shared94:arm64 (1:1.24.0-2) を設定しています ...
libblkid-dev:arm64 (2.36.1-8+deb11u1) を設定しています ...
libpcre2-dev:arm64 (10.36-2+deb11u1) を設定しています ...
libselinux1-dev:arm64 (3.1-3) を設定しています ...
libpcre3-dev:arm64 (2:8.39-13) を設定しています ...
libphobos2-ldc-shared-dev (1:1.24.0-2) を設定しています ...
libmount-dev:arm64 (2.36.1-8+deb11u1) を設定しています ...
ldc (1:1.24.0-2) を設定しています ...
libglib2.0-dev:arm64 (2.66.8-1) を設定しています ...
libglib2.0-0:arm64 (2.66.8-1) のトリガを処理しています ...
libc-bin (2.31-13+rpt2+rpi1+deb11u5) のトリガを処理しています ...
man-db (2.9.4-2) のトリガを処理しています ...
libgdk-pixbuf-2.0-dev:arm64 (2.42.2+dfsg-1+deb11u1) を設定しています ...
libnotify-dev:arm64 (0.7.9-3) を設定しています ...
pi@raspberrypi:~ $
pi@raspberrypi:~ $ sudo git clone https://github.com/abraunegg/onedrive.git
Cloning into 'onedrive'...
remote: Enumerating objects: 6351, done.
remote: Counting objects: 100% (728/728), done.
remote: Compressing objects: 100% (94/94), done.
remote: Total 6351 (delta 678), reused 659 (delta 632), pack-reused 5623
Receiving objects: 100% (6351/6351), 4.29 MiB | 7.32 MiB/s, done.
Resolving deltas: 100% (4462/4462), done.
pi@raspberrypi:~ $
pi@raspberrypi:~ $ cd onedrive
pi@raspberrypi:~/onedrive $
pi@raspberrypi:~/onedrive $ ./configure
./configure: line 1471: config.log: Permission denied
./configure: line 1481: config.log: Permission denied
pi@raspberrypi:~/onedrive $ sudo ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for dmd... no
checking for ldmd2... ldmd2
checking version of D compiler... 1.24.0
checking for curl... yes
checking for sqlite... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating contrib/pacman/PKGBUILD
config.status: creating contrib/spec/onedrive.spec
config.status: creating onedrive.1
config.status: creating contrib/systemd/onedrive.service
config.status: creating contrib/systemd/onedrive@.service
pi@raspberrypi:~/onedrive $
pi@raspberrypi:~/onedrive $ sudo make clean; make;
rm -f onedrive onedrive.o version
rm -rf autom4te.cache
rm -f config.log config.status
if [ -f .git/HEAD ] ; then \
        git describe --tags > version ; \
else \
        echo v2.5.0-dev > version ; \
fi
/bin/sh: 2: cannot create version: Permission denied
make: *** [Makefile:101: onedrive] エラー 2
pi@raspberrypi:~/onedrive $
pi@raspberrypi:~/onedrive $ sudo make install
if [ -f .git/HEAD ] ; then \
        git describe --tags > version ; \
else \
        echo v2.5.0-dev > version ; \
fi
ldmd2 -w -g -O -J. -L-lcurl -L-lsqlite3  -L-ldl src/config.d src/itemdb.d src/log.d src/main.d src/monitor.d src/onedrive.d src/qxor.d src/selective.d src/sqlite.d src/sync.d src/upload.d src/util.d src/progress.d src/arsd/cgi.d -ofonedrive

/usr/bin/install -c -D onedrive /usr/local/bin/onedrive
/usr/bin/install -c -D -m 0644 onedrive.1 /usr/local/share/man/man1/onedrive.1
/usr/bin/install -c -D -m 0644 contrib/logrotate/onedrive.logrotate /usr/local/etc/logrotate.d/onedrive
mkdir -p /usr/local/share/doc/onedrive
/usr/bin/install -c -D -m 0644 README.md config LICENSE CHANGELOG.md docs/Docker.md docs/INSTALL.md docs/SharePoint-Shared-Libraries.md docs/USAGE.md docs/BusinessSharedFolders.md docs/advanced-usage.md docs/application-security.md /usr/local/share/doc/onedrive
/usr/bin/install -c -d -m 0755 /usr/lib/systemd/user /lib/systemd/system
/usr/bin/install -c -m 0644 contrib/systemd/onedrive@.service /lib/systemd/system
/usr/bin/install -c -m 0644 contrib/systemd/onedrive.service /usr/lib/systemd/user
pi@raspberrypi:~/onedrive $
```

## 設定確認(onedriveコマンド動作確認)
onedrive --display-config

```
pi@raspberrypi:~/onedrive $ onedrive --display-config
onedrive version                             = v2.4.23-1-gc10870a
Config path                                  = /home/pi/.config/onedrive
Config file found in config path             = false
Config option 'sync_dir'                     = /home/pi/OneDrive
Config option 'enable_logging'               = false
Config option 'log_dir'                      = /var/log/onedrive/
Config option 'disable_notifications'        = false
Config option 'min_notify_changes'           = 5
Config option 'skip_dir'                     =
Config option 'skip_dir_strict_match'        = false
Config option 'skip_file'                    = ~*|.~*|*.tmp
Config option 'skip_dotfiles'                = false
Config option 'skip_symlinks'                = false
Config option 'monitor_interval'             = 300
Config option 'monitor_log_frequency'        = 6
Config option 'monitor_fullscan_frequency'   = 12
Config option 'read_only_auth_scope'         = false
Config option 'dry_run'                      = false
Config option 'upload_only'                  = false
Config option 'download_only'                = false
Config option 'local_first'                  = false
Config option 'check_nosync'                 = false
Config option 'check_nomount'                = false
Config option 'resync'                       = false
Config option 'resync_auth'                  = false
Config option 'cleanup_local_files'          = false
Config option 'classify_as_big_delete'       = 1000
Config option 'disable_upload_validation'    = false
Config option 'bypass_data_preservation'     = false
Config option 'no_remote_delete'             = false
Config option 'remove_source_files'          = false
Config option 'sync_dir_permissions'         = 700
Config option 'sync_file_permissions'        = 600
Config option 'space_reservation'            = 52428800
Config option 'application_id'               =
Config option 'azure_ad_endpoint'            =
Config option 'azure_tenant_id'              = common
Config option 'user_agent'                   =
Config option 'force_http_11'                = false
Config option 'debug_https'                  = false
Config option 'rate_limit'                   = 0
Config option 'operation_timeout'            = 3600
Config option 'sync_root_files'              = false
Selective sync 'sync_list' configured        = false
Config option 'sync_business_shared_folders' = false
Business Shared Folders configured           = false
Config option 'webhook_enabled'              = false
pi@raspberrypi:~/onedrive $
```

## 同期前に設定(config)
※私の用途としてはダウンロードのみでアップロードはしないので、「download_only」を設定

ややこしいのですが、configファイルのテンプレが「/home/pi/onedrive/config」なのですが、上記の「onedrive --display-config」で表示された「Config path = /home/pi/.config/onedrive」が読み込まれるconfigエリアです。
デフォルトでは「/home/pi/.config/onedrive」にconfigもsync_listも存在しません。「/home/pi/onedrive/config」ファイルを「/home/pi/.config/onedrive」にコピーして、編集します。
sync_listは元より無いので、新規作成です。

```
cp -p ~/onedrive/config /home/<user>/.config/onedrive/
ls -l /home/<user>/.config/onedrive/config
vi /home/<user>/.config/onedrive/config
```

```
###以下2行を設定
sync_dir = "<ローカルの同期元先>"
download_only = "true"
```


```
touch /home/<user>/.config/onedrive/sync_list
vi /home/<user>/.config/onedrive/sync_list
### ラズパイと同期したいOneDriveのフォルダやファイル名を指定する。
### 例～～～～～～～～
### test
### test2/test.xlsx
### ～～～～～～～～
```

この設定だとOneDrive直下のtestフォルダ配下のすべてと
test2フォルダのtest.xlsxがダウンロードされる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2574123/c42607ca-fd7f-40a7-e9e8-a925c4c469fb.png)


## 自動起動の設定
systemctl --user enable onedrive
systemctl --user start onedrive
```
pi@raspberrypi:~ $ systemctl --user enable onedrive
Created symlink /home/pi/.config/systemd/user/default.target.wants/onedrive.service → /usr/lib/systemd/user/onedrive.service.
pi@raspberrypi:~ $ systemctl --user start onedrive
pi@raspberrypi:~ $
```

## 初回起動時のログイン
onedriveコマンドを実行すれば、初回実行時にOneDriveへのログイン確認が実施される。
ちなみにこれはRaspbianOSのGUI画面でなくとも、TeratemベースのCUI画面でURLが表示された後、Teraterm接続元のWindowsOSからURLに接続し、OneDriveへのアクセスを許可してもラズパイとの連携は正常に動作する。

https://virment.com/setup-onedrive-ubuntu18-04/

## 手動同期

onedrive --synchronize

※onedriveコマンドのオプションなどは以下を参照

https://manpages.ubuntu.com/manpages/impish/man1/onedrive.1.html


最後に以下を叩き、configとsync_list設定を読み込ませ常時サービス起動することで領域を監視して自動同期させる。
systemctl --user restart onedrive

この後に、同期設定したOnedrive側にファイルを置き、ローカルに自動で同期されるか確認。


## 補足(Network Connection Issue)
エラー内容
```
pi@raspberrypi:~ $ onedrive --synchronize
Configuration file successfully loaded
Cannot connect to Microsoft OneDrive Service - Network Connection Issue

ERROR: Microsoft OneDrive API returned an error with the following message:
  Error Message:    Timeout was reached on handle 5576955AF0
Unable to reach Microsoft OneDrive API service, unable to initialize application

pi@raspberrypi:~ $
```

解決参考

https://github.com/abraunegg/onedrive/issues/1221

### 解決策
DNSにおけるリゾルバのタイムアウト設定「options timeout:1」に変更
デフォルトはoptions timeout:5

```
root@raspberrypi:~# ls -l /etc/resolv.conf
-rw-r--r-- 1 root root 50  3月 18 14:48 /etc/resolv.conf
root@raspberrypi:~# cat /etc/resolv.conf
# Generated by resolvconf
nameserver 192.168.XX.XX
root@raspberrypi:~#
root@raspberrypi:~# cp -p /etc/resolv.conf /etc/resolv.conf_bk
root@raspberrypi:~# vi /etc/resolv.conf
root@raspberrypi:~# cat /etc/resolv.conf
# Generated by resolvconf
nameserver 192.168.10.1
options timeout:1
root@raspberrypi:~#
```


## 注意事項(32bitOSでの導入エラー)

32bitでの導入の場合、以下コマンドでインストールの時点でエラーとなる
「sudo apt install libcurl4-openssl-dev libsqlite3-dev libxml2 pkg-config ldc libnotify-dev」

```
pi@raspberrypi:~ $ sudo apt install libcurl4-openssl-dev libsqlite3-dev libxml2 pkg-config ldc libnotify-dev
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
libxml2 はすでに最新バージョン (2.9.4+dfsg1-7+deb10u2) です。
libxml2 は手動でインストールしたと設定されました。
pkg-config はすでに最新バージョン (0.29-6) です。
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  python-colorzero
これを削除するには 'sudo apt autoremove' を利用してください。
以下の追加パッケージがインストールされます:
  libblkid-dev libffi-dev libgdk-pixbuf2.0-bin libgdk-pixbuf2.0-dev libglib2.0-dev libglib2.0-dev-bin libllvm6.0 libmount-dev libpcre16-3 libpcre3-dev
  libpcre32-3 libpcrecpp0v5 libphobos2-ldc-shared-dev libphobos2-ldc-shared82 libselinux1-dev libsepol1-dev uuid-dev
提案パッケージ:
  libcurl4-doc libidn11-dev libkrb5-dev libldap2-dev librtmp-dev libssh2-1-dev libglib2.0-doc libxml2-utils sqlite3-doc
以下のパッケージが新たにインストールされます:
  ldc libblkid-dev libcurl4-openssl-dev libffi-dev libgdk-pixbuf2.0-bin libgdk-pixbuf2.0-dev libglib2.0-dev libglib2.0-dev-bin libllvm6.0 libmount-dev
  libnotify-dev libpcre16-3 libpcre3-dev libpcre32-3 libpcrecpp0v5 libphobos2-ldc-shared-dev libphobos2-ldc-shared82 libselinux1-dev libsepol1-dev
  libsqlite3-dev uuid-dev
アップグレード: 0 個、新規インストール: 21 個、削除: 0 個、保留: 112 個。
33.1 MB のアーカイブを取得する必要があります。
この操作後に追加で 165 MB のディスク容量が消費されます。
続行しますか? [Y/n] y
取得:1 http://ftp.udx.icscoe.jp/Linux/raspbian/raspbian buster/main armhf libphobos2-ldc-shared82 armhf 1:1.12.0-1 [6,532 kB]
取得:2 http://ftp.udx.icscoe.jp/Linux/raspbian/raspbian buster/main armhf libphobos2-ldc-shared-dev armhf 1:1.12.0-1 [6,345 kB]
取得:3 http://ftp.udx.icscoe.jp/Linux/raspbian/raspbian buster/main armhf libllvm6.0 armhf 1:6.0.1-10+rpi1 [12.5 MB]
取得:4 http://ftp.udx.icscoe.jp/Linux/raspbian/raspbian buster/main armhf ldc armhf 1:1.12.0-1 [2,780 kB]
取得:5 http://ftp.udx.icscoe.jp/Linux/raspbian/raspbian buster/main armhf uuid-dev armhf 2.33.1-0.1 [92.4 kB]
取得:6 http://ftp.udx.icscoe.jp/Linux/raspbian/raspbian buster/main armhf libblkid-dev armhf 2.33.1-0.1 [210 kB]
エラー:7 http://raspbian.raspberrypi.org/raspbian buster/main armhf libcurl4-openssl-dev armhf 7.64.0-4+deb10u2
  404  Not Found [IP: 93.93.128.193 80]
取得:8 http://ftp.udx.icscoe.jp/Linux/raspbian/raspbian buster/main armhf libffi-dev armhf 3.2.1-9 [159 kB]
取得:9 http://ftp.udx.icscoe.jp/Linux/raspbian/raspbian buster/main armhf libgdk-pixbuf2.0-bin armhf 2.38.1+dfsg-1 [23.0 kB]
エラー:10 http://raspbian.raspberrypi.org/raspbian buster/main armhf libglib2.0-dev-bin armhf 2.58.3-2+deb10u2
  404  Not Found [IP: 93.93.128.193 80]
取得:11 http://ftp.udx.icscoe.jp/Linux/raspbian/raspbian buster/main armhf libmount-dev armhf 2.33.1-0.1 [209 kB]
取得:12 http://ftp.udx.icscoe.jp/Linux/raspbian/raspbian buster/main armhf libpcre16-3 armhf 2:8.39-12 [234 kB]
取得:13 http://ftp.udx.icscoe.jp/Linux/raspbian/raspbian buster/main armhf libpcre32-3 armhf 2:8.39-12 [227 kB]
取得:14 http://ftp.udx.icscoe.jp/Linux/raspbian/raspbian buster/main armhf libpcrecpp0v5 armhf 2:8.39-12 [150 kB]
取得:15 http://ftp.udx.icscoe.jp/Linux/raspbian/raspbian buster/main armhf libpcre3-dev armhf 2:8.39-12 [564 kB]
取得:16 http://ftp.udx.icscoe.jp/Linux/raspbian/raspbian buster/main armhf libsepol1-dev armhf 2.8-1 [309 kB]
取得:17 http://ftp.udx.icscoe.jp/Linux/raspbian/raspbian buster/main armhf libselinux1-dev armhf 2.8-1+b1 [156 kB]
エラー:18 http://raspbian.raspberrypi.org/raspbian buster/main armhf libglib2.0-dev armhf 2.58.3-2+deb10u2
  404  Not Found [IP: 93.93.128.193 80]
取得:19 http://ftp.udx.icscoe.jp/Linux/raspbian/raspbian buster/main armhf libgdk-pixbuf2.0-dev armhf 2.38.1+dfsg-1 [49.5 kB]
取得:20 http://ftp.udx.icscoe.jp/Linux/raspbian/raspbian buster/main armhf libnotify-dev armhf 0.7.7-4 [28.8 kB]
エラー:21 http://raspbian.raspberrypi.org/raspbian buster/main armhf libsqlite3-dev armhf 3.27.2-3+deb10u1
  404  Not Found [IP: 93.93.128.193 80]
30.6 MB を 13秒 で取得しました (2,380 kB/s)
E: http://raspbian.raspberrypi.org/raspbian/pool/main/c/curl/libcurl4-openssl-dev_7.64.0-4+deb10u2_armhf.deb の取得に失敗しました  404  Not Found [IP: 93.93.128.193 80]
E: http://raspbian.raspberrypi.org/raspbian/pool/main/g/glib2.0/libglib2.0-dev-bin_2.58.3-2+deb10u2_armhf.deb の取得に失敗しました  404  Not Found [IP: 93.93.128.193 80]
E: http://raspbian.raspberrypi.org/raspbian/pool/main/g/glib2.0/libglib2.0-dev_2.58.3-2+deb10u2_armhf.deb の取得に失敗しました  404  Not Found [IP: 93.93.128.193 80]
E: http://raspbian.raspberrypi.org/raspbian/pool/main/s/sqlite3/libsqlite3-dev_3.27.2-3+deb10u1_armhf.deb の取得に失敗しました  404  Not Found [IP: 93.93.128.193 80]
E: いくつかのアーカイブを取得できません。apt-get update を実行するか --fix-missing オプションを付けて試してみてください。
pi@raspberrypi:~ $
```

原因としてはそのままconfigureを実行するとD compilerがおかしいことがわかる
```
pi@raspberrypi:~/onedrive $ sudo ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for dmd... no
checking for ldmd2... no
checking for ldc2... no
configure: error: Could not find any compatible D compiler
pi@raspberrypi:~/onedrive
```

./configureには任意のフォルダを指定してのオプションがあることがわかる
 ./configure DC=~/ldc2-1.16.0-linux-armhf/bin/ldmd2

https://teratail.com/questions/214413?link=qa_related_sp

そのため、ldcの最新verを入手し、実行しようとするが、そもそも存在しないことが判明。
32bit版の場合「armhf」、64bitの場合「aarch64」だが、ver1.18.0以降にarmhf対応版が存在しないため、ldcがインストールできず、エラーになったと思われる
raspbianOSや各ソフトのverを軒並みダウングレードして1.17.0のverをインストールすれば可能かもしれないが、それなら64bit(aarch64)にしてしまった方がよい。

https://pc-freedom.net/today_pc_story/linux-for-raspberry-pi/

https://github.com/ldc-developers/ldc/releases

1.17.0 Asset
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2574123/28ed6095-7c5a-51ac-2a0f-5d50576803ae.png)
1.18.0 Asset
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2574123/bac06212-db57-0c15-f19c-3d4119050d0f.png)

※ちなみに明らかに失敗する64bit版のインストーラを32bitに導入しようとすると以下メッセージが出たので、32bit環境(armhf)で導入したいならver1.17.0以下へのダウングレードは必須のよう。
「configure: error: Compiler version insufficient, current compiler version , minimum version 1.18.0」

```
pi@raspberrypi:~/onedrive $ sudo ./configure DC=/home/pi/onedrive/ldc2-1.30.0-linux-aarch64/bin/ldmd2
checking for a BSD-compatible install... /usr/bin/install -c
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for dmd... /home/pi/onedrive/ldc2-1.30.0-linux-aarch64/bin/ldmd2
checking version of D compiler... ./configure: line 2274: /home/pi/onedrive/ldc2-1.30.0-linux-aarch64/bin/ldmd2: cannot execute binary file: Exec format error

configure: error: Compiler version insufficient, current compiler version , minimum version 1.18.0
pi@raspberrypi:~/onedrive $ ls -l /home/pi/onedrive/ldc2-1.30.0-linux-aarch64/bin/ldmd2
-rwxr-xr-x 1 pi pi 4370992  7月 21 02:11 /home/pi/onedrive/ldc2-1.30.0-linux-aarch64/bin/ldmd2
pi@raspberrypi:~/onedrive $ sudo ./configure DC=/home/pi/onedrive/ldc2-1.18.0-linux-aarch64/bin/ldmd2
checking for a BSD-compatible install... /usr/bin/install -c
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for dmd... /home/pi/onedrive/ldc2-1.18.0-linux-aarch64/bin/ldmd2
checking version of D compiler... ./configure: line 2274: /home/pi/onedrive/ldc2-1.18.0-linux-aarch64/bin/ldmd2: cannot execute binary file: Exec format error

configure: error: Compiler version insufficient, current compiler version , minimum version 1.18.0
pi@raspberrypi:~/onedrive $
pi@raspberrypi:~/onedrive $ 
```