使用python本机构建dpkgs。
deb-constrictor的Python项目详细描述
#deb constractor
在python中本机构建debian包(.deb/dpkgs)。不依赖Java、Ruby或其他Debian软件包。
二进制控制
dirs=[
{
‘源’:'~/python/beneboyit/frontend/src',
‘目的地’:'/srv/python/bbit web frontend',
"uname":"www data"
}
]
维护者脚本{
"postinst":"~/python/beneboyit/frontend/scripts/after install",
"preinst":~/python/beneboyit/frontend/scripts/before install'
}
links=[
{
"path":/etc/nginx/sites enabled/bbit web frontend',
"target":/sites available/bbit web frontend'
},
{
"路径":/etc/uwsgi/apps enabled/bbit web frontend.ini,
"目标":"../apps available/bbit web frontend.ini"
,
]
depends=("nginx","uwsgi")
output_directory='~/build'
c=binarycontrol('bbit-web-frontend','1.5','all','ben shaw','bbit web frontend')
c.set_control_field('dependents',dependents)
d=dpkgbuilder(output_directory,c,dirs,links,mainter_scripts)
d.build_package()
````
格式*<;package name>;<;version>;<;architecture>;.deb*并放在*destination\dir*
或者,为包提供一个名称作为*output\u name*参数,这个包将用这个
名称在*output_目录中创建*
constractor build tool
----
constractor build是一个命令行工具,它将基于json文件中的信息构建包。默认情况下,
此文件位于当前目录中,名为"build config.json"。
必需)
*维护程序(字符串,必需)
*说明(字符串,必需)
*额外的控制字段(标准dpkg控制字段对的字典,可选)
*目录(上面示例中的字典数组,可选)
*链接(上面示例中的字典数组,可选)
*配置文件(字符串数组,可以是路径或全局以匹配多个)
*维护程序脚本(上面示例中的字典,可选)
*父(字符串,可选,请参阅下面的父节)
*deb廑u压缩程序(字典,可选,见下面的Deb_Constractor部分)。有效键是:
*忽略路径(字符串数组,可选)
*环境变量(两个元素数组的数组,可选)
*变量(两个元素数组的数组,可选)
*命令(字典)
与examples目录中包含的其他生成步骤一起使用constractor build。
它是另一个生成json文件的路径(路径与配置文件相关)
从中读取配置值。例如,您可能希望仅在父配置中定义节,而不是在每个子配置中定义节。父查找是递归的,因此父查找可以有父查找,依此类推。constractor build
还尝试将基本配置文件加载为配置树的根目录。此文件的默认位置
是*~/constractor build config.json*,但可以通过设置*constractor_build_base_co来覆盖nfig_path*
环境变量。
子值将替换父值。列表或词典中的字段将被追加/更新为适当的
。如果子配置列表中的项已经存在,则不会将其添加到父配置中;
这意味着如果父项和子项都定义了相同的依赖项或要包含的目录(例如),则它们不会在计算机配置中包含两次,
例如,具有此配置的父级:
``json
{
"额外控制字段":{
"依赖":["某些包"]
}
}
`````
可以使用具有此配置的子级:
``json
{
"额外控制字段":{
"depends":["some other package"],
"provides":["this package"]
}
}
`````
>创建这样的计算配置:
```json
{
"extra_control撸fields":{
"depends":["some package","some other package"],
"provides":["this package"]
}
}
````
*环境变量(两个元素数组的数组,可选)
*变量(两个元素数组的数组,可选)
*命令(数组字典,可选)
文件与它们相对于
include dir的名称进行比较,并有一个前导斜杠。
例如,在文件系统中,目录布局如下:
-src
-src/media/
-src/media/123.jpg
-src/media/456.jpg
源为*src/*的目录。要排除媒体目录中的所有JPG文件,
设置忽略路径:
`"忽略路径":["/media/*.jpg"]`
如果希望部署空目录,这可能是不可取的。
如果找到此文件,则其包含目录将被添加到存档(因为它
不为空),但占位符文件将不包括在内。
保存顺序的字典,以便
值可能依赖于先前定义的值。
"环境变量"和"变量"的行为方式相同,它们定义的任何值都可以用于在整个配置中插入变量,但是,如果调用外部脚本(例如,构建前/构建后脚本)
,则只有"环境变量"将传递给子进程。
["构建目录","构建"]
],
"环境变量":[
["python_version","3.6"],
["venv_name","example virtualenv"],
["venv_dir","${build_dir}/${venv_name}],
["venv_bin_dir","${venv_dir}/bin"]
]
,
"目录":[
{
"源":"${build_dir}/virtualenvs/${venv_name}",
"destination":"/var/virtualenvs/${venv_name}"
}
]
}
````
>插入变量后,配置将如下:
``json
{
"package":"example virtualenv",
"directories":[
{
"source":"build/virtualenvs/example virtualenv",
"destination":"/var/virtualenvs/example virtualenv"
}
]
}
````
如果它不存在,那么"environment\u variables"等将被用于"os.environ"。
` venv_u name`、`venv_u dir`和
`venv_u bin_u dir`将添加到os.environ,而'build_u dir'将不会添加。
例如,设置一个用于打包的virtualenv,并在之后将构建的.deb上载到apt存储库。
命令支持的键是"prebuild"和"postbuild",这两个键分别在创建dpkg之前和之后调用。这些命令应该作为数组提供(就像发送到"subprocess.call"一样)。
子目录中定义的命令将覆盖父目录中的命令(而不是追加)。
包含当前正在使用的配置文件(例如,对于
foo/bar/build-config.json_u,该值为u/foo/bar_u)
*`deb_constrator_output_path`:dpkg相对于cwd的输出路径。此变量仅为
"postbuild"设置。这可以与工作目录路径组合以获得绝对路径。
"apt@apt server.example.com/srv/apt/incoming/"]
}
}
}
````
prebuild命令"build virtualenv.sh"可以访问"deb戋u constrator戋u working戋dir"环境变量(以及已定义的其他"environment戋variables"环境变量),并可以引用所有这些命令用于执行任务。
此示例显示将在执行前插入的postbuild命令,因此,实际调用的命令可能是:
`scp build/example-1.0_amd64.deb apt@apt server.example.com/srv/apt/incoming/`
运行"postbuild"命令后(即使"postbuild"命令不存在,也会删除该命令)。
此命令用于清除不再需要的dpkg,例如,如果"postbuild"脚本将其发送到远程服务器。
小心使用
或创建要修复的postinst脚本。
在python中本机构建debian包(.deb/dpkgs)。不依赖Java、Ruby或其他Debian软件包。
二进制控制
dirs=[
{
‘源’:'~/python/beneboyit/frontend/src',
‘目的地’:'/srv/python/bbit web frontend',
"uname":"www data"
}
]
维护者脚本{
"postinst":"~/python/beneboyit/frontend/scripts/after install",
"preinst":~/python/beneboyit/frontend/scripts/before install'
}
links=[
{
"path":/etc/nginx/sites enabled/bbit web frontend',
"target":/sites available/bbit web frontend'
},
{
"路径":/etc/uwsgi/apps enabled/bbit web frontend.ini,
"目标":"../apps available/bbit web frontend.ini"
,
]
depends=("nginx","uwsgi")
output_directory='~/build'
c=binarycontrol('bbit-web-frontend','1.5','all','ben shaw','bbit web frontend')
c.set_control_field('dependents',dependents)
d=dpkgbuilder(output_directory,c,dirs,links,mainter_scripts)
d.build_package()
````
格式*<;package name>;<;version>;<;architecture>;.deb*并放在*destination\dir*
或者,为包提供一个名称作为*output\u name*参数,这个包将用这个
名称在*output_目录中创建*
constractor build tool
----
constractor build是一个命令行工具,它将基于json文件中的信息构建包。默认情况下,
此文件位于当前目录中,名为"build config.json"。
必需)
*维护程序(字符串,必需)
*说明(字符串,必需)
*额外的控制字段(标准dpkg控制字段对的字典,可选)
*目录(上面示例中的字典数组,可选)
*链接(上面示例中的字典数组,可选)
*配置文件(字符串数组,可以是路径或全局以匹配多个)
*维护程序脚本(上面示例中的字典,可选)
*父(字符串,可选,请参阅下面的父节)
*deb廑u压缩程序(字典,可选,见下面的Deb_Constractor部分)。有效键是:
*忽略路径(字符串数组,可选)
*环境变量(两个元素数组的数组,可选)
*变量(两个元素数组的数组,可选)
*命令(字典)
与examples目录中包含的其他生成步骤一起使用constractor build。
它是另一个生成json文件的路径(路径与配置文件相关)
从中读取配置值。例如,您可能希望仅在父配置中定义节,而不是在每个子配置中定义节。父查找是递归的,因此父查找可以有父查找,依此类推。constractor build
还尝试将基本配置文件加载为配置树的根目录。此文件的默认位置
是*~/constractor build config.json*,但可以通过设置*constractor_build_base_co来覆盖nfig_path*
环境变量。
子值将替换父值。列表或词典中的字段将被追加/更新为适当的
。如果子配置列表中的项已经存在,则不会将其添加到父配置中;
这意味着如果父项和子项都定义了相同的依赖项或要包含的目录(例如),则它们不会在计算机配置中包含两次,
例如,具有此配置的父级:
``json
{
"额外控制字段":{
"依赖":["某些包"]
}
}
`````
可以使用具有此配置的子级:
``json
{
"额外控制字段":{
"depends":["some other package"],
"provides":["this package"]
}
}
`````
>创建这样的计算配置:
```json
{
"extra_control撸fields":{
"depends":["some package","some other package"],
"provides":["this package"]
}
}
````
*环境变量(两个元素数组的数组,可选)
*变量(两个元素数组的数组,可选)
*命令(数组字典,可选)
文件与它们相对于
include dir的名称进行比较,并有一个前导斜杠。
例如,在文件系统中,目录布局如下:
-src
-src/media/
-src/media/123.jpg
-src/media/456.jpg
源为*src/*的目录。要排除媒体目录中的所有JPG文件,
设置忽略路径:
`"忽略路径":["/media/*.jpg"]`
如果希望部署空目录,这可能是不可取的。
如果找到此文件,则其包含目录将被添加到存档(因为它
不为空),但占位符文件将不包括在内。
保存顺序的字典,以便
值可能依赖于先前定义的值。
"环境变量"和"变量"的行为方式相同,它们定义的任何值都可以用于在整个配置中插入变量,但是,如果调用外部脚本(例如,构建前/构建后脚本)
,则只有"环境变量"将传递给子进程。
["构建目录","构建"]
],
"环境变量":[
["python_version","3.6"],
["venv_name","example virtualenv"],
["venv_dir","${build_dir}/${venv_name}],
["venv_bin_dir","${venv_dir}/bin"]
]
,
"目录":[
{
"源":"${build_dir}/virtualenvs/${venv_name}",
"destination":"/var/virtualenvs/${venv_name}"
}
]
}
````
>插入变量后,配置将如下:
``json
{
"package":"example virtualenv",
"directories":[
{
"source":"build/virtualenvs/example virtualenv",
"destination":"/var/virtualenvs/example virtualenv"
}
]
}
````
如果它不存在,那么"environment\u variables"等将被用于"os.environ"。
` venv_u name`、`venv_u dir`和
`venv_u bin_u dir`将添加到os.environ,而'build_u dir'将不会添加。
例如,设置一个用于打包的virtualenv,并在之后将构建的.deb上载到apt存储库。
命令支持的键是"prebuild"和"postbuild",这两个键分别在创建dpkg之前和之后调用。这些命令应该作为数组提供(就像发送到"subprocess.call"一样)。
子目录中定义的命令将覆盖父目录中的命令(而不是追加)。
包含当前正在使用的配置文件(例如,对于
foo/bar/build-config.json_u,该值为u/foo/bar_u)
*`deb_constrator_output_path`:dpkg相对于cwd的输出路径。此变量仅为
"postbuild"设置。这可以与工作目录路径组合以获得绝对路径。
"apt@apt server.example.com/srv/apt/incoming/"]
}
}
}
````
prebuild命令"build virtualenv.sh"可以访问"deb戋u constrator戋u working戋dir"环境变量(以及已定义的其他"environment戋variables"环境变量),并可以引用所有这些命令用于执行任务。
此示例显示将在执行前插入的postbuild命令,因此,实际调用的命令可能是:
`scp build/example-1.0_amd64.deb apt@apt server.example.com/srv/apt/incoming/`
运行"postbuild"命令后(即使"postbuild"命令不存在,也会删除该命令)。
此命令用于清除不再需要的dpkg,例如,如果"postbuild"脚本将其发送到远程服务器。
小心使用
或创建要修复的postinst脚本。