众所周知,odoo官方提供了非常方便的yum安装源用于一键安装
只需先根据版本配置源
odoo8
1 |
yum-config-manager --add-repo=https://nightly.odoo.com/8.0/nightly/rpm/odoo.repo |
odoo9
1 |
yum-config-manager --add-repo=https://nightly.odoo.com/9.0/nightly/rpm/odoo.repo |
之后即可一键自动解决依赖安装
1 |
yum install -y odoo |
相信源码安装过的同学都一定很好奇
这么繁琐复杂的细节居然可以全部包装到一个rpm包里透明掉了
还有那么多依赖库,怎么可能yum里全部都有
带着这种疑问认真研究了下
才知道rpm包内除了相应的程序,还可能有pre和post install两个shell脚本
分别对应安装前和安装后执行
以下为8.0版本latest rpm包为例,其中文注释为本人补充方便整体理解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
rpm -qp --scripts odoo_8.0.latest.noarch.rpm postinstall scriptlet (using /bin/sh): #!/bin/sh #错误立即退出 set -e #配置目录 ODOO_CONFIGURATION_DIR=/etc/odoo #配置文件 ODOO_CONFIGURATION_FILE=$ODOO_CONFIGURATION_DIR/openerp-server.conf #数据目录 ODOO_DATA_DIR=/var/lib/odoo ODOO_GROUP="odoo" #日志目录 ODOO_LOG_DIR=/var/log/odoo ODOO_USER="odoo" #创建系统用户及用户组 if ! getent passwd | grep -q "^odoo:"; then groupadd $ODOO_GROUP adduser --system --no-create-home $ODOO_USER -g $ODOO_GROUP fi # Register "$ODOO_USER" as a postgres user with "Create DB" role attribute su - postgres -c "createuser -d -R -S $ODOO_USER" 2> /dev/null || true # Configuration file mkdir -p $ODOO_CONFIGURATION_DIR # can't copy debian config-file as addons_path is not the same echo "[options] ; This is the password that allows database operations: ; admin_passwd = admin db_host = False db_port = False db_user = $ODOO_USER db_password = False addons_path = /usr/lib/python2.7/site-packages/openerp/addons " > $ODOO_CONFIGURATION_FILE #配置文件权限设置 chown $ODOO_USER:$ODOO_GROUP $ODOO_CONFIGURATION_FILE chmod 0640 $ODOO_CONFIGURATION_FILE # Log mkdir -p $ODOO_LOG_DIR chown $ODOO_USER:$ODOO_GROUP $ODOO_LOG_DIR chmod 0750 $ODOO_LOG_DIR # Data dir mkdir -p $ODOO_DATA_DIR chown $ODOO_USER:$ODOO_GROUP $ODOO_DATA_DIR #系统服务 INIT_FILE=/lib/systemd/system/odoo.service touch $INIT_FILE chmod 0700 $INIT_FILE cat << 'EOF' > $INIT_FILE [Unit] Description=Odoo Open Source ERP and CRM After=network.target [Service] Type=simple User=odoo Group=odoo ExecStart=/usr/bin/odoo.py --config=/etc/odoo/openerp-server.conf [Install] WantedBy=multi-user.target EOF #YUM中没有的Python依赖库部分 easy_install pyPdf vatnumber pydot psycogreen |
可见诸多内幕与细节全都在这段脚本里完美体现了
知己知彼,剖析清楚每一行代码后,对基于源代码的个性化定制安装部署又有了新的认识