Kısa bir süre önce Samba'yı yükledim ve /etc/samba/smb.confdosyayı dağıttım . Orijinal yapılandırmayı nasıl geri alabilirim?
Kısa bir süre önce Samba'yı yükledim ve /etc/samba/smb.confdosyayı dağıttım . Orijinal yapılandırmayı nasıl geri alabilirim?
Yanıtlar:
Düzenlendi :
Bunu bir sunucu hatası sorusunda gördüm . Eğer dpkg-reconfigure fooçalışmazsa, bunu kullanın:
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
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.
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.
--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.
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:
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.
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.
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.
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.
/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.
sudo cp /usr/share/samba/smb.conf /etc/samba/smb.confçöpe atılan conf dosyamı orijinalin üzerine yazmak için bir durumdu.
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 ...
Debi ayıklayabilir ve orijinal dosyayı kapabilirsiniz:
ar p packagename.deb data.tar.gz | tar zx
dpkg-sourcedaha kolaydır ve apt-get source PACKAGEkullanımı çok daha kolaydır.
packagename.postinstkomut dosyasında otomatik olarak oluşturur .
(#Ubuntu'dan alınan) en iyi yol bunu yapmaktır:
dpkg-reconfigure <package>
Bu durumda bu
dpkg-reconfigure samba-common
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.
Deb paketinin içeriğini yeniden indirebilir ve ayıklayabilirsiniz
$ sudo cp /usr/share/samba/smb.conf /etc/samba/smb.conf
ve
$ sudo dpkg --configure -a
işi yapacak.
sudo cp /usr/share/samba/smb.conf /etc/samba/smb.conf