Varsayılan Samba yapılandırma dosyasını (Debian tabanlı sistem) nasıl geri alabilirim?


Yanıtlar:


8

Düzenlendi :

Bunu bir sunucu hatası sorusunda gördüm . Eğer dpkg-reconfigure fooçalışmazsa, bunu kullanın:

  1. Bozuk yapılandırma dosyasını kaldırın veya yeniden adlandırın.

    sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.broken
    
  2. Adresinden değiştirme isteğinde bulunun dpkg.

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

Bu, dpkgeksik yapılandırma dosyalarını .deb dosyalarıyla değiştirmeyi söyler . Özgün .deb paketini bulabilirsiniz /var/cache/apt/archivesveya dağıtımınızın depolarından aynı sürümün yeni bir kopyasını kullanabilirsiniz.

dpkg -i --force-confnew foo.deb

Bu, dpkgvarolan yapılandırma dosyalarının üzerine .deb dosyalarının üzerine yazılmasını söyler . Özgün .deb paketini bulabilirsiniz /var/cache/apt/archivesveya dağıtımınızın depolarından aynı sürümün yeni bir kopyasını kullanabilirsiniz.


Bu işaret, yalnızca dpkgyapılandırma izninin istenmesini isterse yapılandırma dosyasının üzerine yazmaya zorlar . O mu değil sihirli paketten bozulmamış yapılandırma dosyalarını yeniden yapmak.
Teddy

haklı olduğuna inanıyorum. tamam, --force-confmissbunun yerine bunu istiyorsun . Bu özel durumda, örneğin samba, --force-confnewüzerine yazma gerçekleştireceğini düşünüyorum , ancak paket yapılandırma komut dosyalarının ayrıntılarına bağlı olduğunu haklısın.
quack quixote

8

Kısa cevap: /usr/share/samba/smb.confsmb.conf dosyasının orijinal sürümüdür.

Herhangi bir paket için bu durumla karşı karşıya kaldığımda, yaptığım şey aşağıdakilerden biri:

  1. Orijinal sürümün yedek dosyalarını düzenleyicinizden kontrol edin. Normalde foo~dosyaları bırakan Emacs kullanıyorum ve sayısal sürüm kontrol seçeneğini orijinal sürüm her zaman olacak şekilde ayarladım foo.~1~. Ama belki başka bir şekilde yaptın ya da başka bir editör kullandın. Henüz yapmadıysanız bu özelliği açmak için düzenleyicinizin yapılandırmasını kontrol etmeyi düşünün; girmek iyi bir alışkanlık.

  2. Paketi ile yeniden yapılandırındpkg-reconfigure PACKAGENAME . Bazen bu işe yarar. Deneyimlerime göre nadiren çalışır; paketin yapılandırma dosyalarını nasıl oluşturduğuna bağlıdır.

  3. Paketi temizleyin ve tekrar takın ( apt-get purge packagenameardından ile apt-get install packagename). Bu her zaman işe yarar.

    Aşırı durumlarda, temizlemeden sonra, paketi yeniden yüklemeden önce yapılandırma dosyalarını manuel olarak bulup silmeniz gerekir, ancak bu nadirdir. Ancak, bu paket için diğer veri ve / veya yapılandırma dosyalarını ortadan kaldıracaktır ve bu her zaman kabul edilemez.

  4. Package ( apt-get source foo) için kaynak kodunu indirin ve orijinal config dosyasının orada bir dosya olarak var olup olmadığına bakın. Ancak, yapılandırma dosyası önceden mevcut olmayabilir, ancak yükleme sırasında paketin yükleme sonrası komut dosyası tarafından oluşturulmuş olabilir.

  5. /var/lib/dpkg/info/foo.postinstYapılandırma dosyasını nerede oluşturduğunu ve nasıl oluşturduğunu öğrenmek için paketin ( ) postinst komut dosyasına bakın . Ardından işlemi manuel olarak tekrarlamayı deneyin. Bu biraz iş ve her zaman kolay değil.


Bu daha yüksek olmalı. Benim için sadece sudo cp /usr/share/samba/smb.conf /etc/samba/smb.confçöpe atılan conf dosyamı orijinalin üzerine yazmak için bir durumdu.
edzillion

2

dpkg-reconfigure <package> varsayılan olarak değiştirilen conf dosyalarını değiştirmez.

Muhtemelen bunu yapmanın en kolay yolu, apt önbelleğinde hala paketiniz varsa çalıştırmaktır

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

burada paket dosya adı genellikle bir şeydir <package name>_<version>.deb(sadece sekme tamamlamayı kullanın). Bu, uygun bir yükseltme ile aynı işlemden geçirilir ve değiştirilmiş bir conf dosyası bulduğunda ne yapmak istediğinizi sorar. NHer istemde girmeniz yeterlidir . dpkg, conf dosyasının paket sürümünü .dpkg-distdosya adının sonuna yükler. Daha sonra vimdifffarklılıkları karşılaştırmak ve okuma conf dosyasını değiştirmek için veya başka bir birleştirme aracı kullanabilirsiniz.


/var/cache/apt/archives/Gerçi hiçbir paket yok ...
endolith

1

Debi ayıklayabilir ve orijinal dosyayı kapabilirsiniz:

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

Kullanımı dpkg-sourcedaha kolaydır ve apt-get source PACKAGEkullanımı çok daha kolaydır.
Teddy

1
@Teddy: yalnızca başlangıç ​​paketine varsayılan yapılandırma dosyası dahil edilirse. birçok paket, satıcıya özel olarak yoğun bir yapılandırma dosyası yükler; bazıları yapılandırma dosyalarını packagename.postinstkomut dosyasında otomatik olarak oluşturur .
quack quixote

1

(#Ubuntu'dan alınan) en iyi yol bunu yapmaktır:

dpkg-reconfigure <package>

Bu durumda bu

dpkg-reconfigure samba-common

1

Orijinali geri yükleyebilirsiniz smb.conf yapılandırma dosyasını :

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

Temel olarak orijinal paket kurulum işleminin yaptığı budur (Debian Squeeze üzerinde).

Bu, mevcut olanınızın üzerine yazacaktır smb.conf, bu yüzden kaybetmek istemiyorsanız önce bir yedek alın.


1
Bu dosyayı içeren paketin adını sağladığınız için teşekkür ederiz. "sudo yetenek temizliği samba-ortak; sudo yetenek yüklemek samba" benim seçimimdi, ama Totor'un cevabı seçenekler arasında en az korkutucu ve en Debian görünüyor.
Martin Dorey


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

ve

$ sudo dpkg --configure -a

işi yapacak.


Bu, buradaki diğer tüm cevaplarla neredeyse aynıdır. Aynı zamanda '14'ten bir yazıda.
var firstName 12:18
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.