AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / ubuntu / Perguntas / 1301661
Accepted
Pierre Abbat
Pierre Abbat
Asked: 2020-12-21 12:02:59 +0800 CST2020-12-21 12:02:59 +0800 CST 2020-12-21 12:02:59 +0800 CST

A tentativa de empacotar resultados de biblioteca em pacote sem binário

  • 772

Eu sou novo em empacotamento e estou tentando empacotar uma biblioteca que um dos meus programas usa. A biblioteca é chamada Plytapus e é usada pelo programa PerfectTIN. Você pode encontrar o código-fonte para ambos no meu site GitHub, https://github.com/phma/ , e no site PerfectTIN, http://bezitopo.org/perfecttin/download.html . Os pacotes de origem estão em https://launchpad.net/~phma-a/+archive/ubuntu/testing .

Eu tentei construir o pacote PerfectTIN depois de adicionar plytapus-dev aos requisitos de compilação (com apenas plytapus instalado, ele foi construído sem plytapus) e obtive uma falha. Descobriu-se que o pacote plytapus não contém o arquivo .so. Editei os arquivos no diretório debian e tentei novamente.

registro de alterações

plytapus (0.6.0-3) focal; urgency=medium

  * Remove extra asterisk from plytapus1.install

 -- Pierre Abbat <[email protected]>  Sun, 20 Dec 2020 14:02:52 -0500

plytapus (0.6.0-2) focal; urgency=medium

  * Add cmake as dependency

 -- Pierre Abbat <[email protected]>  Mon, 23 Nov 2020 03:42:16 -0500

plytapus (0.6.0-1) focal; urgency=medium

  * Initial release

 -- Pierre Abbat <[email protected]>  Tue, 17 Nov 2020 02:18:06 -0500

plytapus1.install

usr/lib/lib*.so.*
usr/lib/lib*.a

ao controle

Source: plytapus
Priority: optional
Maintainer: Pierre Abbat <[email protected]>
Build-Depends: debhelper-compat (= 12), cmake (>= 3.4)
Standards-Version: 4.4.0
Section: libs
Homepage: https://github.com/phma/plytapus
#Vcs-Browser: https://salsa.debian.org/debian/plytapus
#Vcs-Git: https://salsa.debian.org/debian/plytapus.git

Package: plytapus-dev
Section: libdevel
Architecture: any
Multi-Arch: same
Depends: plytapus (= ${binary:Version}), ${misc:Depends}
Description: Library for reading and writing PLY files
 Plytapus is a C++ library for reading and writing PLY (Stanford polygon)
 files.
 .
 This package provides the header files.

Package: plytapus
Architecture: any
Multi-Arch: same
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: Library for reading and writing PLY files
 Plytapus is a C++ library for reading and writing PLY (Stanford polygon)
 files.
 .
 This package provides the shared and static library.

Aqui está a seção relevante do log de compilação:

make[2]: Leaving directory '/home/phma/package/plytapus-0.6.0/obj-x86_64-linux-gnu'
Install the project...
/usr/bin/cmake -P cmake_install.cmake
-- Install configuration: "None"
-- Installing: /home/phma/package/plytapus-0.6.0/debian/tmp/usr/lib/libplytapus.so.0.6.0
-- Installing: /home/phma/package/plytapus-0.6.0/debian/tmp/usr/lib/libplytapus.so
-- Installing: /home/phma/package/plytapus-0.6.0/debian/tmp/usr/lib/libplytapus.a
-- Installing: /home/phma/package/plytapus-0.6.0/debian/tmp/usr/include/plytapus.h
-- Installing: /home/phma/package/plytapus-0.6.0/debian/tmp/usr/include/plytapus/config.h
-- Installing: /home/phma/package/plytapus-0.6.0/debian/tmp/usr/include/plytapus/textio.h
make[1]: Leaving directory '/home/phma/package/plytapus-0.6.0/obj-x86_64-linux-gnu'
   dh_install
   dh_installdocs
   dh_installchangelogs
   dh_perl
   dh_link
   dh_strip_nondeterminism
   dh_compress
   dh_fixperms
   dh_missing
dh_missing: usr/lib/libplytapus.so.0.6.0 exists in debian/tmp but is not installed to anywhere
dh_missing: usr/lib/libplytapus.a exists in debian/tmp but is not installed to anywhere
    The following debhelper tools have reported what they installed (with files per package)
     * dh_install: plytapus (0), plytapus-dev (3)
     * dh_installdocs: plytapus (0), plytapus-dev (0)
    If the missing files are installed by another tool, please file a bug against it.
    When filing the report, if the tool is not part of debhelper itself, please reference the
    "Logging helpers and dh_missing" section from the "PROGRAMMING" guide for debhelper (10.6.3+).
      (in the debhelper package: /usr/share/doc/debhelper/PROGRAMMING.gz)
    Be sure to test with dpkg-buildpackage -A/-B as the results may vary when only a subset is built
    For a short-term work-around: Add the files to debian/not-installed
   dh_dwz
   dh_strip
   dh_makeshlibs
   dh_shlibdeps
   dh_installdeb
   dh_gencontrol
dpkg-gencontrol: warning: Depends field of package plytapus: substitution variable ${shlibs:Depends} used, but is not defined
   dh_md5sums
   dh_builddeb
dpkg-deb: building package 'plytapus-dev' in '../plytapus-dev_0.6.0-3_amd64.deb'.
dpkg-deb: building package 'plytapus' in '../plytapus_0.6.0-3_amd64.deb'.

Como posso corrigir isso para que os arquivos .so e .a estejam no pacote plytapus?

ppa packaging libraries
  • 2 2 respostas
  • 137 Views

2 respostas

  • Voted
  1. cges30901
    2020-12-23T20:33:54+08:002020-12-23T20:33:54+08:00

    Acho que é porque o nome do arquivo está errado. Tente renomear plytapus1.installpara plytapus.install.

    • 0
  2. Best Answer
    Colin Watson
    2021-01-07T04:21:16+08:002021-01-07T04:21:16+08:00

    Repetindo minha resposta de https://lists.launchpad.net/launchpad-users/msg07147.html :

    1. O sistema de compilação upstream é instalado em .../usr/lib/lib*.so.*, mas na versão do seu pacote que baixei debian/plytapus1.installdiz usr/lib/*/lib*.so.*, não usr/lib/lib*.so.*como você citou acima. Você precisa largar o /*bit. (Acho que você usou dh-make, e está assumindo que a cmakeconfiguração upstream segue a recomendação em https://wiki.debian.org/Multiarch/Implementation#CMake , mas este pacote não faz isso; então você precisa faça com que o empacotamento espere caminhos pré-multiarch ou altere a cmakeconfiguração upstream para ser compatível com multiarch, como naquela página wiki.)
    2. debian/controltem o nome do pacote da biblioteca de tempo de execução como plytapus, o que significa que debian/plytapus1.*são totalmente ignorados.
    3. Os nomes dos pacotes de bibliotecas devem começar com "lib".
    4. O bit "1" está incorreto no momento; o Manual de Políticas Debian diz que deve corresponder ao número da versão na biblioteca SONAME, que neste caso é "0.6.0" (você pode usar objdump -po arquivo .so para vê-lo). Você precisará certificar-se de alterar isso sempre que o upstream for SONAMEalterado.
    5. Parece que você não está definindo um SONAMEexplicitamente na cmakeconfiguração upstream e está apenas deixando cmakepara adivinhar um. Talvez isso não seja intencional, pois equivale a dizer que cada nova versão upstream pode ser totalmente incompatível com ABI com todas as anteriores. Se isso não é o que você quis dizer, então você deve definir SOVERSIONna configuração upstream cmake(eu acho; eu não sou muito fluente em cmake) e possivelmente ler sobre os tipos de coisas que você precisa fazer ao manter uma interface de biblioteca C++. Arquivos de símbolos são uma disciplina útil, se possível.

    Então, juntando isso, você deve remover o /*arquivo debian/plytapus1.install. Você deve renomear debian/plytapus1.installpara debian/libplytapus0.6.0.installe debian/plytapus-dev.installpara debian/libplytapus-dev.install. Você deve alterar as duas linhas "Package:" em debian/controlfrom plytapus-deve plytapusto libplytapus-deve libplytapus0.6.0, e também ajustar libplytapus-deva linha Depends de 's para corresponder. Você também pode remover debian/*.dirscompletamente, pois eles não parecem ser necessários. E eu recomendaria resolver a situação da ABI upstream, após a qual você precisará ajustar os nomes dos pacotes da biblioteca novamente para corresponder (se sua biblioteca de fato tiver uma ABI bastante estável, você será recompensado por não precisar alterar os nomes dos pacotes binários por um tempo).

    • 0

relate perguntas

  • Como os PPAs podem ser removidos?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Existe um comando para listar todos os usuários? Também para adicionar, excluir, modificar usuários, no terminal?

    • 9 respostas
  • Marko Smith

    Como excluir um diretório não vazio no Terminal?

    • 4 respostas
  • Marko Smith

    Como descompactar um arquivo zip do Terminal?

    • 9 respostas
  • Marko Smith

    Como instalo um arquivo .deb por meio da linha de comando?

    • 11 respostas
  • Marko Smith

    Como instalo um arquivo .tar.gz (ou .tar.bz2)?

    • 14 respostas
  • Marko Smith

    Como listar todos os pacotes instalados

    • 24 respostas
  • Martin Hope
    Flimm Como posso usar o docker sem sudo? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    led-Zepp Como faço para salvar a saída do terminal em um arquivo? 2014-02-15 11:49:07 +0800 CST
  • Martin Hope
    ubuntu-nerd Como descompactar um arquivo zip do Terminal? 2011-12-11 20:37:54 +0800 CST
  • Martin Hope
    TheXed Como instalo um arquivo .deb por meio da linha de comando? 2011-05-07 09:40:28 +0800 CST
  • Martin Hope
    Ivan Como listar todos os pacotes instalados 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    David Barry Como determino o tamanho total de um diretório (pasta) na linha de comando? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher "Os seguintes pacotes foram retidos:" Por que e como resolvo isso? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford Como os PPAs podem ser removidos? 2010-07-30 01:09:42 +0800 CST

Hot tag

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve