После обновления Perforce он больше не запустится. Я исправил несколько вещей, например добавил переменную env P4PORT в файл master.conf
. Раньше в этом не было необходимости. Я также вручную восстановил БД из последнего файла журнала. Кроме того, если я запускаю p4d в командной строке, он работает нормально с пустой базой данных.
Вот текущие ошибки, которые я получаю:
× helix-p4dctl.service - LSB: Starts all Perforce services
Loaded: loaded (/etc/init.d/helix-p4dctl; generated)
Active: failed (Result: exit-code) since Thu 2024-05-30 09:45:30 EDT; 1h 49min ago
Docs: man:systemd-sysv-generator(8)
Process: 7496 ExecStart=/etc/init.d/helix-p4dctl start (code=exited, status=1/FAILURE)
CPU: 39ms
May 30 09:45:28 myserver p4dctl[7505]: error: Connect to server failed; check $P4PORT.
connect: 127.0.0.1:1666: Connection refused
May 30 09:45:28 myserver p4dctl[7507]: error: Connect to server failed; check $P4PORT.
connect: 127.0.0.1:1666: Connection refused
May 30 09:45:28 myserver p4dctl[7508]: error: Connect to server failed; check $P4PORT.
connect: 127.0.0.1:1666: Connection refused
May 30 09:45:29 myserver p4dctl[7509]: error: Connect to server failed; check $P4PORT.
connect: 127.0.0.1:1666: Connection refused
May 30 09:45:30 myserver p4dctl[7501]: error: 'master' p4d: '/opt/perforce/sbin/p4d -p ssl:localhost:1666' exited with status 255.
May 30 09:45:30 myserver p4dctl[7501]: Started 0 services.
May 30 09:45:30 myserver p4dctl[7501]: error: Not all services started successfully.
May 30 09:45:30 myserver systemd[1]: helix-p4dctl.service: Control process exited, code=exited, status=1/FAILURE
May 30 09:45:30 myserver systemd[1]: helix-p4dctl.service: Failed with result 'exit-code'.
May 30 09:45:30 myserver systemd[1]: Failed to start LSB: Starts all Perforce services.
Мой конфигурационный файл:
#-------------------------------------------------------------------------------
# p4dctl configuration file for Helix Core Server
#-------------------------------------------------------------------------------
p4d master
{
Owner = perforce
Execute = /opt/perforce/sbin/p4d
Umask = 077
# Enabled by default.
Enabled = true
Environment
{
P4PORT = ssl:localhost:1666
P4ROOT = /opt/perforce/servers/master/root
P4USER = super
P4SSLDIR = ssl
PATH = /bin:/usr/bin:/usr/local/bin:/opt/perforce/bin:/opt/perforce/sbin
# Enables nightly checkpoint routine
# This should *not* be considered a complete backup solution
MAINTENANCE = true
}
}
Посмотрите в файле журнала экземпляра P4D (возможно, вы захотите настроить P4LOG для регистрации в файле; по умолчанию используется stderr) на предмет ошибки, возникающей при запуске. Ошибки запуска сервера почти всегда являются одними из следующих:
p4d -xu
для переноса базы данных (исправление: сделайте это)Может быть, проблема с разрешением на этом пути? Я бы попробовал просто запустить p4d -r /opt/perforce/servers/master/root -p ssl:localhost:1666 -L stderr
, чтобы посмотреть, какую ошибку вы получаете при запуске, а затем отладить проблему с журналом после того, как ваш сервер заработает.
Таким образом, исправлением было изменение разрешений для каталога SSL и двух файлов в нем. Я нашел это в файле журналов/журнала. Спасибо, вы заставили меня искать в правильном направлении. Единственная проблема теперь заключается в том, что раньше я мог выполнять все суперкоманды от имени себя, теперь мне фактически приходится заходить на сервер как супер.
Это должно быть так же просто, как chown
(если вы говорите о разрешениях локальной файловой системы) или предоставить себе дополнительные разрешения через p4 protect
(если вы говорите о разрешениях в Perforce).
Там всего два пользователя плюс супер. Мое имя пользователя никогда не было в БД, но я всегда мог делать со своим именем все, что хотел, похоже, это изменилось в последнем обновлении.
Это означает, что у вас не определена таблица защиты. Я предполагаю, что это было не обновление как таковое, а побочный эффект того, что вы сделали для установки обновления (т. е. вы или какой-то инструмент, который вы использовали, впервые запустился p4 protect
в качестве пользователя super
). Опять же, легко исправить: запустите p4 protect
и измените super user super * //...
на super user * * //...
.
Я добавил
P4LOG = /var/log/perforce/p4err
в свой файл master.conf, но в файл ничего не было выведено.