Linux : apt-get / aptitude를 사용하여 구성 파일을 복원하는 방법은 무엇입니까?


37

구성 파일 "/etc/mysql/my.cnf"를 가끔 잃어버린 후 복원하고 싶습니다. 파일은 mysql-common일부 중요한 기능에 필요한 패키지에 속하므로 할 수는 없습니다 purge && install. 종속성이 제거 될 수도 있습니다 (또는 일시적으로 무시할 수 있으면 작동하지 않습니다).

패키지 파일을 제거하지 않고 패키지에서 구성 파일을 복원하는 방법이 ar있습니까?

dpkg-reconfigure mysql-common 그것을 복원하지 못했습니다.


난 언제나 함께 패키지 파일의 압축을 해제 한 7zip과 ( 7z x /path/to/foo.deb다음 7z x data.tar.gz) ...
돈키호테 돌팔이 의사

개인적으로 설치 후 바로 시스템에 etckeeper와 같은 것을 설정하고 싶습니다. 이렇게하면 모든 변경 사항 및 구성 파일 버전이 저장됩니다. ( serverfault.com/questions/13091/advice-on-storing-etc-in-a-vcs )
Zoredache

4
그리고 이것이 아이들입니다. 우리가 백업을하는 이유는 ...
womble

1
@ womble : 실제로 상황이 약간 다릅니다. 설정 파일이 있지만 나에 의해 수정되었습니다. 내가 사용하지 않은 conf.d폴더를, 그리고 때, 업그레이드 프로세스가 정말 메시지 : 이유는 중요하지 않습니다 언급하고 있다는 점이다 "를 설정 파일 수정"표시의 예리한된다 패키지 관리자 업데이트, 내 질문 단순화하기로 결정 그래서
kolypto

답변:


39

dpkg -i --force-confmiss mysql-common.deb누락 된 구성 파일을 다시 만듭니다 (예 : /etc/mysql/my.cnf귀하의 경우).


7
감사! 우분투에서, 그것은sudo dpkg --force-confmiss -i /var/cache/apt/archives/mysql-common*.deb
kolypto

10

데비안 짜기에 - 적어도 -, 우리는 또한 후,이 방법을 수행 할 수 있습니다 su또는 - sudo우분투 -

aptitude install -o Dpkg::Options::=--force-confmiss mysql-server

mysql-server이것은를 포함하여 로트에서 누락 된 모든 conf 파일의 종속성을 재설정하고 재설정합니다 mysql-common. 충돌하는 (남은) 파일을 유지하거나 재설정하라는 메시지가 표시됩니다.

불행하게도, 적성에 버그가 있으며

aptitude purge -o Dpkg::Options::=--force-all mysql-server

작동하지 않습니다 . 그래서 우리는 그것을 하나씩 수행해야합니다

dpkg --force-all --purge  mysql-common  mysql-server  mysql-client …

이렇게하면 원본 또는 수정 된 구성 파일제거 되지만 사용자 정의 파일 은 화면 메시지와 함께 보존됩니다. 그건 그렇고, 그것은 dpkg또한 인식 --force-confnew하고 --force-confold옵션입니다.

mysql-server화면에 종속성 목록을 인쇄 하려면 다음을 수행하십시오.

aptitude --simulate remove mysql-server

9

위의 어느 것도 나를 위해 일하지 않았습니다. 어쩌면 구식 일 수도 있습니다. 어쨌든이 솔루션을 찾았습니다.

apt-get -o Dpkg::Options::="--force-confmiss" install --reinstall mysql-common

적성이 기본값이 아닌 것을 고려하여 사용하는 명령입니다. sudo를 잊지 마세요 :)
nsn

3

기본 mysql 구성 파일을 찾을 수 있습니다 /usr/share/doc/mysql-server-5.0/examples/. 실제로 특수한 / 비밀 한 구성을 사용하도록 설정하지 않은 한이 모든 것이 필요할 수 있습니다.


0

/etc/mysql/디렉토리 my.cnf.orig에는 원본 내용이 들어 있는 파일이 있습니다 my.cnf.

어디서 /etc/mysql/my.cnf.orig왔는지 잘 모르겠습니다. 즉, 내가 만들 었는지 또는 mysql을 설치 했는지 여부 입니다. 나는 것을 한 번에 확인 기억 했다 정확히 같은my.cnf

당신이 그런 것을 가지고 있다면, 당신은 서로를 복사 할 수 없습니다 my.cnf .

sudo cp /etc/mysql/my.cnf.orig /etc/mysql/my.cnf

어쨌든 3897 바이트의 간단한 텍스트 파일이며 일반 Mysql 구성 파일에서 복사하여 붙여 넣을 수 있습니다.

그것은 좋은 생각이 될 것이다 복원하면 당신은 /etc/mysql/my.cnf당신이 미래에 쉽게 복원 할 수 있도록 복사본을 만들 수 있습니다.


나는 일반적으로 원본 설치 구성 파일을 복사하여 백업합니다 /path/to/foo.conf.orig... 자동으로 설치되면 apt-get이 새 버전을 설치할 때 만들어지며 원래 구성 파일이 변경된 것을 감지합니다.
quack quixote

흠, 더 나는 그것에 대해 더 보인다 생각 내가 만든 /etc/mysql/my.cnf.orig새로운 설치로 덮어되지 않을 것 백업으로. 그러나 완전히 다른 곳에 두는 것이 좋습니다.
pavium

나는 일반적이려고 노력했다. my.cnf의 경우에 복사합니다 /etc/mysql/my.cnf.orig. 그런 다음 자연스럽게 tarball 백업을 만드십시오 /etc. :)
quack quixote 6


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.