openSUSE:OBS Light Fakeobs

跳转到:导航搜索


Fake OBS

openSUSE 下载

供应商: OBS Light
开发者: OBS Light Team
许可: GPLv2
网站: OBS Light 在 Gitorious 上的页面


Fake OBS

Fake OBS 是一种交付系统,可以从 OBS 系统中提取项目,并将其导出为简单的 tar 文件,以便在远程站点使用。在远程站点,交付的项目将显示为在原始 OBS 中一样可见,但仅为只读状态。

从技术上讲,Fake OBS 是一个 Python 脚本,它部分实现了 OBS API。它不构建任何代码,但可以用作任何可以与 OBS 协同工作的工具的 OBS 远程链接(例如 osc、OBS Light 或私有 OBS 实例)。

例如,您可以使用它来针对公共项目的固定版本(Tizen、MeeGo 等)构建自己的项目,而无需受到缓慢/不可靠的互联网连接或公共网站计划外更新的困扰。另一个用例是将代码交付给客户,以便他们可以在您的基础项目上构建自己的附加代码,而无需提供公共 OBS。

它来自 Mer Delivery System 工具,我们感谢他们最初的贡献。

安装

OBS Light 客户端和 OBS Light 服务器设备集成了 FakeOBS 服务器。这是使用 FakeOBS 的最简单方法: OBS Light 客户端 OBS Light 服务器设备

版本 0.6.x (遗留)

这是旧的稳定版本。我们建议您安装新的 1.0.0 版本

我们在 OBS Light 的仓库中发布了 openSUSE 11.4 和 12.1 的软件包。obslight-fakeobs 依赖于 python-asyncpython-gitdbpython-smmap,这些软件包可以从 openSUSE 的 devel:languages:python 仓库安装。

  • openSUSE 11.4
sudo zypper ar "http://download.opensuse.org/repositories/devel:/languages:/python/openSUSE_11.4/devel:languages:python.repo"
sudo zypper ar "http://repo.pub.meego.com/Project:/OBS_Light/openSUSE_11.4/Project:OBS_Light.repo"
sudo zypper in obslight-fakeobs
  • openSUSE 12.1
sudo zypper ar "http://download.opensuse.org/repositories/devel:/languages:/python/openSUSE_12.1/devel:languages:python.repo"
sudo zypper ar "http://repo.pub.meego.com/Project:/OBS_Light/openSUSE_12.1/Project:OBS_Light.repo"
sudo zypper in obslight-fakeobs

稳定打包版本

此版本与 0.6.x 版本及更早版本不兼容。但是有一个 迁移过程

openSUSE

obslight-fakeobs 依赖于 python-cmdln,可以从 openSUSE 的 devel:languages:python 仓库安装。

注意

  • opensuse oss 的主仓库必须处于活动状态,您可以使用以下命令测试您的 maiun 仓库
zypper  se -t pattern base > /dev/null || echo "No opensuse main repository."

适用于 OpenSUSE 12.1

sudo zypper ar "http://download.opensuse.org/repositories/devel:/OBS:/Light:/Stable/openSUSE_12.1/devel:OBS:Light:Stable.repo"
sudo zypper ar "http://download.opensuse.org/repositories/devel:/languages:/python/openSUSE_12.1/devel:languages:python.repo"

适用于 OpenSUSE 12.2

sudo zypper ar "http://download.opensuse.org/repositories/devel:/OBS:/Light:/Stable/openSUSE_12.2/devel:OBS:Light:Stable.repo"

install

sudo zypper  --gpg-auto-import-keys refresh
sudo zypper install obslight-fakeobs

Ubuntu

创建 /etc/apt/sources.list.d/obslight.list 并填充以下内容

适用于 Ubuntu 11.10

# Ubuntu 11.10
#OBS Light (Stable)
deb http://download.opensuse.org/repositories/devel:/OBS:/Light:/Stable/xUbuntu_11.10/ ./
wget -O - http://download.opensuse.org/repositories/devel:/OBS:/Light:/Stable/xUbuntu_11.10/Release.key | sudo apt-key add -
wget -O - http://download.opensuse.org/repositories/devel:/OBS:/Light:/Stable/xUbuntu_11.10/Release.key | sudo apt-key add -

Ubuntu 12.04

# Ubuntu 12.04
## OBS Light (Stable)
deb http://download.opensuse.org/repositories/devel:/OBS:/Light:/Stable/xUbuntu_12.04/ ./
wget -O - http://download.opensuse.org/repositories/devel:/OBS:/Light:/Stable/xUbuntu_12.04/Release.key | sudo apt-key add -

install

然后运行

sudo apt-get update
sudo apt-get install obslight-fakeobs

Fedora

Fedora 16

sudo wget http://download.opensuse.org/repositories/devel:/OBS:/Light:/Stable/Fedora_16/devel:OBS:Light:Stable.repo -O /etc/yum.repos.d/Project_OBS_Light.repo

Fedora 17

cd /etc/yum.repos.d
sudo wget http://download.opensuse.org/repositories/devel:/OBS:/Light:/Stable/Fedora_17/devel:OBS:Light:Stable.repo -O devel_OBS_Light_Stable.repo
sudo wget http://download.tizen.org/tools/Fedora_17/Tools.repo -O tizen_tools.repo

install

yum makecache
yum install obslight-fakeobs

测试打包版本

此版本与 0.6.x 版本及更早版本不兼容。但是有一个 迁移过程

openSUSE

obslight-fakeobs 依赖于 python-cmdln,可以从 openSUSE 的 devel:languages:python 仓库安装。

适用于 OpenSUSE 12.1

sudo zypper ar -f http://download.opensuse.org/repositories/devel:/OBS:/Light:/Head/openSUSE_12.1/devel:OBS:Light:Head.repo
sudo zypper ar "http://download.opensuse.org/repositories/devel:/languages:/python/openSUSE_12.1/devel:languages:python.repo"

适用于 OpenSUSE 12.2

sudo zypper ar -f http://download.opensuse.org/repositories/devel:/OBS:/Light:/Head/openSUSE_12.2/devel:OBS:Light:Head.repo

install

sudo zypper  --gpg-auto-import-keys refresh
sudo zypper install obslight-fakeobs

Ubuntu

创建 /etc/apt/sources.list.d/obslight.list 并填充以下内容

适用于 Ubuntu 11.10

# Ubuntu 11.10
#OBS Light (Head)
deb http://download.opensuse.org/repositories/devel:/OBS:/Light:/Stable/xUbuntu_11.10/ ./

保存并关闭文件。

添加密钥

wget -O - http://download.opensuse.org/repositories/devel:/OBS:/Light:/Head/xUbuntu_11.10/Release.key | sudo apt-key add -

Ubuntu 12.04

# Ubuntu 12.04
## OBS Light (Head)
deb http://download.opensuse.org/repositories/devel:/OBS:/Light:/Head/xUbuntu_12.04/ ./

保存并关闭文件。

添加密钥

wget -O - http://download.opensuse.org/repositories/devel:/OBS:/Light:/Stable/xUbuntu_12.04/Release.key | sudo apt-key add -

install

然后运行

sudo apt-get update
sudo apt-get install obslight-fakeobs

Fedora

Fedora 16

sudo wget http://download.opensuse.org/repositories/devel:/OBS:/Light:/Head/Fedora_16/devel:OBS:Light:Head.repo -O /etc/yum.repos.d/Project_OBS_Light.repo

Fedora 17

cd /etc/yum.repos.d
sudo wget http://download.opensuse.org/repositories/devel:/OBS:/Light:/Head/Fedora_17/devel:OBS:Light:Head.repo -O /etc/yum.repos.d/Project_OBS_Light.repo
sudo wget http://download.tizen.org/tools/Fedora_17/Tools.repo -O tizen_tools.repo

install

yum makecache
yum install obslight-fakeobs

用法

  • listcheckexport 之外的所有命令都必须以 root 用户身份运行。
  • 该程序假定您在托管 OBS API 的同一台机器上运行它。它被设计用于与我们的设备一起工作:OBS Light 服务器设备
  • 从版本 0.6 开始,您可以在 OBS Light 客户端(>= 0.5.3)中直接使用它,而无需真实的 OBS 服务器。

从归档文件导入项目

项目名称包含在归档文件中。如果您在 OBS 设备 上运行此命令,则会自动创建一个名为“fakeobs”的项目链接,并将您导入的 fakeobs 项目添加为预配置的构建目标。

obslight-fakeobs import archive.tar.gz

实际示例

obslight-fakeobs import Tizen_1.0_Base.tar.gz


从 OBS 导入项目

要求

  • 您想要从中获取项目的 OBS 公共 API 的 URL。例如"https://api.tizen.org/public".
  • 软件包仓库根目录的 rsync URL。例如"rsync://download.tizen.org/live".
  • 项目的完整名称。例如"Tizen:1.0:Base".
  • 可选:仓库目标名称。例如"standard".
  • 可选:要获取的架构列表。示例i586, x86_64, armv7el.

如果您没有指定仓库目标或架构,将下载所有可用的仓库目标和架构。

命令行

obslight-fakeobs grab -A <api> -r <repo_url> -t <repository> -a <architecture1> -a <architecture2> <project_name>

完整示例

obslight-fakeobs grab -A "https://api.tizen.org/public" -r "rsync://download.tizen.org/live" -t standard -a i586 -a armv7el "Tizen:1.0:Base"

这需要一些时间,具体取决于您的互联网连接。之后,该项目将安装在本地(/srv/obslight-fakeobs/)就像从 归档文件导入 一样。

已知问题

  • download.meego.com 不允许您匿名 rsync,因此,除非您有登录名,否则您将无法获取已发布的二进制文件。


从 GBS 导入项目

自版本 1.0.2 起可用

要求

  • 您想要从中获取项目的 GBS 的 URL。例如"http://download.tizen.org/releases/2.0alpha/daily/latest/""rsync://download.tizen.org/snapshots/2.0alpha/common/latest/".
  • 项目的完整名称。例如"Tizen:1.0:Base".
  • 仓库目标名称。例如"ia32"。如果您没有指定仓库目标,将不会下载任何内容。
  • 可选:要获取的架构列表。示例i586, x86_64, armv7el.

如果您没有指定架构,将下载所有可用的架构。

命令行

obslight-fakeobs grabgbs -t <repository> -a <architecture1> -a <architecture2> -n <project_name> <repo_url> 

完整示例

obslight-fakeobs grabgbs -t ia32 -o tizen-base -o tizen-main -n Tizen:2.0 -k -f rsync://download.tizen.org/snapshots/2.0alpha/common/latest/

更多帮助

grab gbs 命令的更多详细信息 在此处

检查项目

obslight-fakeobs check <project_name>

这将

  • 检查是否存在 _meta_config 文件,检查它们是否为空,检查 _meta 中是否有指向 fakeobs 项目的链接。
  • 检查 bootstrap(也称为 :full)中是否缺少 RPM,并检查其完整性。
  • 检查仓库中 RPM 的完整性。
  • 检查源包中是否缺少文件
  • 检查项目的依赖项是否可用

列出已安装的项目

obslight-fakeobs list

这将简单地列出已安装的项目。可用选项

  • -u: 显示更新信息
  • -t: 显示项目的不同仓库目标
  • -d: 显示每个仓库目标的项目的依赖项(意味着-t)

删除项目

obslight-fakeobs remove "Full:Project:Name"

实际示例

obslight-fakeobs remove "Tizen:1.0:Base"

压缩项目

大多数项目在其 :full 和仓库中都有相似的 RPM。shrink 命令在它们之间创建硬链接,以节省空间。

obslight-fakeobs shrink "Full:Project:Name"

-s选项使 shrink:full 到仓库创建符号链接,而不是硬链接。

将项目导出到归档文件

从 OBS 导入项目 后,您可以将项目归档。您可能需要在导出之前 压缩项目

obslight-fakeobs export "Full:Project:Name"

实际示例

obslight-fakeobs export "Tizen:1.0:Base"

之后,您可以在当前目录中找到一个以项目命名的归档文件(用 ':' 替换为 '_')。

在您的 OBS 上创建一个项目,链接到 Fake OBS

如果您将 fakeobs 安装在 OBS 设备 上,则在导入项目时会自动执行此操作。但是,如果您更改了密码或未在我们的设备上运行,则必须显式调用它。oscrc_file是管理员级别帐户的 OSC 配置文件路径(普通用户无法在 OBS 上创建项目链接)。这将创建一个名为 fakeobs 的项目链接

obslight-fakeobs createlink [-c oscrc_file]

注意:您只需要执行一次此操作。所有 fakeobs 项目都将通过相同的链接使用。

针对导入的项目构建项目

导入项目 后,它已被添加为预配置的构建目标。在 OBS Web UI 上,转到您想要构建的项目,然后按照 Repositories -> Add repositories,您应该在 fakeobs distributions 下看到您导入的项目。

配置 OBS Light 客户端中的 fakeobs

从 fakeobs 0.6 和 OBS Light 0.5.3 开始,您可以在 OBS Light 中构建来自您的 fakeobs 项目的软件包。

在服务器设备上运行的 fakeobs 的配置参数

Web 界面 URL
http://obslightserver:8000
API URL
http://obslightserver:8001
仓库 URL
http://obslightserver:8002/live
用户名
任何您想要的内容(无需身份验证)
密码
任何您想要的内容(无需身份验证)

在 localhost 上运行的 fakeobs 的配置参数

请注意,这些参数在 OBS Light GUI 向导中预配置为 fakeobs.local

Web 界面 URL
https://:8000
API URL
https://:8001
仓库 URL
https://:8002/live
用户名
任何您想要的内容(无需身份验证)
密码
任何您想要的内容(无需身份验证)


Web UI

端口 8000 上有一个基本的 Web UI,允许您浏览项目、软件包和软件包文件。

配置

您可以在/etc/obslight-fakeobs.conf中自定义一些参数,这些参数是自文档化的。默认配置应该适用于大多数用法。

迁移自 < 1.0.0 版本

fakeobs-0.6.x 和 fakeobs-1.0.x 之间的数据组织发生了变化。convert 命令允许您导入由 < 1.0.0 版本安装的项目。在安装最新版本之前,请列出您想要转换的项目/发布版本。安装最新版本后,请检查您是否仍然拥有软件包 python-asyncpython-gitdbpython-gitpythonpython-smmap,然后运行

obslight-fakeobs convert <project> <release>

对于您想要转换的每个项目/发布版本。在检查一切正常运行后,您可以删除旧的 fakeobs 目录(/srv/fakeobs).

项目交付流程

以下是希望使用 Fake OBS 将项目分发给客户的 OBS 项目经理的推荐流程。

1. 准备项目归档文件

  • 分发者(准备项目归档文件的人,不一定是 OBS 管理员)将 OBS 项目抓取到他的机器上
user1@host1# obslight-fakeobs grab -A https://api.myobs.com/public -r rsync://download.myobs.com/live My:OBS:Project
  • 为了节省空间(并减少未来归档文件的大小),他会压缩该项目
user1@host1# obslight-fakeobs shrink My:OBS:Project
...
10 RPMs linked, saving 11105689 bytes
  • 现在他将项目导出到归档文件
user1@host1# obslight-fakeobs export My:OBS:Project
...
Project 'My:OBS:Project' exported to My_OBS_Project-20120917031317.tar.gz
  • 最后,他将归档文件发送给他的客户

2. 导入项目归档文件

  • 客户将项目归档文件下载到他的机器(或他负责的 OBS 服务器)并将其导入到 Fake OBS
customer@host2# obslight-fakeobs import My_OBS_Project-20120917031317.tar.gz
...
Project 'My:OBS:Project' correctly imported
  • 客户现在可以检查项目,以搜索可能缺失的依赖项或损坏的文件
customer@host2# obslight-fakeobs check My:OBS:Project
...
OK

3. 项目更新

  • 分发者在他的归档文件中发现了一个错误(项目配置、缺失的软件包...)并修复了它(我们假设他知道该怎么做)
  • 与其重新导出归档文件,他启动了位于/srv/obslight-fakeobs.

的 rsync 守护进程。以下是一个示例 rsync 配置文件(/etc/rsyncd.conf):

uid = nobody
gid = nobody
read only = true
use chroot = true
transfer logging = true
log format = %h %o %f %l %b
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
slp refresh = 300
use slp = false

[obslight-fakeobs]
path = /srv/obslight-fakeobs
comment = Fake OBS root
  • )。然后,他将他的外部 rsync URL 发送给他的损坏归档文件的客户rsync://host1.mynetwork.com/obslight-fakeobs
  • 客户现在可以通过运行以下命令来更新他们损坏的项目
customer@host2# obslight-fakeobs update -r rsync://host1.mynetwork.com/obslight-fakeobs My:OBS:Project

请注意,您可以将此 URL 添加到/srv/obslight-fakeobs/projects/My:OBS:Project/project_info,字段rsync_update_url,以避免传递-r参数。

常见问题解答

fakeobs 数据存储在哪里?

fakeobs 数据存储在/srv/obslight-fakeobs及其子目录中。守护进程日志文件是/var/log/fakeobs.log.

fakeobs API 在哪个端口监听?

fakeobs API 在 8001 端口监听。您可以通过在您的网络浏览器中调用 http://obslightserver:8001/public/source/ 来测试它是否正在运行(将 obslightserver 替换为适当的主机名)。如果您看到“无法连接”,守护进程可能已停止。尝试“service fakeobs start”。

软件包仓库在哪个端口发布?

软件包仓库在 8002 端口发布。

我可以在哪里找到 fakeobs 项目归档文件?

一些 Tizen 归档文件可在 http://tizen.fridu.net 找到。