Bisakah saya memanggil perintah dpkg atau apt-* lainnya di dalam skrip awal saya?

9

Sebagai bagian dari file .deb kustom saya (in-house) yang akan digunakan untuk perangkat Ubuntu 12.04, saya perlu menambahkan beberapa repositori PPA, menjalankan pembaruan apt-get, dan kemudian menginstal paket dari PPA tersebut.

Bisakah ini dilakukan dalam skrip .preinst atau .postinst dalam file .deb saya?

Saya berasumsi bahwa ketika file deb saya diinstal ( sudo dpkg -i testing.deb) bahwa beberapa kunci atau mekanisme kemungkinan yang ada yang akan mencegah saya memanggil perintah tertentu seperti add-apt-repository, apt-get update, dan apt-get install.

Apakah ini asumsi yang tepat?

Stéphane
sumber

Jawaban:

7

Anda benar. Skrip Maintainer tidak seharusnya membuat perubahan apa pun pada status apt atau dpkg, selain dari perubahan yang akan dilakukan saat menginstal paket.

Menginstal file ke /etc/apt/sources.list.d, tidak masalah. Sebagian besar paket yang mengisi peran seperti "instal paket ini untuk menambahkan repositori APT X ke sistem Anda" cukup lakukan itu (bukan panggilan add-apt-repository). Juga umum untuk menjatuhkan kunci publik GPG yang digunakan untuk menandatangani repo /etc/apt/trusted.gpg.d.

Jika Anda ingin membuatnya mudah bagi pengguna untuk melakukan langkah-langkah instalasi tambahan untuk perangkat lunak Anda, Anda mungkin hanya ingin mengirimkan skrip yang berfungsi, dan memberi tahu pengguna untuk menjalankan skrip secara manual.

Tetapi jika Anda benar-benar ingin menelepon apt-get updateatau apt-get install, dll secara otomatis, dan Anda tidak keberatan bahwa paket Anda akan sepenuhnya tidak dapat diterima di Debian atau Ubuntu, dan pengguna Anda tidak masalah dengan paket yang bertindak seperti itu, maka Anda mungkin bisa meletakkan sesuatu /etc/cron.dyang memeriksa apakah apt atau dpkg mengunci, dan jika tidak ada yang ditahan, lakukan langkah-langkah instalasi tambahan Anda dan atur agar langkah-langkah tersebut tidak dilakukan lagi. Saya tidak merekomendasikan pendekatan itu.

paul
sumber