打包PPA问题

编译打包和其他
回复
harjeb
帖子: 3
注册时间: 2018-08-09 9:24
系统: win10

打包PPA问题

#1

帖子 harjeb » 2018-08-09 9:31

以前没接触过linux打包,最近工作原因需要把一个项目打包上传到launchpad,照着教程来是成功了,但是有个问题 用户下载安装的时候默认是装在/build 目录下的,这是launchpad编译时默认的安装目录,我想把安装目录改成/usr/local,usr/lib这种,试过make install 设置路径和mkdir都没有权限,因为launchpad编译时不给root权限,但我看其他PPA 都可以安装到/usr/local啊.... :Cry 。难道是需要联系lanuchpad官方,让他们审核代码才给权限嘛?有大佬知道怎么操作不?
头像
astolia
论坛版主
帖子: 6386
注册时间: 2008-09-18 13:11

Re: 打包PPA问题

#2

帖子 astolia » 2018-08-09 11:57

绝对是你自己的安装脚本问题,十有八九是你的安装位置弄错了。你又不说你的包debian目录是怎么弄的,我没法给你具体的建议
harjeb
帖子: 3
注册时间: 2018-08-09 9:24
系统: win10

Re: 打包PPA问题

#3

帖子 harjeb » 2018-08-09 12:37

astolia 写了: 2018-08-09 11:57 绝对是你自己的安装脚本问题,十有八九是你的安装位置弄错了。你又不说你的包debian目录是怎么弄的,我没法给你具体的建议
我的debian/rules 文件没改,只改了项目的makefile...

代码: 全选

# Copyright 2018 Slightech Co., Ltd. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
include CommonDefs.mk

MKFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
MKFILE_DIR := $(patsubst %/,%,$(dir $(MKFILE_PATH)))

.DEFAULT_GOAL := help

help:
	@echo "Usage:"
	@echo "  make help            show help message"
	@echo "  make apidoc          make api doc"
	@echo "  make opendoc         open api doc (html)"
	@echo "  make init            init project"
	@echo "  make build           build project"
	@echo "  make test            build test and run"
	@echo "  make install         install project"
	@echo "  make samples         build samples"
	@echo "  make tools           build tools"
	@echo "  make ros             build ros wrapper"
	@echo "  make py              build python wrapper"
	@echo "  make clean|cleanall  clean generated or useless things"

.PHONY: help

all: test tools samples

.PHONY: all

# doc

apidoc:
	@$(call echo,Make $@)
	@[ -e ./_install/include ] || $(MAKE) install
	@$(SH) ./doc/build.sh

opendoc: apidoc
	@$(call echo,Make $@)
	@$(shell $(SH) ./doc/langs.sh 1); \
	for lang in "$${LANGS[@]}"; do \
		html=./doc/_output/$$lang/html/index.html; \
		[ -f "$$html" ] && $(SH) ./scripts/open.sh $$html; \
	done

cleandoc:
	@$(call rm,./doc/_output/)

.PHONY: apidoc opendoc cleandoc

# deps

submodules:
	#@git submodule update --init

third_party: submodules
	@$(call echo,Make $@)
	@$(call echo,Make glog,33)
	@$(call cmake_build,./third_party/glog/_build)

.PHONY: submodules third_party

# init

init: submodules
	@$(call echo,Make $@)
	@$(SH) ./scripts/init.sh

.PHONY: init

# build

build: third_party
	@$(call echo,Make $@)
	@$(call cmake_build,./_build,..,-DCMAKE_INSTALL_PREFIX=/usr/local/mynteye)

.PHONY: build

# test

test: install
	@$(call echo,Make $@)
	@$(call echo,Make gtest,33)
ifeq ($(HOST_OS),Win)
	@$(call cmake_build,./test/gtest/_build,..,-Dgtest_force_shared_crt=ON)
else
	@$(call cmake_build,./test/gtest/_build)
endif
	@$(call echo,Make test,33)
	@$(call cmake_build,./test/_build)
ifeq ($(HOST_OS),Win)
	@.\\\test\\\_output\\\bin\\\mynteye_test.bat
else
	@./test/_output/bin/mynteye_test
endif

.PHONY: test

# install

install: build
	@$(call echo,Make $@)
ifeq ($(HOST_OS),Win)
ifneq ($(HOST_NAME),MinGW)
	@cd ./_build; msbuild.exe INSTALL.vcxproj /property:Configuration=Release
else
	@cd ./_build; make install
endif
else
	@cd ./_build; make install
endif
	@make samples	
	@make tools

	


.PHONY: install

# samples

samples: 
	@$(call echo,Make $@)
	@$(call cmake_build,./samples/_build)

.PHONY: samples

# tools

tools:
	@$(call echo,Make $@)
	@$(call cmake_build,./tools/_build)

.PHONY: tools

# ros

ros: install
	@$(call echo,Make $@)
ifeq ($(HOST_OS),Win)
	$(error "Can't make ros on win")
else
	@cd ./wrappers/ros && catkin_make
endif

.PHONY: ros

cleanros:
	@$(call echo,Make $@)
	@$(call rm,./wrappers/ros/build/)
	@$(call rm,./wrappers/ros/devel/)
	@$(call rm,./wrappers/ros/install/)
	@$(call rm,./wrappers/ros/.catkin_workspace)
	@$(call rm,./wrappers/ros/src/CMakeLists.txt)
	@$(call rm_f,*INFO*,$(HOME)/.ros/)
	@$(call rm_f,*WARNING*,$(HOME)/.ros/)
	@$(call rm_f,*ERROR*,$(HOME)/.ros/)
	@$(call rm_f,*FATAL*,$(HOME)/.ros/)

.PHONY: cleanros

# python

PBCVT_DIR := wrappers/python/third_party/pyboostcvconverter

$(PBCVT_DIR):
	@git clone https://github.com/Algomorph/pyboostcvconverter.git $@

pbcvt: $(PBCVT_DIR)
	@$(call cmake_build,$(PBCVT_DIR)/_build,.., \
		-DCMAKE_INSTALL_PREFIX=$(MKFILE_DIR)/wrappers/python/_install \
		-DPYTHON_DESIRED_VERSION=2.X)
	@cd $(PBCVT_DIR)/_build; make install

.PHONY: pbcvt

NPCV_DIR := wrappers/python/third_party/numpy-opencv-converter

$(NPCV_DIR):
	@git clone https://github.com/GarrickLin/numpy-opencv-converter.git $@

py: python

python: install $(NPCV_DIR)
	@$(call echo,Make $@)
	@$(call cmake_build,./wrappers/python/_build)
	@cd ./wrappers/python/_build; make install

.PHONY: py python

cleanpy:
	@$(call echo,Make $@)
	@$(call rm,./wrappers/python/_build/)
	@$(call rm,./wrappers/python/_output/)
	@$(call rm,./wrappers/python/_install/)
	@$(call rm,./$(PBCVT_DIR)/_build/)

.PHONY: cleanpy

# clean

clean:
	@$(call echo,Make $@)
	@$(call rm,./_build/)
	@$(call rm,./_output/)
	@$(call rm,./_install/)
	@$(call rm,./samples/_build/)
	@$(call rm,./samples/_output/)
	@$(call rm,./tools/_build/)
	@$(call rm,./tools/_output/)
	@$(call rm,./test/_build/)
	@$(call rm,./test/_output/)
	@$(MAKE) cleanlog
ifeq ($(HOST_OS),Linux)
	@$(MAKE) cleanros
endif
	@$(MAKE) cleanpy

cleanlog:
	@$(call rm_f,*INFO*)
	@$(call rm_f,*WARNING*)
	@$(call rm_f,*ERROR*)
	@$(call rm_f,*FATAL*)

cleanall: clean cleandoc
	@$(call rm,./test/gtest/_build/)
	@$(call rm,./third_party/glog/_build/)
	@$(FIND) . -type f -name ".DS_Store" -print0 | xargs -0 rm -f
	@$(call rm,./$(PBCVT_DIR)/)
	@$(call rm,./$(NPCV_DIR)/)

.PHONY: clean cleanlog cleanall

# others

host:
	@$(call echo,Make $@)
	@echo MKFILE_PATH: $(MKFILE_PATH)
	@echo MKFILE_DIR: $(MKFILE_DIR)
	@echo HOST_OS: $(HOST_OS)
	@echo HOST_ARCH: $(HOST_ARCH)
	@echo HOST_NAME: $(HOST_NAME)
	@echo SH: $(SH)
	@echo ECHO: $(ECHO)
	@echo FIND: $(FIND)
	@echo CC: $(CC)
	@echo CXX: $(CXX)
	@echo MAKE: $(MAKE)
	@echo BUILD: $(BUILD)
	@echo LDD: $(LDD)
	@echo CMAKE: $(CMAKE)

.PHONY: host

cpplint: submodules
	@$(call echo,Make $@)
	@$(SH) ./scripts/$@.sh

.PHONY: cpplint
头像
astolia
论坛版主
帖子: 6386
注册时间: 2008-09-18 13:11

Re: 打包PPA问题

#4

帖子 astolia » 2018-08-09 13:08

就是这种写法惹的祸

代码: 全选

	@$(call cmake_build,./_build,..,-DCMAKE_INSTALL_PREFIX=/usr/local/mynteye)
安装目标目录不能这么写。因为安装默认是由dh_auto_install来处理的,自己去读它的manpage:http://manpages.ubuntu.com/manpages/bio ... all.1.html
再去看看你ppa里的安装日志,https://launchpadlibrarian.net/37511840 ... ING.txt.gz 搜一下dh_auto_install部分
所以最保险的做法是利用它给你的DESTDIR环境变量,把目标目录写成 ${DESTDIR}/mynteye 这种形式
harjeb
帖子: 3
注册时间: 2018-08-09 9:24
系统: win10

Re: 打包PPA问题

#5

帖子 harjeb » 2018-08-09 14:59

astolia 写了: 2018-08-09 13:08 就是这种写法惹的祸

代码: 全选

	@$(call cmake_build,./_build,..,-DCMAKE_INSTALL_PREFIX=/usr/local/mynteye)
安装目标目录不能这么写。因为安装默认是由dh_auto_install来处理的,自己去读它的manpage:http://manpages.ubuntu.com/manpages/bio ... all.1.html
再去看看你ppa里的安装日志,https://launchpadlibrarian.net/37511840 ... ING.txt.gz 搜一下dh_auto_install部分
所以最保险的做法是利用它给你的DESTDIR环境变量,把目标目录写成 ${DESTDIR}/mynteye 这种形式
谢谢 我试着改成 ${DESTDIR}/usr/lib/mynteye , 下面是launchpad的buildlog 我看它应该还是安装在 /build 下面...

代码: 全选

drwxr-xr-x root/root         0 2018-08-09 06:36 ./
drwxr-xr-x root/root         0 2018-08-09 06:36 ./build/
drwxr-xr-x root/root         0 2018-08-09 06:36 ./<<BUILDDIR>>/
drwxr-xr-x root/root         0 2018-08-09 06:36 ./<<PKGBUILDDIR>>/
drwxr-xr-x root/root         0 2018-08-09 06:36 ./<<PKGBUILDDIR>>/debian/
drwxr-xr-x root/root         0 2018-08-09 06:36 ./<<PKGBUILDDIR>>/debian/mynteye2-demo/
drwxr-xr-x root/root         0 2018-08-09 06:36 ./<<PKGBUILDDIR>>/debian/mynteye2-demo/usr/
drwxr-xr-x root/root         0 2018-08-09 06:36 ./<<PKGBUILDDIR>>/debian/mynteye2-demo/usr/lib/
drwxr-xr-x root/root         0 2018-08-09 06:36 ./<<PKGBUILDDIR>>/debian/mynteye2-demo/usr/lib/mynteye/
drwxr-xr-x root/root         0 2018-08-09 06:36 ./<<PKGBUILDDIR>>/debian/mynteye2-demo/usr/lib/mynteye/include/
drwxr-xr-x root/root         0 2018-08-09 06:36 ./<<PKGBUILDDIR>>/debian/mynteye2-demo/usr/lib/mynteye/include/mynteye/
-rw-r--r-- root/root      6693 2018-06-19 04:48 ./<<PKGBUILDDIR>>/debian/mynteye2-demo/usr/lib/mynteye/include/mynteye/api.h
-rw-r--r-- root/root      3060 2018-06-19 04:48 ./<<PKGBUILDDIR>>/debian/mynteye2-demo/usr/lib/mynteye/include/mynteye/callbacks.h
-rw-r--r-- root/root      1285 2018-06-19 04:48 ./<<PKGBUILDDIR>>/debian/mynteye2-demo/usr/lib/mynteye/include/mynteye/context.h
-rw-r--r-- root/root      7931 2018-06-19 04:48 ./<<PKGBUILDDIR>>/debian/mynteye2-demo/usr/lib/mynteye/include/mynteye/device.h
-rw-r--r-- root/root       943 2018-06-19 04:48 ./<<PKGBUILDDIR>>/debian/mynteye2-demo/usr/lib/mynteye/include/mynteye/files.h
-rw-r--r-- root/root      2137 2018-06-19 04:48 ./<<PKGBUILDDIR>>/debian/mynteye2-demo/usr/lib/mynteye/include/mynteye/global.h
-rw-r--r-- root/root      1966 2018-07-24 07:36 ./<<PKGBUILDDIR>>/debian/mynteye2-demo/usr/lib/mynteye/include/mynteye/glog_init.h
-rw-r--r-- root/root      2173 2018-08-09 06:35 ./<<PKGBUILDDIR>>/debian/mynteye2-demo/usr/lib/mynteye/include/mynteye/mynteye.h
-rw-r--r-- root/root      2408 2018-07-24 07:36 ./<<PKGBUILDDIR>>/debian/mynteye2-demo/usr/lib/mynteye/include/mynteye/object.h
-rw-r--r-- root/root      3140 2018-06-19 04:48 ./<<PKGBUILDDIR>>/debian/mynteye2-demo/usr/lib/mynteye/include/mynteye/plugin.h
-rw-r--r-- root/root      1818 2018-06-19 04:48 ./<<PKGBUILDDIR>>/debian/mynteye2-demo/usr/lib/mynteye/include/mynteye/strings.h
-rw-r--r-- root/root      5902 2018-06-19 04:48 ./<<PKGBUILDDIR>>/debian/mynteye2-demo/usr/lib/mynteye/include/mynteye/times.h
-rw-r--r-- root/root     11534 2018-06-19 04:48 ./<<PKGBUILDDIR>>/debian/mynteye2-demo/usr/lib/mynteye/include/mynteye/types.h
-rw-r--r-- root/root      1566 2018-06-19 04:48 ./<<PKGBUILDDIR>>/debian/mynteye2-demo/usr/lib/mynteye/include/mynteye/utils.h
drwxr-xr-x root/root         0 2018-08-09 06:36 ./<<PKGBUILDDIR>>/debian/mynteye2-demo/usr/lib/mynteye/lib/
drwxr-xr-x root/root         0 2018-08-09 06:36 ./<<PKGBUILDDIR>>/debian/mynteye2-demo/usr/lib/mynteye/lib/cmake/
drwxr-xr-x root/root         0 2018-08-09 06:36 ./<<PKGBUILDDIR>>/debian/mynteye2-demo/usr/lib/mynteye/lib/cmake/mynteye/
-rw-r--r-- root/root      1607 2018-08-09 06:35 ./<<PKGBUILDDIR>>/debian/mynteye2-demo/usr/lib/mynteye/lib/cmake/mynteye/mynteye-config-version.cmake
-rw-r--r-- root/root      1300 2018-08-09 06:35 ./<<PKGBUILDDIR>>/debian/mynteye2-demo/usr/lib/mynteye/lib/cmake/mynteye/mynteye-config.cmake
-rw-r--r-- root/root       936 2018-08-09 06:35 ./<<PKGBUILDDIR>>/debian/mynteye2-demo/usr/lib/mynteye/lib/cmake/mynteye/mynteye-targets-release.cmake
-rw-r--r-- root/root      3508 2018-08-09 06:35 ./<<PKGBUILDDIR>>/debian/mynteye2-demo/usr/lib/mynteye/lib/cmake/mynteye/mynteye-targets.cmake
lrwxrwxrwx root/root         0 2018-08-09 06:36 ./<<PKGBUILDDIR>>/debian/mynteye2-demo/usr/lib/mynteye/lib/libmynteye.so -> libmynteye.so.2
lrwxrwxrwx root/root         0 2018-08-09 06:36 ./<<PKGBUILDDIR>>/debian/mynteye2-demo/usr/lib/mynteye/lib/libmynteye.so.2 -> libmynteye.so.2.0.1
-rw-r--r-- root/root    664288 2018-08-09 06:36 ./<<PKGBUILDDIR>>/debian/mynteye2-demo/usr/lib/mynteye/lib/libmynteye.so.2.0.1
drwxr-xr-x root/root         0 2018-08-09 06:36 ./<<PKGBUILDDIR>>/debian/mynteye2-demo/usr/lib/mynteye/share/
drwxr-xr-x root/root         0 2018-08-09 06:36 ./<<PKGBUILDDIR>>/debian/mynteye2-demo/usr/lib/mynteye/share/mynteye/
-rw-r--r-- root/root       602 2018-08-09 06:35 ./<<PKGBUILDDIR>>/debian/mynteye2-demo/usr/lib/mynteye/share/mynteye/build.info
drwxr-xr-x root/root         0 2018-08-09 06:36 ./usr/
drwxr-xr-x root/root         0 2018-08-09 06:36 ./usr/share/
drwxr-xr-x root/root         0 2018-08-09 06:36 ./usr/share/doc/
drwxr-xr-x root/root         0 2018-08-09 06:36 ./usr/share/doc/mynteye2-demo/
-rw-r--r-- root/root       185 2018-08-09 06:21 ./usr/share/doc/mynteye2-demo/README.Debian
-rw-r--r-- root/root       174 2018-08-09 06:22 ./usr/share/doc/mynteye2-demo/changelog.Debian.gz
-rw-r--r-- root/root      1682 2018-08-09 06:21 ./usr/share/doc/mynteye2-demo/copyright
现在主要是想和下面这种PPA 一样,install 到 /usr/lib 下面... 查了一些问题,回复好像也是不可以“/usr/bin isn't writable during package build which (correctly) is read-only. You should look at installing elsewhere under debian/ instead. ” 那他们是怎么做到的 :Hehe

代码: 全选

drwxr-xr-x root/root         0 2015-09-03 09:12 ./
drwxr-xr-x root/root         0 2015-09-03 09:12 ./usr/
drwxr-xr-x root/root         0 2015-09-03 09:12 ./usr/bin/
-rwxr-xr-x root/root       423 2015-09-03 09:12 ./usr/bin/docky
drwxr-xr-x root/root         0 2015-09-03 09:12 ./usr/lib/
drwxr-xr-x root/root         0 2015-09-03 09:12 ./usr/lib/docky/
-rw-r--r-- root/root     13824 2015-09-03 09:12 ./usr/lib/docky/Docky.CairoHelper.dll
-rw-r--r-- root/root     22528 2015-09-03 09:12 ./usr/lib/docky/Docky.DBus.dll
-rw-r--r-- root/root    102400 2015-09-03 09:12 ./usr/lib/docky/Docky.Items.dll
-rw-r--r-- root/root    151040 2015-09-03 09:12 ./usr/lib/docky/Docky.Services.dll
-rw-r--r-- root/root       381 2015-09-03 09:12 ./usr/lib/docky/Docky.Services.dll.config
-rw-r--r-- root/root     40960 2015-09-03 09:12 ./usr/lib/docky/Docky.Widgets.dll
-rw-r--r-- root/root       204 2015-09-03 09:12 ./usr/lib/docky/Docky.Widgets.dll.config
-rw-r--r-- root/root        77 2015-09-03 09:12 ./usr/lib/docky/Docky.addins
-rwxr-xr-x root/root    262144 2015-09-03 09:12 ./usr/lib/docky/Docky.exe
-rw-r--r-- root/root    223744 2015-09-03 09:12 ./usr/lib/docky/gio-sharp.dll
-rw-r--r-- root/root       291 2015-09-03 09:12 ./usr/lib/docky/gio-sharp.dll.config
drwxr-xr-x root/root         0 2015-09-03 09:12 ./usr/lib/docky/plugins/
-rw-r--r-- root/root     96768 2015-09-03 09:12 ./usr/lib/docky/plugins/BatteryMonitor.dll
-rw-r--r-- root/root     10752 2015-09-03 09:12 ./usr/lib/docky/plugins/Bookmarks.dll
-rw-r--r-- root/root      9216 2015-09-03 09:12 ./usr/lib/docky/plugins/CPUMonitor.dll
-rw-r--r-- root/root      7168 2015-09-03 09:12 ./usr/lib/docky/plugins/Clippy.dll
-rw-r--r-- root/root     20992 2015-09-03 09:12 ./usr/lib/docky/plugins/Clock.dll
-rw-r--r-- root/root     88576 2015-09-03 09:12 ./usr/lib/docky/plugins/Desktop.dll
-rw-r--r-- root/root     35840 2015-09-03 09:12 ./usr/lib/docky/plugins/GMail.dll
-rw-r--r-- root/root      9728 2015-09-03 09:12 ./usr/lib/docky/plugins/Mounter.dll
-rw-r--r-- root/root     29696 2015-09-03 09:12 ./usr/lib/docky/plugins/NPR.dll
-rw-r--r-- root/root     32256 2015-09-03 09:12 ./usr/lib/docky/plugins/NetworkManager.dll
-rw-r--r-- root/root      9728 2015-09-03 09:12 ./usr/lib/docky/plugins/NetworkMonitor.dll
-rw-r--r-- root/root     10752 2015-09-03 09:12 ./usr/lib/docky/plugins/RecentDocuments.dll
-rw-r--r-- root/root     16384 2015-09-03 09:12 ./usr/lib/docky/plugins/SessionManager.dll
-rw-r--r-- root/root     48640 2015-09-03 09:12 ./usr/lib/docky/plugins/Timer.dll
-rw-r--r-- root/root     11264 2015-09-03 09:12 ./usr/lib/docky/plugins/Trash.dll
-rw-r--r-- root/root     71168 2015-09-03 09:12 ./usr/lib/docky/plugins/Weather.dll
-rw-r--r-- root/root     17408 2015-09-03 09:12 ./usr/lib/docky/plugins/WorkspaceSwitcher.dll
-rw-r--r-- root/root     61440 2015-09-03 09:12 ./usr/lib/docky/wnck-sharp1.dll
-rw-r--r-- root/root       151 2015-09-03 09:12 ./usr/lib/docky/wnck-sharp1.dll.config
drwxr-xr-x root/root         0 2015-09-03 09:12 ./usr/lib/pkgconfig/
-rw-r--r-- root/root       117 2015-09-03 09:12 ./usr/lib/pkgconfig/docky.cairohelper.pc
-rw-r--r-- root/root        98 2015-09-03 09:12 ./usr/lib/pkgconfig/docky.items.pc
-rw-r--r-- root/root       107 2015-09-03 09:12 ./usr/lib/pkgconfig/docky.services.pc
-rw-r--r-- root/root       104 2015-09-03 09:12 ./usr/lib/pkgconfig/docky.widgets.pc
poloshiao
论坛版主
帖子: 18279
注册时间: 2009-08-04 16:33

Re: 打包PPA问题

#6

帖子 poloshiao » 2018-08-09 15:53

你好像把
打包 package 跟
打包好 package 上傳到 ppa
混為一談了
头像
astolia
论坛版主
帖子: 6386
注册时间: 2008-09-18 13:11

Re: 打包PPA问题

#7

帖子 astolia » 2018-08-10 10:52

那你就继续检查cmake的那套东西怎么处理安装路径的。你可以在本地用安装dpkg-dev后,用dpkg-buildpackage来打包检查,等本地打包没问题了,再上传launchpad
fuhuizn
帖子: 947
注册时间: 2006-01-06 22:55
系统: ubuntu
联系:

Re: 打包PPA问题

#8

帖子 fuhuizn » 2018-08-10 14:57

CMAKE_INSTALL_PREFIX变量好像因该用“$(DESTDIR)/usr/local”
回复