Bagaimana cara mengembalikan satu file dari satu paket?

19

Bagaimana saya bisa melakukan ini tanpa menginstal ulang sisa file juga?

Georg Schölly
sumber

Jawaban:

21

Unduh paket, misalnya transmission-daemon, dengan

sudo apt-get --download-only install transmission-daemon

membongkar paket dengan

mkdir ~/dummy
dpkg-deb -x /var/cache/apt/archives/transmission-daemon_*.deb ~/dummy

kembalikan file, misalnya /etc/init.d/transmission-daemon

sudo cp ~/dummy/etc/init.d/transmission-daemon /etc/init.d

hapus dir

rm -rf ~/dummy
enzotib
sumber
2
Juga harus dicatat bahwa apt-get downloadunduhan ke direktori kerja saat ini.
4
Anda dapat menghindari mengekstraksi seluruh arsip menggunakan pipa yang melibatkan dpkg-deb --fsys-tarfiledan tar, seperti:dpkg-deb --fsys-tarfile "$package"*.deb | tar -x ./path/to/file
kojiro
1
/tmp/dummytampaknya lebih nyaman ~/dummydan kebutuhan untuk menghapusnya.
Karl Richter
Lebih suka apt-get downloadkarena apt-get --download-only installakan berhenti jika paket sudah diinstal. Seperti yang ditunjukkan oleh jawaban camypaj.
Julien Carsique
Untuk memperluas komentar Kojiro, saya harus melihat apa nilai default nginx's worker_processespengaturan pada berbagai mesin. Jadi saya datang dengan perintah berikut: for f in /var/cache/apt/archives/nginx-common*; do dpkg-deb --fsys-tarfile "$f" | tar xO ./etc/nginx/nginx.conf | grep worker_processes; done.
x-yuri
12

Saya tahu ini agak lama, tapi inilah peningkatan saya:

$ sudo apt-get download <package-name>

dari pada

$ sudo apt-get --download-only install <package-name>

Saya mempunyai situasi di mana paket sudah diinstal (maka, solusi yang diusulkan tidak bekerja), dan saya ingin mengembalikan hanya satu file konfigurasi, untuk memperbaiki masalah.

Tepuk tangan

camypaj
sumber
3
jika Anda sudah menginstal paket maka biasanya sudah ditemukan /var/cache/apt/archives/dan Anda tidak perlu mengunduhnya.
Ahmed Masud
2
Ya, tetapi hanya jika paket itu diinstal relatif baru, dan arsip belum secara manual atau otomatis dibersihkan.
joeytwiddle