Bagaimana cara menunjukkan tindakan yang akan mengambil paket deb.

33

Saya ingin dapat melihat skrip / pemicu yang terkait dengan paket karena untuk upgrade sehingga saya bisa tahu, misalnya, apakah akan mengakibatkan server web di-restart. Saya tidak dapat menemukan opsi bakat untuk menunjukkan kepada saya bahwa (atau apt / dpkg); yang terbaik yang bisa saya dapatkan adalah konten (file). Apakah ada beberapa kombinasi sakelar simulasi / verbose / konten yang saya lewatkan yang akan menunjukkan ini?

Selain itu, jika sebuah paket menghasilkan sesuatu yang terjadi - seperti restart layanan - yang saya tidak ingin terjadi sekarang, apakah ada cara untuk menginstal paket tanpa menjalankan beberapa atau semua skrip?

Sam Brightman
sumber
Mengapa ini ditolak? Sepertinya pertanyaan yang masuk akal bagi saya (walaupun melakukan hal seperti ini biasanya tidak perlu).
sleske
1
Mengalahkan saya. Tidak ada komentar atau jawaban yang sangat kasar, hanya downvote acak. Seolah-olah "biasanya tidak boleh dilakukan" sama dengan "tidak boleh dilakukan dalam keadaan apa pun dan bahkan tidak mendidik". :(
Sam Brightman

Jawaban:

20

Anda dapat mencetak file kontrol dan beberapa informasi lain dengan dpkg -I package.deb, atau gunakan dpkg -e package.debuntuk mengekstrak hanya file informasi kontrol.

Juga, Anda dapat melakukan lari kering untuk melihat apa yang akan dilakukan dpkg dengan --dry-run:

dpkg --dry-run -i package.deb
Mikael S
sumber
Saya pasti melewatkan opsi ini, terima kasih. -Saya sepertinya tidak banyak menunjukkan - sepertinya hanya baris pertama (interrobang).
Sam Brightman
2
Catatan: Anda harus memiliki file paket yang tersedia secara lokal. Unduh terlebih dahulu melalui 'aptitude download <packagename>'.
Martijn Heemels
3
Opsi -e akan membuat DEBIANdirektori dengan controlfile dan berbagai file skrip yang akan dijalankan. postinstbiasanya sangat menarik karena akan dieksekusi setelah paket berhasil diinstal.
dwurf
8

Tidak, saya tidak tahu cara untuk melakukan ini menggunakan bakat.

Anda dapat melihat skrip secara langsung; skrip yang dijalankan selama pemutakhiran terkandung dalam paket. Buka paket deb menggunakan ar:

ar -x package.deb

Kemudian lihat ke dalam control.tar.gz, itu berisi skrip.

sleske
sumber
Akan lebih baik jika aptitude -s dengan beberapa opsi verbosity benar-benar menunjukkan skrip itu akan berjalan untuk seluruh upgrade. Pada dasarnya itulah yang saya minta, tetapi saya pikir jawaban Mikael sedikit lebih sederhana.
Sam Brightman
2

Ada juga --debugopsi untuk dpkg, seperti padasudo dpkg --debug=72200 -i package.deb

Ada beberapa opsi yang tersedia untuk keluaran verbose dan mereka dapat digabungkan.

Anda dapat melihat semua pilihan yang tersedia dengan menjalankan: dpkg --debug=help.

pi@kaldi:~ $ dpkg --debug=help
dpkg debugging option, --debug=<octal> or -D<octal>:

 Number  Ref. in source   Description
      1  general          Generally helpful progress information
      2  scripts          Invocation and status of maintainer scripts
     10  eachfile         Output for each file processed
    100  eachfiledetail   Lots of output for each file processed
     20  conff            Output for each configuration file
    200  conffdetail      Lots of output for each configuration file
     40  depcon           Dependencies and conflicts
    400  depcondetail     Lots of dependencies/conflicts output
  10000  triggers         Trigger activation and processing
  20000  triggersdetail   Lots of output regarding triggers
  40000  triggersstupid   Silly amounts of output regarding triggers
   1000  veryverbose      Lots of drivel about eg the dpkg/info directory
   2000  stupidlyverbose  Insane amounts of drivel

Debugging options can be mixed using bitwise-or.
Note that the meanings and values are subject to change.
estibordo
sumber
Itu masih akan melakukan instalasi, bukan?
Sam Brightman
Ya, 100% benar. Ini harus dilakukan dalam contoh (pengembangan) lain.
estibordo
1

Tidak, Anda tidak dapat menjalankan bagian dari skrip pengelola, tidak ada kaitan untuk mewujudkannya.

Anda hanya dapat melihat apa yang akan dilakukan skrip dengan memeriksanya dengan tangan - sekali lagi, tidak ada "lari kering" yang dapat memberi tahu Anda dengan pasti apa yang akan dan tidak akan dilakukan, hanya "Saya akan menjalankan postinst dengan args ini".

Ini adalah alasan kami memiliki lingkungan pementasan dan pengujian.

womble
sumber
Maksud saya subset dari skrip, bukan bagian dari skrip individual. Maaf kalau itu tidak jelas. Saya tidak ingin sihir, mengetahui skrip dan argumen memungkinkan saya untuk memeriksa tangan, atau memodifikasi bagian-bagian yang tidak nyaman.
Sam Brightman