Instalacja paczek .deb metodą "--force-overwrite"


(Mich050494) #1

Witam,

Co trzeba dodać do paczki .deb , żeby automatycznie podczas instalacji korzystała z polecenia dpkg -i --force-overwrite nazwapaczki.deb , ponieważ kiedy używam normalnego polecenia instalacji dpkg -i nazwapaczki.deb. To nie da się zainstalować aplikacji, której potrzebuję tylko dostaję odpowiedź, że moja paczka próbuje nadpisać XXX które znajduje się już w paczce YYY (po angielsku tak to brzmi: dpkg error trying to overwrite xxx which is also in package yyy). Znalazłem na pewnej stronie, że trzeba użyć polecenia dpkg -i --force-overwrite nazwapaczki.deb i wtedy wszystko gra, tylko, chcę żeby to się automatycznie uruchamiało. Mam nadzieję, że mniej więcej zrozumiale to napisałem jeśli nie to przepraszam i postaram się to lepiej wytłumaczyć.

Proszę o szybką odpowiedź.

Wesołych Świąt!

Pozdrawiam,

max541


(RubasznyRumcajs) #2

bierzesz się do tego od złej strony- zamiast rozwiązać problem to chcesz go zamieść pod dywan.

  • odinstaluj paczkę YYY, bądź:

  • zgłoś informacje do deweloperów obydwu paczek;

  • naucz się tworzyć paczki i spaczkuj sobie którąś z tych paczek tak by nie było konfliktu


(Mich050494) #3

@RubasznyRumcajs

Posłuchaj, paczka YYY jest to program, paczka XXX jest to spolszczenie do tego programu. Zależy mi na nadpisaniu kilku plików znajdujących się w paczce YYY, tak żeby spolszczenie działało poprawnie. Nie da się tego zrobić normalnym poleceniem dpkg -i nazwapaczki.deb ponieważ występuję błąd, który opisałem powyżej. Gwoli ścisłości nie pracuję na Linuxie tylko na iPhone OS. A teraz kilka odpowiedzi na Twoje pytania(?):

  • odinstaluj paczkę YYY: ta metoda nie przejdzie, ponieważ chcę tylko nadpisać pliki znajdujące się w tej paczce. Jeśli skasuje program to nie będę miał co spolszczać - nieprawdaż?.

  • zgłoś informacje do deweloperów obydwu paczek: to też nie przejdzie ponieważ deweloper pierwszej paczki (czyli głównego programu) ma gdzieś, że chcę dodać do niego spolszczenie. Autorem drugiej paczki jestem ja, więc po co mam siebie informować o problemie jak już o nim wiem - nieprawdaż?

  • naucz się tworzyć paczki i spaczkuj sobie którąś z tych paczek tak by nie było konfliktu: umiem tworzyć paczki i je paczkować, na tyle ile mi jest potrzeba. Forum jest po to, żeby pytać - nieprawdaż?

Jeszcze raz powtarzam. Paczka jest tworzona na iPhone OS, i jest to spolszczenie. A więc jak w paczce dodać polecenie dpkg -i --force-overwrite nazwapaczki.deb, żeby można było spokojnie nadpisać te pliki?


(RubasznyRumcajs) #4

hm... to nie możesz przeedytować paczki 'oryginalnej' (tj. tego programu), oraz zablokować jego późniejszy update (chociażby przez nadanie mu wyższej wersji niz 'w oryginale')? (oczywiście, bardziej eleganckim rozwiązaniem byłoby skorzystanie z apt-pinningu, ale chyba nie warto sie w to bawić dla jednej paczki).

co do głębszego problemu- wyślij info o spolszczeniu na odpowiednią grupe (pewnie debian-devel-cośtam, cięzko mi dokładniej określić która to)- może wtedy maintainer się zdecyduje na dołączenie owej polonizacji (ciężko byłoby odmówić przy świadkach ;p).

takie oto sugestie przychodzą mi na myśl :~


(Mich050494) #5

@RubasznyRumcajs

Pisałem do autora programu w tej sprawie, ale nawet nie odpisał. Nie mam ochoty bawić się w pisanie do jakichś tam grup. Tylko zależy mi na automatycznym uruchomieniu polecenia dpkg -i --force-overwrite podczas instalacji tej jedynej paczki. O tyle mi tylko chodzi. Nie da się tak?


(roobal) #6

Ale z czym Ty masz problem, bo czytam te posty i nie rozumiem? Masz na myśli, że dpkg -i, powinno automatycznie instalować z opcją --force-overwrite? Jak chcesz sobie ułatwić/zautomatyzować pracę, to napisz po prostu skrypt i po sprawie, np. takie coś:

#!/bin/sh

dpkg -i --force-overwrote $1

Nazwij go dowolnie, np. instaluj, wrzuć do /usr/bin i instaluj w ten sposób:

instaluj nazwapaczki.deb

I po krzyku :slight_smile:

Pozdrawiam!


(Mich050494) #7

@roobal

O coś takiego mi chodzi. Dziękuję za skrypt. Tylko, że jest następny problem, a mianowicie, ta paczka ma się nie tylko u mnie instalować w ten sposób, tylko u każdego kto sobie ją pobierze. Jak teraz to poprawić?


(roobal) #8

Możesz zrobić tak, tworzysz paczkę, np. tar.gz i w niej zawierasz skrypt i paczkę deb i być może jeszcze instrukcję, żeby instalować przy pomocy tego skryptu a nie bezpośrednio z paczki deb. Jeśli się nie mylę to można w samej paczce deb dodać skrypt, który wykona taką instalację automatycznie ale akurat w takie coś się nigdy nie bawiłem a zabawy zapewne z tym będzie co nie miara. Myślę, że najlepszym rozwiązaniem będzie stworzyć właśnie paczkę tar.gz ze skryptem i paczką deb oraz instrukcją instalacji :slight_smile:

Pozdrawiam!