頼りになる星仲間に紹介されたので、使ってみよう。
https://touch-n-stars.eu/
NINAワークフローを基盤とした2つのオープンソースプロジェクト:スマートフォンやタブレット向けの「タッチファースト」対応コンパニオンアプリと、より小型のRaspberry Piイメージングコンピュータを実現するためのLinuxに特化したアプローチです。
https://touch-n-stars.eu/
こちらには、2つのプロジェクトがあり、その一つが
『Raspberry Piをはじめとするコンパクトなシステムでの画像取得を目的とした、Linuxに特化したN.I.N.A.のフォーク版です。PINSは、より携帯性に優れ、低消費電力のフィールドコンピュータを試してみたいユーザー向けのものです。』
Raspberry PiやミニPCを天体画像撮影に使う選択肢に、N.I.N.Aを挙げています。
「あら、raspberry piが手元に無い。。。」
では、GUN/Linux, Ubuntu PCの画面上に、N.I.N.Aを表示させてみましょう。
ついでに、raspberry pi固有の機能などは全て無視して、最低限の動作が行えるか、試してみます。
「それって、N.I.N.Aの選択幅を広げられるってこと?」
『ん〜〜、迷いを広げるってことにならないかい…』
Ubuntu 26.04 / x86_64 Linux上でビルドを試します。頓挫もおおいにありえる。
PINS GitHub
https://github.com/nitr57/pins
開発版を使うのではなく、
x86_64 LinuxでPINSを最小構成でビルドできるか確認したいので、
develop ブランチを取得します。x86_64 Linux 対応の実装が develop にあるようです。
Package pinsdaemon ASTAP data-link helper
build-and-install-pins-x64.sh
https://github.com/nitr57/pins/blob/develop/build-and-install-pins-x64.sh
有り難いことに、ビルドスクリプトが用意されています。
PI.N.S. (PI ‘N’ Stars)の案内があります。
PI.N.S. (PI 『N』 Stars)
このリポジトリには、オリジナルの N.I.N.A. – Nighttime Imaging 『N』 Astronomy イメージングソフトウェアの Linux 向け移植版およびフォークである PI.N.S. (PI 『N』 Stars) のソースコードが含まれています。
https://github.com/nitr57/pins/tree/develop
PI.N.S.は、N.I.N.A.の強力な機能をLinuxユーザーに提供することを目的としています。
とても有り難いコメントです。
などと、順調な書き出しですが、それぞれのソースに、私の意識がロックオンされて、
build-and-install-pins-x64.sh が用意されている事に、丸々一日、気が付かないとの落ちが。。。
これはそんな者の、PI.N.Sビルド、インストール録です。
「思い込みって意識が狭くなりますね」
PINSをclone
git clone --branch develop --recurse-submodules https://github.com/nitr57/pins.git
Submodule path 'NINA.Plugins/PolarAlignment/NINA.Plugins.PolarAlignment.Test/External': checked out 'c43065ee856ad8a5f1edbd9e043c520872570e33'
Submodule path 'NINA.Plugins/Touch-N-Stars': checked out '23f08d5fc14421e9f42cf2d9e27981e49fc4bb8e'
Submodule path 'NINA.Plugins/joko.nina.plugins': checked out '8f40cc9c31c406f77b314b1a43b2746b85780142'
Submodule path 'NINA.Plugins/nina.plugin.orbuculum': checked out 'b0fa902093943577cb38fc706faa5dc0f593b368'
Submodule path 'NINA.Plugins/nina.plugin.phd2tools': checked out '7ab92e2daf7f240f6e9e01a46468f5f26e1df0e8'
Submodule path 'NINA.Plugins/ninaAPI': checked out 'd96ada2b67f4c979e4708046ba0803c0ae22b158'
Submodule path 'Touch-N-Stars': checked out 'd43bceb6d24956beb35097267b7c28712d8ccdcc'
develop ブランチのPINS本体 + ブランチが指定しているsubmoduleも取得します。
### https://github.com/nitr57/pins.git
### git clone --branch develop https://github.com/nitr57/pins.git
cd pins
git branch --show-current
develop
作業ツリーとsubmoduleの状態を確認
git status
ブランチ develop
Your branch is up to date with 'origin/develop'.
nothing to commit, working tree clean
git submodule status
6c3c07d9a5607cf8a24d478f70161d1a52e4ddf9 NINA.Plugins/LiveStack (6c3c07d)
518edfe4b7b72ba149ac728fd90ebd3167895e6a NINA.Plugins/NINA.Joko.Plugin.TenMicron (518edfe)
be1cf505272a5520e4938187631182777d9388c2 NINA.Plugins/PolarAlignment (be1cf50)
23f08d5fc14421e9f42cf2d9e27981e49fc4bb8e NINA.Plugins/Touch-N-Stars (23f08d5)
8f40cc9c31c406f77b314b1a43b2746b85780142 NINA.Plugins/joko.nina.plugins (8f40cc9)
b0fa902093943577cb38fc706faa5dc0f593b368 NINA.Plugins/nina.plugin.orbuculum (b0fa902)
7ab92e2daf7f240f6e9e01a46468f5f26e1df0e8 NINA.Plugins/nina.plugin.phd2tools (7ab92e2)
d96ada2b67f4c979e4708046ba0803c0ae22b158 NINA.Plugins/ninaAPI (remotes/origin/fix/single-29-gd96ada2)
fatal: no submodule mapping found in .gitmodules for path 'NINA.Plugins/pins.plugin'
fatal: no submodule mapping found in .gitmodules for path ‘NINA.Plugins/pins.plugin’
### 現在のリポジトリで管理対象として認識しているファイルを表示させます
git ls-files --stage NINA.Plugins/pins.plugin
160000 526db72c0aaf5850920188f44a8be2289aec38aa 0 NINA.Plugins/pins.plugin
ls -ld NINA.Plugins/pins.plugin
drwxrwxr-x 2 USER USER 4096 Sep 7 09:07 NINA.Plugins/pins.plugin
git config --file .gitmodules --get-regexp '^submodule\.'
submodule.Touch-N-Stars.path Touch-N-Stars
submodule.Touch-N-Stars.url https://github.com/Touch-N-Stars/Touch-N-Stars.git
submodule.Touch-N-Stars.branch pins
submodule.NINA.Plugins/ninaAPI.path NINA.Plugins/ninaAPI
submodule.NINA.Plugins/ninaAPI.url https://github.com/nitr57/ninaAPI.git
submodule.NINA.Plugins/ninaAPI.branch dev
submodule.NINA.Plugins/Touch-N-Stars.path NINA.Plugins/Touch-N-Stars
submodule.NINA.Plugins/Touch-N-Stars.url https://github.com/nitr57/N.I.N.A-Plugin-for-Touch-N-Stars.git
submodule.NINA.Plugins/Touch-N-Stars.branch main
submodule.NINA.Plugins/LiveStack.path NINA.Plugins/LiveStack
submodule.NINA.Plugins/LiveStack.url https://github.com/nitr57/nina.plugin.livestack
submodule.NINA.Plugins/LiveStack.branch main
submodule.NINA.Plugins/PolarAlignment.path NINA.Plugins/PolarAlignment
submodule.NINA.Plugins/PolarAlignment.url https://github.com/nitr57/nina.plugin.polaralignment.git
submodule.NINA.Plugins/PolarAlignment.branch master
submodule.NINA.Plugins/joko.nina.plugins.path NINA.Plugins/joko.nina.plugins
submodule.NINA.Plugins/joko.nina.plugins.url https://github.com/nitr57/joko.nina.plugins.git
submodule.NINA.Plugins/joko.nina.plugins.branch develop
submodule.NINA.Plugins/NINA.Joko.Plugin.TenMicron.path NINA.Plugins/NINA.Joko.Plugin.TenMicron
submodule.NINA.Plugins/NINA.Joko.Plugin.TenMicron.url https://github.com/nitr57/NINA.Joko.Plugin.TenMicron.git
submodule.NINA.Plugins/NINA.Joko.Plugin.TenMicron.branch develop
submodule.NINA.Plugins/nina.plugin.orbuculum.path NINA.Plugins/nina.plugin.orbuculum
submodule.NINA.Plugins/nina.plugin.orbuculum.url https://github.com/nitr57/nina.plugin.orbuculum.git
submodule.NINA.Plugins/nina.plugin.orbuculum.branch master
submodule.NINA.Plugins/nina.plugin.phd2tools.path NINA.Plugins/nina.plugin.phd2tools
submodule.NINA.Plugins/nina.plugin.phd2tools.url https://github.com/nitr57/nina.plugin.phd2tools.git
Gitのgitlink(submodule)として記録されているのに、.gitmodules にその定義が存在しない状態になってる。
build-and-install-pins-x64.sh では、”pins.plugin”は何してるかな?
grep -n "pins.plugin" build-and-install-pins-x64.sh
225: "pins-plugin|https://github.com/nitr57/pins.plugin|"
935: clone_repo_fresh "https://github.com/nitr57/pins.plugin" "NINA.Plugins/pins.plugin"
935行目には、ビルドスクリプトから別途cloneする設計らしいです。
pins.plugin を、.gitmodules に登録されたsubmoduleとして取得するのではない。
build-and-install-pins-x64.sh を見る
build-and-install-pins-x64.sh を見てみると、
### Ubuntu/Debian x86_64パッケージアーキテクチャamd64向き
TARGET_RUNTIME="${TARGET_RUNTIME:-linux-x64}"
### .NETは net10.0, SDK 10.0.400?
PLUGIN_TARGET_FRAMEWORK="${PLUGIN_TARGET_FRAMEWORK:-net10.0}"
### スクリプト自身がPINSをcloneする
PINS_REPO_URL="${PINS_REPO_URL:-https://github.com/acocalypso/pins.git}"
PINS_REPO_BRANCH="${PINS_REPO_BRANCH:-develop}"
PINS_WORKDIR="${PINS_WORKDIR:-$TARGET_HOME/pins-build-src}"
AUTO_CLONE_PINS_REPO="${AUTO_CLONE_PINS_REPO:-true}"
### INDIも(xisf)ビルドする
INDI_VERSION="${INDI_VERSION:-2.1.9}"
INDI_ENABLE_XISF="${INDI_ENABLE_XISF:-true}"
CMake、Ninja、Make、automake、curl、wgetなどもスクリプトで取得するようだ。
sed -n '300,470p' build-and-install-pins-x64.sh
install_build_prerequisites() {
log "Installing system build prerequisites"
run_as_root apt-get update
run_as_root apt-get install -y --no-install-recommends \
apt-transport-https \
autoconf \
autoconf-archive \
automake \
build-essential \
ca-certificates \
cdbs \
cmake \
curl \
debhelper \
devscripts \
default-jre-headless \
dkms \
dpkg-dev \
equivs \
fakeroot \
fxload \
gettext \
git \
git-lfs \
gnupg \
libavdevice-dev \
libboost-regex-dev \
libboost-all-dev \
libcfitsio-dev \
libczmq-dev \
libcurl4-gnutls-dev \
libdc1394-dev \
libeigen3-dev \
libev-dev \
libfftw3-dev \
libftdi1-dev \
libftdi-dev \
libgphoto2-dev \
libgps-dev \
libgsl-dev \
libgtest-dev \
libgmock-dev \
libhidapi-dev \
libicu-dev \
libjpeg-dev \
libjsoncpp-dev \
libkrb5-dev \
liblimesuite-dev \
libnova-dev \
libopencv-dev \
libpng-dev \
libraw-dev \
librtlsdr-dev \
libssl-dev \
libtesseract-dev \
libtheora-dev \
libtiff-dev \
libtool \
libudev-dev \
libusb-1.0-0-dev \
libusb-dev \
libv4l-dev \
libwxgtk3.2-dev \
libx11-dev \
libxisf-dev \
libzstd-dev \
libzmq3-dev \
libwebp-dev \
ninja-build \
nlohmann-json3-dev \
pkg-config \
rsync \
unzip \
wget \
wx-common \
wx3.2-i18n \
zip \
zlib1g-dev
}
linux-x64
├── INDI 2.1.9
├── PHD2
├── OpenCV 4.11.0
├── OpenCvSharp
├── ASTAP
└── 各種NINA plugin
それぞれを、build-and-install-pins-x64.shからビルドしているらしい。
sed -n '800,880p' build-and-install-pins-x64.sh
fi
[[ -f "$package_so" ]] || fail "OpenCvSharp runtime library not found: $package_so"
local stage_dir="NINA/External/$TARGET_RUNTIME"
mkdir -p "$stage_dir"
cp -f "$package_so" "$stage_dir/libOpenCvSharpExtern.so"
chmod 755 "$stage_dir/libOpenCvSharpExtern.so"
log "Staged OpenCvSharp runtime library at: $stage_dir/libOpenCvSharpExtern.so"
}
install_dotnet_10() {
local dotnet_ok="false"
if command -v dotnet >/dev/null 2>&1; then
if dotnet --list-sdks | grep -q '^10\.'; then
dotnet_ok="true"
fi
fi
if [[ "$dotnet_ok" == "true" ]]; then
log ".NET 10 SDK already available"
return
fi
log "Installing .NET 10 SDK"
source /etc/os-release
local ms_repo_deb
ms_repo_deb="$(mktemp)"
if ! wget -q "https://packages.microsoft.com/config/ubuntu/${VERSION_ID}/packages-microsoft-prod.deb" -O "$ms_repo_deb"; then
fail "Failed to download Microsoft package feed for Ubuntu ${VERSION_ID}"
fi
run_as_root dpkg -i "$ms_repo_deb"
rm -f "$ms_repo_deb"
run_as_root apt-get update
run_as_root apt-get install -y dotnet-sdk-10.0
}
install_node_22() {
local node_ok="false"
if command -v node >/dev/null 2>&1; then
local node_major
node_major="$(node -p 'process.versions.node.split(".")[0]')"
if [[ "$node_major" == "22" ]]; then
node_ok="true"
fi
fi
if [[ "$node_ok" == "true" ]]; then
log "Node.js 22 already available"
return
fi
log "Installing Node.js 22"
local nodesource_script
nodesource_script="$(mktemp)"
curl -fsSL https://deb.nodesource.com/setup_22.x -o "$nodesource_script"
run_as_root bash "$nodesource_script"
rm -f "$nodesource_script"
run_as_root apt-get install -y nodejs
}
print_tool_versions() {
log "Toolchain versions"
dotnet --info
node --version
npm --version
}
update_submodules_except_external() {
log "Updating git submodules (excluding NINA/External)"
git lfs install
local excluded_path="NINA/External"
.NET SDK、Node.js 22もスクリプトが導入するようです。
build-and-install-pins-x64.shのみ単体でダウンロードして実行すると、PINS環境構築ができそうです。ただし、一箇所の変更が必要かもしれません。
変更前:
PINS_REPO_URL=”${PINS_REPO_URL:-https://github.com/acocalypso/pins.git}”
変更後:
PINS_REPO_URL=”${PINS_REPO_URL:-https://github.com/nitr57/pins.git}”
スクリプトが行う、処理順を全体像として確認します。
grep -nE '^[a-zA-Z_][a-zA-Z0-9_]*\(\)' build-and-install-pins-x64.sh
13:log() {
17:warn() {
21:fail() {
26:is_truthy() {
33:run_as_root() {
43:require_file() {
48:has_required_repo_layout() {
57:check_required_repo_layout() {
159:record_built_deb() {
174:get_remote_sha() {
191:compute_source_fingerprint() {
255:load_previous_build_state() {
270:try_reuse_successful_build() {
309:save_successful_build_state() {
325:install_bootstrap_tools_if_needed() {
346:ensure_repo_root() {
379:install_build_prerequisites() {
460:get_opencv_version() {
499:get_local_opencv_pkgconfig_version() {
522:opencv_matches_required_version() {
532:activate_opencv_environment() {
565:build_and_install_opencv_required_version() {
600:ensure_opencv_required_version() {
650:activate_local_libxisf_environment() {
703:get_libxisf_header_candidate() {
718:libxisf_supports_required_api() {
727:build_and_install_libxisf() {
748:ensure_modern_libxisf_if_enabled() {
778:stage_opencvsharp_runtime_from_nuget() {
812:install_dotnet_10() {
842:install_node_22() {
868:print_tool_versions() {
875:update_submodules_except_external() {
909:clone_repo_fresh() {
922:clone_workflow_plugin_repositories() {
938:build_and_install_libgpiod() {
958:populate_external_bundle() {
1014:determine_versions() {
1028:build_core_pins_package() {
1146:build_pinsdaemon_package() {
1202:build_wandereretasdk_package() {
1251:find_assembly_info() {
1266:build_plugin_deb() {
1370:prepare_touch_n_stars_frontend() {
1388:prepare_pins_plugin_sdks() {
1425:build_plugins() {
1484:build_indi_debian_packages() {
1733:configure_phd2_service_file() {
1762:build_phd2_package() {
1908:create_firmware_bundle() {
1930:install_built_packages() {
1978:setup_framingassistant_cache() {
2011:setup_astap() {
2048:setup_runtime_prerequisites() {
2083:print_summary() {
2096:main() {
基本処理 (x86_64 / amd64確認) → PINSソース確認 → ビルド状態確認(前回成功ビルドの再利用判定) → ビルド環境構築( build-essential, cmake, ninja, 各種lib*-dev) → OpenCVビルド、libXISFビルド、OpenCvSharp取得 / .NET導入 / Node.js導入 → PINS関連コンポーネント → N.I.N.A. Pluginビルド → INDI 2.1.9ビルド → PHD2ビルド → ビルドされた.debをインストール → ASTAP / Framing Assistant等の実行環境設定
との流れで処理するようです。
PINSソースを確認 → ビルド環境を構築 → ネイティブ依存関係を整備 → .NET/Node環境を整備 → submodule/Pluginを取得 → PINS/N.I.N.A./INDI/PHD2等をビルド → インストール
build-and-install-pins-x64.sh を使う
だいぶ行き届いたお膳立てが、このスクリプトは成されています。
git status
ブランチ develop
Your branch is up to date with 'origin/develop'.
nothing to commit, working tree clean
インストールスクリプトを使います。
### 実行権限を付ける
chmod +x build-and-install-pins-x64.sh
### スクリプトを動かす
./build-and-install-pins-x64.sh
インストールログ
Ubuntu 26.04クリーンインストール直後
以下のパッケージが新たにインストールされます:
apt-transport-https autoconf autoconf-archive automake autopoint autotools-dev build-essential bzip2 ca-certificates-java cdbs cfortran cmake cmake-data comerr-dev cpp-16 cpp-16-x86-64-linux-gnu curl debhelper debugedit
default-jre-headless devscripts dh-autoreconf dh-strip-nondeterminism dkms dpkg-dev dwz equivs fakeroot fxload g++ g++-15 g++-15-x86-64-linux-gnu g++-x86-64-linux-gnu gcc gcc-15 gcc-15-x86-64-linux-gnu gcc-16 gcc-16-x86-64-linux-gnu
gcc-x86-64-linux-gnu gdal-data gdal-plugins gettext gfortran-16 gfortran-16-x86-64-linux-gnu git-lfs googletest icu-devtools intltool-debian java-common krb5-multidev libacl1-dev libadios2-mpi-auxiliary-2.11 libadios2-mpi-c++-2.11
libadios2-mpi-c-2.11 libadios2-mpi-core-2.11 libadios2-mpi-plugins libaec0 libamd-comgr3 libamdhip64-7 libarchive-dev libarchive-zip-perl libarmadillo15 libarpack2t64 libattr1-dev libavcodec-dev libavdevice-dev libavdevice62
libavfilter-dev libavformat-dev libavif16 libavutil-dev libb-hooks-op-check-perl libblas3 libblosc1 libblosc2-7 libboost-all-dev libboost-atomic-dev libboost-atomic1.90-dev libboost-atomic1.90.0 libboost-charconv1.90-dev
libboost-charconv1.90.0 libboost-chrono-dev libboost-chrono1.90-dev libboost-chrono1.90.0 libboost-container-dev libboost-container1.90-dev libboost-container1.90.0 libboost-context-dev libboost-context1.90-dev libboost-context1.90.0
libboost-coroutine-dev libboost-coroutine1.90-dev libboost-coroutine1.90.0 libboost-date-time-dev libboost-date-time1.90-dev libboost-date-time1.90.0 libboost-dev libboost-exception-dev libboost-exception1.90-dev libboost-fiber-dev
libboost-fiber1.90-dev libboost-fiber1.90.0 libboost-filesystem-dev libboost-filesystem1.90-dev libboost-filesystem1.90.0 libboost-graph-dev libboost-graph-parallel-dev libboost-graph-parallel1.90-dev libboost-graph-parallel1.90.0
libboost-graph1.90-dev libboost-graph1.90.0 libboost-iostreams-dev libboost-iostreams1.90-dev libboost-iostreams1.90.0 libboost-json-dev libboost-json1.90-dev libboost-json1.90.0 libboost-locale-dev libboost-locale1.90-dev
libboost-locale1.90.0 libboost-log-dev libboost-log1.90-dev libboost-log1.90.0 libboost-math-dev libboost-math1.90-dev libboost-math1.90.0 libboost-mpi-dev libboost-mpi-python-dev libboost-mpi-python1.90-dev libboost-mpi-python1.90.0
libboost-mpi1.90-dev libboost-mpi1.90.0 libboost-nowide-dev libboost-nowide1.90-dev libboost-nowide1.90.0 libboost-numpy-dev libboost-numpy1.90-dev libboost-numpy1.90.0 libboost-process-dev libboost-process1.90-dev
libboost-process1.90.0 libboost-program-options-dev libboost-program-options1.90-dev libboost-program-options1.90.0 libboost-python-dev libboost-python1.90-dev libboost-python1.90.0 libboost-random-dev libboost-random1.90-dev
libboost-random1.90.0 libboost-regex-dev libboost-regex1.90-dev libboost-regex1.90.0 libboost-serialization-dev libboost-serialization1.90-dev libboost-serialization1.90.0 libboost-stacktrace-dev libboost-stacktrace1.90-dev
libboost-stacktrace1.90.0 libboost-test-dev libboost-test1.90-dev libboost-test1.90.0 libboost-thread-dev libboost-thread1.90-dev libboost-thread1.90.0 libboost-timer-dev libboost-timer1.90-dev libboost-timer1.90.0 libboost-tools-dev
libboost-type-erasure-dev libboost-type-erasure1.90-dev libboost-type-erasure1.90.0 libboost-url-dev libboost-url1.90-dev libboost-url1.90.0 libboost-wave-dev libboost-wave1.90-dev libboost-wave1.90.0 libboost1.90-dev
libboost1.90-tools-dev libbrotli-dev libbsd-dev libbz2-dev libcc1-0 libcfitsio-dev libcfitsio10t64 libcharls2 libclass-method-modifiers-perl libclass-xsaccessor-perl libconfig-inifiles-perl libcrypt-dev libcurl4-gnutls-dev libczmq-dev
libczmq4 libdc1394-dev libdebhelper-perl libdeflate-dev libdevel-callchecker-perl libdpkg-perl libdynaloader-functions-perl libeigen3-dev libev-dev libev4t64 libevent-2.1-7t64 libevent-core-2.1-7t64 libevent-dev
libevent-extra-2.1-7t64 libevent-openssl-2.1-7t64 libevent-pthreads-2.1-7t64 libexif-dev libexpat1-dev libext2fs-dev libfabric1 libfakeroot libfftw3-bin libfftw3-dev libfftw3-long3 libfftw3-quad3 libfile-dirlist-perl
libfile-homedir-perl libfile-stripnondeterminism-perl libfile-touch-perl libfile-which-perl libfreexl1 libftdi-dev libftdi1 libftdi1-dev libfyba0t64 libgav1-2 libgcc-15-dev libgcc-16-dev libgdal38 libgdcm-dev libgdcm3.0t64
libgeos-c1t64 libgeos3.14.1 libgeotiff5 libgfortran-16-dev libgfortran5 libgl-dev libgl2ps1.4 libglu1-mesa libglu1-mesa-dev libglx-dev libgmock-dev libgmp-dev libgmpxx4ldbl libgnutls-dane0t64 libgnutls-openssl27t64 libgnutls28-dev
libgphoto2-dev libgps-dev libgps32 libgsl-dev libgsl28 libgslcblas0 libgssrpc4t64 libgtest-dev libhdf4-0 libhdf5-310 libhdf5-hl-310 libhdf5-openmpi-310 libhidapi-dev libhidapi-hidraw0 libhidapi-libusb0 libhsa-runtime64-1 libhsakmt1
libhwloc-dev libhwloc-plugins libhwloc15 libibmad5 libibumad3 libibverbs-dev libicu-dev libidn2-dev libimath-dev libimport-into-perl libio-string-perl libjbig-dev libjpeg-dev libjpeg-turbo8-dev libjpeg8-dev libjs-jquery
libjs-jquery-ui libjsoncpp-dev libjsoncpp26 libkadm5clnt-mit12 libkadm5srv-mit12 libkdb5-10t64 libkmlbase1t64 libkmldom1t64 libkmlengine1t64 libkrb5-dev liblapack3 liblcms2-dev libldap-dev libleptonica-dev libleptonica6 liblerc-dev
liblimesuite-dev liblimesuite23.11-1 libltdl-dev liblz4-dev liblzma-dev libmd-dev libminizip1t64 libmodule-runtime-perl libmoo-perl libmunge2 libmuparser2v5 libnetcdf22 libnghttp2-dev libnl-3-dev libnl-route-3-dev libnorm-dev
libnova-0.16-0t64 libnova-dev libnova-dev-bin libnspr4-dev libnss3-dev libnuma-dev libodbc2 libodbcinst2 libogg-dev libopenblas0 libopenblas0-pthread libopencv-calib3d-dev libopencv-calib3d410 libopencv-contrib-dev
libopencv-contrib410 libopencv-core-dev libopencv-core410 libopencv-dev libopencv-dnn-dev libopencv-dnn410 libopencv-features2d-dev libopencv-features2d410 libopencv-flann-dev libopencv-flann410 libopencv-highgui-dev
libopencv-highgui410 libopencv-imgcodecs-dev libopencv-imgcodecs410 libopencv-imgproc-dev libopencv-imgproc410 libopencv-ml-dev libopencv-ml410 libopencv-objdetect-dev libopencv-objdetect410 libopencv-photo-dev libopencv-photo410
libopencv-shape-dev libopencv-shape410 libopencv-stitching-dev libopencv-stitching410 libopencv-superres-dev libopencv-superres410 libopencv-video-dev libopencv-video410 libopencv-videoio-dev libopencv-videoio410
libopencv-videostab-dev libopencv-videostab410 libopencv-viz-dev libopencv-viz410 libopenexr-dev libopengl-dev libopengl0 libopenmpi-dev libopenmpi40 libp11-kit-dev libparams-classify-perl libpgm-dev libpmix2t64 libpng-dev libproj25
libprrte-bin libprrte-dev libprrte3 libpsl-dev libpsm2-2 libpugixml1v5 libpython3-dev libpython3.14-dev libqhull-r8.0 libqt5opengl5t64 libqt5test5t64 libraw-dev libraw1394-dev librdmacm1t64 librhash1 librole-tiny-perl librtlsdr-dev
librtlsdr0 librtmp-dev librttopo1 libsdl2-2.0-0 libsdl2-classic libsharpyuv-dev libsocket++1 libsodium-dev libspatialite8t64 libssh2-1-dev libssl-dev libstdc++-15-dev libsub-quote-perl libsuperlu7 libswresample-dev libswscale-dev
libsystemd-dev libsz2 libtasn1-6-dev libtbb-dev libtbb12 libtbbbind-2-5 libtbbmalloc2 libtesseract-dev libtesseract5 libtheora-dev libtiff-dev libtiffxx6 libtool libucc1 libucx0 libudev-dev libunbound8 liburiparser1 libusb-0.1-4
libusb-1.0-0-dev libusb-dev libv4l-dev libv4l2rds0t64 libvtk9.5 libwebp-dev libwxbase3.2-1t64 libwxgtk-gl3.2-1t64 libwxgtk3.2-1t64 libwxgtk3.2-dev libx11-dev libxau-dev libxcb1-dev libxdmcp-dev libxerces-c3.2t64 libxisf-dev libxisf0
libxml2-dev libxxhash-dev libyaml-cpp0.8 libyaml-libyaml-perl libyuv0 libze1 libzfp1t64 libzmq3-dev libzstd-dev lto-disabled-list m4 make mpi-default-bin mpi-default-dev nettle-dev ninja-build nlohmann-json3-dev
openjdk-25-jre-headless openmpi-bin openmpi-common patchutils po-debconf proj-data python3-dev python3.14-dev unixodbc-common uuid-dev wdiff wx-common wx3.2-headers wx3.2-i18n x11proto-dev xorg-sgml-doctools xtrans-dev zlib1g-dev
アップグレード: 0 個、新規インストール: 480 個、削除: 0 個、保留: 5 個。
693 MB のアーカイブを取得する必要があります。
この操作後に追加で 2,848 MB のディスク容量が消費されます。
Ubuntu 26.04、CUDA環境整備後
以下の追加パッケージがインストールされます:
autopoint ca-certificates-java debugedit dh-autoreconf dh-strip-nondeterminism dwz googletest intltool-debian java-common libacl1-dev libarchive-dev libarchive-zip-perl libattr1-dev libavdevice62 libavfilter-dev
libb-hooks-op-check-perl libboost-atomic-dev libboost-atomic1.90-dev libboost-atomic1.90.0 libboost-charconv1.90-dev libboost-charconv1.90.0 libboost-chrono-dev libboost-chrono1.90-dev libboost-chrono1.90.0
libboost-container-dev libboost-container1.90-dev libboost-container1.90.0 libboost-context-dev libboost-context1.90-dev libboost-context1.90.0 libboost-coroutine-dev libboost-coroutine1.90-dev libboost-coroutine1.90.0
libboost-date-time-dev libboost-date-time1.90-dev libboost-date-time1.90.0 libboost-dev libboost-exception-dev libboost-exception1.90-dev libboost-fiber-dev libboost-fiber1.90-dev libboost-fiber1.90.0
libboost-filesystem-dev libboost-filesystem1.90-dev libboost-filesystem1.90.0 libboost-graph-dev libboost-graph-parallel-dev libboost-graph-parallel1.90-dev libboost-graph-parallel1.90.0 libboost-graph1.90-dev
libboost-graph1.90.0 libboost-iostreams-dev libboost-iostreams1.90-dev libboost-iostreams1.90.0 libboost-json-dev libboost-json1.90-dev libboost-json1.90.0 libboost-locale-dev libboost-locale1.90-dev
libboost-locale1.90.0 libboost-log-dev libboost-log1.90-dev libboost-log1.90.0 libboost-math-dev libboost-math1.90-dev libboost-math1.90.0 libboost-mpi-dev libboost-mpi-python-dev libboost-mpi-python1.90-dev
libboost-mpi-python1.90.0 libboost-mpi1.90-dev libboost-mpi1.90.0 libboost-nowide-dev libboost-nowide1.90-dev libboost-nowide1.90.0 libboost-numpy-dev libboost-numpy1.90-dev libboost-numpy1.90.0 libboost-process-dev
libboost-process1.90-dev libboost-process1.90.0 libboost-program-options-dev libboost-program-options1.90-dev libboost-program-options1.90.0 libboost-python-dev libboost-python1.90-dev libboost-python1.90.0
libboost-random-dev libboost-random1.90-dev libboost-random1.90.0 libboost-regex1.90-dev libboost-regex1.90.0 libboost-serialization-dev libboost-serialization1.90-dev libboost-serialization1.90.0
libboost-stacktrace-dev libboost-stacktrace1.90-dev libboost-stacktrace1.90.0 libboost-test-dev libboost-test1.90-dev libboost-test1.90.0 libboost-thread-dev libboost-thread1.90-dev libboost-thread1.90.0
libboost-timer-dev libboost-timer1.90-dev libboost-timer1.90.0 libboost-tools-dev libboost-type-erasure-dev libboost-type-erasure1.90-dev libboost-type-erasure1.90.0 libboost-url-dev libboost-url1.90-dev
libboost-url1.90.0 libboost-wave-dev libboost-wave1.90-dev libboost-wave1.90.0 libboost1.90-dev libboost1.90-tools-dev libbsd-dev libclass-method-modifiers-perl libclass-xsaccessor-perl libconfig-inifiles-perl libczmq4
libdebhelper-perl libdevel-callchecker-perl libdynaloader-functions-perl libev4t64 libevent-dev libevent-extra-2.1-7t64 libevent-openssl-2.1-7t64 libext2fs-dev libfile-dirlist-perl libfile-homedir-perl
libfile-stripnondeterminism-perl libfile-touch-perl libfile-which-perl libftdi1 libglu1-mesa libglu1-mesa-dev libgps32 libhidapi-hidraw0 libhidapi-libusb0 libhwloc-dev libibverbs-dev libimport-into-perl
libio-string-perl libjack-jackd2-0 libjs-jquery libjs-jquery-ui libleptonica-dev liblimesuite23.11-1 libmd-dev libmodule-runtime-perl libmoo-perl libnl-3-dev libnl-route-3-dev libnorm-dev libnova-0.16-0t64
libnova-dev-bin libnspr4-dev libnss3-dev libnuma-dev libogg-dev libopenal-data libopenal1 libopenmpi-dev libparams-classify-perl libpgm-dev libprrte-bin libprrte-dev libprrte3 libpython3-dev libpython3.14-dev
librole-tiny-perl librtlsdr0 libsodium-dev libsub-quote-perl libusb-0.1-4 libv4l2rds0t64 libwxbase3.2-1t64 libwxgtk-gl3.2-1t64 libwxgtk3.2-1t64 libyaml-libyaml-perl mpi-default-bin mpi-default-dev
openjdk-25-jre-headless openmpi-bin openmpi-common patchutils po-debconf python3-dev python3.14-dev wdiff wx3.2-headers
提案パッケージ:
dh-make default-jre adequate at autopkgtest bls-standalone check-all-the-things diffoscope disorderfs docker.io dose-extra duck elpa-devscripts faketime gnuplot how-can-i-help libdbd-pg-perl libgitlab-api-v4-perl
libterm-size-perl mmdebstrap mutt piuparts postgresql-client pristine-lfs python3-debianbts python3-pycurl quilt ratt reprotest svn-buildpackage w3m debian-keyring debian-tag2upload-keyring git-debpush
libmetacpan-client-perl libsoap-lite-perl pristine-tar gettext-doc libasprintf-dev libgettextpo-dev gnulib-l10n libboost-doc libboost1.90-doc libboost-contract1.90-dev libmpfrc++-dev libntl-dev xsltproc doxygen
docbook-xsl default-jdk fop libeigen3-doc doc-base gpsd jackd2 libjs-jquery-ui-docs liblimesuite-doc libnorm-doc libportaudio2 openmpi-doc libscalar-number-perl libxstring-perl wx3.2-doc fonts-dejavu-extra
fonts-ipafont-gothic fonts-ipafont-mincho fonts-wqy-microhei | fonts-wqy-zenhei fonts-indic libmail-box-perl wdiff-doc
推奨パッケージ:
dctrl-tools dput | dupload libdistro-info-perl libjson-perl libstring-shellquote-perl licensecheck lintian lzip python3-magic python3-unidiff libarchive-cpio-perl libftdi1-doc javascript-common limesuite-udev
libnamespace-clean-perl libcoarrays-openmpi-dev libpmix-dev libusb-1.0-doc cppzmq-dev libmail-sendmail-perl
以下のパッケージが新たにインストールされます:
apt-transport-https autoconf-archive autopoint ca-certificates-java cdbs debhelper debugedit default-jre-headless devscripts dh-autoreconf dh-strip-nondeterminism dwz equivs fxload gettext googletest intltool-debian
java-common libacl1-dev libarchive-dev libarchive-zip-perl libattr1-dev libavdevice-dev libavdevice62 libavfilter-dev libb-hooks-op-check-perl libboost-all-dev libboost-atomic-dev libboost-atomic1.90-dev
libboost-atomic1.90.0 libboost-charconv1.90-dev libboost-charconv1.90.0 libboost-chrono-dev libboost-chrono1.90-dev libboost-chrono1.90.0 libboost-container-dev libboost-container1.90-dev libboost-container1.90.0
libboost-context-dev libboost-context1.90-dev libboost-context1.90.0 libboost-coroutine-dev libboost-coroutine1.90-dev libboost-coroutine1.90.0 libboost-date-time-dev libboost-date-time1.90-dev libboost-date-time1.90.0
libboost-dev libboost-exception-dev libboost-exception1.90-dev libboost-fiber-dev libboost-fiber1.90-dev libboost-fiber1.90.0 libboost-filesystem-dev libboost-filesystem1.90-dev libboost-filesystem1.90.0
libboost-graph-dev libboost-graph-parallel-dev libboost-graph-parallel1.90-dev libboost-graph-parallel1.90.0 libboost-graph1.90-dev libboost-graph1.90.0 libboost-iostreams-dev libboost-iostreams1.90-dev
libboost-iostreams1.90.0 libboost-json-dev libboost-json1.90-dev libboost-json1.90.0 libboost-locale-dev libboost-locale1.90-dev libboost-locale1.90.0 libboost-log-dev libboost-log1.90-dev libboost-log1.90.0
libboost-math-dev libboost-math1.90-dev libboost-math1.90.0 libboost-mpi-dev libboost-mpi-python-dev libboost-mpi-python1.90-dev libboost-mpi-python1.90.0 libboost-mpi1.90-dev libboost-mpi1.90.0 libboost-nowide-dev
libboost-nowide1.90-dev libboost-nowide1.90.0 libboost-numpy-dev libboost-numpy1.90-dev libboost-numpy1.90.0 libboost-process-dev libboost-process1.90-dev libboost-process1.90.0 libboost-program-options-dev
libboost-program-options1.90-dev libboost-program-options1.90.0 libboost-python-dev libboost-python1.90-dev libboost-python1.90.0 libboost-random-dev libboost-random1.90-dev libboost-random1.90.0 libboost-regex-dev
libboost-regex1.90-dev libboost-regex1.90.0 libboost-serialization-dev libboost-serialization1.90-dev libboost-serialization1.90.0 libboost-stacktrace-dev libboost-stacktrace1.90-dev libboost-stacktrace1.90.0
libboost-test-dev libboost-test1.90-dev libboost-test1.90.0 libboost-thread-dev libboost-thread1.90-dev libboost-thread1.90.0 libboost-timer-dev libboost-timer1.90-dev libboost-timer1.90.0 libboost-tools-dev
libboost-type-erasure-dev libboost-type-erasure1.90-dev libboost-type-erasure1.90.0 libboost-url-dev libboost-url1.90-dev libboost-url1.90.0 libboost-wave-dev libboost-wave1.90-dev libboost-wave1.90.0 libboost1.90-dev
libboost1.90-tools-dev libbsd-dev libclass-method-modifiers-perl libclass-xsaccessor-perl libconfig-inifiles-perl libczmq-dev libczmq4 libdebhelper-perl libdevel-callchecker-perl libdynaloader-functions-perl
libeigen3-dev libev-dev libev4t64 libevent-dev libevent-extra-2.1-7t64 libevent-openssl-2.1-7t64 libext2fs-dev libfile-dirlist-perl libfile-homedir-perl libfile-stripnondeterminism-perl libfile-touch-perl
libfile-which-perl libftdi-dev libftdi1 libftdi1-dev libglu1-mesa libglu1-mesa-dev libgmock-dev libgps-dev libgps32 libgtest-dev libhidapi-dev libhidapi-hidraw0 libhidapi-libusb0 libhwloc-dev libibverbs-dev
libimport-into-perl libio-string-perl libjack-jackd2-0 libjs-jquery libjs-jquery-ui libjsoncpp-dev libleptonica-dev liblimesuite-dev liblimesuite23.11-1 libmd-dev libmodule-runtime-perl libmoo-perl libnl-3-dev
libnl-route-3-dev libnorm-dev libnova-0.16-0t64 libnova-dev libnova-dev-bin libnspr4-dev libnss3-dev libnuma-dev libogg-dev libopenal-data libopenal1 libopenmpi-dev libparams-classify-perl libpgm-dev libprrte-bin
libprrte-dev libprrte3 libpython3-dev libpython3.14-dev librole-tiny-perl librtlsdr-dev librtlsdr0 libsodium-dev libsub-quote-perl libtesseract-dev libtheora-dev libudev-dev libusb-0.1-4 libusb-1.0-0-dev libusb-dev
libv4l-dev libv4l2rds0t64 libwxbase3.2-1t64 libwxgtk-gl3.2-1t64 libwxgtk3.2-1t64 libwxgtk3.2-dev libyaml-libyaml-perl libzmq3-dev mpi-default-bin mpi-default-dev nlohmann-json3-dev openjdk-25-jre-headless openmpi-bin
openmpi-common patchutils po-debconf python3-dev python3.14-dev wdiff wx-common wx3.2-headers wx3.2-i18n
アップグレード: 0 個、新規インストール: 231 個、削除: 0 個、保留: 8 個。
138 MB のアーカイブを取得する必要があります。
この操作後に追加で 788 MB のディスク容量が消費されます。
build-and-install-pins-x64.sh エラーを取り除く。。。
この後、エラーで何度も止まります。
この段階で、方針を決めます。
既存の build-and-install-pins-x64.sh を最大限そのまま使う
問題が確認された部分だけ修正する
手作業で大量の依存ソフトを個別導入しない
システムに変更を加えない
PINS専用のものは、可能なら専用ディレクトリへ分離する
ビルドして初めて分かる問題は、事前に推測して大量修正しない
この原則で行います。先は長そうです。
opencv-4.11.0.zip エラー
何度も、OpenCVビルドでつまずくので、後では、個別にビルドして、インストールしています。
artifacts/src/opencv/opencv-4.11.0.zip
CMake Error at /home/USERNAME/pins/artifacts/src/opencv/opencv-4.11.0/cmake/OpenCVGenPkgconfig.cmake:113 (cmake_minimum_required):
Compatibility with CMake < 3.5 has been removed from CMake.
Update the VERSION argument <min> value. Or, use the <min>...<max> syntax
to tell CMake that the project requires at least <min> but has been updated
to work with policies introduced by <max> or earlier.
Or, add -DCMAKE_POLICY_VERSION_MINIMUM=3.5 to try configuring anyway.
OpenCV 4.11.0のビルド処理が、Ubuntu 26.04に入っているCMakeと互換性がないようです。
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 オプションを提案してます。
build-and-install-pins-x64.sh の opencv、cmake を見てみます。
### Ubuntu 26.04のCmake
cmake --version
cmake version 4.2.3
grep -n -C 5 "opencv\|cmake" build-and-install-pins-x64.sh
これは自分が読み込めない。。。
### PINSスクリプトではOpenCV 4.11.0をソースからビルドしています。
local cmake_args=(
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_INSTALL_PREFIX="$OPENCV_INSTALL_PREFIX"
-DOPENCV_GENERATE_PKGCONFIG=ON
)
Ubuntu 26.04のCMakeとOpenCV 4.11.0の組み合わせによる問題らしい。
Compatibility with versions of CMake older than 3.5 has been removed.
CMake 4.0 Release Notes
https://cmake.org/cmake/help/v4.2/release/4.0.html?utm_source=chatgpt.com#deprecated-and-removed-features
先の、-DCMAKE_POLICY_VERSION_MINIMUM=3.5 についても説明があります。
CMAKE_POLICY_VERSION_MINIMUM
CMake を使用しているユーザーは、キャッシュ内でこの変数を設定(例:-DCMAKE_POLICY_VERSION_MINIMUM=3.5)することで、そのポリシーバージョン以上に更新されていないプロジェクトの構成を試みることができます。
https://cmake.org/cmake/help/latest/variable/CMAKE_POLICY_VERSION_MINIMUM.html?utm_source=chatgpt.com
ん〜〜。。。面倒だ。提案されたオプションを試します。
build-and-install-pins-x64.sh のOpenCVビルド部分に、-DCMAKE_POLICY_VERSION_MINIMUM=3.5 を追加します。
~/pins/build-and-install-pins-x64.sh の 581行付近が、OpenCVビルド箇所です。
local cmake_args=(
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_INSTALL_PREFIX="$OPENCV_INSTALL_PREFIX"
-DOPENCV_GENERATE_PKGCONFIG=ON
)
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 を追加します。
local cmake_args=(
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_INSTALL_PREFIX="$OPENCV_INSTALL_PREFIX"
-DOPENCV_GENERATE_PKGCONFIG=ON
-DCMAKE_POLICY_VERSION_MINIMUM=3.5
)
変更部分を確認します。
grep -n -A5 "local cmake_args=" build-and-install-pins-x64.sh
581: local cmake_args=(
582- -DCMAKE_BUILD_TYPE=Release
583- -DCMAKE_INSTALL_PREFIX="$OPENCV_INSTALL_PREFIX"
584- -DOPENCV_GENERATE_PKGCONFIG=ON
585- -DCMAKE_POLICY_VERSION_MINIMUM=3.5
586- )
### スクリプトを動かす
./build-and-install-pins-x64.sh
同じ箇所で止まった。。。
CMake Error at /home/USERNAME/pins/artifacts/src/opencv/opencv-4.11.0/cmake/OpenCVGenPkgconfig.cmake:113 (cmake_minimum_required):
Compatibility with CMake < 3.5 has been removed from CMake.
Update the VERSION argument <min> value. Or, use the <min>...<max> syntax
to tell CMake that the project requires at least <min> but has been updated
to work with policies introduced by <max> or earlier.
Or, add -DCMAKE_POLICY_VERSION_MINIMUM=3.5 to try configuring anyway.
PINSが要求しているOpenCV 4.11.0を維持し、CMake 4との非互換部分だけ修正します。
sed -n '105,118p' artifacts/src/opencv/opencv-4.11.0/cmake/OpenCVGenPkgconfig.cmake
if((UNIX AND NOT ANDROID) OR MINGW)
install(FILES ${CMAKE_BINARY_DIR}/unix-install/${OPENCV_PC_FILE_NAME} DESTINATION ${OPENCV_LIB_INSTALL_PATH}/pkgconfig COMPONENT dev)
endif()
# =============================================================================
else() # DEFINED CMAKE_HELPER_SCRIPT
cmake_minimum_required(VERSION 2.8.12.2)
cmake_policy(SET CMP0012 NEW)
include("${CMAKE_HELPER_SCRIPT}")
include("${OpenCV_SOURCE_DIR}/cmake/OpenCVUtils.cmake")
fix_prefix(_modules 1)
現在:
cmake_minimum_required(VERSION 2.8.12.2)
変更:
cmake_minimum_required(VERSION 3.5)
CMAKE_POLICY_VERSION_MINIMUM=3.5 をCMake configureに指定
OpenCVGenPkgconfig.cmake の古い 2.8.12.2 を 3.5 に修正
サイトを漁ると次がありました。113行で止まるのは
cmake-4.patch
https://sources.debian.org/src/opencv/4.10.0%2Bdfsg-8/debian/patches/cmake-4.patch?utm_source=chatgpt.com
こちらでも論じられています
https://github.com/opencv/opencv/issues/27122
~/pins/build-and-install-pins-x64.sh を変更します。
build_and_install_opencv_required_version( を変更します。
### 変更前
wget -O "$opencv_zip" "https://github.com/opencv/opencv/archive/refs/tags/${OPENCV_REQUIRED_VERSION}.zip"
unzip -q "$opencv_zip" -d "$opencv_src_root"
local cmake_args=(
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_INSTALL_PREFIX="$OPENCV_INSTALL_PREFIX"
-DOPENCV_GENERATE_PKGCONFIG=ON
-DCMAKE_POLICY_VERSION_MINIMUM=3.5
)
### 変更後
wget -O "$opencv_zip" "https://github.com/opencv/opencv/archive/refs/tags/${OPENCV_REQUIRED_VERSION}.zip"
unzip -q "$opencv_zip" -d "$opencv_src_root"
sed -i \
's/cmake_minimum_required(VERSION 2.8.12.2)/cmake_minimum_required(VERSION 3.5)/' \
"$opencv_src_dir/cmake/OpenCVGenPkgconfig.cmake"
local cmake_args=(
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_INSTALL_PREFIX="$OPENCV_INSTALL_PREFIX"
-DOPENCV_GENERATE_PKGCONFIG=ON
-DCMAKE_POLICY_VERSION_MINIMUM=3.5
挟み込んだ、sed -i 部分は、
OpenCVを展開した直後に、OpenCVGenPkgconfig.cmake の古いCMakeバージョン指定を書き換えるコマンドです。
sed:テキストファイルの内容を検索・置換するLinuxのコマンド、-i は ファイルを直接書き換える。s/.../.../ は、s/変更前/変更後/
変更前:cmake_minimum_required(VERSION 2.8.12.2)
変更後:cmake_minimum_required(VERSION 3.5)
“$” 対象ファイルを示す。
構文チェックをします。スクリプトを実行します。
bash -n ~/pins/build-and-install-pins-x64.sh
./build-and-install-pins-x64.sh
FFmpg互換性
同じ箇所で止まります。
Ubuntu 26.04 のFFmpeg開発ライブラリ(FFmpeg 8系)
OpenCV 4.11.0 のFFmpeg連携コード
FFmpegのAPI互換性問題
[ 24%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/layers/concat_layer.cpp.o
[ 24%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/layers/const_layer.cpp.o
[ 24%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/layers/convolution_layer.cpp.o
[ 24%] Building CXX object modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_obsensor_capture.cpp.o
[ 24%] Building CXX object modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_obsensor/obsensor_uvc_stream_channel.cpp.o
In file included from /home/USERNAME/pins/artifacts/src/opencv/opencv-4.11.0/modules/videoio/src/cap_ffmpeg.cpp:50:
/home/USERNAME/pins/artifacts/src/opencv/opencv-4.11.0/modules/videoio/src/cap_ffmpeg_impl.hpp: In member function ‘void CvCapture_FFMPEG::close()’:
/home/USERNAME/pins/artifacts/src/opencv/opencv-4.11.0/modules/videoio/src/cap_ffmpeg_impl.hpp:688:9: error: ‘avcodec_close’ was not declared in this scope; did you mean ‘avio_close’?
688 | avcodec_close( context );
| ^~~~~~~~~~~~~
| avio_close
[ 24%] Building CXX object modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_obsensor/obsensor_stream_channel_v4l2.cpp.o
/home/USERNAME/pins/artifacts/src/opencv/opencv-4.11.0/modules/videoio/src/cap_ffmpeg_impl.hpp: In member function ‘void CvCapture_FFMPEG::get_rotation_angle()’:
/home/USERNAME/pins/artifacts/src/opencv/opencv-4.11.0/modules/videoio/src/cap_ffmpeg_impl.hpp:2008:12: error: ‘av_stream_get_side_data’ was not declared in this scope; did you mean ‘av_frame_get_side_data’?
2008 | data = av_stream_get_side_data(video_st, AV_PKT_DATA_DISPLAYMATRIX, NULL);
| ^~~~~~~~~~~~~~~~~~~~~~~
| av_frame_get_side_data
[ 24%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/layers/correlation_layer.cpp.o
gmake[2]: *** [modules/videoio/CMakeFiles/opencv_videoio.dir/build.make:219: modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_ffmpeg.cpp.o] エラー 1
gmake[2]: *** 未完了のジョブを待っています....
[ 24%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/layers/cpu_kernels/conv_depthwise.cpp.o
[ 24%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/layers/cpu_kernels/conv_winograd_f63.cpp.o
[ 24%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/layers/cpu_kernels/conv_winograd_f63.dispatch.cpp.o
[ 24%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/layers/cpu_kernels/convolution.cpp.o
[ 25%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/layers/detection_output_layer.cpp.o
[ 25%] Built target opencv_photo
[ 25%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/layers/einsum_layer.cpp.o
[ 25%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/layers/flow_warp_layer.cpp.o
gmake[1]: *** [CMakeFiles/Makefile2:6891: modules/videoio/CMakeFiles/opencv_videoio.dir/all] エラー 2
gmake[1]: *** 未完了のジョブを待っています....
[ 25%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/layers/fully_connected_layer.cpp.o
[ 29%] Linking CXX shared library ../../lib/libopencv_xphoto.so
[ 29%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/op_timvx.cpp.o
[ 29%] Built target opencv_xphoto
[ 29%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/op_vkcom.cpp.o
[ 29%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/op_webnn.cpp.o
[ 31%] Linking CXX shared library ../../lib/libopencv_dnn.so
[ 31%] Built target opencv_dnn
[ 31%] Linking CXX shared library ../../lib/libopencv_features2d.so
[ 31%] Built target opencv_features2d
gmake: *** [Makefile:166: all] エラー 2
avcodec_close was not declared
av_stream_get_side_data was not declared
avcodecは、FFmpegの一部なので、OpenCV 4.11.0 の FFmpeg 部分と、Ubuntu 26.04 側の FFmpeg APの不整合らしい。
ffmpeg-8.0-compat-1.patch
https://sources.debian.org/src/opencv/4.10.0%2Bdfsg-8/debian/patches/ffmpeg-8.0-compat-1.patch
Adding ffmpeg-8.0 support
https://github.com/opencv/opencv/issues/27688?utm_source=chatgpt.com
OpenCVのビルドに必要なFFmpeg開発ライブラリを確認します。
dpkg -l | grep -E 'libav(codec|format|util|device|filter|swscale|swresample)'
ii libavcodec-dev:amd64 7:8.0.1-3ubuntu2 amd64 FFmpeg library with de/encoders for audio/video codecs - development files
ii libavcodec62:amd64 7:8.0.1-3ubuntu2 amd64 FFmpeg library with de/encoders for audio/video codecs - runtime files
ii libavdevice-dev:amd64 7:8.0.1-3ubuntu2 amd64 FFmpeg library for handling input and output devices - development files
ii libavdevice62:amd64 7:8.0.1-3ubuntu2 amd64 FFmpeg library for handling input and output devices - runtime files
ii libavfilter-dev:amd64 7:8.0.1-3ubuntu2 amd64 FFmpeg library containing media filters - development files
ii libavfilter11:amd64 7:8.0.1-3ubuntu2 amd64 FFmpeg library containing media filters - runtime files
ii libavformat-dev:amd64 7:8.0.1-3ubuntu2 amd64 FFmpeg library with (de)muxers for multimedia containers - development files
ii libavformat62:amd64 7:8.0.1-3ubuntu2 amd64 FFmpeg library with (de)muxers for multimedia containers - runtime files
ii libavutil-dev:amd64 7:8.0.1-3ubuntu2 amd64 FFmpeg library with functions for simplifying programming - development files
ii libavutil60:amd64 7:8.0.1-3ubuntu2 amd64 FFmpeg library with functions for simplifying programming - runtime files
pkg-config --modversion libavcodec
62.11.100
sed -n '660,710p' artifacts/src/opencv/opencv-4.11.0/modules/videoio/src/cap_ffmpeg_impl.hpp
extraDataIdx = 1;
}
void CvCapture_FFMPEG::close()
{
if( img_convert_ctx )
{
sws_freeContext(img_convert_ctx);
img_convert_ctx = 0;
}
if( picture )
{
#if LIBAVCODEC_BUILD >= (LIBAVCODEC_VERSION_MICRO >= 100 \
? CALC_FFMPEG_VERSION(55, 45, 101) : CALC_FFMPEG_VERSION(55, 28, 1))
av_frame_free(&picture);
#elif LIBAVCODEC_BUILD >= (LIBAVCODEC_VERSION_MICRO >= 100 \
? CALC_FFMPEG_VERSION(54, 59, 100) : CALC_FFMPEG_VERSION(54, 28, 0))
avcodec_free_frame(&picture);
#else
av_free(picture);
#endif
}
if( video_st )
{
#ifdef CV_FFMPEG_CODECPAR
avcodec_close( context );
#endif
video_st = NULL;
}
if (context)
{
#ifdef CV_FFMPEG_CODECPAR
avcodec_free_context(&context);
#endif
}
if( ic )
{
avformat_close_input(&ic);
ic = NULL;
}
#if USE_AV_FRAME_GET_BUFFER
av_frame_unref(&rgb_picture);
#else
if( rgb_picture.data[0] )
{
sed -n '1990,2020p' artifacts/src/opencv/opencv-4.11.0/modules/videoio/src/cap_ffmpeg_impl.hpp
int64_t CvCapture_FFMPEG::dts_to_frame_number(int64_t dts)
{
double sec = dts_to_sec(dts);
return (int64_t)(get_fps() * sec + 0.5);
}
double CvCapture_FFMPEG::dts_to_sec(int64_t dts) const
{
return (double)(dts - ic->streams[video_stream]->start_time) *
r2d(ic->streams[video_stream]->time_base);
}
void CvCapture_FFMPEG::get_rotation_angle()
{
rotation_angle = 0;
#if LIBAVFORMAT_BUILD >= CALC_FFMPEG_VERSION(57, 68, 100)
const uint8_t *data = 0;
data = av_stream_get_side_data(video_st, AV_PKT_DATA_DISPLAYMATRIX, NULL);
if (data)
{
rotation_angle = -cvRound(av_display_rotation_get((const int32_t*)data));
if (rotation_angle < 0)
rotation_angle += 360;
}
#elif LIBAVUTIL_BUILD >= CALC_FFMPEG_VERSION(52, 94, 100)
AVDictionaryEntry *rotate_tag = av_dict_get(video_st->metadata, "rotate", NULL, 0);
if (rotate_tag != NULL)
rotation_angle = atoi(rotate_tag->value);
#endif
}
エラーは:error: ‘avcodec_close’ was not declared in this scope
avcodec_close(context); ← 古いAPI
↓
avcodec_free_context(&context); ← 現在使われている解放処理
エラーは:error: ‘av_stream_get_side_data’ was not declared in this scope
AV_PKT_DATA_DISPLAYMATRIXを指定しています。これは動画の回転情報を取得
ffmpeg-8.0-compat-1.patch
https://sources.debian.org/src/opencv/4.10.0%2Bdfsg-8/debian/patches/ffmpeg-8.0-compat-1.patch
Adding ffmpeg-8.0 support
https://github.com/opencv/opencv/issues/27688?utm_source=chatgpt.com
ffmpeg-8.0-compat-1.patchの修正では、
#if (LIBAVCODEC_BUILD < CALC_FFMPEG_VERSION(62, 11, 100))
avcodec_close( context );
# endif
として、FFmpeg 8未満の場合だけ実行します
ffmpeg-8.0-compat-1.patchのOpenCV修正では、FFmpeg 8の場合は以下の修正らしいです。
AVPacketSideData* sd = video_st->codecpar->coded_side_data;
int nb_sd = video_st->codecpar->nb_coded_side_data;
if (sd && nb_sd > 0)
{
const AVPacketSideData* mtx =
av_packet_side_data_get(
sd,
nb_sd,
AV_PKT_DATA_DISPLAYMATRIX);
data = mtx->data;
}
opencv-4.11.0は別にビルド
opencvビルドをbuild-and-install-pins-x64.shスクリプトで行うと、まだまだ、沢山のエラーが出そうなので方針を替えます。
OpenCVをPINSのビルドとは分離してビルド、インストールし、PINSのスクリプトには「既にOpenCVが存在する」と指定します。
OpenCV 4.11.0ビルド・インストール
/home/USERNAME/opencv-build/install/
├── include/
├── lib/
└── lib/cmake/opencv4/OpenCVConfig.cmake
build-and-install-pins-x64.shには、
「既に OpenCV 4.11.0 がある。それを使用する」と指定します。
環境変数を用いて
OPENCV_INSTALL_PREFIX=”${OPENCV_INSTALL_PREFIX:-$HOME/opencv-build/install}”
OpenCV_DIR=”$OPENCV_INSTALL_PREFIX/lib/cmake/opencv4″
をPINSビルドで使わせます。
opencvをビルドします。
cd ~
mkdir -p opencv-build
cd opencv-build
### OpenCV 本体のダウンロード
wget -O opencv-4.11.0.zip https://github.com/opencv/opencv/archive/refs/tags/4.11.0.zip
### opencv_contrib(拡張モジュール)のダウンロード
wget -O opencv_contrib-4.11.0.zip https://github.com/opencv/opencv_contrib/archive/refs/tags/4.11.0.zip
### 展開
unzip -q opencv-4.11.0.zip
unzip -q opencv_contrib-4.11.0.zip
~/opencv-build のOpenCV 4.11.0にFFmpeg 8.0パッチを適用します。
公式のFFmpeg 8.0互換パッチをそのまま適用します。
### パッチを取得します。
wget -O /tmp/ffmpeg-8.0-compat.patch \
'https://sources.debian.org/data/main/o/opencv/4.10.0%2Bdfsg-8/debian/patches/ffmpeg-8.0-compat-1.patch'
‘/tmp/ffmpeg-8.0-compat.patch’ へ保存完了 [1303/1303]
パッチの内容を確認します。
grep -nE 'avcodec_close|av_stream_get_side_data|av_packet_side_data_get' \
/tmp/ffmpeg-8.0-compat.patch
199:</span><span id="line11" class="codeline ">+// avcodec_close removed in FFmpeg release 8.0
201:</span><span id="line13" class="codeline "> avcodec_close( context );
210:</span><span id="line22" class="codeline ">+ // av_stream_get_side_data removed in FFmpeg release 8.0
212:</span><span id="line24" class="codeline "> data = av_stream_get_side_data(video_st, AV_PKT_DATA_DISPLAYMATRIX, NULL);
218:</span><span id="line30" class="codeline ">+ const AVPacketSideData* mtx = av_packet_side_data_get(sd, nb_sd, AV_PKT_DATA_DISPLAYMATRIX);
~/pins$ sed -n '185,225p' /tmp/ffmpeg-8.0-compat.patch
<td>
<pre id="sourceslinenumbers"><a id="L1" href="#L1">1</a><br /><a id="L2" href="#L2">2</a><br /><a id="L3" href="#L3">3</a><br /><a id="L4" href="#L4">4</a><br /><a id="L5" href="#L5">5</a><br /><a id="L6" href="#L6">6</a><br /><a id="L7" href="#L7">7</a><br /><a id="L8" href="#L8">8</a><br /><a id="L9" href="#L9">9</a><br /><a id="L10" href="#L10">10</a><br /><a id="L11" href="#L11">11</a><br /><a id="L12" href="#L12">12</a><br /><a id="L13" href="#L13">13</a><br /><a id="L14" href="#L14">14</a><br /><a id="L15" href="#L15">15</a><br /><a id="L16" href="#L16">16</a><br /><a id="L17" href="#L17">17</a><br /><a id="L18" href="#L18">18</a><br /><a id="L19" href="#L19">19</a><br /><a id="L20" href="#L20">20</a><br /><a id="L21" href="#L21">21</a><br /><a id="L22" href="#L22">22</a><br /><a id="L23" href="#L23">23</a><br /><a id="L24" href="#L24">24</a><br /><a id="L25" href="#L25">25</a><br /><a id="L26" href="#L26">26</a><br /><a id="L27" href="#L27">27</a><br /><a id="L28" href="#L28">28</a><br /><a id="L29" href="#L29">29</a><br /><a id="L30" href="#L30">30</a><br /><a id="L31" href="#L31">31</a><br /><a id="L32" href="#L32">32</a><br /><a id="L33" href="#L33">33</a><br /><a id="L34" href="#L34">34</a><br /><a id="L35" href="#L35">35</a><br /><a id="L36" href="#L36">36</a><br /></pre>
</td>
<td>
<pre><code id="sourcecode" class="diff"><span id="line1" class="codeline ">From: Alexander Smorkalov <alexander.smorkalov@opencv.ai>
</span><span id="line2" class="codeline ">Subject: FFmpeg 8.0 support 1/2
</span><span id="line3" class="codeline ">Origin: upstream, https://github.com/opencv/opencv/commit/90c444abd387ffa70b2e72a34922903a2f0f4f5a
パッチを適応します。
cd ~/opencv-build/opencv-4.11.0
patch --dry-run -p1 < /tmp/ffmpeg-8.0-compat.patch
### 適応させます
patch -p1 < /tmp/ffmpeg-8.0-compat.patch
patching file modules/videoio/src/cap_ffmpeg_impl.hpp
Hunk #1 succeeded at 685 (offset 5 lines).
Hunk #2 succeeded at 2008 (offset 66 lines).
### 後続のパッチを取得します。
wget -O /tmp/ffmpeg-8.0-compat-2.patch \
'https://sources.debian.org/data/main/o/opencv/4.10.0%2Bdfsg-8/debian/patches/ffmpeg-8.0-compat-2.patch'
パッチを確認します。
head -5 /tmp/ffmpeg-8.0-compat-2.patch
From: Dmitry Kurtaev <dmitry.kurtaev@gmail.com>
Subject: FFmpeg 8.0 support 2/2
Origin: upstream, https://github.com/opencv/opencv/commit/443d0ae63fad6dfd8c485d609203db16c8bd0ec3
--- a/modules/videoio/src/cap_ffmpeg_impl.hpp
grep -nE 'av_packet_side_data_get|mtx|NULL' \
/tmp/ffmpeg-8.0-compat-2.patch
198:</span><span id="line10" class="codeline "> const AVPacketSideData* mtx = av_packet_side_data_get(sd, nb_sd, AV_PKT_DATA_DISPLAYMATRIX);
199:</span><span id="line11" class="codeline ">- data = mtx->data;
200:</span><span id="line12" class="codeline ">+ if (mtx)
202:</span><span id="line14" class="codeline ">+ data = mtx->data;
後続のパッチを適応します。
patch -p1 < /tmp/ffmpeg-8.0-compat-2.patch
パッチを確認します。
grep -n -A8 -B3 "avcodec_close( context )" \
modules/videoio/src/cap_ffmpeg_impl.hpp
687-#ifdef CV_FFMPEG_CODECPAR
688-// avcodec_close removed in FFmpeg release 8.0
689-# if (LIBAVCODEC_BUILD < CALC_FFMPEG_VERSION(62, 11, 100))
690: avcodec_close( context );
691-# endif
692-#endif
693- video_st = NULL;
694- }
695-
696- if (context)
697- {
698-#ifdef CV_FFMPEG_CODECPAR
grep -n -A20 -B3 "av_stream_get_side_data" \
modules/videoio/src/cap_ffmpeg_impl.hpp
2008- rotation_angle = 0;
2009-#if LIBAVFORMAT_BUILD >= CALC_FFMPEG_VERSION(57, 68, 100)
2010- const uint8_t *data = 0;
2011: // av_stream_get_side_data removed in FFmpeg release 8.0
2012-# if (LIBAVCODEC_BUILD < CALC_FFMPEG_VERSION(62, 11, 100))
2013: data = av_stream_get_side_data(video_st, AV_PKT_DATA_DISPLAYMATRIX, NULL);
2014-# else
2015- AVPacketSideData* sd = video_st->codecpar->coded_side_data;
2016- int nb_sd = video_st->codecpar->nb_coded_side_data;
2017- if (sd && nb_sd > 0)
2018- {
2019- const AVPacketSideData* mtx = av_packet_side_data_get(sd, nb_sd, AV_PKT_DATA_DISPLAYMATRIX);
2020- if (mtx)
2021- {
2022- data = mtx->data;
2023- }
2024- }
2025-# endif
2026- if (data)
2027- {
2028- rotation_angle = -cvRound(av_display_rotation_get((const int32_t*)data));
2029- if (rotation_angle < 0)
2030- rotation_angle += 360;
2031- }
2032-#elif LIBAVUTIL_BUILD >= CALC_FFMPEG_VERSION(52, 94, 100)
2033- AVDictionaryEntry *rotate_tag = av_dict_get(video_st->metadata, "rotate", NULL, 0);
CMake 4対応
OpenCV 4.11.0 のソースコード内にあるCMake設定を、CMake 4.2.3でも受け付けられるように1箇所だけ書き換えます。
ここでは、OpenCV 4.11.0の
opencv-4.11.0/cmake/OpenCVGenPkgconfig.cmake
の113行目にある
cmake_minimum_required(VERSION 2.8.12.2)
を、
cmake_minimum_required(VERSION 3.5)
に変更します。
cd opencv-build
sed -i \
's/cmake_minimum_required(VERSION 2\.8\.12\.2)/cmake_minimum_required(VERSION 3.5)/' \
opencv-4.11.0/cmake/OpenCVGenPkgconfig.cmake
sed:テキストファイルを編集するコマンド
-i:ファイルそのものを書き換える
s/変更前/変更後/:「変更前」を「変更後」に置換する
opencv-4.11.0/cmake/OpenCVGenPkgconfig.cmake:変更対象のファイル
変更を確認します。
grep -n "cmake_minimum_required" \
opencv-4.11.0/cmake/OpenCVGenPkgconfig.cmake
113:cmake_minimum_required(VERSION 3.5)
変更前:cmake_minimum_required(VERSION 2.8.12.2)
変更後:cmake_minimum_required(VERSION 3.5)
CMake設定を行います。上記で変更させた部分を反映させます。
cd ~/opencv-build
mkdir -p build
cmake -S ~/opencv-build/opencv-4.11.0 \
-B ~/opencv-build/build \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr/local \
-DOPENCV_GENERATE_PKGCONFIG=ON \
-DOPENCV_EXTRA_MODULES_PATH=~/opencv-build/opencv_contrib-4.11.0/modules \
-DCMAKE_POLICY_VERSION_MINIMUM=3.5
コンパイルを行います。(ここまでで既に困憊る)
cmake --build ~/opencv-build/build --parallel "$(nproc)"
–parallel “$(nproc)”は、処理するコア数
–parallel “$(nproc)”は、–parallel 16:最大16個のジョブを並列にコンパイル
CPU負荷を抑える → –parallel 4 や 8
インストール先はどこかな?
grep CMAKE_INSTALL_PREFIX ~/opencv-build/build/CMakeCache.txt
CMAKE_INSTALL_PREFIX:PATH=/usr/local
//CMAKE_INSTALL_PREFIX during last run
_GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX:INTERNAL=/usr/local
OpenCV 4.11.0を /usr/local にインストールします。
sudo cmake --install ~/opencv-build/build
sudo ldconfig
pkg-config --modversion opencv4
4.11.0
build-and-install-pins-x64.sh を見てみます。
installed="$(get_opencv_version)"
local_pkg_version="$(get_local_opencv_pkgconfig_version)"
if opencv_matches_required_version "$installed" && [[ "$local_pkg_ok" == "true" ]]; then
log "OpenCV version $installed already available"
activate_opencv_environment
return
fi
インストールされたopencvが判別できれば、build_and_install_opencv_required_version() は呼ばれません。
grep -n -E \
"OPENCV_INSTALL_PREFIX|OPENCV_REQUIRE_LOCAL_PKGCONFIG|get_opencv_version|get_local_opencv_pkgconfig_version|activate_opencv_environment" \
build-and-install-pins-x64.sh
113:OPENCV_INSTALL_PREFIX="${OPENCV_INSTALL_PREFIX:-/usr/local}"
115:OPENCV_REQUIRE_LOCAL_PKGCONFIG="${OPENCV_REQUIRE_LOCAL_PKGCONFIG:-true}"
460:get_opencv_version() {
463: if [[ -x "$OPENCV_INSTALL_PREFIX/bin/opencv_version" ]]; then
464: version="$($OPENCV_INSTALL_PREFIX/bin/opencv_version 2>/dev/null || true)"
472: local_pkg_paths+=("$OPENCV_INSTALL_PREFIX/lib/pkgconfig")
473: local_pkg_paths+=("$OPENCV_INSTALL_PREFIX/lib64/pkgconfig")
475: local_pkg_paths+=("$OPENCV_INSTALL_PREFIX/lib/$multiarch/pkgconfig")
499:get_local_opencv_pkgconfig_version() {
508: local_pkg_paths+=("$OPENCV_INSTALL_PREFIX/lib/pkgconfig")
509: local_pkg_paths+=("$OPENCV_INSTALL_PREFIX/lib64/pkgconfig")
511: local_pkg_paths+=("$OPENCV_INSTALL_PREFIX/lib/$multiarch/pkgconfig")
532:activate_opencv_environment() {
537: local_pkg_paths+=("$OPENCV_INSTALL_PREFIX/lib/pkgconfig")
538: local_pkg_paths+=("$OPENCV_INSTALL_PREFIX/lib64/pkgconfig")
540: local_pkg_paths+=("$OPENCV_INSTALL_PREFIX/lib/$multiarch/pkgconfig")
555: local opencv_cmake_dir="$OPENCV_INSTALL_PREFIX/lib/cmake/opencv4"
558: export CMAKE_PREFIX_PATH="$OPENCV_INSTALL_PREFIX:${CMAKE_PREFIX_PATH:-}"
561: export PATH="$OPENCV_INSTALL_PREFIX/bin:${PATH:-}"
562: export LD_LIBRARY_PATH="$OPENCV_INSTALL_PREFIX/lib:${LD_LIBRARY_PATH:-}"
587: -DCMAKE_INSTALL_PREFIX="$OPENCV_INSTALL_PREFIX"
607: installed="$(get_opencv_version)"
609: local_pkg_version="$(get_local_opencv_pkgconfig_version)"
612: if is_truthy "$OPENCV_REQUIRE_LOCAL_PKGCONFIG"; then
620: activate_opencv_environment
630: if is_truthy "$OPENCV_REQUIRE_LOCAL_PKGCONFIG"; then
634: warn "Local pkg-config metadata for opencv4 not found under $OPENCV_INSTALL_PREFIX"
640: activate_opencv_environment
643: final_version="$(get_opencv_version)"
646: if is_truthy "$OPENCV_REQUIRE_LOCAL_PKGCONFIG"; then
648: final_local_pkg_version="$(get_local_opencv_pkgconfig_version)"
1888: export PKG_CONFIG_PATH="$OPENCV_INSTALL_PREFIX/lib/pkgconfig:${PKG_CONFIG_PATH:-}"
1889: export LD_LIBRARY_PATH="$OPENCV_INSTALL_PREFIX/lib:${LD_LIBRARY_PATH:-}"
1890: export CMAKE_PREFIX_PATH="$OPENCV_INSTALL_PREFIX:${CMAKE_PREFIX_PATH:-}"
1891: export OpenCV_DIR="$OPENCV_INSTALL_PREFIX/lib/cmake/opencv4"
OPENCV_INSTALL_PREFIX
- OpenCVのインストール先
- 今回は
/usr/localになっているか確認したい
OPENCV_REQUIRE_LOCAL_PKGCONFIG
pkg-configのOpenCV情報を必須にする設定
get_opencv_version
- システムにインストールされているOpenCVのバージョンを取得する関数
get_local_opencv_pkgconfig_version
pkg-configからOpenCVのバージョンを取得する関数
activate_opencv_environment
- 検出したOpenCVをPINSのビルド環境で使えるようにする関数
./build-and-install-pins-x64.sh
[INFO] OpenCV version 4.11.0 already available
[INFO] LibXISF API is compatible: /usr/include/libxisf.h
[INFO] Installing .NET 10 SDK
以前に未選択のパッケージ packages-microsoft-prod を選択しています。
以下の追加パッケージがインストールされます:
aspnetcore-runtime-10.0 aspnetcore-targeting-pack-10.0 dotnet-apphost-pack-10.0 dotnet-host-10.0 dotnet-hostfxr-10.0 dotnet-runtime-10.0 dotnet-sdk-aot-10.0 dotnet-targeting-pack-10.0 dotnet-templates-10.0 liblttng-ust-common1t64
liblttng-ust-ctl6 liblttng-ust1t64
提案パッケージ:
aspnetcore-runtime-dbg-10.0 dotnet-runtime-dbg-10.0 dotnet-sdk-dbg-10.0
以下のパッケージが新たにインストールされます:
aspnetcore-runtime-10.0 aspnetcore-targeting-pack-10.0 dotnet-apphost-pack-10.0 dotnet-host-10.0 dotnet-hostfxr-10.0 dotnet-runtime-10.0 dotnet-sdk-10.0 dotnet-sdk-aot-10.0 dotnet-targeting-pack-10.0 dotnet-templates-10.0
liblttng-ust-common1t64 liblttng-ust-ctl6 liblttng-ust1t64
アップグレード: 0 個、新規インストール: 13 個、削除: 0 個、保留: 5 個。
[INFO] Toolchain versions
Host:
Version: 10.0.11
Architecture: x64
Commit: e2f47b0110
RID: ubuntu.26.04-x64
.NET SDKs installed:
10.0.111 [/usr/lib/dotnet/sdk]
.NET runtimes installed:
Microsoft.AspNetCore.App 10.0.11 [/usr/lib/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 10.0.11 [/usr/lib/dotnet/shared/Microsoft.NETCore.App]
Other architectures found:
None
Environment variables:
Not set
global.json file:
/home/USERNAME/pins/global.json
Learn more:
https://aka.ms/dotnet/info
Download .NET:
https://aka.ms/dotnet/download
v22.23.2
10.9.8
fatal: Unable to find refs/remotes/origin/pins revision in submodule path 'Touch-N-Stars'
[WARN] Remote update failed for Touch-N-Stars; falling back to pinned commit
[INFO] Updating submodule NINA.Plugins/ninaAPI
[INFO] Updating submodule NINA.Plugins/LiveStack
Submodule path 'NINA.Plugins/LiveStack': checked out '1c0d473a57eb60d1e07068ec55c7330eebbaec7f'
Submodule 'nina.plugin.livestack.benchmark/External' (https://github.com/isbeorn/nina.external.git) registered for path 'NINA.Plugins/LiveStack/nina.plugin.livestack.benchmark/External'
Submodule 'nina.plugin.livestack.test/External' (https://github.com/isbeorn/nina.external.git) registered for path 'NINA.Plugins/LiveStack/nina.plugin.livestack.test/External'
Cloning into '/home/USERNAME/pins/NINA.Plugins/LiveStack/nina.plugin.livestack.benchmark/External'...
Cloning into '/home/USERNAME/pins/NINA.Plugins/LiveStack/nina.plugin.livestack.test/External'...
Submodule path 'NINA.Plugins/LiveStack/nina.plugin.livestack.benchmark/External': checked out 'de19c6cf64128e93ed78944ddc057ba65fb12c49'
Submodule path 'NINA.Plugins/LiveStack/nina.plugin.livestack.test/External': checked out 'de19c6cf64128e93ed78944ddc057ba65fb12c49'
[INFO] Updating submodule NINA.Plugins/PolarAlignment
Submodule path 'NINA.Plugins/PolarAlignment': checked out 'bafe381399b2d59dd2189d5d75a48da8f13b06d5'
Submodule path 'NINA.Plugins/PolarAlignment/NINA.Plugins.PolarAlignment.Test/External': checked out 'ee668b326e9106d55c12cae035bdc9db879d7b12'
[INFO] Updating submodule NINA.Plugins/joko.nina.plugins
先にビルド、インストールしたopencv4が認識され、PINSのビルドが進みました。
Naval Observatory Vector Astrometry Software (NOVAS)
海軍天文台ベクトル天体測位ソフトウェア(NOVAS)
バージョン 3.1 Fortran、C、および Python 版NOVAS は現在、Astrophysics Source Code Library で入手可能です。NOVASは、位置天文学において一般的に必要とされる様々な量を計算するためのルーチンを統合したパッケージです。このパッケージを使用すると、1回または2回のサブルーチンまたは関数の呼び出しで、あらゆる恒星や惑星の瞬間座標を、様々な座標系で算出することができます。
https://aa.usno.navy.mil/software/novas_info
NOVASビルドで止まりました。
du -sh ~/pins/NOVAS31/* 2>/dev/null | sort -h
405G /home/USERNAME/pins/NOVAS31/cio_ra.bin
cio_ra.binが、405GBは異常に大きなファイルになっています。
異常なcio_ra.binは削除します。
rm -f ~/pins/NOVAS31/cio_ra.bin
df -h ~
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 457G 29G 405G 7% /
NOVASの生成処理がなぜ異常に大きくなったのか、見ていきます。
cd ~/pins/NOVAS31
sed -n '35,50p' Makefile
# Build the CIO file utility and run it to generate cio_ra.bin
cio_ra.bin: $(SRCDIR)/cio_file.c $(SRCDIR)/CIO_RA.TXT | $(BUILDDIR)
@echo "Building cio_file utility..."
$(CC) $(CFLAGS) -o $(BUILDDIR)/cio_file $(SRCDIR)/cio_file.c $(LDLIBS)
@echo "Generating cio_ra.bin from CIO_RA.TXT..."
@if [ -f cio_ra.bin ]; then rm cio_ra.bin; fi
@cp $(SRCDIR)/CIO_RA.TXT .
@./$(BUILDDIR)/cio_file > /dev/null
@rm -f CIO_RA.TXT
@if [ -f cio_ra.bin ]; then \
echo "Created cio_ra.bin"; \
else \
echo "ERROR: Failed to create cio_ra.bin"; \
exit 1; \
fi
CIO_RA.TXT
↓
cio_file
↓
cio_ra.bin
CIO_RA.TXT のサイズを確認します。そのサイズは、132バイト。
cd ~/pins/NOVAS31
ls -lh CIO_RA.TXT
-rw-rw-r-- 1 USERNAME 132 Sep 7 19:06 CIO_RA.TXT
ls -lh NOVAS31/CIO_RA.TXT
-rw-rw-r-- 1 USERNAME 132 Sep 7 09:07 NOVAS31/CIO_RA.TXT
CIO_RA.TXT が 132 bytes
User’s Guide to NOVAS Version C3.1
Naval Observatory Vector Astrometry Software
https://aa.usno.navy.mil/downloads/novas/NOVAS_C3.1_Guide.pdf?utm_source=chatgpt.com
このガイドによると、CIO_RA.TXT は、
cio_ra * basic Computes true right ascension of the CIO, given TT Julian date
1700~2300年のデータを含み、約7.5 MB あります。そして cio_file が生成する cio_ra.bin は 約2.9 MB になるのが正常らしいです。
こちらのPCにあるデータ量と明らかに違う。。。
CIO_RA.TXTを見てみます。
cd ~/pins/NOVAS31
cat -A CIO_RA.TXT
version https://git-lfs.github.com/spec/v1$
oid sha256:94af0088304f458dbb486b1c072c67bdc506edd8da1d3db722e4ae1dcc4b202d$
size 7671616$
これは NOVASのCIOデータではないようです。
本来のデータ量は、size 7671616、約7MB。
Gitで大きなファイルを扱うための仕組みらしい。ポインタみたいな物かな。。。
LFS 、Git Large File Storage(Git LFS)を見てみます。
git lfs pull を使い、
Git LFSの「ポインタファイル」を見て、対応する本物の大きなファイルをダウンロードし、作業ディレクトリに展開するさせます。
次で、実体を取得できる。
cd ~/pins ###Git LFSはGitリポジトリ単位で動作する
git lfs pull
ects: 100% (2/2), 8.2 MB | 1.7 MB/s
データが取得されたようです。
CIO_RA.TXTを確認します。
wc -c ~/pins/NOVAS31/CIO_RA.TXT
132 /home/USERNAME/pins/NOVAS31/CIO_RA.TXT
少ない。こちらは取得されていないようです。
cd ~/pins
git lfs status
On branch develop
Objects to be pushed to origin/develop:
Objects to be committed:
Objects not staged for commit:
NINA.Plugins/LiveStack (?: <missing> -> File: deleted)
NINA.Plugins/NINA.Joko.Plugin.TenMicron (?: <missing> -> File: deleted)
NINA.Plugins/PolarAlignment (?: <missing> -> File: deleted)
NINA.Plugins/Touch-N-Stars (?: <missing> -> File: deleted)
NINA.Plugins/joko.nina.plugins (?: <missing> -> File: deleted)
NINA.Plugins/nina.plugin.orbuculum (?: <missing> -> File: deleted)
NINA.Plugins/nina.plugin.phd2tools (?: <missing> -> File: deleted)
NINA.Plugins/ninaAPI (?: <missing> -> File: deleted)
NINA.Plugins/pins.plugin (?: <missing> -> File: deleted)
NINA/External (?: <missing> -> ?: <missing>)
build-and-install-pins-x64.sh (Git: 8f458de -> File: b52399e)
git lfs ls-files
4338325ad1 * NINA.Test/Autofocus/TestImage_Jelly.xisf
94af008830 * NOVAS31/NOVAS31/CIO_RA.TXT
94af008830 * NOVAS31/NOVAS31/CIO_RA.TXT
NOVAS31/NOVAS31/CIO_RA.TXT なのでディレクトリが一層下だ。
cd ~/pins/NOVAS31
wc -c NOVAS31/CIO_RA.TXT
7671616 NOVAS31/CIO_RA.TXT
以前のビルド生成物を削除します
make clean
rm -rf build libnovas_c.so cio_ra.bin
再ビルドします。
make
log後半
gcc -fPIC -O2 -Wall -std=c99 -c -o build/solsys1.o NOVAS31/solsys1.c
gcc -fPIC -O2 -Wall -std=c99 -c -fPIC -o build/solsys1.pic.o NOVAS31/solsys1.c
gcc -shared -o libnovas_c.so build/cio_file.pic.o build/eph_manager.pic.o build/novas.pic.o build/novascon.pic.o build/nutation.pic.o build/readeph0.pic.o build/solsys1.pic.o -lm
Building cio_file utility...
gcc -fPIC -O2 -Wall -std=c99 -o build/cio_file NOVAS31/cio_file.c -lm
NOVAS31/cio_file.c: In function ‘main’:
NOVAS31/cio_file.c:74:4: warning: ignoring return value of ‘fgets’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
74 | fgets (identifier, sizeof(identifier), in_file);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
NOVAS31/cio_file.c:88:7: warning: ignoring return value of ‘fscanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
88 | fscanf (in_file, " %lf %lf ", &jd_tdb, &ra_cio);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
NOVAS31/cio_file.c:159:4: warning: ignoring return value of ‘fread’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
159 | fread (&jd_beg, double_size, (size_t) 1, out_file);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
NOVAS31/cio_file.c:160:4: warning: ignoring return value of ‘fread’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
160 | fread (&jd_end, double_size, (size_t) 1, out_file);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
NOVAS31/cio_file.c:161:4: warning: ignoring return value of ‘fread’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
161 | fread (&t_int, double_size, (size_t) 1, out_file);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
NOVAS31/cio_file.c:162:4: warning: ignoring return value of ‘fread’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
162 | fread (&n_recs, long_size, (size_t) 1, out_file);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
NOVAS31/cio_file.c:164:4: warning: ignoring return value of ‘fread’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
164 | fread (&jd_1, double_size, (size_t) 1, out_file);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
NOVAS31/cio_file.c:165:4: warning: ignoring return value of ‘fread’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
165 | fread (&ra_1, double_size, (size_t) 1, out_file);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
NOVAS31/cio_file.c:167:4: warning: ignoring return value of ‘fread’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
167 | fread (&jd_n, double_size, (size_t) 1, out_file);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
NOVAS31/cio_file.c:168:4: warning: ignoring return value of ‘fread’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
168 | fread (&ra_n, double_size, (size_t) 1, out_file);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Generating cio_ra.bin from CIO_RA.TXT...
Created cio_ra.bin
Built libnovas_c.so
rm build/novas.o build/readeph0.o build/solsys1.o build/novascon.o build/cio_file.o build/nutation.o build/eph_manager.o
ls -lh ~/pins/NOVAS31/cio_ra.bin
-rw-rw-r-- 1 USERNAME USERNAME 2.8M Sep 8 12:42 /home/USERNAME/pins/NOVAS31/cio_ra.bin
ls -lh ~/pins/NOVAS31/libnovas_c.so
-rwxrwxr-x 1 USERNAME USERNAME 201K Sep 8 12:42 /home/USERNAME/pins/NOVAS31/libnovas_c.so
Git LFSで管理されている CIO_RA.TXT の実体が取得されておらず、132バイトのポインタファイルになっていたことが、解決しました。
ここまででの、git状態を見ます。
cd ~/pins
git status --short
M NINA.Plugins/LiveStack
M NINA.Plugins/NINA.Joko.Plugin.TenMicron
M NINA.Plugins/PolarAlignment
M NINA.Plugins/Touch-N-Stars
M NINA.Plugins/joko.nina.plugins
M NINA.Plugins/nina.plugin.orbuculum
M NINA.Plugins/nina.plugin.phd2tools
M NINA.Plugins/ninaAPI
M NINA.Plugins/pins.plugin
m NINA/External
M build-and-install-pins-x64.sh
?? NOVAS31/build/
?? NOVAS31/cio_ra.bin
?? NOVAS31/libnovas_c.so
?? artifacts/
?? build-and-install-pins-x64.sh.org
git lfs status
On branch develop
Objects to be pushed to origin/develop:
Objects to be committed:
Objects not staged for commit:
NINA.Plugins/LiveStack (?: <missing> -> File: deleted)
NINA.Plugins/NINA.Joko.Plugin.TenMicron (?: <missing> -> File: deleted)
NINA.Plugins/PolarAlignment (?: <missing> -> File: deleted)
NINA.Plugins/Touch-N-Stars (?: <missing> -> File: deleted)
NINA.Plugins/joko.nina.plugins (?: <missing> -> File: deleted)
NINA.Plugins/nina.plugin.orbuculum (?: <missing> -> File: deleted)
NINA.Plugins/nina.plugin.phd2tools (?: <missing> -> File: deleted)
NINA.Plugins/ninaAPI (?: <missing> -> File: deleted)
NINA.Plugins/pins.plugin (?: <missing> -> File: deleted)
NINA/External (?: <missing> -> ?: <missing>)
build-and-install-pins-x64.sh (Git: 8f458de -> File: b52399e)
LFS実体が取得済み / 再ビルドは行えました。そして次のエラーが。。。
SDK version: 10.0.400 をインストール
Requested SDK version: 10.0.400
log
Installing libsofa_c.so to ../../../NINA/External/linux-x64/SOFA/
Installed: ../../../NINA/External/linux-x64/SOFA//libsofa_c.so
*** Now type 'make test' to install the library and run tests ***
[INFO] External bundle populated from repository clone into NINA/External
[INFO] Staging OpenCvSharp Linux runtime from NuGet
The command could not be loaded, possibly because:
* You intended to execute a .NET application:
The application 'nuget' does not exist or is not a managed .dll or .exe.
* You intended to execute a .NET SDK command:
A compatible .NET SDK was not found.
Requested SDK version: 10.0.400
global.json file: /home/USERNAME/pins/global.json
Installed SDKs:
Install the [10.0.400] .NET SDK or update [/home/USERNAME/pins/global.json] to match an installed SDK.
Learn about SDK resolution:
https://aka.ms/dotnet/sdk-not-found
build-and-install-pins-x64.shにある、”dotnet_10″をインストールしてる部分を確認します。
grep -n -i -E 'dotnet|sdk|10\.0' ~/pins/build-and-install-pins-x64.sh
68:PLUGIN_TARGET_FRAMEWORK="${PLUGIN_TARGET_FRAMEWORK:-net10.0}"
227: "wandereretasdk|https://github.com/nitr57/WandererETASDK|"
796: nuget_global_packages="$(dotnet nuget locals global-packages --list | sed -n 's/^global-packages: //p' | head -n 1)"
804: dotnet restore NINA/NINA.csproj -r "$TARGET_RUNTIME"
817:install_dotnet_10() {
818: local dotnet_ok="false"
820: if command -v dotnet >/dev/null 2>&1; then
821: if dotnet --list-sdks | grep -q '^10\.'; then
822: dotnet_ok="true"
826: if [[ "$dotnet_ok" == "true" ]]; then
827: log ".NET 10 SDK already available"
831: log "Installing .NET 10 SDK"
844: run_as_root apt-get install -y dotnet-sdk-10.0
875: dotnet --info
817:install_dotnet_10() {
818: local dotnet_ok=”false”
820: if command -v dotnet >/dev/null 2>&1; then
821: if dotnet –list-sdks | grep -q ‘^10.’; then
822: dotnet_ok=”true”
826: if [[ “$dotnet_ok” == “true” ]]; then
.NET 10.x SDKが何か1つ入っていれば”OK”良、入っていないならば、
apt-get install -y dotnet-sdk-10.0
これでUbuntu 26.04が用意(リポジトリ)しているSDKがインストールされました。
でも、~/pins/global.jsonは、”10.0.400″を要求します。
cat global.json
{
"sdk": {
"version": "10.0.400",
"rollForward": "latestPatch"
}
}
SDK 10.0.400インストール スクリプトを使用
インストール スクリプトを使用するか、バイナリを抽出して linux に.NETをインストールする
https://learn.microsoft.com/ja-jp/dotnet/core/install/linux-scripted-manual
https://learn.microsoft.com/en-us/dotnet/core/install/linux-scripted-manual?utm_source=chatgpt.com
公式のインストールスクリプトを取得します。
cd /tmp
wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh
chmod +x ./dotnet-install.sh
dotnet-install スクリプト リファレンス
https://learn.microsoft.com/ja-jp/dotnet/core/tools/dotnet-install-script
バージョンとインストール先の指定は、こちらに案内されています。
10.0.400を指定します。
/tmp/dotnet-install.sh --version 10.0.400 --install-dir "$HOME/.dotnet"
/tmp/dotnet-install.sh --version 10.0.400 --install-dir "$HOME/.dotnet"
dotnet-install: Attempting to download using primary link https://builds.dotnet.microsoft.com/dotnet/Sdk/10.0.400/dotnet-sdk-10.0.400-linux-x64.tar.gz
dotnet-install: Remote file https://builds.dotnet.microsoft.com/dotnet/Sdk/10.0.400/dotnet-sdk-10.0.400-linux-x64.tar.gz size is 240133692 bytes.
dotnet-install: Extracting archive from https://builds.dotnet.microsoft.com/dotnet/Sdk/10.0.400/dotnet-sdk-10.0.400-linux-x64.tar.gz
dotnet-install: Downloaded file size is 240133692 bytes.
dotnet-install: The remote and local file sizes are equal.
dotnet-install: Installed version is 10.0.400
dotnet-install: Adding to current process PATH: `/home/USERNAME/.dotnet`. Note: This change will be visible only when sourcing script.
dotnet-install: Note that the script does not resolve dependencies during installation.
dotnet-install: To check the list of dependencies, go to https://learn.microsoft.com/dotnet/core/install, select your operating system and check the "Dependencies" section.
dotnet-install: Installation finished successfully.
インストール後に次を行います。
$HOME/.dotnet/dotnet --list-sdks
10.0.400 [/home/USERNAME/.dotnet/sdk/10.0.400]
パスを通します。
PINSスクリプト内の dotnet コマンドにも10.0.400を使わせるため、シェルでPATHを変更します。
export PATH="$HOME/.dotnet:$PATH"
export PATH="$HOME/.dotnet:$PATH"
which dotnet
/home/USERNAME/.dotnet/dotnet
dotnet --version
10.0.400
PINSビルド再開
上記パスを通したシェルで行います。
cd ~/pins
./build-and-install-pins-x64.sh
[INFO] OpenCV version 4.11.0 already available
[INFO] LibXISF API is compatible: /usr/include/libxisf.h
[INFO] .NET 10 SDK already available
[INFO] Node.js 22 already available
[INFO] Toolchain versions
.NET SDK:
Version: 10.0.400
Commit: 14fbf8d527
Workload version: 10.0.400-manifests.330ea142
MSBuild version: 18.9.6+14fbf8d52
.NET SDKs installed:
10.0.400 [/home/USERNAME/.dotnet/sdk]
.NET runtimes installed:
Microsoft.AspNetCore.App 10.0.11 [/home/USERNAME/.dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 10.0.11 [/home/USERNAME/.dotnet/shared/Microsoft.NETCore.App]
[WARN] Remote update failed for Touch-N-Stars; falling back to pinned commit
[INFO] Updating submodule NINA.Plugins/ninaAPI
[INFO] Updating submodule NINA.Plugins/Touch-N-Stars
fatal: Unable to find refs/remotes/origin/main revision in submodule path 'NINA.Plugins/Touch-N-Stars'
[WARN] Remote update failed for NINA.Plugins/Touch-N-Stars; falling back to pinned commit
Submodule path 'NINA.Plugins/Touch-N-Stars': checked out '23f08d5fc14421e9f42cf2d9e27981e49fc4bb8e'
[INFO] Updating submodule NINA.Plugins/LiveStack
Submodule 'nina.plugin.livestack.benchmark/External' (https://github.com/isbeorn/nina.external.git) registered for path 'NINA.Plugins/LiveStack/nina.plugin.livestack.benchmark/External'
Submodule 'nina.plugin.livestack.test/External' (https://github.com/isbeorn/nina.external.git) registered for path 'NINA.Plugins/LiveStack/nina.plugin.livestack.test/External'
Cloning into '/home/USERNAME/pins/NINA.Plugins/LiveStack/nina.plugin.livestack.benchmark/External'...
Cloning into '/home/USERNAME/pins/NINA.Plugins/LiveStack/nina.plugin.livestack.test/External'...
Submodule path 'NINA.Plugins/LiveStack/nina.plugin.livestack.benchmark/External': checked out 'de19c6cf64128e93ed78944ddc057ba65fb12c49'
Submodule path 'NINA.Plugins/LiveStack/nina.plugin.livestack.test/External': checked out 'de19c6cf64128e93ed78944ddc057ba65fb12c49'
[INFO] Updating submodule NINA.Plugins/PolarAlignment
Submodule 'NINA.Plugins.PolarAlignment.Test/External' (https://bitbucket.org/Isbeorn/nina.external.git) registered for path 'NINA.Plugins/PolarAlignment/NINA.Plugins.PolarAlignment.Test/External'
Cloning into '/home/USERNAME/pins/NINA.Plugins/PolarAlignment/NINA.Plugins.PolarAlignment.Test/External'...
.NET SDKs installed:
10.0.400 [/home/USERNAME/.dotnet/sdk]
ここで認識されています。
pinsdaemon エラー
pinsdaemon は、PINS本体とは別のバックグラウンドサービス(daemon)です。
ログを見る限り、主に PINSのシステム管理・アップデート関連を担当するコンポーネントのようです。
以下のパッケージは「削除」されます:
pinsdaemon
アップグレード: 0 個、新規インストール: 0 個、削除: 1 個、保留: 21 個。
1 個のパッケージが完全にインストールまたは削除されていません。
この操作後に追加で 0 B のディスク容量が消費されます。
(データベースを読み込んでいます ... 現在 229731 個のファイルとディレクトリがインストールされています。)
pinsdaemon (1.0.6-1788846944) を削除しています ...
dpkg: 警告: pinsdaemon の削除中、ディレクトリ '/usr/local/bin' が空でないため削除できませんでした
(データベースを読み込んでいます ... 現在 229706 個のファイルとディレクトリがインストールされています。)
.../pins_3.3.0.1057-nightly+1788846944_amd64_08092026.deb を展開する準備をしています ...
pins (3.3.0.1057-nightly+1788846944) で (3.3.0.1057-nightly+1788846944 に) 上書き展開しています ...
以前に未選択のパッケージ pinsdaemon を選択しています。
.../pinsdaemon_1.0.6-1788846944_amd64.deb を展開する準備をしています ...
pinsdaemon (1.0.6-1788846944) を展開しています...
.../pins-wandereretasdk_3.3.0.1057-nightly+1788846944_amd64_08092026.deb を展開する準備をしています ...
pins-wandereretasdk (3.3.0.1057-nightly+1788846944) で (3.3.0.1057-nightly+1788846944 に) 上書き展開しています ...
.../pins-plugin-joko_4.0.0.17+1788846944_amd64_08092026.deb を展開する準備をしています ...
pins-plugin-joko (4.0.0.17+1788846944) で (4.0.0.17+1788846944 に) 上書き展開しています ...
.../pins-plugin-tenmicron_3.0.0.13+1788846944_amd64_08092026.deb を展開する準備をしています ...
pins-plugin-tenmicron (3.0.0.13+1788846944) で (3.0.0.13+1788846944 に) 上書き展開しています ...
.../pins-plugin-livestack_1.0.1.2+1788846944_amd64_08092026.deb を展開する準備をしています ...
pins-plugin-livestack (1.0.1.2+1788846944) で (1.0.1.2+1788846944 に) 上書き展開しています ...
.../pins-plugin-ninaapi_2.2.15.2+1788846944_amd64_08092026.deb を展開する準備をしています ...
pins-plugin-ninaapi (2.2.15.2+1788846944) で (2.2.15.2+1788846944 に) 上書き展開しています ...
.../pins-plugin-orbuculum_2.0.0.2+1788846944_amd64_08092026.deb を展開する準備をしています ...
pins-plugin-orbuculum (2.0.0.2+1788846944) で (2.0.0.2+1788846944 に) 上書き展開しています ...
.../pins-plugin-phd2tools_1.0.5.3+1788846944_amd64_08092026.deb を展開する準備をしています ...
pins-plugin-phd2tools (1.0.5.3+1788846944) で (1.0.5.3+1788846944 に) 上書き展開しています ...
.../pins-plugin-polaralignment_2.2.3.4+1788846944_amd64_08092026.deb を展開する準備をしています ...
pins-plugin-polaralignment (2.2.3.4+1788846944) で (2.2.3.4+1788846944 に) 上書き展開しています ...
.../pins-plugin-touch-n-stars_1.4.0.1+1788846944_amd64_08092026.deb を展開する準備をしています ...
pins-plugin-touch-n-stars (1.4.0.1+1788846944) で (1.4.0.1+1788846944 に) 上書き展開しています ...
.../pins-plugin-pins_1.0.3.0+1788846944_amd64_08092026.deb を展開する準備をしています ...
pins-plugin-pins (1.0.3.0+1788846944) で (1.0.3.0+1788846944 に) 上書き展開しています ...
.../indi-bin_2.1.9+1788846944_amd64_08092026.deb を展開する準備をしています ...
indi-bin (2.1.9+1788846944) で (2.1.9+1788846944 に) 上書き展開しています ...
.../libindi1_2.1.9+1788846944_amd64_08092026.deb を展開する準備をしています ...
libindi1 (2.1.9+1788846944) で (2.1.9+1788846944 に) 上書き展開しています ...
.../libindi-data_2.1.9+1788846944_amd64_08092026.deb を展開する準備をしています ...
libindi-data (2.1.9+1788846944) で (2.1.9+1788846944 に) 上書き展開しています ...
.../libindi-dev_2.1.9+1788846944_amd64_08092026.deb を展開する準備をしています ...
libindi-dev (2.1.9+1788846944) で (2.1.9+1788846944 に) 上書き展開しています ...
.../phd2_2.6.14-1788846974_amd64.deb を展開する準備をしています ...
phd2 (2.6.14-1788846974) で (2.6.14-1788846974 に) 上書き展開しています ...
dpkg: 依存関係の問題により pinsdaemon の設定ができません:
pinsdaemon は以下に依存 (depends) します: python3-venv ...しかし:
パッケージ python3-venv はまだインストールされていません。
pinsdaemon は以下に依存 (depends) します: wireless-tools ...しかし:
パッケージ wireless-tools はまだインストールされていません。
pinsdaemon は以下に依存 (depends) します: raspi-config ...しかし:
パッケージ raspi-config はまだインストールされていません。
dpkg: パッケージ pinsdaemon の処理中にエラーが発生しました (--install):
依存関係の問題 - 設定を見送ります
pins-wandereretasdk (3.3.0.1057-nightly+1788846944) を設定しています ...
pins-plugin-joko (4.0.0.17+1788846944) を設定しています ...
pins-plugin-tenmicron (3.0.0.13+1788846944) を設定しています ...
pins-plugin-livestack (1.0.1.2+1788846944) を設定しています ...
pins-plugin-ninaapi (2.2.15.2+1788846944) を設定しています ...
pins-plugin-orbuculum (2.0.0.2+1788846944) を設定しています ...
pins-plugin-phd2tools (1.0.5.3+1788846944) を設定しています ...
pins-plugin-polaralignment (2.2.3.4+1788846944) を設定しています ...
pins-plugin-touch-n-stars (1.4.0.1+1788846944) を設定しています ...
pins-plugin-pins (1.0.3.0+1788846944) を設定しています ...
libindi1 (2.1.9+1788846944) を設定しています ...
libindi-data (2.1.9+1788846944) を設定しています ...
libindi-dev (2.1.9+1788846944) を設定しています ...
phd2 (2.6.14-1788846974) を設定しています ...
indi-bin (2.1.9+1788846944) を設定しています ...
libc-bin (2.43-2ubuntu2.3) のトリガを処理しています ...
gnome-menus (3.38.1-1ubuntu1) のトリガを処理しています ...
desktop-file-utils (0.28-1build1) のトリガを処理しています ...
処理中にエラーが発生しました:
pinsdaemon
pinsdaemon は以下に依存:
python3-venv
wireless-tools
raspi-config
特に raspi-config が依存に入っているため、Raspberry Pi環境を想定した機能を含んでいることが分かります。
次のパッケージは入っています。
pins
pins-wandereretasdk
pins-plugin-joko
pins-plugin-tenmicron
pins-plugin-livestack
pins-plugin-ninaapi
pins-plugin-orbuculum
pins-plugin-phd2tools
pins-plugin-polaralignment
pins-plugin-touch-n-stars
pins-plugin-pins
indi-bin
libindi1
libindi-data
libindi-dev
phd2
build-and-install-pins-x64.sh の pinsdaemon を作っている箇所を見てみる。
grep -n -i -C 5 'pinsdaemon' ~/pins/build-and-install-pins-x64.sh
221- "orbuculum|https://github.com/nitr57/nina.plugin.orbuculum|"
222- "polaralignment|https://github.com/nitr57/nina.plugin.polaralignment|"
223- "livestack|https://github.com/nitr57/nina.plugin.livestack|"
224- "tenmicron|https://github.com/nitr57/NINA.Joko.Plugin.TenMicron|"
225- "pins-plugin|https://github.com/nitr57/pins.plugin|"
226: "pinsdaemon|https://github.com/Touch-N-Stars/pinsdaemon|"
227- "wandereretasdk|https://github.com/nitr57/WandererETASDK|"
228- "touch-frontend|https://github.com/Touch-N-Stars/Touch-N-Stars|develop"
229- )
230-
231- local item
--
1146- ) > "$CORE_EXCLUDES_FILE"
1147-
1148- log "Built core package: $deb_path"
1149-}
1150-
1151:build_pinsdaemon_package() {
1152: log "Building pinsdaemon package"
1153-
1154: rm -rf pinsdaemon
1155: git clone https://github.com/Touch-N-Stars/pinsdaemon pinsdaemon
1156-
1157: pushd pinsdaemon >/dev/null
1158: mkdir -p build/opt/pinsdaemon
1159- mkdir -p build/usr/local/bin
1160- mkdir -p build/etc/systemd/system
1161- mkdir -p build/etc/sudoers.d
1162- mkdir -p build/home/$TARGET_USER/pins-scripts
1163- mkdir -p build/lib/udev/rules.d
1164- mkdir -p build/DEBIAN
1165-
1166: cp -r app build/opt/pinsdaemon/
1167: cp requirements.txt build/opt/pinsdaemon/
1168: cp README.md build/opt/pinsdaemon/
1169-
1170- cp scripts/system-upgrade.sh build/usr/local/bin/
1171- cp scripts/manage-samba.sh build/usr/local/bin/
1172- cp scripts/wifi-connect.sh build/usr/local/bin/
1173- cp scripts/wifi-automanage.py build/usr/local/bin/
--
1186- chmod 755 build/DEBIAN/postinst
1187- chmod 755 build/DEBIAN/prerm
1188-
1189- local base_version
1190- base_version="$(grep '^Version:' packaging/DEBIAN/control | awk '{print $2}')"
1191: [[ -n "$base_version" ]] || fail "Unable to parse pinsdaemon base version"
1192-
1193- local full_version="${base_version}-${BUILD_NUMBER}"
1194- sed -i -E "s/^Version:.*/Version: ${full_version}/" build/DEBIAN/control
1195- sed -i -E "s/^Architecture:.*/Architecture: ${DEB_ARCH}/" build/DEBIAN/control
1196-
1197: local deb_path="../artifacts/pinsdaemon_${full_version}_${DEB_ARCH}.deb"
1198- dpkg-deb --root-owner-group --build build "$deb_path"
1199- sha256sum "$deb_path" > "$deb_path.sha256"
1200- record_built_deb "$deb_path"
1201-
1202- popd >/dev/null
1203-
1204: log "Built pinsdaemon package"
1205-}
1206-
1207-build_wandereretasdk_package() {
1208- log "Building WandererETASDK package"
1209-
--
2132- populate_external_bundle
2133- stage_opencvsharp_runtime_from_nuget
2134-
2135- determine_versions
2136- build_core_pins_package
2137: build_pinsdaemon_package
2138- build_wandereretasdk_package
2139- build_plugins
2140- build_indi_debian_packages
2141- build_phd2_package
2142- if is_truthy "$CREATE_FIRMWARE_BUNDLE"; then
“pinsdaemon|https://github.com/Touch-N-Stars/pinsdaemon|”
ここでGitHubから取得しています。
build_pinsdaemon_package() {
で .deb を作っています。
pinsdaemon の DEBIAN/control を見て、どの依存関係を要求しているのかを確認します。
grep -n -E '^(Package|Version|Architecture|Depends|Recommends):' \
~/pins/pinsdaemon/packaging/DEBIAN/control
1:Package: pinsdaemon
2:Version: 1.0.6
5:Architecture: arm64
7:Depends: python3, python3-venv, sudo, bash, util-linux, network-manager, wireless-tools, unzip, usbutils, rfkill, iw, iputils-ping, avahi-daemon, raspi-config, locales, keyboard-configuration
raspi-config はRaspberry Pi用の設定ツールで、公式リポジトリの実装にもPiのアーキテクチャ・ボード判定が入っています。
公式リポジトリ
https://github.com/RPi-Distro/raspi-config/blob/trixie/raspi-config?utm_source=chatgpt.com
Raspberry Pi固有の機能は不要なので、今回はpinsdaemonの機能は除外します。
build_pinsdaemon_package の呼び出しをスキップさせる
pinsdaemonの機能は除外します。
build_pinsdaemon_package の呼び出しだけを、x86_64ではスキップさせます。
determine_versions
build_core_pins_package
# pinsdaemon is Raspberry Pi/ARM64-specific; skip on x86_64
if [[ "$DEB_ARCH" == "arm64" ]]; then
build_pinsdaemon_package
fi
build_wandereretasdk_package
build_plugins
build_indi_debian_packages
build_phd2_package
if is_truthy "$CREATE_FIRMWARE_BUNDLE"; then
create_firmware_bundle
else
log "Skipping firmware bundle zip creation"
fi
install_built_packages
setup_runtime_prerequisites
save_successful_build_state
print_summary
}
nano build-and-install-pins-x64.sh
変更前:
build_core_pins_package
build_pinsdaemon_package
build_wandereretasdk_package
変更後:
build_core_pins_package
# pinsdaemon is Raspberry Pi/ARM64-specific; skip on x86_64
if [[ "$DEB_ARCH" == "arm64" ]]; then
build_pinsdaemon_package
fi
build_wandereretasdk_package
スクリプトが「作成済み .deb を全部インストール」する仕組みなので、
以前作った、artifacts/pinsdaemon_1.0.6-….debパッケージをインストールするかもしれません。
そこで、今回生成された pinsdaemon のdebだけを削除します。
rm -f artifacts/pinsdaemon_*.deb
rm -f artifacts/pinsdaemon_*.deb.sha256
ビルドを再実行
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了
これらを直すためには 'apt --fix-broken install' を実行する必要があるかもしれません。
以下のパッケージには満たせない依存関係があります:
pinsdaemon : 依存: python3-venv しかし、インストールされようとしていません
依存: wireless-tools しかし、インストールすることができません
依存: raspi-config しかし、インストールされようとしていません
E: 未解決の依存関係です。'apt --fix-broken install' を実行してみてください (または解法を明示してください)。
dpkg -l pinsdaemon
+-- Desired=Unknown/Install/Remove/Purge/Hold
|+- Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
||+ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||| 名前 バージョン アーキテクチ 説明
+++-==============-================-============-=================================
iU pinsdaemon 1.0.6-1788846944 amd64 System Upgrade API Daemon
pinsdaemon を使わないので、削除します。pinsdaemon を先に除去します。
sudo dpkg --remove --force-remove-reinstreq pinsdaemon
sudo dpkg --configure -a
sudo apt --fix-broken install
sudo dpkg –configure -a :システム内で未完了となっている全ての設定を自動で片付ける。ソフトウェアのアップデート中にエラーが起きたときの修復手順です。
dpkg -l pinsdaemon
dpkg-query: pinsdaemon に一致するパッケージが見つかりません
./build-and-install-pins-x64.sh を行います。
PHD2エラー
phd2をビルド時に、libindiが見つからないと言ってます。
-- Using system's libindi
-- Checking for module 'libindi'
-- Package 'libindi' not found
CMake Error at cmake_modules/FindINDI.cmake:136 (message):
INDI not found. Please install INDI and try again.
Call Stack (most recent call first):
thirdparty/thirdparty.cmake:487 (find_package)
CMakeLists.txt:125 (include)
==> CMakeCache.txt <==
# This is the CMakeCache file.
# For build in directory: /home/USERNAME/pins-build-src/artifacts/src/phd2/obj-x86_64-linux-gnu
# It was generated by CMake: /usr/bin/cmake
# You can edit this file to change values found and used by cmake.
# If you do not want to change any of the values, simply exit the editor.
# If you do want to change a value, simply edit, save, and exit the editor.
# The syntax for the file is as follows:
dpkg -l | grep -E 'libindi|indi-bin'
ii indi-bin 2.1.9+1788846944 amd64 INDI core library, server, and drivers built from upstream v2.1.9
ii libindi-data 2.1.9+1788846944 amd64 INDI shared data files built from upstream v2.1.9
ii libindi-dev 2.1.9 all Dummy libindi-dev package (local build)
ii libindi1 2.1.9+1788846944 amd64 INDI runtime shared libraries built from upstream v2.1.9
ii libindi-dev 2.1.9 all Dummy libindi-dev package (local build)
ダミーバージョンになってます。(なんでやねん)
なぜダミーを作るのか、見てみます。
grep -Rni "libindi-dev" ~/pins/build-and-install-pins-x64.sh
1698: echo "Package: libindi-dev"
1705: echo "Replaces: libindi-dev (<< $INDI_VERSION)"
1717: local dev_output="artifacts/libindi-dev_${package_version}_${DEB_ARCH}_${RELEASE_DATE}.deb"
1814: local equivs_dir="/tmp/libindi-dev-equivs"
1822:Package: libindi-dev
1826:Description: Dummy libindi-dev package (local build)
1833: run_as_root dpkg -i "$equivs_dir/libindi-dev_${PHD2_INDI_VERSION}_all.deb"
grep -Rni "Dummy libindi-dev" ~/pins ~/pins-build-src 2>/dev/null
/home/USERNAME/pins/artifacts/src/phd2/.github/workflows/build-arm64-deb.yml:84: Description: Dummy libindi-dev package (CI)
/home/USERNAME/pins/build-and-install-pins-x64.sh.bak:1826:Description: Dummy libindi-dev package (local build)
/home/USERNAME/pins/build-and-install-pins-x64.sh.org:1821:Description: Dummy libindi-dev package (local build)
/home/USERNAME/pins/build-and-install-pins-x64.sh:1826:Description: Dummy libindi-dev package (local build)
/home/USERNAME/pins-build-src/artifacts/src/phd2/.github/workflows/build-arm64-deb.yml:84: Description: Dummy libindi-dev package (CI)
/home/USERNAME/pins-build-src/build-and-install-pins-x64.sh:1821:Description: Dummy libindi-dev package (local build)
1826行目にあります。
PHD2 のビルド
↓
「libindi-dev が必要」と言われる
↓
equivs でダミー libindi-dev を作る
↓
依存関係だけ満たす
しかし、既にスクリプト自身が、
artifacts/libindi-dev_2.1.9+1788846944_amd64.deb
という本物の開発パッケージを生成しています。
ダミーを作る部分を訂正します。
sed -n '1790,1840p' ~/pins/build-and-install-pins-x64.sh
if [ -f /etc/apt/sources.list.d/ubuntu.sources ]; then \
sed -i 's/^Types: deb$/Types: deb deb-src/' /etc/apt/sources.list.d/ubuntu.sources; \
elif [ -f /etc/apt/sources.list.d/debian.sources ]; then \
sed -i 's/^Types: deb$/Types: deb deb-src/' /etc/apt/sources.list.d/debian.sources; \
elif [ -f /etc/apt/sources.list ]; then \
sed -i '/^deb /p; s/^deb /deb-src /' /etc/apt/sources.list; \
fi"
run_as_root apt-get update
local projects_home
projects_home="${HOME}/Projects"
mkdir -p "$projects_home" "$projects_home/build"
local indi_core_src="$projects_home/indi-core"
local indi_core_build="$projects_home/build/indi-core"
rm -rf "$indi_core_src" "$indi_core_build"
git clone --depth 1 --branch "v$PHD2_INDI_VERSION" https://github.com/indilib/indi.git "$indi_core_src"
cmake -S "$indi_core_src" -B "$indi_core_build" \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_BUILD_TYPE=Release
cmake --build "$indi_core_build" --parallel "$(nproc)"
run_as_root cmake --install "$indi_core_build"
run_as_root ldconfig
local equivs_dir="/tmp/libindi-dev-equivs"
rm -rf "$equivs_dir"
mkdir -p "$equivs_dir"
cat > "$equivs_dir/control" <<EOF
Section: misc
Priority: optional
Standards-Version: 4.7.0
Package: libindi-dev
Version: ${PHD2_INDI_VERSION}
Maintainer: Local Builder <builder@local>
Architecture: all
Description: Dummy libindi-dev package (local build)
Dummy package to satisfy Build-Depends when INDI is built from source.
EOF
(
cd "$equivs_dir"
equivs-build control
)
run_as_root dpkg -i "$equivs_dir/libindi-dev_${PHD2_INDI_VERSION}_all.deb"
(
cd "$phd2_src"
run_as_root mk-build-deps --install --remove \
--tool "apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends -y" \
debian/control
)
local equivs_dir="/tmp/libindi-dev-equivs"
rm -rf "$equivs_dir"
mkdir -p "$equivs_dir"
cat > "$equivs_dir/control" <<EOF
Section: misc
Priority: optional
Standards-Version: 4.7.0
Package: libindi-dev
Version: ${PHD2_INDI_VERSION}
Maintainer: Local Builder <builder@local>
Architecture: all
Description: Dummy libindi-dev package (local build)
Dummy package to satisfy Build-Depends when INDI is built from source.
EOF
この部分で、PHD2 のビルド依存を満たすために、わざとダミーの libindi-dev を作っています。
そして、ダミーをインストールしています。
run_as_root dpkg -i "$equivs_dir/libindi-dev_${PHD2_INDI_VERSION}_all.deb"
ダミーではなく、
artifacts/libindi-dev_2.1.9+1788846944_amd64.deb
をインストールするように変更するべきです。
./build-and-install-pins-x64.shを変更します。
変更前:
cmake --build "$indi_core_build" --parallel "$(nproc)"
run_as_root cmake --install "$indi_core_build"
run_as_root ldconfig
local equivs_dir="/tmp/libindi-dev-equivs"
rm -rf "$equivs_dir"
mkdir -p "$equivs_dir"
cat > "$equivs_dir/control" <<EOF
Section: misc
Priority: optional
Standards-Version: 4.7.0
Package: libindi-dev
Version: ${PHD2_INDI_VERSION}
Maintainer: Local Builder <builder@local>
Architecture: all
Description: Dummy libindi-dev package (local build)
Dummy package to satisfy Build-Depends when INDI is built from source.
EOF
(
cd "$equivs_dir"
equivs-build control
)
run_as_root dpkg -i "$equivs_dir/libindi-dev_${PHD2_INDI_VERSION}_all.deb"
(
cd "$phd2_src"
run_as_root mk-build-deps --install --remove \
--tool "apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends -y" \
debian/control
)
変更後:上記ブロック以下に変更します。
cmake --build "$indi_core_build" --parallel "$(nproc)"
run_as_root cmake --install "$indi_core_build"
run_as_root ldconfig
local libindi_dev_deb
libindi_dev_deb="$(find artifacts -maxdepth 1 -type f -name "libindi-dev_*_${DEB_ARCH}_*.deb" | sort -V | tail -1)"
[[ -n "$libindi_dev_deb" ]] || fail "libindi-dev package not found"
run_as_root dpkg -i "$libindi_dev_deb"
(
cd "$phd2_src"
run_as_root mk-build-deps --install --remove \
--tool "apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends -y" \
debian/control
)
PHD2 のビルド部分には、
必要な依存パッケージを揃える処理を加えます。
mk-build-deps
↓
PHD2 の debian/control を読む
↓
必要なビルド依存パッケージを解析
↓
一時的な依存パッケージを生成
↓
apt-get で依存パッケージをインストール
↓
–remove により一時メタパッケージを削除
sudo dpkg --remove libindi-dev
dpkg: 依存関係の問題により、libindi-dev の削除ができません:
phd2-build-deps は以下に依存 (depends) します: libindi-dev (>= 2.0).
dpkg: パッケージ libindi-dev の処理中にエラーが発生しました (--remove):
依存関係の問題 - 削除しません
処理中にエラーが発生しました:
libindi-dev
sudo dpkg --remove phd2-build-deps
sudo dpkg --remove libindi-dev
確認します。
dpkg -l libindi-dev
dpkg-query: libindi-dev に一致するパッケージが見つかりません
./build-and-install-pins-x64.sh再実行
libindi-dev のバージョンが libindi1 と一致しない
以前に未選択のパッケージ libindi-dev を選択しています。
(データベースを読み込んでいます ... 現在 229568 個のファイルとディレクトリがインストールされています。)
.../libindi-dev_2.1.9+1788858200_amd64_08092026.deb を展開する準備をしています ...
libindi-dev (2.1.9+1788858200) を展開しています...
dpkg: 依存関係の問題により libindi-dev の設定ができません:
libindi-dev は以下に依存 (depends) します: libindi1 (= 2.1.9+1788858200) ...しかし:
システム上の libindi1 のバージョンは 2.1.9+1788846944 です。
dpkg: パッケージ libindi-dev の処理中にエラーが発生しました (--install):
依存関係の問題 - 設定を見送ります
処理中にエラーが発生しました:
libindi-dev
libindi-dev のバージョンが libindi1 と一致していません。
build_indi_debian_packages
↓
libindi1 = 2.1.9+1788846944
libindi-dev = 2.1.9+1788858200libindi1 が古い
dpkg -l | grep -E '^ii (libindi1|libindi-dev|indi-bin|libindi-data)'
ii indi-bin 2.1.9+1788846944 amd64 INDI core library, server, and drivers built from upstream v2.1.9
ii libindi-data 2.1.9+1788846944 amd64 INDI shared data files built from upstream v2.1.9
ii libindi1 2.1.9+1788846944 amd64 INDI runtime shared libraries built from upstream v2.1.9
あら、そろってる。。。でも、
libindi-dev 未インストール
今回スクリプトがインストールしようとした libindi-dev は、
2.1.9+1788858200
ls -l artifacts/indi-bin_*.deb
ls -l artifacts/libindi1_*.deb
ls -l artifacts/libindi-data_*.deb
ls -l artifacts/libindi-dev_*.deb
artifacts/indi-bin_2.1.9+1788846944_amd64_08092026.deb
artifacts/libindi1_2.1.9+1788846944_amd64_08092026.deb
artifacts/libindi-data_2.1.9+1788846944_amd64_08092026.deb
artifacts/libindi-dev_2.1.9+1788846944_amd64_08092026.deb
古い libindi-dev が残っていたのではなく、build_phd2_package が別の libindi-dev を拾っています。
dpkg -l libindi-dev
+-- Desired=Unknown/Install/Remove/Purge/Hold
|+- Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
||+ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||| 名前 バージョン アーキテクチ 説明
+++-==============-================-============-======================================================================
iU libindi-dev 2.1.9+1788858200 amd64 INDI development headers and build metadata built from upstream v2.1.9
iU の意味は、
i = インストールする。
U = Unpacked(展開済み)だが、設定(configure)されていない。
古い iU を削除します。
依存関係で phd2-build-deps が残っていると削除できないので、
sudo dpkg --remove phd2-build-deps
sudo dpkg --remove libindi-dev
古い3パッケージを、新しいビルドでまとめて置き換えます。
再実行前にやること:
sudo dpkg --remove phd2-build-deps 2>/dev/null || true
sudo dpkg --remove libindi-dev 2>/dev/null || true
既存の古い INDI パッケージも削除します。
sudo dpkg --remove indi-bin libindi1 libindi-data
削除を確認します。
dpkg -l | grep -E '^ii (indi-bin|libindi1|libindi-data|libindi-dev)'
何も表示がなければ、削除できている。
スクリプトを再実行
./build-and-install-pins-x64.sh
build_phd2_package() を修正
dpkg: 依存関係の問題により libindi-dev の設定ができません:
libindi-dev は以下に依存 (depends) します: libindi1 (= 2.1.9+1788864166) ...しかし:
パッケージ libindi1 はまだインストールされていません。
libindi1を入れてから、libindi-devをインストールするはずが、逆になっています。
build-and-install-pins-x64.shにある1814行付近、 local libindi1_deb
run_as_root dpkg -i “$libindi1_deb”
追加します。
cmake --build "$indi_core_build" --parallel "$(nproc)"
run_as_root cmake --install "$indi_core_build"
run_as_root ldconfig
local libindi1_deb
libindi1_deb="$(find artifacts -maxdepth 1 -type f -name "libindi1_*_${DEB_ARCH}_*.deb" | sort -V | tail -1)"
[[ -n "$libindi1_deb" ]] || fail "libindi1 package not found"
local libindi_dev_deb
libindi_dev_deb="$(find artifacts -maxdepth 1 -type f -name "libindi-dev_*_${DEB_ARCH}_*.deb" | sort -V | tail -1)"
[[ -n "$libindi_dev_deb" ]] || fail "libindi-dev package not found"
run_as_root dpkg -i "$libindi1_deb"
run_as_root dpkg -i "$libindi_dev_deb"
(
cd "$phd2_src"
run_as_root mk-build-deps --install --remove \
--tool "apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends -y" \
debian/control
)
エラー
zip はすでに最新バージョン (3.0-15ubuntu3) です。
zlib1g-dev はすでに最新バージョン (1:1.3.dfsg+really1.3.1-1ubuntu3.1) です。
これらを直すためには 'apt --fix-broken install' を実行する必要があるかもしれません。
以下のパッケージには満たせない依存関係があります:
libindi-dev : 依存: libindi1 (= 2.1.9+1788864166) しかし、インストールすることができません
E: 未解決の依存関係です。'apt --fix-broken install' を実行してみてください (または解法を明示してください)。
grep -n -A20 -B5 'local libindi1_deb' ~/pins/build-and-install-pins-x64.sh
1809- -DCMAKE_BUILD_TYPE=Release
1810- cmake --build "$indi_core_build" --parallel "$(nproc)"
1811- run_as_root cmake --install "$indi_core_build"
1812- run_as_root ldconfig
1813-
1814: local libindi1_deb
1815- libindi1_deb="$(find artifacts -maxdepth 1 -type f -name "libindi1_*_${DEB_ARCH}_*.deb" | sort -V | tail -1)"
1816- [[ -n "$libindi1_deb" ]] || fail "libindi1 package not found"
1817-
1818- local libindi_dev_deb
1819- libindi_dev_deb="$(find artifacts -maxdepth 1 -type f -name "libindi-dev_*_${DEB_ARCH}_*.deb" | sort -V | tail -1)"
1820- [[ -n "$libindi_dev_deb" ]] || fail "libindi-dev package not found"
1821-
1822- run_as_root dpkg -i "$libindi1_deb"
1823- run_as_root dpkg -i "$libindi_dev_deb"
1824-
1825- (
1826- cd "$phd2_src"
1827- run_as_root mk-build-deps --install --remove \
1828- --tool "apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends -y" \
1829- debian/control
1830- )
1831-
1832- ensure_opencv_required_version
1833-
1834- if is_truthy "$PHD2_BUILD_INDI_3RDPARTY"; then
この2行が変更対象です。
libindi1_deb=”$(find artifacts -maxdepth 1 -type f -name “libindi1_*_${DEB_ARCH}_*.deb” | sort -V | tail -1)”
libindi_dev_deb=”$(find artifacts -maxdepth 1 -type f -name “libindi-dev_*_${DEB_ARCH}_*.deb” | sort -V | tail -1)”
*でバージョンを指定しているため、artifacts に古い .deb が残っていると、それを拾う可能性があります。
1814〜1823行を置き換え
変更前:
local libindi1_deb
libindi1_deb="$(find artifacts -maxdepth 1 -type f -name "libindi1_*_${DEB_ARCH}_*.deb" | sort -V | tail -1)"
[[ -n "$libindi1_deb" ]] || fail "libindi1 package not found"
local libindi_dev_deb
libindi_dev_deb="$(find artifacts -maxdepth 1 -type f -name "libindi-dev_*_${DEB_ARCH}_*.deb" | sort -V | tail -1)"
[[ -n "$libindi_dev_deb" ]] || fail "libindi-dev package not found"
run_as_root dpkg -i "$libindi1_deb"
run_as_root dpkg -i "$libindi_dev_deb"
変更後:
local libindi_package_version="${INDI_VERSION}+${BUILD_NUMBER}"
local libindi1_deb
libindi1_deb="$(find artifacts -maxdepth 1 -type f \
-name "libindi1_${libindi_package_version}_${DEB_ARCH}_*.deb" \
| head -1)"
[[ -n "$libindi1_deb" ]] || fail "libindi1 package not found: version=$libindi_package_version"
local libindi_dev_deb
libindi_dev_deb="$(find artifacts -maxdepth 1 -type f \
-name "libindi-dev_${libindi_package_version}_${DEB_ARCH}_*.deb" \
| head -1)"
[[ -n "$libindi_dev_deb" ]] || fail "libindi-dev package not found: version=$libindi_package_version"
run_as_root dpkg -i "$libindi1_deb"
run_as_root dpkg -i "$libindi_dev_deb"
一度クリーンにして再実行します。
sudo dpkg --remove libindi-dev
古いindi debを削除します。
rm -f artifacts/indi-bin_*.deb
rm -f artifacts/libindi1_*.deb
rm -f artifacts/libindi-data_*.deb
rm -f artifacts/libindi-dev_*.deb
削除確認
dpkg -l | grep -E '^ii (libindi1|libindi-dev|indi-bin|libindi-data)'
PINSビルドインストール、再開
./build-and-install-pins-x64.sh
[INFO] PHD2 service auto-start disabled (set PHD2_AUTOSTART_SERVICE=true to enable)
[INFO] Installed 16 package(s)
[INFO] Applying runtime prerequisites from BUILD_PINS.md
[INFO] Setting up Offline Sky Map Cache (FramingAssistantCache)
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 3.28G 0 5.75M 0 0 223.6k 0 4:16:39 00:26 4:16:13 376.2k
3.28 GB の Offline Sky Map Cache をダウンロード中なので、中座します。
4時間くらいかかるかな。Zzz………
インストールログ。パスワード入力を求められていたようだ。
[INFO] PHD2 service auto-start disabled (set PHD2_AUTOSTART_SERVICE=true to enable)
[INFO] Installed 16 package(s)
[INFO] Applying runtime prerequisites from BUILD_PINS.md
[INFO] Setting up Offline Sky Map Cache (FramingAssistantCache)
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 3.28G 100 3.28G 0 0 471.4k 0 2:01:45 2:01:45 434.7k
[sudo: authenticate] パスワード:
sudo: timed out
[INFO] FramingAssistant cache installed at: /home/USERNAME/.local/share/NINA/FramingAssistantCache
[INFO] Setting up ASTAP
[sudo: authenticate] パスワード:
sudo: timed out
[sudo: authenticate] パスワード:
sudo: timed out
[WARN] ASTAP not found in apt and ASTAP_CLI_SOURCE is not set
[WARN] Set ASTAP_CLI_SOURCE to a local astap_cli binary to install manually
[WARN] Failed to set up ASTAP
[WARN] Runtime setup completed with 1 warning(s)
[INFO] Build and install completed
Release: v08092026-1788872749
Artifacts:
- /home/USERNAME/pins-build-src/artifacts/indi-bin_2.1.9+1788872749_amd64_08092026.deb
- /home/USERNAME/pins-build-src/artifacts/libindi1_2.1.9+1788872749_amd64_08092026.deb
- /home/USERNAME/pins-build-src/artifacts/libindi-data_2.1.9+1788872749_amd64_08092026.deb
- /home/USERNAME/pins-build-src/artifacts/libindi-dev_2.1.9+1788872749_amd64_08092026.deb
- /home/USERNAME/pins-build-src/artifacts/phd2_2.6.14-1788872779_amd64.deb
- /home/USERNAME/pins-build-src/artifacts/pins_3.3.0.1057-nightly+1788872749_amd64_08092026.deb
- /home/USERNAME/pins-build-src/artifacts/pins-wandereretasdk_3.3.0.1057-nightly+1788872749_amd64_08092026.deb
- /home/USERNAME/pins-build-src/artifacts/plugins/pins-plugin-joko_4.0.0.17+1788872749_amd64_08092026.deb
- /home/USERNAME/pins-build-src/artifacts/plugins/pins-plugin-livestack_1.0.1.2+1788872749_amd64_08092026.deb
- /home/USERNAME/pins-build-src/artifacts/plugins/pins-plugin-ninaapi_2.2.15.2+1788872749_amd64_08092026.deb
- /home/USERNAME/pins-build-src/artifacts/plugins/pins-plugin-orbuculum_2.0.0.2+1788872749_amd64_08092026.deb
- /home/USERNAME/pins-build-src/artifacts/plugins/pins-plugin-phd2tools_1.0.5.3+1788872749_amd64_08092026.deb
- /home/USERNAME/pins-build-src/artifacts/plugins/pins-plugin-pins_1.0.3.0+1788872749_amd64_08092026.deb
- /home/USERNAME/pins-build-src/artifacts/plugins/pins-plugin-polaralignment_2.2.3.4+1788872749_amd64_08092026.deb
- /home/USERNAME/pins-build-src/artifacts/plugins/pins-plugin-tenmicron_3.0.0.13+1788872749_amd64_08092026.deb
- /home/USERNAME/pins-build-src/artifacts/plugins/pins-plugin-touch-n-stars_1.4.0.1+1788872749_amd64_08092026.deb
indi関連を確認します。
dpkg -l | grep -E '^ii (libindi1|libindi-dev|indi-bin|libindi-data)'
ii indi-bin 2.1.9+1788872749 amd64 INDI core library, server, and drivers built from upstream v2.1.9
ii libindi-data 2.1.9+1788872749 amd64 INDI shared data files built from upstream v2.1.9
ii libindi-dev 2.1.9+1788872749 amd64 INDI development headers and build metadata built from upstream v2.1.9
ii libindi1 2.1.9+1788872749 amd64 INDI runtime shared libraries built from upstream v2.1.9
pkg-config --modversion libindi
2.1.9
INDI liblary 関連はインストールできました。
ASTAP 落ち穂ひろい
次は、寝ていた間にパスワードを入力できずに、時間切れになってしまった、ASTAPをインストールし直します。
[WARN] ASTAP not found in apt and ASTAP_CLI_SOURCE is not set
[WARN] Set ASTAP_CLI_SOURCE to a local astap_cli binary to install manually
[WARN] Failed to set up ASTAP
[WARN] Runtime setup completed with 1 warning(s)
[INFO] Build and install completed
ASTAP は、天体画像のプレートソルビング(Plate Solving)を行うソフトウェアです。
ASTAP は、N.I.N.Aでのプレートソルビングを行います。天体の導入と、修正を行います。
sudo -v
vオプション:-v(validate) 保存された認証情報(タイムスタンプ)を更新します。
パスワードを入力しておきます。sudoがパスワード入力を一定時間、持っているらしいです。
ビルドインストールスクリプトを再開
./build-and-install-pins-x64.sh
1時間経つと無効になるらしく、パスワード入力を行いました。
ダウンロードにかかる時間を見計らって、ダウンロード状況を見ました。なんともアナログな対応
[INFO] PHD2 service auto-start disabled (set PHD2_AUTOSTART_SERVICE=true to enable)
[INFO] Installed 16 package(s)
[INFO] Applying runtime prerequisites from BUILD_PINS.md
[INFO] Setting up Offline Sky Map Cache (FramingAssistantCache)
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 3.28G 100 3.28G 0 0 652.5k 0 1:27:58 1:27:58 602.5k
[sudo: authenticate] パスワード:
[INFO] FramingAssistant cache installed at: /home/USERNAME/.local/share/NINA/FramingAssistantCache
[INFO] Setting up ASTAP
ヒット:1 https://deb.nodesource.com/node_22.x nodistro InRelease
ヒット:2 http://jp.archive.ubuntu.com/ubuntu resolute InRelease
ヒット:3 http://security.ubuntu.com/ubuntu resolute-security InRelease
取得:4 http://jp.archive.ubuntu.com/ubuntu resolute-updates InRelease [137 kB]
取得:5 https://packages.microsoft.com/ubuntu/26.04/prod resolute InRelease [3,964 B]
取得:6 https://packages.microsoft.com/ubuntu/26.04/prod resolute/main amd64 Packages [54.4 kB]
取得:7 https://packages.microsoft.com/ubuntu/26.04/prod resolute/main arm64 Packages [47.3 kB]
ヒット:8 http://jp.archive.ubuntu.com/ubuntu resolute-backports InRelease
取得:9 http://jp.archive.ubuntu.com/ubuntu resolute-updates/main Sources [298 kB]
取得:10 http://jp.archive.ubuntu.com/ubuntu resolute-updates/main amd64 Packages [601 kB]
取得:11 http://jp.archive.ubuntu.com/ubuntu resolute-updates/universe amd64 Packages [268 kB]
1,410 kB を 3秒 で取得しました (464 kB/s)
パッケージリストを読み込んでいます... 完了
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了
Solving dependencies... 完了
以下の追加パッケージがインストールされます:
libqt5pas1 libqt5printsupport5t64 libqt5x11extras5 libraw-bin
以下のパッケージが新たにインストールされます:
astap libqt5pas1 libqt5printsupport5t64 libqt5x11extras5 libraw-bin
アップグレード: 0 個、新規インストール: 5 個、削除: 0 個、保留: 53 個。
4,390 kB のアーカイブを取得する必要があります。
この操作後に追加で 14.4 MB のディスク容量が消費されます。
取得:1 http://jp.archive.ubuntu.com/ubuntu resolute/universe amd64 libqt5printsupport5t64 amd64 5.15.18+dfsg-1ubuntu1 [209 kB]
取得:2 http://jp.archive.ubuntu.com/ubuntu resolute/universe amd64 libqt5x11extras5 amd64 5.15.18-1 [11.0 kB]
取得:3 http://jp.archive.ubuntu.com/ubuntu resolute/universe amd64 libqt5pas1 amd64 4.4+dfsg-1 [521 kB]
取得:4 http://jp.archive.ubuntu.com/ubuntu resolute-updates/universe amd64 libraw-bin amd64 0.21.5b-1ubuntu1.1 [50.2 kB]
取得:5 http://jp.archive.ubuntu.com/ubuntu resolute/universe amd64 astap amd64 2024.11.13-1 [3,599 kB]
4,390 kB を 3秒 で取得しました (1,415 kB/s)
以前に未選択のパッケージ libqt5printsupport5t64:amd64 を選択しています。
(データベースを読み込んでいます ... 現在 229706 個のファイルとディレクトリがインストールされています。)
.../libqt5printsupport5t64_5.15.18+dfsg-1ubuntu1_amd64.deb を展開する準備をしています ...
libqt5printsupport5t64:amd64 (5.15.18+dfsg-1ubuntu1) を展開しています...
以前に未選択のパッケージ libqt5x11extras5:amd64 を選択しています。
.../libqt5x11extras5_5.15.18-1_amd64.deb を展開する準備をしています ...
libqt5x11extras5:amd64 (5.15.18-1) を展開しています...
以前に未選択のパッケージ libqt5pas1:amd64 を選択しています。
.../libqt5pas1_4.4+dfsg-1_amd64.deb を展開する準備をしています ...
libqt5pas1:amd64 (4.4+dfsg-1) を展開しています...
以前に未選択のパッケージ libraw-bin を選択しています。
.../libraw-bin_0.21.5b-1ubuntu1.1_amd64.deb を展開する準備をしています ...
libraw-bin (0.21.5b-1ubuntu1.1) を展開しています...
以前に未選択のパッケージ astap を選択しています。
.../astap_2024.11.13-1_amd64.deb を展開する準備をしています ...
astap (2024.11.13-1) を展開しています...
libraw-bin (0.21.5b-1ubuntu1.1) を設定しています ...
libqt5x11extras5:amd64 (5.15.18-1) を設定しています ...
libqt5printsupport5t64:amd64 (5.15.18+dfsg-1ubuntu1) を設定しています ...
libqt5pas1:amd64 (4.4+dfsg-1) を設定しています ...
astap (2024.11.13-1) を設定しています ...
libc-bin (2.43-2ubuntu2.3) のトリガを処理しています ...
[INFO] ASTAP available at: /usr/bin/astap
[WARN] ASTAP star database files are still required and must be installed separately
[INFO] Runtime prerequisites setup completed
[INFO] Build and install completed
Release: v09092026-1788910328
Artifacts:
- /home/USERNAME/pins-build-src/artifacts/indi-bin_2.1.9+1788910328_amd64_09092026.deb
- /home/USERNAME/pins-build-src/artifacts/libindi1_2.1.9+1788910328_amd64_09092026.deb
- /home/USERNAME/pins-build-src/artifacts/libindi-data_2.1.9+1788910328_amd64_09092026.deb
- /home/USERNAME/pins-build-src/artifacts/libindi-dev_2.1.9+1788910328_amd64_09092026.deb
- /home/USERNAME/pins-build-src/artifacts/phd2_2.6.14-1788910358_amd64.deb
- /home/USERNAME/pins-build-src/artifacts/pins_3.3.0.1057-nightly+1788910328_amd64_09092026.deb
- /home/USERNAME/pins-build-src/artifacts/pins-wandereretasdk_3.3.0.1057-nightly+1788910328_amd64_09092026.deb
- /home/USERNAME/pins-build-src/artifacts/plugins/pins-plugin-joko_4.0.0.17+1788910328_amd64_09092026.deb
- /home/USERNAME/pins-build-src/artifacts/plugins/pins-plugin-livestack_1.0.1.2+1788910328_amd64_09092026.deb
- /home/USERNAME/pins-build-src/artifacts/plugins/pins-plugin-ninaapi_2.2.15.2+1788910328_amd64_09092026.deb
- /home/USERNAME/pins-build-src/artifacts/plugins/pins-plugin-orbuculum_2.0.0.2+1788910328_amd64_09092026.deb
- /home/USERNAME/pins-build-src/artifacts/plugins/pins-plugin-phd2tools_1.0.5.3+1788910328_amd64_09092026.deb
- /home/USERNAME/pins-build-src/artifacts/plugins/pins-plugin-pins_1.0.3.0+1788910328_amd64_09092026.deb
- /home/USERNAME/pins-build-src/artifacts/plugins/pins-plugin-polaralignment_2.2.3.4+1788910328_amd64_09092026.deb
- /home/USERNAME/pins-build-src/artifacts/plugins/pins-plugin-tenmicron_3.0.0.13+1788910328_amd64_09092026.deb
- /home/USERNAME/pins-build-src/artifacts/plugins/pins-plugin-touch-n-stars_1.4.0.1+1788910328_amd64_09092026.deb
インストール完了!! ようやく。。。
使い方は?
PCのブラウザから、
http://127.0.0.1:5000
http://NINA PC アドレス:5000
これで各種設定が行えるようです。
NINA/PINS にどう接続して使うかを確認します。ポートを見ます。
この作業を初めたら、「N.I.N.Aをコマンドで単独に起動できる」と思い込んでしまった。
systemctl list-units --type=service | grep -Ei 'pins|nina|touch|stars'
pins.service loaded active running NINA Service
ps aux | grep -Ei 'pins|nina|touch' | grep -v grep
USERNAME 434153 2.3 1.1 69040056 349192 ? Ssl 08:55 2:16 /home/USERNAME/pins/NINA
ポート番号が、サイトの一番下にある。。。
https://touch-n-stars.eu/
5000辺りを使うのかな、見てみます。NINA APIなどはネット検索しました。
sudo ss -lntp | grep -E 'NINA|pins|dotnet|1888|5000'
LISTEN 0 512 0.0.0.0:4782 0.0.0.0:* users:(("NINA",pid=434153,fd=382))
LISTEN 0 500 *:5000 *:* users:(("NINA",pid=434153,fd=452))
LISTEN 0 500 *:1889 *:* users:(("NINA",pid=434153,fd=499))
LISTEN 0 500 *:1888 *:* users:(("NINA",pid=434153,fd=421))
NINA(PID 434153)は、4つのポートで待ち受け中です。
ポート :状態 :用途
4782 :LISTEN :NINA内部/デバイス通信など
5000 :LISTEN :Webインターフェース
1888 :LISTEN :NINA API
1889 :LISTEN :API関連の別エンドポイント等
PCのブラウザから、
http://127.0.0.1:5000
http://NINA PC アドレス:5000
Setup Assistant が表示されました。
5000番でWebサービスが正常に動いていることを確認します。
curl -I http://127.0.0.1:5000
HTTP/1.1 200 OK
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Headers: Content-Type, Authorization, X-Suppress-Toast-404, X-Requested-With, X-Bahtinov-Metadata
Access-Control-Allow-Origin: *
Vary: Accept-Encoding
Content-Encoding: identity
ETag: "ACp3sQIO3wgPA4AAAAAAAA"
Last-Modified: Tue, 08 Sep 2026 23:41:24 GMT
Cache-Control: max-age=0, must-revalidate
Accept-Ranges: bytes
Content-Type: text/html; charset=utf-8
Server: EmbedIO/3.5.2
Date: Wed, 09 Sep 2026 03:02:59 GMT
Content-Length: 0
Connection: keep-alive
Keep-Alive: timeout=15,max=100
NINAプロセスにGUIがある構成なのか、Web版として動かしている構成なのかを確認します。
file /home/USERNAME/pins/NINA
/home/USERNAME/pins/NINA: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=93c65abf3ff66427178d065d36972e8969f06f4e, stripped
インストールされているパッケージを確認
dpkg -l | grep -E '^ii.*pins'
ii pins 3.3.0.1057-nightly+1788910328 amd64 Pins build for Ubuntu x64
ii pins-plugin-joko 4.0.0.17+1788910328 amd64 NINA plugin package for joko.nina.plugins
ii pins-plugin-livestack 1.0.1.2+1788910328 amd64 NINA plugin package for LiveStack
ii pins-plugin-ninaapi 2.2.15.2+1788910328 amd64 NINA plugin package for ninaAPI
ii pins-plugin-orbuculum 2.0.0.2+1788910328 amd64 NINA plugin package for Orbuculum
ii pins-plugin-phd2tools 1.0.5.3+1788910328 amd64 NINA plugin package for Phd2 Tools
ii pins-plugin-pins 1.0.3.0+1788910328 amd64 NINA plugin package for pins.plugin
ii pins-plugin-polaralignment 2.2.3.4+1788910328 amd64 NINA plugin package for PolarAlignment
ii pins-plugin-tenmicron 3.0.0.13+1788910328 amd64 NINA plugin package for NINA.Joko.Plugin.TenMicron
ii pins-plugin-touch-n-stars 1.4.0.1+1788910328 amd64 NINA plugin package for Touch-N-Stars
ii pins-wandereretasdk 3.3.0.1057-nightly+1788910328 amd64 WandererETA SDK shared library package
pkg -L pins 2>/dev/null | head -100
/.
/etc
/etc/systemd
/etc/systemd/system
/etc/systemd/system/pins.service
/home
/home/USERNAME
/home/USERNAME/pins
/home/USERNAME/pins/.install_path
/home/USERNAME/pins/ASCOM.Alpaca.Device.dll
/home/USERNAME/pins/ASCOM.Alpaca.dll
/home/USERNAME/pins/ASCOM.Com.dll
/home/USERNAME/pins/ASCOM.Common.dll
/home/USERNAME/pins/ASCOM.Exceptions.dll
/home/USERNAME/pins/ASCOM.Tools.dll
/home/USERNAME/pins/Accord.Math.Core.dll
/home/USERNAME/pins/Accord.Math.dll
/home/USERNAME/pins/Accord.Statistics.dll
/home/USERNAME/pins/Accord.dll
/home/USERNAME/pins/Accord.dll.config
/home/USERNAME/pins/AsyncEnumerable.dll
/home/USERNAME/pins/Castle.Core.AsyncInterceptor.dll
/home/USERNAME/pins/Castle.Core.dll
/home/USERNAME/pins/CommandLine.dll
/home/USERNAME/pins/CommunityToolkit.Mvvm.dll
/home/USERNAME/pins/CsvHelper.dll
/home/USERNAME/pins/Database
/home/USERNAME/pins/Database/Initial
/home/USERNAME/pins/Database/Initial/initial_data.sql
/home/USERNAME/pins/Database/Initial/initial_schema.sql
/home/USERNAME/pins/Database/Migration
/home/USERNAME/pins/Database/Migration/1.sql
/home/USERNAME/pins/Database/Migration/10.sql
/home/USERNAME/pins/Database/Migration/11.sql
/home/USERNAME/pins/Database/Migration/12.sql
/home/USERNAME/pins/Database/Migration/13.sql
/home/USERNAME/pins/Database/Migration/14.sql
/home/USERNAME/pins/Database/Migration/15.sql
/home/USERNAME/pins/Database/Migration/16.sql
/home/USERNAME/pins/Database/Migration/2.sql
/home/USERNAME/pins/Database/Migration/3.sql
/home/USERNAME/pins/Database/Migration/5.sql
/home/USERNAME/pins/Database/Migration/6.sql
/home/USERNAME/pins/Database/Migration/7.sql
/home/USERNAME/pins/Database/Migration/8.sql
/home/USERNAME/pins/Database/Migration/9.sql
/home/USERNAME/pins/EntityFramework.SqlServer.dll
/home/USERNAME/pins/EntityFramework.dll
/home/USERNAME/pins/ExtendedNumerics.BigDecimal.dll
/home/USERNAME/pins/External
/home/USERNAME/pins/External/.git
/home/USERNAME/pins/External/.git/HEAD
/home/USERNAME/pins/External/.git/config
/home/USERNAME/pins/External/.git/description
/home/USERNAME/pins/External/.git/hooks
/home/USERNAME/pins/External/.git/hooks/applypatch-msg.sample
/home/USERNAME/pins/External/.git/hooks/commit-msg.sample
/home/USERNAME/pins/External/.git/hooks/fsmonitor-watchman.sample
/home/USERNAME/pins/External/.git/hooks/post-checkout
/home/USERNAME/pins/External/.git/hooks/post-commit
/home/USERNAME/pins/External/.git/hooks/post-merge
/home/USERNAME/pins/External/.git/hooks/post-update.sample
/home/USERNAME/pins/External/.git/hooks/pre-applypatch.sample
/home/USERNAME/pins/External/.git/hooks/pre-commit.sample
/home/USERNAME/pins/External/.git/hooks/pre-merge-commit.sample
/home/USERNAME/pins/External/.git/hooks/pre-push
/home/USERNAME/pins/External/.git/hooks/pre-push.sample
/home/USERNAME/pins/External/.git/hooks/pre-rebase.sample
/home/USERNAME/pins/External/.git/hooks/pre-receive.sample
/home/USERNAME/pins/External/.git/hooks/prepare-commit-msg.sample
/home/USERNAME/pins/External/.git/hooks/push-to-checkout.sample
/home/USERNAME/pins/External/.git/hooks/sendemail-validate.sample
/home/USERNAME/pins/External/.git/hooks/update.sample
/home/USERNAME/pins/External/.git/index
/home/USERNAME/pins/External/.git/info
/home/USERNAME/pins/External/.git/info/exclude
/home/USERNAME/pins/External/.git/lfs
/home/USERNAME/pins/External/.git/lfs/incomplete
/home/USERNAME/pins/External/.git/lfs/objects
/home/USERNAME/pins/External/.git/lfs/objects/06
/home/USERNAME/pins/External/.git/lfs/objects/06/f9
/home/USERNAME/pins/External/.git/lfs/objects/06/f9/06f9da829af05e280a01c9566677883bb9af42385b7af82acc018b8ccd347765
/home/USERNAME/pins/External/.git/lfs/objects/18
/home/USERNAME/pins/External/.git/lfs/objects/18/19
/home/USERNAME/pins/External/.git/lfs/objects/18/19/18191689141077cd31f58a294838bb9650908a02cb423eff60a81cbda0b18efc
/home/USERNAME/pins/External/.git/lfs/objects/1d
/home/USERNAME/pins/External/.git/lfs/objects/1d/b4
/home/USERNAME/pins/External/.git/lfs/objects/1d/b4/1db4dac54f2a2dd4588c6f2f6ce75d41bbfeb6bf58034e317253911c628c1e6c
/home/USERNAME/pins/External/.git/lfs/objects/29
/home/USERNAME/pins/External/.git/lfs/objects/29/6b
/home/USERNAME/pins/External/.git/lfs/objects/29/6b/296b1a044cdfbc1a7f82f08c28aefd60f25761aa188916e26eab46281c02595a
/home/USERNAME/pins/External/.git/lfs/objects/2b
/home/USERNAME/pins/External/.git/lfs/objects/2b/de
/home/USERNAME/pins/External/.git/lfs/objects/2b/de/2bde7d5e84caac944356543ff5cf6755564664bf07834418ede708d1de243172
/home/USERNAME/pins/External/.git/lfs/objects/32
/home/USERNAME/pins/External/.git/lfs/objects/32/ff
/home/USERNAME/pins/External/.git/lfs/objects/32/ff/32ff8f1e702b93ee2a7537e5399f1a2a26a9e51f0752d11f914de8293ae66a0b
/home/USERNAME/pins/External/.git/lfs/objects/3c
/home/USERNAME/pins/External/.git/lfs/objects/3c/b5
/home/USERNAME/pins/External/.git/lfs/objects/3c/b5/3cb59e2d6cb7dbefb2d87c3b5b25654207ceee18b285f52d4e8edaeb2ffb6548
PINSの実行ファイルを探します。
find /home/USERNAME/pins -maxdepth 2 -type f -executable -printf '%p\n'
/home/USERNAME/pins/System.AppContext.dll
/home/USERNAME/pins/System.Security.Cryptography.OpenSsl.dll
/home/USERNAME/pins/System.Runtime.InteropServices.dll
/home/USERNAME/pins/System.Xml.XPath.XDocument.dll
/home/USERNAME/pins/System.Data.SQLite.dll
/home/USERNAME/pins/System.Configuration.ConfigurationManager.dll
/home/USERNAME/pins/System.Linq.Queryable.dll
/home/USERNAME/pins/Accord.Math.Core.dll
/home/USERNAME/pins/System.Formats.Cbor.dll
/home/USERNAME/pins/System.Net.Security.dll
/home/USERNAME/pins/System.Runtime.Serialization.Xml.dll
/home/USERNAME/pins/System.ValueTuple.dll
/home/USERNAME/pins/Microsoft.Extensions.Configuration.Json.dll
/home/USERNAME/pins/Microsoft.Win32.Registry.dll
/home/USERNAME/pins/System.Data.DataSetExtensions.dll
/home/USERNAME/pins/System.Memory.dll
/home/USERNAME/pins/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll
/home/USERNAME/pins/zh-Hans/Microsoft.CodeAnalysis.resources.dll
/home/USERNAME/pins/System.Core.dll
/home/USERNAME/pins/System.Reflection.Emit.Lightweight.dll
/home/USERNAME/pins/ASCOM.Exceptions.dll
/home/USERNAME/pins/System.Threading.Timer.dll
/home/USERNAME/pins/System.Web.dll
/home/USERNAME/pins/System.Private.Xml.dll
/home/USERNAME/pins/System.Diagnostics.Process.dll
/home/USERNAME/pins/System.Net.WebSockets.WebSocketProtocol.dll
/home/USERNAME/pins/System.Net.Requests.dll
/home/USERNAME/pins/Nito.AsyncEx.Tasks.dll
/home/USERNAME/pins/Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.dll
/home/USERNAME/pins/Microsoft.AspNetCore.Razor.dll
/home/USERNAME/pins/System.Net.Ping.dll
/home/USERNAME/pins/Nito.Cancellation.dll
/home/USERNAME/pins/de/Microsoft.CodeAnalysis.CSharp.resources.dll
/home/USERNAME/pins/de/Microsoft.CodeAnalysis.resources.dll
/home/USERNAME/pins/System.Collections.dll
/home/USERNAME/pins/Parlot.dll
/home/USERNAME/pins/System.Threading.Overlapped.dll
/home/USERNAME/pins/Microsoft.AspNetCore.SignalR.Common.dll
/home/USERNAME/pins/System.Resources.ResourceManager.dll
/home/USERNAME/pins/build-and-install-pins-x64.sh.after-phd2
/home/USERNAME/pins/System.ObjectModel.dll
/home/USERNAME/pins/Microsoft.Extensions.FileProviders.Abstractions.dll
/home/USERNAME/pins/Microsoft.Extensions.Caching.Memory.dll
/home/USERNAME/pins/Microsoft.AspNetCore.Hosting.Server.Abstractions.dll
/home/USERNAME/pins/Microsoft.AspNetCore.Razor.Runtime.dll
/home/USERNAME/pins/System.ComponentModel.Primitives.dll
/home/USERNAME/pins/Microsoft.AspNetCore.SignalR.dll
/home/USERNAME/pins/Swashbuckle.AspNetCore.Swagger.dll
/home/USERNAME/pins/ru/Microsoft.CodeAnalysis.CSharp.resources.dll
/home/USERNAME/pins/ru/Microsoft.CodeAnalysis.resources.dll
/home/USERNAME/pins/System.Diagnostics.FileVersionInfo.dll
/home/USERNAME/pins/System.Security.Cryptography.Xml.dll
/home/USERNAME/pins/Microsoft.Extensions.Diagnostics.dll
/home/USERNAME/pins/System.Runtime.Loader.dll
/home/USERNAME/pins/Microsoft.Extensions.FileSystemGlobbing.dll
/home/USERNAME/pins/AsyncEnumerable.dll
/home/USERNAME/pins/System.Net.NameResolution.dll
/home/USERNAME/pins/Microsoft.CodeAnalysis.CSharp.dll
/home/USERNAME/pins/System.Security.Cryptography.Pkcs.dll
/home/USERNAME/pins/System.Diagnostics.Tracing.dll
/home/USERNAME/pins/libSystem.IO.Ports.Native.so
/home/USERNAME/pins/Microsoft.AspNetCore.Mvc.Localization.dll
/home/USERNAME/pins/NINA
単純に、/home/USERNAME/pins/NINA でした。
~/pins$ ./NINA
コアダンプします
2026-09-09T12:29:09.8032|INFO|Program.cs|<Main>$|78|Launched with command line arguments: /home/USERNAME/pins/NINA.dll
2026-09-09T12:29:09.9222|INFO|DllLoader.cs|LoadDll|76|DllLoader: Trying system library via LD_LIBRARY_PATH: libudev.so.1
2026-09-09T12:29:09.9239|INFO|DllLoader.cs|LoadDll|76|DllLoader: Trying system library via LD_LIBRARY_PATH: libhidapi-hidraw.so
2026-09-09T12:29:09.9241|INFO|DllLoader.cs|LoadDll|76|DllLoader: Trying system library via LD_LIBRARY_PATH: libusb-1.0.so.0
2026-09-09T12:29:09.9604|INFO|INDIClient.cs|KillExistingServer|1501|Killed existing indiserver processes
2026-09-09T12:29:09.9611|INFO|INDIClient.cs|CreateFifo|1424|FIFO already exists: /tmp/indiFIFO
2026-09-09T12:29:09.9619|INFO|INDIClient.cs|StartServerInFifoMode|1368|INDI server started in FIFO mode with PID 445854, port: 7624, using FIFO: /tmp/indiFIFO
2026-09-09T12:29:09.9677|INFO|DllLoader.cs|LoadDll|61|DllLoader: Loading bundled library: /home/USERNAME/pins/External/linux-x64/SOFA/libsofa_c.so
2026-09-09T12:29:10.0758|INFO|INDIClient.cs|Connect|153|Connected to INDI server
2026-09-09T12:29:10.0760|INFO|INDIClient.cs|StartServerInFifoMode|1399|Connected to INDI server on attempt 1
2026-09-09T12:29:10.5237|INFO|DllLoader.cs|LoadDll|61|DllLoader: Loading bundled library: /home/USERNAME/pins/External/linux-x64/NOVAS/libnovas_c.so
2026-09-09T12:29:10.5493|INFO|DllLoader.cs|LoadDll|76|DllLoader: Trying system library via LD_LIBRARY_PATH: libatikcameras.so
2026-09-09T12:29:10.5558|INFO|DllLoader.cs|LoadDll|76|DllLoader: Trying system library via LD_LIBRARY_PATH: libASICamera2.so
2026-09-09T12:29:10.5596|INFO|DllLoader.cs|LoadDll|76|DllLoader: Trying system library via LD_LIBRARY_PATH: libNitecrawlerSDK.so
2026-09-09T12:29:10.5599|ERROR|DllLoader.cs|LoadDllFromAbsolutePath|137|DllLoader failed to load library libNitecrawlerSDK.so: Unknown error
2026-09-09T12:29:10.5610|ERROR|RotatorChooserVM.cs|GetEquipment|56
System.DllNotFoundException: Unable to load shared library 'libNitecrawlerSDK.so' or one of its dependencies. In order to help diagnose loading problems, consider using a tool like strace. If you're using glibc, consider setting the LD_DEBUG environment variable:
/home/USERNAME/pins/libNitecrawlerSDK.so: cannot open shared object file: No such file or directory
/home/USRNAME/pins/liblibNitecrawlerSDK.so: cannot open shared object file: No such file or directory
/home/USRNAME/pins/libNitecrawlerSDK.so.so: cannot open shared object file: No such file or directory
/home/USRNAME/pins/liblibNitecrawlerSDK.so.so: cannot open shared object file: No such file or directory
at Nitecrawler.NitecrawlerSDK.NCRotatorScan(Int32& number, Int32[] ids)
at Nitecrawler.NitecrawlerSDK.ScanRotators(Int32& number, Int32[] ids) in /home/USRNAME/pins-build-src/NINA.Equipment/SDK/RotatorSDKs/NitecrawlerSDK/NitecrawlerSDK.cs:line 294
at NINA.WPF.Base.ViewModel.Equipment.Rotator.RotatorChooserVM.GetEquipment() in /home/USRNAME/pins-build-src/NINA.WPF.Base/ViewModel/Equipment/Rotator/RotatorChooserVM.cs:line 47
2026-09-09T12:29:10.5643|INFO|DllLoader.cs|LoadDll|76|DllLoader: Trying system library via LD_LIBRARY_PATH: libWandererRotatorSDK.so
2026-09-09T12:29:10.5644|ERROR|DllLoader.cs|LoadDllFromAbsolutePath|137|DllLoader failed to load library libWandererRotatorSDK.so: libWandererRotatorSDK.so: cannot open shared object file: No such file or directory
2026-09-09T12:29:10.5645|INFO|DllLoader.cs|LoadDll|76|DllLoader: Trying system library via LD_LIBRARY_PATH: libWandererCoverSDK.so
2026-09-09T12:29:10.5646|ERROR|DllLoader.cs|LoadDllFromAbsolutePath|137|DllLoader failed to load library libWandererCoverSDK.so: libWandererCoverSDK.so: cannot open shared object file: No such file or directory
2026-09-09T12:29:10.5649|ERROR|RotatorChooserVM.cs|GetEquipment|78|Failed to scan for WandererRotators: System.DllNotFoundException: Unable to load shared library 'libWandererRotatorSDK.so' or one of its dependencies. In order to help diagnose loading problems, consider using a tool like strace. If you're using glibc, consider setting the LD_DEBUG environment variable:
/home/USRNAME/pins/libWandererRotatorSDK.so: cannot open shared object file: No such file or directory
/home/USRNAME/pins/liblibWandererRotatorSDK.so: cannot open shared object file: No such file or directory
/home/USRNAME/pins/libWandererRotatorSDK.so.so: cannot open shared object file: No such file or directory
/home/USRNAME/pins/liblibWandererRotatorSDK.so.so: cannot open shared object file: No such file or directory
at Wanderer.WandererRotatorSDK.WRRotatorScan(Int32& number, Int32[] ids)
at Wanderer.WandererRotatorSDK.RotatorScan(Int32& number, Int32[] ids) in /home/USRNAME/pins-build-src/NINA.Equipment/SDK/RotatorSDKs/WandererRotatorSDK/WandererRotatorSDK.cs:line 139
at NINA.WPF.Base.ViewModel.Equipment.Rotator.RotatorChooserVM.GetEquipment() in /home/USRNAME/pins-build-src/NINA.WPF.Base/ViewModel/Equipment/Rotator/RotatorChooserVM.cs:line 64
2026-09-09T12:29:10.5656|ERROR|FlatDeviceChooserVM.cs|GetEquipment|60|Failed to scan for WandererCovers: System.DllNotFoundException: Unable to load shared library 'libWandererCoverSDK.so' or one of its dependencies. In order to help diagnose loading problems, consider using a tool like strace. If you're using glibc, consider setting the LD_DEBUG environment variable:
/home/USRNAME/pins/libWandererCoverSDK.so: cannot open shared object file: No such file or directory
/home/USRNAME/pins/liblibWandererCoverSDK.so: cannot open shared object file: No such file or directory
/home/USRNAME/pins/libWandererCoverSDK.so.so: cannot open shared object file: No such file or directory
/home/USRNAME/pins/liblibWandererCoverSDK.so.so: cannot open shared object file: No such file or directory
at Wanderer.WandererCoverSDK.WCCoverScan(Int32& number, Int32[] ids)
at Wanderer.WandererCoverSDK.CoverScan(Int32& number, Int32[] ids) in /home/USRNAME/pins-build-src/NINA.Equipment/SDK/FlatDeviceSDKs/WandererCoverSDK/WandererCoverSDK.cs:line 129
at NINA.WPF.Base.ViewModel.Equipment.FlatDevice.FlatDeviceChooserVM.GetEquipment() in /home/USRNAME/pins-build-src/NINA.WPF.Base/ViewModel/Equipment/FlatDevice/FlatDeviceChooserVM.cs:line 46
2026-09-09T12:29:10.5737|INFO|CameraChooserVM.cs|GetEquipment|61|Found 0 ASI Cameras
2026-09-09T12:29:10.5741|INFO|DllLoader.cs|LoadDll|76|DllLoader: Trying system library via LD_LIBRARY_PATH: libaltaircam.so
2026-09-09T12:29:10.5841|INFO|DllLoader.cs|LoadDll|76|DllLoader: Trying system library via LD_LIBRARY_PATH: libqhyccd.so
2026-09-09T12:29:10.5949|INFO|CameraChooserVM.cs|GetEquipment|76|Found 0 Altair Cameras
2026-09-09T12:29:10.5950|INFO|CameraChooserVM.cs|GetEquipment|91|Found 0 Atik Cameras
-- qhyccd.cpp param
QHYCCD|QHYCCD.CPP|InitQHYCCDResource()|START
QHYCCD|QHYCCD.CPP|InitQHYCCDResource|auto_detect_camera:false,call InitQHYCCDResourceInside
QHYCCD|QHYCCD.CPP|InitQHYCCDResourceInside|START
2026-09-09T12:29:10.5999|INFO|Program.cs|<Main>$|131|Server fully initialized and running.
QHYCCD|QHYCCD.CPP|libusb_version 1.0.29.11953
QHYCCD|QHYCCD.CPP|libusb_init(libqhyccd_context) called...
QHYCCD|QHYCCD.CPP|InitQHYCCDResourceInside|numdev set to 0
QHYCCD|QHYCCD.CPP|InitQHYCCDResourceInside|END
************************** config file path 26.2.1.12 svn: 1 ************************************
QHYCCD|QHYCCD.CPP|InitQHYCCDResource|Load ini filePath = /home/USRNAME/pins fileName = qhyccd.ini
2026-09-09T12:29:10.6190|INFO|UsbDeviceWatcher.cs|Stop|42|USB Device Watcher stopped
Unhandled exception. System.IO.IOException: Failed to bind to address http://0.0.0.0:4782: address already in use.
---> Microsoft.AspNetCore.Connections.AddressInUseException: Address already in use
---> System.Net.Sockets.SocketException (98): Address already in use
at System.Net.Sockets.Socket.UpdateStatusAfterSocketErrorAndThrowException(SocketError error, Boolean disconnectOnFailure, String callerName)
at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress)
at System.Net.Sockets.Socket.Bind(EndPoint localEP)
at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportOptions.CreateDefaultBoundListenSocket(EndPoint endpoint)
at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketConnectionListener.Bind()
--- End of inner exception stack trace ---
at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketConnectionListener.Bind()
at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportFactory.BindAsync(EndPoint endpoint, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure.TransportManager.BindAsync(EndPoint endPoint, ConnectionDelegate connectionDelegate, EndpointConfig endpointConfig, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerImpl.<>c__DisplayClass28_0`1.<<StartAsync>g__OnBind|0>d.MoveNext()
--- End of stack trace from previous location ---
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.BindEndpointAsync(ListenOptions endpoint, AddressBindContext context, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.BindEndpointAsync(ListenOptions endpoint, AddressBindContext context, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions.BindAsync(AddressBindContext context, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.EndpointsStrategy.BindAsync(AddressBindContext context, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerImpl.BindAsync(CancellationToken cancellationToken)
at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerImpl.StartAsync[TContext](IHttpApplication`1 application, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Hosting.GenericWebHostService.StartAsync(CancellationToken cancellationToken)
at Microsoft.Extensions.Hosting.Internal.Host.<StartAsync>b__14_1(IHostedService service, CancellationToken token)
at Microsoft.Extensions.Hosting.Internal.Host.ForeachService[T](IEnumerable`1 services, CancellationToken token, Boolean concurrent, Boolean abortOnFirstException, List`1 exceptions, Func`3 operation)
at Microsoft.Extensions.Hosting.Internal.Host.StartAsync(CancellationToken cancellationToken)
at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)
at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)
at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.Run(IHost host)
at Program.<Main>$(String[] args) in /home/USRNAME/pins-build-src/NINA/Program.cs:line 154
中止 (コアダンプ) ./NINA
System.IO.IOException: Failed to bind to address http://0.0.0.0:4782: address already in use.
...
SocketException (98): Address already in use
既に何かのプロセスが、ポート4782を使ってるようです。調べます。
sudo ss -ltnp 'sport = :4782'
[sudo: authenticate] パスワード:
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 512 0.0.0.0:4782 0.0.0.0:* users:
(("NINA",pid=434153,fd=382))
NINAがすでに使っている模様です。ブラウザに表示させているプロセスかな?
ps aux | grep -i '[N]INA'
USERNAME 434153 2.2 1.3 69173980 415112 ? Ssl 08:55 5:00 /home/USRNAME/pins/NINA
止めます。
kill 434153
~/pins$ ./NINA
コアダンプするので、調べます。
sudo ss -ltnp 'sport = :4782'
State Recv- Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 512 0.0.0.0:4782 0.0.0.0:* users:(("NINA",pid=446716,fd=375))
PID 446716 の NINA が4782を使っている。
PID 446716は何かな?
ps -fp 446716
UID PID PPID C STIME TTY TIME CMD
USERNAME 446716 1 3 12:42 ? 00:00:15 /home/USERNAME/pins/NINA
readlink -f /proc/446716/exe
/home/USERNAME/pins/NINA
pgrep -a -f 'NINA|NINA.dll'
446716 /home/USERNAME/pins/NINA
NINAが起動途中ですでに4782を開いているが、別の処理でもう一度4782を開こうとしているらしい。
NINAを終了し、4782ポートを見てます
kill 446716
sudo ss -ltnp 'sport = :4782'
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 512 0.0.0.0:4782 0.0.0.0:* users:(("NINA",pid=447228,fd=377))
NINAは別のプロセスに監視されていて、終了すると自動再起動されています。
systemd登録されているかもしれません。見てみます。
systemctl list-units --type=service --all | grep -i nina
pins.service loaded active running NINA Service
pins.service が NINAをsystemdサービスとして常駐、自動再起動させています。
sudo systemctl status pins.service
[sudo: authenticate] パスワード:
● pins.service - NINA Service
Loaded: loaded (/etc/systemd/system/pins.service; enabled; preset: enabled)
Active: active (running) since Wed 2026-09-09 12:53:12 JST; 18min ago
Invocation: 5f43ce878bb14399981177d51f6f1149
Main PID: 447228 (NINA)
Tasks: 35 (limit: 36763)
Memory: 189.5M (peak: 191M)
CPU: 31.537s
CGroup: /system.slice/pins.service
├─447228 /home/USRNAME/pins/NINA
└─447243 indiserver -v -p 7624 -m 1000 -f /tmp/indiFIFO
9月 09 12:53:19 a7g NINA[447228]: 2026-09-09T12:53:19.4883|INFO|SafetyMonitorChooserVM.cs|GetEquipment|74|Found 0 INDI Safety Monitors
9月 09 12:53:19 a7g NINA[447228]: 2026-09-09T12:53:19.4901|INFO|FilterWheelChooserVM.cs|GetEquipment|279|Found 1 Alpaca Filter Wheels
9月 09 12:53:19 a7g NINA[447228]: 2026-09-09T12:53:19.9883|INFO|DomeChooserVM.cs|GetEquipment|70|Found 0 INDI Domes
9月 09 12:53:19 a7g NINA[447228]: 2026-09-09T12:53:19.9894|INFO|FocuserChooserVM.cs|GetEquipment|137|Found 1 Alpaca Focusers
9月 09 12:53:20 a7g NINA[447228]: 2026-09-09T12:53:20.4889|INFO|SwitchChooserVM.cs|GetEquipment|75|Found 0 INDI Switch Hubs
9月 09 12:53:20 a7g NINA[447228]: 2026-09-09T12:53:20.4902|INFO|WeatherDataChooserVM.cs|GetEquipment|70|Found 1 Alpaca Observing Conditions
9月 09 12:53:20 a7g NINA[447228]: 2026-09-09T12:53:20.9917|INFO|CameraChooserVM.cs|GetEquipment|259|Found 1 Alpaca Cameras
9月 09 12:53:20 a7g NINA[447228]: 2026-09-09T12:53:20.9942|INFO|DllLoader.cs|LoadDll|76|DllLoader: Trying system library via LD_LIBRARY_PATH: libgphoto2.so
9月 09 12:53:20 a7g NINA[447228]: 2026-09-09T12:53:20.9947|INFO|DllLoader.cs|LoadDll|76|DllLoader: Trying system library via LD_LIBRARY_PATH: libgphoto2_port.so
9月 09 12:53:21 a7g NINA[447228]: 2026-09-09T12:53:21.0380|INFO|CameraChooserVM.cs|GetEquipment|267|Found 0 libgphoto2 Cameras
pins.serviceの内容を見てみます。
sudo systemctl cat pins.service
[sudo: authenticate] パスワード:
# /etc/systemd/system/pins.service
[Unit]
Description=NINA Service
After=network.target
[Service]
Type=simple
Environment="LD_LIBRARY_PATH=/opt/opencvsharp/lib:/usr/lib/x86_64-linux-gnu"
ExecStart=/home/USERNAME/pins/NINA
WorkingDirectory=/home/USERNAME/pins/
User=USERNAME
Group=USERNAME
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
Restart=always
この行があるので、killしてもNINA Serviceが再起動されます。
いったんsystemd版を止めて、ポート4782が空いたことを確認し、~/pins$ ./NINA を用い、
NINAを表示させます。
sudo systemctl stop pins.service
sudo ss -ltnp 'sport = :4782'
~/pins$ ./NINA
2026-09-09T14:11:09.7789|ERROR|FocuserChooserVM.cs|GetEquipment|117
System.DllNotFoundException: Unable to load shared library 'libNitecrawlerSDK.so' or one of its dependencies. In order to help diagnose loading problems, consider using a tool like strace. If you're using glibc, consider setting the LD_DEBUG environment variable:
/home/USERNAME/pins/libNitecrawlerSDK.so: cannot open shared object file: No such file or directory
/home/USERNAME/pins/liblibNitecrawlerSDK.so: cannot open shared object file: No such file or directory
/home/USERNAME/pins/libNitecrawlerSDK.so.so: cannot open shared object file: No such file or directory
/home/USERNAME/pins/liblibNitecrawlerSDK.so.so: cannot open shared object file: No such file or directory
at Nitecrawler.NitecrawlerSDK.NCFocuserScan(Int32& number, Int32[] ids)
at Nitecrawler.NitecrawlerSDK.ScanFocusers(Int32& number, Int32[] ids) in /home/USERNAME/pins-build-src/NINA.Equipment/SDK/RotatorSDKs/NitecrawlerSDK/NitecrawlerSDK.cs:line 268
at NINA.WPF.Base.ViewModel.Equipment.Focuser.FocuserChooserVM.GetEquipment() in /home/USERNAME/pins-build-src/NINA.WPF.Base/ViewModel/Equipment/Focuser/FocuserChooserVM.cs:line 108
2026-09-09T14:11:09.7796|INFO|CameraChooserVM.cs|GetEquipment|235|Found 1 Hocus Focus Cameras
2026-09-09T14:11:09.7799|INFO|CameraChooserVM.cs|GetEquipment|235|Found 1 Hocus Focus Cameras
2026-09-09T14:11:09.7831|INFO|SwitchChooserVM.cs|GetEquipment|48|Found 0 PINS.PowerBox Switch Hubs
2026-09-09T14:11:09.7857|INFO|WeatherDataChooserVM.cs|GetEquipment|46|Found 0 PINS.MeteoStation Weather Data
2026-09-09T14:11:09.7940|INFO|SwitchChooserVM.cs|GetEquipment|48|Found 0 PINS.PowerBox Switch Hubs
2026-09-09T14:11:09.7962|INFO|WeatherDataChooserVM.cs|GetEquipment|46|Found 0 PINS.MeteoStation Weather Data
2026-09-09T14:11:10.2695|INFO|TelescopeChooserVM.cs|GetEquipment|58|Found 0 INDI Telescopes
2026-09-09T14:11:10.7711|INFO|FlatDeviceChooserVM.cs|GetEquipment|82|Found 0 INDI FlatDevices
2026-09-09T14:11:11.2711|INFO|RotatorChooserVM.cs|GetEquipment|100|Found 0 INDI Rotators
2026-09-09T14:11:11.7710|INFO|FilterWheelChooserVM.cs|GetEquipment|267|Found 0 INDI Filter Wheels
2026-09-09T14:11:11.7735|INFO|SafetyMonitorChooserVM.cs|GetEquipment|62|Found 1 Alpaca Safety Monitors
2026-09-09T14:11:11.7735|INFO|DomeChooserVM.cs|GetEquipment|58|Found 1 Alpaca Domes
2026-09-09T14:11:11.7960|INFO|SwitchChooserVM.cs|GetEquipment|62|Found 1 Alpaca Switch Hubs
2026-09-09T14:11:12.2713|INFO|CameraChooserVM.cs|GetEquipment|247|Found 0 INDI Cameras
2026-09-09T14:11:12.2715|INFO|TelescopeChooserVM.cs|GetEquipment|81|Found 1 Alpaca Telescopes
2026-09-09T14:11:12.7710|INFO|FocuserChooserVM.cs|GetEquipment|125|Found 0 INDI Focusers
2026-09-09T14:11:12.7731|INFO|FlatDeviceChooserVM.cs|GetEquipment|94|Found 1 Alpaca Cover Calibrators
2026-09-09T14:11:13.2715|INFO|WeatherDataChooserVM.cs|GetEquipment|58|Found 0 INDI Weather Data
2026-09-09T14:11:13.2741|INFO|RotatorChooserVM.cs|GetEquipment|112|Found 1 Alpaca Rotators
2026-09-09T14:11:13.7719|INFO|SafetyMonitorChooserVM.cs|GetEquipment|74|Found 0 INDI Safety Monitors
2026-09-09T14:11:13.7728|INFO|FilterWheelChooserVM.cs|GetEquipment|279|Found 1 Alpaca Filter Wheels
2026-09-09T14:11:14.2723|INFO|DomeChooserVM.cs|GetEquipment|70|Found 0 INDI Domes
2026-09-09T14:11:14.2740|INFO|CameraChooserVM.cs|GetEquipment|259|Found 1 Alpaca Cameras
2026-09-09T14:11:14.2766|INFO|DllLoader.cs|LoadDll|76|DllLoader: Trying system library via LD_LIBRARY_PATH: libgphoto2.so
2026-09-09T14:11:14.2771|INFO|DllLoader.cs|LoadDll|76|DllLoader: Trying system library via LD_LIBRARY_PATH: libgphoto2_port.so
2026-09-09T14:11:14.3224|INFO|CameraChooserVM.cs|GetEquipment|267|Found 0 libgphoto2 Cameras
2026-09-09T14:11:14.3258|INFO|PluginFetcher.cs|RequestAll|57|Found 96 valid plugins at https://nighttime-imaging.eu/wp-json/nina/v1/plugins/manifests
2026-09-09T14:11:14.7716|INFO|SwitchChooserVM.cs|GetEquipment|75|Found 0 INDI Switch Hubs
2026-09-09T14:11:14.7732|INFO|FocuserChooserVM.cs|GetEquipment|137|Found 1 Alpaca Focusers
2026-09-09T14:11:15.2749|INFO|WeatherDataChooserVM.cs|GetEquipment|70|Found 1 Alpaca Observing Conditions
Found 1 Alpaca Observing Conditions
ここで、処理が止まっている。機器スキャンで止まっている。
状態を見ます。
ps -o pid,ppid,stat,%cpu,%mem,etime,cmd -C NINA
PID PPID STAT %CPU %MEM ELAPSED CMD
450039 9160 Sl+ 3.1 1.2 13:17 ./NINA
sudo ss -tnp | grep 450039
[sudo: authenticate] パスワード:
ESTAB 0 0 [::ffff:127.0.0.1]:40670 [::ffff:127.0.0.1]:7624 users:(("NINA",pid=450039,fd=311))
sudo ss -uap は、現在PC上で開かれているUDPソケットと、それを使っているプロセスを表示するコマンドです。
sudo ss -uap
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
UNCONN 0 0 192.168.0.13:3702 0.0.0.0:* users:(("python3",pid=162082,fd=10))
UNCONN 0 0 239.255.255.250:3702 0.0.0.0:* users:(("python3",pid=162082,fd=8))
UNCONN 0 0 0.0.0.0:37426 0.0.0.0:* users:(("python3",pid=162082,fd=9))
UNCONN 0 0 192.168.0.13:mdns 0.0.0.0:* users:(("NINA",pid=450039,fd=491))
UNCONN 0 0 0.0.0.0:mdns 0.0.0.0:* users:(("NINA",pid=450039,fd=489))
UNCONN 0 0 192.168.0.13:mdns 0.0.0.0:* users:(("NINA",pid=450039,fd=467))
UNCONN 0 0 0.0.0.0:mdns 0.0.0.0:* users:(("NINA",pid=450039,fd=465))
UNCONN 0 0 0.0.0.0:mdns 0.0.0.0:* users:(("avahi-daemon",pid=1613,fd=12))
UNCONN 0 0 127.0.0.54:domain 0.0.0.0:* users:(("systemd-resolve",pid=564,fd=18))
UNCONN 0 0 127.0.0.53%lo:domain 0.0.0.0:* users:(("systemd-resolve",pid=564,fd=16))
ESTAB 0 0 192.168.0.13%eno1:bootpc 192.168.0.2:bootps users:(("NetworkManager",pid=2067,fd=26))
UNCONN 0 0 127.0.0.1:323 0.0.0.0:* users:(("chronyd",pid=1813,fd=4))
UNCONN 0 0 *:35462 *:* users:(("python3",pid=162082,fd=12))
UNCONN 0 0 [fe80::b225:aaff:fe9f:a2b9]%eno1:3702 [::]:* users:(("python3",pid=162082,fd=13))
UNCONN 0 0 [ff02::c]%eno1:3702 [::]:* users:(("python3",pid=162082,fd=11))
UNCONN 0 0 [::]:mdns [::]:* users:(("avahi-daemon",pid=1613,fd=13))
UNCONN 0 0 [::]:mdns [::]:* users:(("NINA",pid=450039,fd=466))
UNCONN 0 0 [fe80::b225:aaff:fe9f:a2b9]%eno1:mdns [::]:* users:(("NINA",pid=450039,fd=468))
UNCONN 0 0 [::]:mdns [::]:* users:(("NINA",pid=450039,fd=490))
UNCONN 0 0 [fe80::b225:aaff:fe9f:a2b9]%eno1:mdns [::]:* users:(("NINA",pid=450039,fd=492))
UNCONN 0 0 *:39160 *:* users:(("firefox",pid=4884,fd=163))
UNCONN 0 0 *:46782 *:* users:(("firefox",pid=4884,fd=139))
UNCONN 0 0 [::1]:323 [::]:* users:(("chronyd",pid=1813,fd=5))
UNCONN 0 0 [fe80::b225:aaff:fe9f:a2b9]%eno1:dhcpv6-client [::]:* users:(("NetworkManager",pid=2067,fd=28))
NINA pid=450039
192.168.0.13:mdns
0.0.0.0:mdns
[::]:mdns
これは、Alpacaデバイスなどのネットワーク探索で使われる模様です。
python3 pid=162082
192.168.0.13:3702
239.255.255.250:3702
0.0.0.0:37426
*:35462
239.255.255.250:3702 は WS-Discovery で使われるマルチキャストアドレス/ポートです。
Alpaca/ASCOMデバイス探索と関係するネットワーク探索を行っているかもしれません。
この段階で、PCには何も機器を接続していません。
:35462 : users:((“python3”,pid=162082,fd=12))
UNCONN 0 0 [fe80::b225:aaff:fe9f:a2b9]%eno1:3702 [::]: users:((“python3”,pid=162082,fd=13))
UNCONN 0 0 [ff02::c]%eno1:3702 [::]:* users:((“python3”,pid=162082,fd=11))
これを調べます。
ps -fp 162082
UID PID PPID C STIME TTY TIME CMD
USERNAME 162082 162077 0 9月08 ? 00:00:02 python3 /usr/bin/wsdd --no-host --discovery --listen /run/user/1000/gvfsd/wsdd
現在動いているNINA(PID 450039)が、ネットワーク通信で何をしているかをリアルタイムで見てみます。
sudo strace -p 450039 -f -e trace=network -tt
strace: Process 450039 attached with 34 threads
strace: Process 451155 attached
[pid 451155] 14:37:41.931321 +++ exited with 0 +++
strace: Process 451187 attached
[pid 451187] 14:38:13.247452 +++ exited with 0 +++
NINAがだんまりを決め込んでるように見えてますが、そうではないらしい。
クラッシュしていない、CPUを多少使用している、INDI接続は存在、ネットワークエラーも発生していない。
NINAの各スレッド、CPU使用率、wchan(カーネル内で何を待っているか)を表示します。
ps -L -p 450039 -o pid,tid,stat,pcpu,wchan:32,comm --sort=-pcpu
待機中です。
全スレッドを対象に、どこで待っているかを見てみます。
ps -T -p 450039 -o pid,tid,stat,pcpu,wchan:32,comm
ん〜
ps -T -p 450039 -o pid,tid,stat,pcpu,wchan:32,comm
PID TID STAT %CPU WCHAN COMMAND
450039 450039 Sl+ 0.0 futex_do_wait NINA
450039 450040 Sl+ 0.0 poll_schedule_timeout.constprop. .NET SynchManag
450039 450041 Sl+ 0.0 poll_schedule_timeout.constprop. .NET EventPipe
450039 450042 Sl+ 0.0 wait_for_partner .NET DebugPipe
450039 450043 Sl+ 0.0 futex_do_wait .NET Debugger
450039 450044 Sl+ 0.0 futex_do_wait .NET Finalizer
450039 450047 Sl+ 0.5 futex_do_wait .NET Timer
450039 450049 Sl+ 0.0 futex_do_wait .NET TP Gate
450039 450051 Sl+ 0.0 anon_pipe_read .NET SigHandler
450039 450058 Sl+ 0.0 ep_poll .NET Sockets
450039 450060 Sl+ 0.0 poll_schedule_timeout.constprop. .NET TP Worker
450039 450061 Sl+ 0.0 hrtimer_nanosleep .NET TP Worker
450039 450062 Sl+ 0.0 poll_schedule_timeout.constprop. libusb_event
450039 450067 Sl+ 0.0 poll_schedule_timeout.constprop. .NET TP Worker
450039 450068 Sl+ 0.0 futex_do_wait Kestrel Timer
450039 450071 Sl+ 0.0 futex_do_wait API Thread
450039 450072 Sl+ 0.0 futex_do_wait Log watcher thr
450039 450073 Sl+ 0.0 wait_woken .NET File Watch
450039 450074 Sl+ 0.0 futex_do_wait Touch-N-Stars A
450039 450075 Sl+ 0.0 wait_woken .NET File Watch
450039 450076 Sl+ 0.0 wait_woken .NET File Watch
450039 450077 Sl+ 0.0 wait_woken .NET File Watch
450039 450078 Sl+ 0.0 wait_woken .NET File Watch
450039 450087 Sl+ 0.0 futex_do_wait API Thread
450039 450088 Sl+ 0.0 futex_do_wait Log watcher thr
450039 450089 Sl+ 0.0 wait_woken .NET File Watch
450039 450098 Sl+ 0.0 wait_woken .NET File Watch
450039 450099 Sl+ 0.0 wait_woken .NET File Watch
450039 450100 Sl+ 0.2 poll_schedule_timeout.constprop. .NET TP Worker
450039 451049 Sl+ 0.6 futex_do_wait .NET TP Worker
450039 451093 Sl+ 0.4 futex_do_wait .NET TP Worker
450039 451837 Sl+ 0.3 futex_do_wait .NET TP Worker
450039 451922 Sl+ 0.3 futex_do_wait .NET TP Worker
450039 451945 Sl+ 0.3 futex_do_wait .NET TP Worker
全て、待機状態だ。ループやデッドロックで固まってないようです。
ん〜〜。。。NINAのGUI初期化中に何かの非同期処理を待っているように感じる。。。
PCのブラウザから、
http://127.0.0.1:5000
ここで全て行うのか?
NINAが実際にどのポートをLISTENしているか見てみます。
sudo ss -ltnp | grep NINA
LISTEN 0 512 0.0.0.0:4782 0.0.0.0:* users:(("NINA",pid=450039,fd=385))
LISTEN 0 500 *:5000 *:* users:(("NINA",pid=450039,fd=452))
LISTEN 0 500 *:1889 *:* users:(("NINA",pid=450039,fd=499))
LISTEN 0 500 *:1888 *:* users:(("NINA",pid=450039,fd=422))
NINAは以下のポートをLISTENしています。
4782 → NINA
5000 → NINA
1889 → NINA
1888 → NINA
初めに分かっていたのに、スルーしちゃった。
http://127.0.0.1:5000
「なーんだ、ブラウザでひとまず全てができるかな…」
機器を接続した際には、まず
lsusb
Althiba3をUSB接続すると、下記のデバイス表示になりました。
Bus 003 Device 004: ID 04b4:6572 Cypress Semiconductor Corp. Unprogrammed CY7C65642 hub
Bus 003 Device 005: ID 16c0:0483 Van Ooijen Technische Informatica Teensyduino Serial
Cypress Semiconductor
CY7C65642: HX2VL – 超低消費電力USB 2.0 TetraHub™ コントローラー
Vendor ID (ベンダーID): 16C0 (Van Ooijen Technische Informatica)
Device ID (デバイスID): 0483 (Teensyduino Serial)
ModemManager がデバイスを制御を行うので、これを削除します。
sudo apt remove modemmanager
PI.N.S.のログにもあるように、ユーザーアカウントをdialoutグループに加えます。
sudo adduser ${USER} dialout
これで、Althiba3、Teensyduino Serialが制御できます。
ガイドカメラとphd2の設定は、PI.N.S.からではなく、phd2から設定を行います。
http://127.0.0.1:5000/equipment
一括切断
PHD2設定画面で、機器と接続、カメラとマウントをそれぞれ、
ZWO ASI462MC
INDI Mount [LX200 TeenAsto]を指定し、「全て接続」
http://127.0.0.1:5000/equipment
一括接続
その後、PI.N.S.機器制御から指定できます。

試行錯誤の跡
上記でPI.N.S. 及び、N.I.N.Aが動いたので、ここより、以下は未実施
ビルド時のAPI/互換性問題を解決します。
CMake 4.2.3対応:VERSION 2.8.12.2 → VERSION 3.5
FFmpeg 8対応:avcodec_close() をFFmpeg 8未満の場合だけ実行
FFmpeg 8対応:av_stream_get_side_data()
OpenCV 4.11.0の cap_ffmpeg_impl.hpp を修正します。
現在の状態をバックアップします。
cd ~/pins/artifacts/src/opencv/opencv-4.11.0
cp modules/videoio/src/cap_ffmpeg_impl.hpp \
/tmp/cap_ffmpeg_impl.hpp.org
avcodec_close() を修正します。
cd ~/pins/artifacts/src/opencv/opencv-4.11.0
sed -n '682,700p' modules/videoio/src/cap_ffmpeg_impl.hpp
#endif
}
if( video_st )
{
#ifdef CV_FFMPEG_CODECPAR
avcodec_close( context );
#endif
video_st = NULL;
}
if (context)
{
#ifdef CV_FFMPEG_CODECPAR
avcodec_free_context(&context);
#endif
}
if( ic )
#ifdef CV_FFMPEG_CODECPAR
avcodec_close( context );
#endif
元のOpenCVコードをFFmpeg 8.0に合わせて変更します。
cap_ffmpeg_impl.hpp 682行以降です。
nano ~/pins/artifacts/src/opencv/opencv-4.11.0/modules/videoio/src/cap_ffmpeg_impl.hpp
### 変更前
#ifdef CV_FFMPEG_CODECPAR
avcodec_close( context );
#endif
### 変更後
#ifdef CV_FFMPEG_CODECPAR
// avcodec_close removed in FFmpeg release 8.0
# if (LIBAVCODEC_BUILD < CALC_FFMPEG_VERSION(62, 11, 100))
avcodec_close( context );
# endif
#endif
CV_FFMPEG_CODECPAR が有効
↓
FFmpegのバージョンを確認
↓
62.11.100 より古い
├─ Yes → avcodec_close() を使う
└─ No → avcodec_close() を使わない
続けて、av_stream_get_side_data() を修正します。
nano ~/pins/artifacts/src/opencv/opencv-4.11.0/modules/videoio/src/cap_ffmpeg_impl.hpp
2000行以降です。
### 変更前
#if LIBAVFORMAT_BUILD >= CALC_FFMPEG_VERSION(57, 68, 100)
const uint8_t *data = 0;
data = av_stream_get_side_data(video_st, AV_PKT_DATA_DISPLAYMATRIX, NULL);
if (data)
### 変更後
#if LIBAVFORMAT_BUILD >= CALC_FFMPEG_VERSION(57, 68, 100)
const uint8_t *data = 0;
// av_stream_get_side_data removed in FFmpeg release 8.0
# if (LIBAVCODEC_BUILD < CALC_FFMPEG_VERSION(62, 11, 100))
data = av_stream_get_side_data(video_st, AV_PKT_DATA_DISPLAYMATRIX, NULL);
# else
AVPacketSideData* sd = video_st->codecpar->coded_side_data;
int nb_sd = video_st->codecpar->nb_coded_side_data;
if (sd && nb_sd > 0)
{
const AVPacketSideData* mtx =
av_packet_side_data_get(sd, nb_sd, AV_PKT_DATA_DISPLAYMATRIX);
if (mtx)
data = mtx->data;
}
# endif
if (data)
OpenCVソースに対する変更を確認を行います。
cd ~/pins
git status --short
再度、スクリプトを実行します。
./build-and-install-pins-x64.sh
grep -n -E \
"OPENCV_INSTALL_PREFIX|OPENCV_REQUIRE_LOCAL_PKGCONFIG|get_opencv_version|get_local_opencv_pkgconfig_version|activate_opencv_environment" \
build-and-install-pins-x64.sh
113:OPENCV_INSTALL_PREFIX="${OPENCV_INSTALL_PREFIX:-/usr/local}"
115:OPENCV_REQUIRE_LOCAL_PKGCONFIG="${OPENCV_REQUIRE_LOCAL_PKGCONFIG:-true}"
460:get_opencv_version() {
113行目で、opencv4をインストールした、/usr/local を見に行っています。
OPENCV_INSTALL_PREFIX="${OPENCV_INSTALL_PREFIX:-/usr/local}"
↓
OPENCV_INSTALL_PREFIX=/usr/local
↓
要求バージョンと一致
↓
activate_opencv_environment
↓
以降のPINSビルドでそのOpenCVを使用
Node.js 22をインストール
Node.js 22をインストール
JavaScriptをPC上で実行するための実行環境です
Node.js 22は、
https://github.com/nitr57/pins/blob/develop/build-and-install-pins-x64.sh
ここで指定されています。
install_node_22() {
local node_ok="false"
if command -v node >/dev/null 2>&1; then
local node_major
node_major="$(node -p 'process.versions.node.split(".")[0]')"
if [[ "$node_major" == "22" ]]; then
node_ok="true"
fi
ここに案内があります。
https://nodejs.org/ja/download
「全ての過去のリリース」にリンクがあり、v22.23.2 (Jod) を選べます。
node-v22.23.2-linux-x64.tar.xz を用います。
バージョン確認
~/Downloads/node-v22.23.2-linux-x64/bin/node --version
v22.23.2
### 一時的にPATHを設定
export PATH="$HOME/Downloads/node-v22.23.2-linux-x64/bin:$PATH"
npm --version
10.9.8
.NET SDK Linux x64をインストール
.NET SDK Linux x64をインストール
PINS develop が指定するバージョンを確認します。
~/pins$ less global.json
{
"sdk": {
"version": "10.0.400",
"rollForward": "latestPatch"
}
}
PINS develop は .NET SDK 10.0.400 を指定しています。
PINSをclone
SDKバージョン
global.json を10.0.302に変更
.NET SDK 10.0.302 をインストール
Microsoft の公式 .NET SDK ダウンロードページから SDK 10.0.302 / Linux x64 を入れます。
Microsoft が提供している .NET SDK 10.0.302 のバイナリ/パッケージを直接入れるます。
.NET SDK 10.0.302
10.0.10にSDK 10.0.302の案内があります。
https://dotnet.microsoft.com/ja-jp/download/dotnet/10.0
手動インストール
https://learn.microsoft.com/ja-jp/dotnet/core/install/linux-scripted-manual
.NET 10.0 SDK (v10.0.302) – Linux x64 Binariesをインストールします。
apt版とは別に共存できるようです。
Microsoft の公式手順ではホームディレクトリに:
$HOME/dotnet/
として展開します。公式手順も mkdir -p $HOME/dotnet → tar 展開 → DOTNET_ROOT と PATH を設定、という方式です。
mkdir -p $HOME/dotnet && tar zxf dotnet-sdk-10.0.302-linux-x64.tar.gz -C $HOME/dotnet
export DOTNET_ROOT=$HOME/dotnet
export PATH=$PATH:$HOME/dotnet
https://dotnet.microsoft.com/ja-jp/download/dotnet/thank-you/sdk-10.0.302-linux-x64-binaries-targz
pwd /home/USERNAME/
mkdir -p "$HOME/.dotnet"
既にディレクトがある場合は、そのまま使います。
cd .dotnet/
~/.dotnet$ ll
total 16
0 Sep 4 16:28 .workloadAdvertisingManifestSentinel10.0.100
0 Sep 4 16:21 10.0.111.aspNetCertificateSentinel
0 Sep 4 16:21 10.0.111.dotnetFirstUseSentinel
0 Sep 4 16:21 10.0.111.toolpath.sentinel
4096 Sep 4 16:21 corefx/
4096 Sep 4 16:28 sdk-advertising/
SDK本体はこのディレクトリにはありません。
SDK 10.0.111 本体は /usr/lib/dotnet にあります。
dotnet-sdk-10.0.302-linux-x64.tar.gz を、 ~/.dotnetへ展開します。
tar -xzf ~/Downloads/dotnet-sdk-10.0.302-linux-x64.tar.gz -C ~/.dotnet
PINS GitHub <>codeの案内に沿って、PINSコードを~/pins へ収めます。
### https://github.com/nitr57/pins.git
git clone --branch develop https://github.com/nitr57/pins.git
cd pins
git branch --show-current
develop
clone 直後の状態を確認します。
cd ~/pins/NINA
git status
git status
ブランチ develop
Your branch is up to date with 'origin/develop'.
nothing to commit, working tree clean
git branch --show-current
develop
git rev-parse HEAD
d9acaf5488bbf8b07cf1e8f4ea0c52edb1fa1ff7
~/pins/NINA
ブランチ: develop
HEAD: d9acaf5488bbf8b07cf1e8f4ea0c52edb1fa1ff7
working tree: clean


コメント