Eu precisava criar uma nova imagem e optei pelo novo 16.04 ubuntu para poder obter novas versões de alguns pacotes e não instalar a partir do código-fonte. Até agora, lamento essa decisão, pois os documentos on-line são escassos.
Com o 12.04 e o 14.04, eu era capaz de reutilizar os scripts de inicialização para compilações personalizadas instalando um pacote, removendo (não removendo) ele, para criar os scripts de inicialização do ubuntu. Então eu poderia apenas editá-los para apontar para o arquivo de configuração correto e binário.
Por exemplo, para usar o mais recente openresty, eu poderia fazer isso:
apt-get install nginx
apt-get remove nginx
Então eu poderia apenas atualizar o script /etc/init.d/nginx
para apontar para o meu arquivo binário / config personalizado e eu tenho um script de inicialização do ubuntu feliz. Ótimo!
Este método não funciona mais com o 16.04.
Eu editei:
-
/etc/init.d/nginx
-
/etc/init/nginx.conf
-
/lib/system.d/system/nginx.service
O ubuntu nunca puxa meu binário (que está em /usr/local/openresty/nginx/sbin/nginx
). ele sempre executa /sbin/nginx
na inicialização (eu perdi a desinstalação do 'nginx-core' no início) ou nada. O mesmo vale para outros pacotes.
Os documentos do Ubuntu sobre a transição do upstart estão faltando nesta área, eles estão preocupados com o "start stop".
Eu tenho nenhuma idéia onde o Ubuntu está decidindo isso. Não consigo encontrar nenhum arquivo de configuração que aponte para /sbin/nginx
. Nenhum log ajuda. Todo arquivo em potencial que eu encontrei aponta para o binário alternativo e config.
Se alguém puder compartilhar um bom recurso sobre o uso do novo sistema de lançamento e onde ele se parece / armazenar informações, eu ficaria incrivelmente grato.
Parece haver um banco de dados envolvido, já que ele detectou alterações de arquivos e pediu para eu recarregar - mas não o encontrei.
atualizar
depois de brincar muito, eu percebi o seguinte:
Parece que o pacote nginx instalou dois tipos de configurações, mas usa apenas um. algumas questões estavam ligadas a isso.
-
/etc/init.d/nginx
e /etc/init/nginx.conf
-
/lib/systemd/system/nginx.service
e /etc/systemd/system/nginx.service
de tentativa e erro:
* execute systemctl disable nginx.service
para desativar / excluir a maioria dos links e arquivos
* remover o arquivo em /etc/systemd/system/nginx.service, se existir
Coloque um novo arquivo em /lib/systemd/system/nginx.service
* execute systemctl enable nginx.service
o arquivo em /lib/systemd/system/nginx.service deve ser um arquivo; não pode ser symlink (caso contrário, um erro muitos symlinks aparece)
isso parece funcionar por enquanto. Eu gostaria de poder usar symlinks como esses arquivos estão vinculados ao controle de versão.