Se avete problemi con l'installazione e la configurazione di Slackware postate qui. Non usate questo forum per argomenti generali... per quelli usate Gnu/Linux in genere.
Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Slackware, se l'argomento è generale usate il forum Gnu/Linux in genere.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
#! /bin/python
# -*- coding: iso-8859-1 -*-
#Filebelong search to wich slackware package belongs a file
#Copyright (C) 2009 Giovanni Santostefano
#
#This program is free software; you can redistribute it and/or modify
#it under the terms of the GNU General Public License as published by
#the Free Software Foundation; either version 2 of the License, or
#(at your option) any later version.
#
#This program is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#GNU General Public License for more details.
#
#You should have received a copy of the GNU General Public License along
#with this program; if not, write to the Free Software Foundation, Inc.,
#51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
import sys
import os
c = 0
for arg in sys.argv:
c=c+1
if c < 2:
print "USAGE: python filebelong.py fullpath_of_file"
sys.exit(1)
basefilename=sys.argv[1]
basefilename.strip(' ')
if basefilename == "--help":
print "filebelong is a search utility for Slackware"
print "developed by Giovanni Santostefano."
print "filebelong search to wich slackware package belongs a file"
print "USAGE: python filebelong.py fullpath_of_file"
exit(1)
#basefilename = basefilename+"\n"
found = 0
packlist = os.walk("/var/log/packages/")
for root, dirs, filenames in packlist:
for filename in filenames:
if found == 1:
break
filelines = open("/var/log/packages/"+filename,"rU").readlines()
flag = 0
for line in filelines:
line = "/"+line
if (line.find("FILE LIST:") != -1):
flag = 1
if (flag == 0):
continue
if (line.find(basefilename) != -1 and len(line) == len(basefilename)+1):
found=1
print "/var/log/packages/"+filename
break
if found == 0:
print "File " + basefilename + " does not belongs to any package"
exit(1)
exit(0)
ciao
Gio
Ultima modifica di Blizzard il mar 16 giu 2009, 22:30, modificato 2 volte in totale.
comunque sicuramente si può fare in qualche altro modo più... unix, solo che mi andava di fare un script python
No, è giusto. Perchè tu hai scritto /bin/cat e se vedi tutti i file di un pacchetto la / iniziale non c'è. Per trovare /bin/cat, devi scrivere bin/cat .
Poi ovviamente devi usare le opzioni di grep per dirgli di visualizzarti solo la corrispondenza esatta, mi pare che l'opzione sia -x, oppure usare le regex, purtroppo ora non sto con la slackware (mi si è rotto il pc-desktop) e non sono sicuro.
Prova.
submax82 ha scritto:lo fà già findpkg ... script bash scritto tra gli utenti del forum
ciao,
non ricordavo questa funzione di findpkg perchè lo utilizzo solo nella versione semplice.
In ogni caso si dovrebbe aggiungere anche un'opzione per trovare solo il pacchetto in cui il file è incluso (vedi sopra).
@spina:
letto lo script. Sempre pulito come al solito
tuttavia cercando in MANIFEST non dovrebbe ignorare i nuovi pacchetti? ad esempio quelli di slacky?
Blizzard ha scritto:@spina:
letto lo script. Sempre pulito come al solito
tuttavia cercando in MANIFEST non dovrebbe ignorare i nuovi pacchetti? ad esempio quelli di slacky?
dovresti avere il MANIFEST di ogni repository, ma si aggiunge un nuovo problema, cioè che prende anche pacchetti che non hai installato nel sistema, io non faccio quasi mai una installazione full per esempio
Blizzard ha scritto:@spina:
letto lo script. Sempre pulito come al solito
tuttavia cercando in MANIFEST non dovrebbe ignorare i nuovi pacchetti? ad esempio quelli di slacky?
Gio
Hai ragione
Emanuele
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
conraid ha scritto:........................................................
dovresti avere il MANIFEST di ogni repository, ma si aggiunge un nuovo problema, cioè che prende anche pacchetti che non hai installato nel sistema, io non faccio quasi mai una installazione full per esempio
la soluzione di rock mi sembra la migliore
Però, se a me serve un file (libreria) che non ho installato, il metodo di rock, giustamente, non me lo trova. Credo invece che sarebbe utile poter utilizzare uno script che mi dice "quel file" in quale/i pacchetto/i lo posso trovare.
conraid ha scritto:........................................................
dovresti avere il MANIFEST di ogni repository, ma si aggiunge un nuovo problema, cioè che prende anche pacchetti che non hai installato nel sistema, io non faccio quasi mai una installazione full per esempio
la soluzione di rock mi sembra la migliore
Però, se a me serve un file (libreria) che non ho installato, il metodo di rock, giustamente, non me lo trova. Credo invece che sarebbe utile poter utilizzare uno script che mi dice "quel file" in quale/i pacchetto/i lo posso trovare.
non male come idea.
Magari Emanuele potrebbe modificare lievemente lo script per inserire (sotto altra opzione) un controllo che verifica se il pacchetto esiste e stampare INSTALLED/NOT INSTALLED