作者sppmg (sppmg)
看板Linux
标题[问题] debian 编译 exiv2 (avif 的 EXIF 问题)
时间Mon Jun 13 21:56:46 2022
近期想把相片转 avif 保存。
OS 使用 Debian stable(11)。大多数工具都有了,但 EXIF 好像要靠外部工具
汇出汇入。imagemagick 等等似乎无法自动转过去。(?)
稍微 google 一下,确认 Exiv2 v0.27.4 以上支援 avif。
不过 debian 要 testing 才有 v0.27.5。
我试着用 debian apt source 的方式编译
apt-get source -t testing -b exiv2
但最後会出现如下错误。(我贴在文末)
看相依性应该使用到的程式库应该可以用 stable 的编译吧?
用 cmake 照原始套件方式编译是没问题的。
这是 debian 套件问题吧??
有办法解决吗?
看起来像是 debian/libexiv2-27.symbols 这档案出问题?
是用到 0.27.3 的资料了吗?
--------- 以下错误讯息 -----------
dpkg-gensymbols: warning: some new symbols appeared in the symbols file: see
diff output below
dpkg-gensymbols: error: some symbols or patterns disappeared in the symbols
file: see diff output below
dpkg-gensymbols: warning: debian/libexiv2-27/DEBIAN/symbols doesn't match
completely debian/libexiv2-27.symbols
--- debian/libexiv2-27.symbols (libexiv2-27_0.27.5-3_amd64)
+++ dpkg-gensymbolst9CV49 2022-06-13 21:21:10.902056781 +0800
@@ -1297,7 +1297,7 @@
(optional=templinst)_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_@Base
0.27.3
(optional=templinst)_ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_@Base
0.27.3
(optional=templinst)_ZNSt6vectorIjSaIjEE17_M_realloc_insertIJjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_@Base
0.27.3
- _ZNSt6vectorIlSaIlEE12emplace_backIJlEEERlDpOT_@Base 0.27.5
+#MISSING: 0.27.5-3# _ZNSt6vectorIlSaIlEE12emplace_backIJlEEERlDpOT_@Base
0.27.5
_ZNSt6vectorIlSaIlEE17_M_realloc_insertIJlEEEvN9__gnu_cxx17__normal_iteratorIPlS1_EEDpOT_@Base
0.27.5
(optional=templinst|arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el
ppc64 ppc64el riscv64 s390x
sparc64)_ZNSt6vectorImSaImEE17_M_realloc_insertIJRKmEEEvN9__gnu_cxx17__normal_iteratorIPmS1_EEDpOT_@Base
0.27.3
(optional=templinst)_ZNSt6vectorIsSaIsEE17_M_realloc_insertIJRKsEEEvN9__gnu_cxx17__normal_iteratorIPsS1_EEDpOT_@Base
0.27.3
@@ -1316,6 +1316,7 @@
(optional=templinst|subst)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_mutateE{size_t}{size_t}PKc{size_t}@Base
0.27.3
(optional=templinst)_ZNSt7__cxx114listIN5Exiv29ExifdatumESaIS2_EE4sortIPFbRKNS1_9MetadatumES8_EEEvT_@Base
0.25
(optional=templinst)_ZNSt7__cxx114listIN5Exiv29ExifdatumESaIS2_EE5mergeIPFbRKNS1_9MetadatumES8_EEEvOS4_T_@Base
0.27.3
+
_ZNSt7__cxx114listIN5Exiv29ExifdatumESaIS2_EE6insertISt20_List_const_iteratorIS2_EvEESt14_List_iteratorIS2_ES7_T_SA_@Base
0.27.5-3
(optional=templinst)_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St9_IdentityIS5_ESt4lessIS5_ESaIS5_EE16_M_insert_uniqueIRKS5_EESt4pairISt17_Rb_tree_iteratorIS5_EbEOT_@Base
0.27.3
(optional=templinst|arch=!amd64 !arm64 !hppa !ia64 !kfreebsd-amd64
!mips64el !ppc64el !riscv64 !sh4 !sparc64
!x32)_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St9_IdentityIS5_ESt4lessIS5_ESaIS5_EE16_M_insert_uniqueIS5_EESt4pairISt17_Rb_tree_iteratorIS5_EbEOT_@Base
0.27.3
(optional=templinst)_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N5Exiv29XmpNsInfoEESt10_Select1stISA_ESt4lessIS5_ESaISA_EE24_M_get_insert_unique_posERS7_@Base
0.25
dh_makeshlibs: error: failing due to earlier errors
make: *** [debian/rules:16:binary] 错误 1
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status
2
E: 编译指令 'cd exiv2-0.27.5 && dpkg-buildpackage -b -uc' 失败。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 101.10.13.191 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Linux/M.1655128610.A.3A7.html
1F:推 Bencrie: 就产出的 library 跟 symbol table 内容有出入吧 06/13 23:42
我程式功力还没到那里 XD
为何要预先生成 symbol table 啊?
※ 编辑: sppmg (101.10.13.191 台湾), 06/14/2022 01:56:08
2F:→ tomsawyer: 应该是你的libexiv2-27也要上testing 06/14 07:10
3F:→ tomsawyer: 我看teating 跟unstable都上27.5了 06/14 07:11
我是从原始码套件编译的, libexiv2-27 是编译完生成的喔!
https://packages.debian.org/source/bookworm/exiv2
记得我有试过直接装 testing 的 deb,会依赖 testing 的 libc 的样子。
4F:推 Bencrie: 一个用途是控制符号可见性,gcc 可以吃额外的档案不用 06/14 08:59
5F:→ Bencrie: 写在 source code 里。 06/14 08:59
※ 编辑: sppmg (101.10.13.191 台湾), 06/14/2022 09:09:28
6F:推 holishing: 最懒的方法就是把 debian/libexiv2-27.symbols 删掉 06/14 23:34
7F:→ holishing: 重新弄一个空白的档案就可以编起来了 06/14 23:34
8F:→ holishing: 然後最後如果要更新那个 symbols 的话可以参考: 06/14 23:35
10F:→ holishing: 另外编套件我习惯用 sbuild, 它会每次开一个 chroot 06/14 23:36
11F:→ holishing: 去编跟你现在发行版相容的套件, 编出来的东西会比较 06/14 23:37
12F:→ holishing: 乾净 06/14 23:37
13F:推 holishing: 八卦是 debian/*.symbols 好像是 Ubuntu 弄出来回馈给 06/14 23:49
14F:→ holishing: Debian 的一套机制 06/14 23:49
感谢(以及八卦 XD)!
後来也有搜寻到 debian 文件,不过一直纠结在 要不要弄成 libfoo
a 这种
形式。(怕影响到原系统其他程式。直接砍 *.symbols 内容也是有点担心。)
※ 编辑: sppmg (101.10.13.191 台湾), 06/15/2022 09:16:56