W idealnym świecie dostawcy usług internetowych podchodziliby do aktualizacji oprogramowania na serwerach niezwykle sumiennie. Użytkownik nigdy nie musiałby walczyć z bugami niezałatanego środowiska wirtualizacji czy też przepisywać skryptów z myślą o przestarzałych wersjach interpretatorów PHP czy Pythona.
Załóżmy, że w containerze OpenVZ został zainstalowany Debian 6.0 squeeze, a narzędzia vzctl na maszynie matce nie zostały zaktualizowane. Podczas próby instalacji dowolnego programu użytkownik może (ale nie musi) natknąć się na poniższy błąd:
insserv: can not symlink(../init.d/vzquota, ../rc0.d/S18vzquota): File exists
insserv: can not symlink(../init.d/vzquota, ../rc1.d/S18vzquota): File exists
insserv: can not symlink(../init.d/vzquota, ../rc2.d/S18vzquota): File exists
insserv: can not symlink(../init.d/vzquota, ../rc3.d/S18vzquota): File exists
insserv: can not symlink(../init.d/vzquota, ../rc4.d/S18vzquota): File exists
insserv: can not symlink(../init.d/vzquota, ../rc5.d/S18vzquota): File exists
insserv: can not symlink(../init.d/vzquota, ../rc6.d/S18vzquota): File exists
rozwiązanie jest bardzo proste, należy zamienić pierwsze linie pliku /etc/init.d/vzquota z
#!/bin/sh
### BEGIN INIT INFO
# Provides: vzquota
# Required-Start:
# Required-Stop:
# Should-Start: $local_fs $syslog
# Should-Stop: $local_fs $syslog
# Default-Start: 0 1 2 3 4 5 6
# Default-Stop:
# Short-Description: Fixed(?) vzquota init script
### END INIT INFO
na
#!/bin/sh
### BEGIN INIT INFO
# Provides: vzquota
# Required-Start: $local_fs $time $syslog
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start vzquota at the end of boot
# Description: Configure OpenVZ disk quota for a container.
### END INIT INFO
a następnie wydać komendę
root@vps:/# chattr +i /etc/init.d/vzquota
i wykonać restart serwera. W przypadku konieczności dokonania zmian w powyższym pliku konieczne będzie wykonanie poniższej komendy oraz restart.
root@vps:/# chattr -i /etc/init.d/vzquota
P.S. Nie, to nie jest eleganckie rozwiązanie. Spróbuj napisać do swojego dostawcy, powiedzieć mu co jest źle i podsunąć rozwiązanie. Proszę, traktuj powyższy tutorial wyłącznie jako ostatnią deskę ratunku!