LoginSignup
2
3

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

Last updated at Posted at 2023-02-18

OneDrive Client構築

前提条件

ラズパイ構築(64bitOS)が完了していることが前提

※32bit(armhf)はすでにOneDriveClientの動作に必要なソフトが対応していない (以下「注意事項(32bitOSでの導入エラー)」参照)

仕様

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

参考資料

コマンド

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

自動起動の設定

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へのアクセスを許可してもラズパイとの連携は正常に動作する。

手動同期

onedrive --synchronize

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

最後に以下を叩き、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:~ $

解決参考

解決策

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

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

1.17.0 Asset
image.png
1.18.0 Asset
image.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 $ 
2
3
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
3