기본 Samba 구성 파일 (데비안 기반 시스템)을 다시 가져 오려면 어떻게합니까?


답변:


8

편집 :

serverfault 질문 에서 이것을 발견했습니다 . (가) 경우 dpkg-reconfigure foo작동하지 않습니다, 이것을 사용 :

  1. 손상된 구성 파일을 제거하거나 이름을 바꾸십시오.

    sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.broken
    
  2. 에서 교체를 요청하십시오 dpkg.

    sudo dpkg -i --force-confmiss /path/to/samba-common.deb
    

이 이야기 dpkg뎁의 사람들과 누락 된 구성 파일을 대체 할 수 있습니다. 에서 원본 패키지 .deb를 찾 /var/cache/apt/archives거나 배포 리포지토리에서 동일한 버전의 새로운 복사본을 사용할 수 있습니다.

dpkg -i --force-confnew foo.deb

이 이야기 dpkg뎁의 사람들과 기존 구성 파일을 덮어 쓸 수 있습니다. 에서 원본 패키지 .deb를 찾 /var/cache/apt/archives거나 배포 리포지토리에서 동일한 버전의 새로운 복사본을 사용할 수 있습니다.


이 플래그 는 다른 방법으로 권한을 요청한 경우 에만 dpkg구성 파일을 덮어 씁니다 . 패키지에서 원래 구성 파일을 마술처럼 다시 만들지 는 않습니다 .
Teddy

네 말이 맞아 좋아, --force-confmiss대신에 당신이 원합니다 . 이 특별한 경우 (예 : 삼바) --force-confnew덮어 쓰기를 수행 한다고 생각 하지만 패키지 구성 스크립트의 특정 사항에 따라 달라집니다.
quack quixote

7

짧은 대답 : /usr/share/samba/smb.confsmb.conf 파일의 원래 버전입니다.

패키지에 대해이 상황에 직면하면 내가하는 일은 다음 중 하나입니다.

  1. 편집기에서 원본 버전의 백업 파일을 확인하십시오 . 나는 일반적으로 foo~파일을 남기는 Emacs를 사용 하고 숫자 버전 제어 옵션을 설정하여 원래 버전은 항상 foo.~1~입니다. 그러나 다른 방법으로했거나 다른 편집기를 사용했을 수도 있습니다. 이 기능을 켜려면 편집기 구성을 확인하십시오 (아직없는 경우). 들어가는 것이 좋은 습관입니다.

  2. 로 패키지재구성하십시오dpkg-reconfigure PACKAGENAME . 때때로 이것은 트릭을 수행합니다. 내 경험 상으로는 거의 작동하지 않습니다. 패키지가 구성 파일을 작성하는 방법에 따라 다릅니다.

  3. 제거 및 재설치는 패키지 (함께 apt-get purge packagename다음을 apt-get install packagename). 항상 작동해야합니다.

    극단적 인 경우 제거 후 패키지를 다시 설치하기 전에 구성 파일을 수동으로 찾아 삭제해야합니다. 그러나 이렇게하면 패키지의 다른 데이터 및 / 또는 구성 파일이 제거되므로 항상 허용되는 것은 아닙니다.

  4. 패키지 ( apt-get source foo) 의 소스 코드를 다운로드하여 원본 구성 파일이 파일로 존재하는지 확인하십시오. 그러나 구성 파일은 미리 존재하지 않지만 설치시 패키지의 설치 후 스크립트에 의해 작성 될 수 있습니다.

  5. 패키지 ( /var/lib/dpkg/info/foo.postinst)에 대한 postinst 스크립트를 확인하여 구성 파일을 작성하는 위치와 수행 방법을 찾으십시오. 그런 다음 프로세스를 수동으로 반복하십시오. 이것은 약간의 작업이며 항상 쉬운 것은 아닙니다.


이보다 높아야합니다. 저에게는 sudo cp /usr/share/samba/smb.conf /etc/samba/smb.conf휴지통에있는 conf 파일을 원본으로 덮어 쓰는 작업이었습니다 .
edzillion

2

dpkg-reconfigure <package> 변경된 conf 파일은 기본적으로 수정되지 않습니다.

아마도 apt 캐시에 패키지가 여전히있는 경우이 작업을 수행하는 가장 쉬운 방법은 실행하는 것입니다

dpgk -i --force-confask /var/cache/apt/archives/<package file name>

패키지 파일 이름은 일반적으로 다음과 같습니다 <package name>_<version>.deb(탭 완성 사용). 이것은 apt-upgrade와 동일한 프로세스를 거치며 변경된 conf 파일을 발견 할 때 수행 할 작업을 묻습니다. N모든 프롬프트에서 입력하십시오 . dpkg는 .dpkg-dist파일 이름의 끝에 conf 파일의 패키지 버전을 설치합니다 . 그런 다음 vimdiff또는 다른 병합 도구를 사용하여 차이점을 비교하고 읽기 conf 파일을 수정할 수 있습니다.


패키지는 /var/cache/apt/archives/없지만 ...
endolith

1

deb를 추출하고 원본 파일을 가져올 수 있습니다.

ar p packagename.deb data.tar.gz | tar zx

사용 dpkg-source이 더 쉽고 사용 apt-get source PACKAGE훨씬 쉽습니다.
Teddy

1
@Teddy : 기본 구성 파일이 소스 패키지에 포함되어있는 경우에만 해당됩니다. 많은 패키지가 많은 벤더별 구성 파일을 설치합니다. 일부는 packagename.postinst스크립트 에서 구성 파일을 자동 생성합니다 .
quack quixote

1

#ubuntu에서 얻은 가장 좋은 방법은 다음과 같습니다.

dpkg-reconfigure <package>

이 경우에는

dpkg-reconfigure samba-common

1

다음 smb.conf과 같이 원래 구성 파일을 복원 할 수 있습니다 .

# cp /usr/share/samba/smb.conf /etc/samba/smb.conf
# dpkg-reconfigure samba-common

이것은 기본적으로 원래 패키지 설치 과정 (Debian Squeeze에서 수행)입니다.

현재를 덮어 쓰므 smb.conf로 잃어 버리지 않으려면 먼저 백업하십시오.


1
이 파일이 포함 된 패키지 이름을 제공해 주셔서 감사합니다. "sudo aptitude purge samba-common; sudo aptitude install samba"는 나의 선택이지만 Totor의 답변은 가장 무섭고 가장 많은 데비안 선택입니다.
Martin Dorey


-2
$ sudo cp /usr/share/samba/smb.conf /etc/samba/smb.conf

$ sudo dpkg --configure -a

일을 할 것입니다.


이것은 다른 모든 답변과 거의 동일합니다. 또한 '14 년의 게시물에 있습니다.
var firstName
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.